Ptex
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
PtexSeparableFilter Class Referenceabstract

#include <PtexSeparableFilter.h>

Inheritance diagram for PtexSeparableFilter:
PtexFilter Ptex

Public Member Functions

virtual void release ()
 Release resources held by this pointer (pointer becomes invalid). More...
 
virtual void eval (float *result, int firstchan, int nchannels, int faceid, float u, float v, float uw1, float vw1, float uw2, float vw2, float width, float blur)
 Apply filter to a ptex data file. More...
 

Protected Member Functions

 PtexSeparableFilter (PtexTexture *tx, const PtexFilter::Options &opts)
 
virtual ~PtexSeparableFilter ()
 
virtual void buildKernel (PtexSeparableKernel &k, float u, float v, float uw, float vw, Res faceRes)=0
 
void splitAndApply (PtexSeparableKernel &k, int faceid, const Ptex::FaceInfo &f)
 
void applyAcrossEdge (PtexSeparableKernel &k, int faceid, const Ptex::FaceInfo &f, int eid)
 
void applyToCorner (PtexSeparableKernel &k, int faceid, const Ptex::FaceInfo &f, int eid)
 
void applyToCornerFace (PtexSeparableKernel &k, const Ptex::FaceInfo &f, int eid, int cfaceid, const Ptex::FaceInfo &cf, int ceid)
 
void apply (PtexSeparableKernel &k, int faceid, const Ptex::FaceInfo &f)
 
- Protected Member Functions inherited from PtexFilter
virtual ~PtexFilter ()
 Destructor not for public use. Use release() instead. More...
 

Protected Attributes

PtexTexture_tx
 
Options _options
 
float * _result
 
float _weight
 
int _firstChanOffset
 
int _nchan
 
int _ntxchan
 
DataType _dt
 
BorderMode _uMode
 
BorderMode _vMode
 

Additional Inherited Members

- Public Types inherited from PtexFilter
enum  FilterType {
  f_point, f_bilinear, f_box, f_gaussian,
  f_bicubic, f_bspline, f_catmullrom, f_mitchell
}
 Filter types. More...
 
- Public Types inherited from Ptex
enum  MeshType { mt_triangle, mt_quad }
 Type of base mesh for which the textures are defined. More...
 
enum  DataType { dt_uint8, dt_uint16, dt_half, dt_float }
 Type of data stored in texture file. More...
 
enum  BorderMode { m_clamp, m_black, m_periodic }
 How to handle mesh border when filtering. More...
 
enum  EdgeId { e_bottom, e_right, e_top, e_left }
 Edge IDs used in adjacency data in the Ptex::FaceInfo struct. More...
 
enum  MetaDataType {
  mdt_string, mdt_int8, mdt_int16, mdt_int32,
  mdt_float, mdt_double
}
 Type of meta data entry. More...
 
- Static Public Member Functions inherited from PtexFilter
static PtexFiltergetFilter (PtexTexture *tx, const Options &opts)
 
- Static Public Member Functions inherited from Ptex
static const char * MeshTypeName (MeshType mt)
 Look up name of given mesh type. More...
 
static const char * DataTypeName (DataType dt)
 Look up name of given data type. More...
 
static const char * BorderModeName (BorderMode m)
 Look up name of given border mode. More...
 
static const char * EdgeIdName (EdgeId eid)
 Look up name of given edge ID. More...
 
static const char * MetaDataTypeName (MetaDataType mdt)
 Look up name of given meta data type. More...
 
static int DataSize (DataType dt)
 Look up size of given data type (in bytes). More...
 
static float OneValue (DataType dt)
 Look up value of given data type that corresponds to the normalized value of 1.0. More...
 
static float OneValueInv (DataType dt)
 Lookup up inverse value of given data type that corresponds to the normalized value of 1.0. More...
 
static void ConvertToFloat (float *dst, const void *src, Ptex::DataType dt, int numChannels)
 Convert a number of data values from the given data type to float. More...
 
static void ConvertFromFloat (void *dst, const float *src, Ptex::DataType dt, int numChannels)
 Convert a number of data values from float to the given data type. More...
 

Detailed Description

Definition at line 43 of file PtexSeparableFilter.h.

Constructor & Destructor Documentation

PtexSeparableFilter::PtexSeparableFilter ( PtexTexture tx,
const PtexFilter::Options opts 
)
inlineprotected

Definition at line 53 of file PtexSeparableFilter.h.

virtual PtexSeparableFilter::~PtexSeparableFilter ( )
inlineprotectedvirtual

Definition at line 57 of file PtexSeparableFilter.h.

Member Function Documentation

void PtexSeparableFilter::apply ( PtexSeparableKernel k,
int  faceid,
const Ptex::FaceInfo f 
)
protected
void PtexSeparableFilter::applyAcrossEdge ( PtexSeparableKernel k,
int  faceid,
const Ptex::FaceInfo f,
int  eid 
)
protected
void PtexSeparableFilter::applyToCorner ( PtexSeparableKernel k,
int  faceid,
const Ptex::FaceInfo f,
int  eid 
)
protected
void PtexSeparableFilter::applyToCornerFace ( PtexSeparableKernel k,
const Ptex::FaceInfo f,
int  eid,
int  cfaceid,
const Ptex::FaceInfo cf,
int  ceid 
)
protected
virtual void PtexSeparableFilter::buildKernel ( PtexSeparableKernel k,
float  u,
float  v,
float  uw,
float  vw,
Res  faceRes 
)
protectedpure virtual

Referenced by eval().

void PtexSeparableFilter::eval ( float *  result,
int  firstchan,
int  nchannels,
int  faceid,
float  u,
float  v,
float  uw1,
float  vw1,
float  uw2,
float  vw2,
float  width,
float  blur 
)
virtual

Apply filter to a ptex data file.

The filter region is a parallelogram centered at the given (u,v) coordinate with sides defined by two vectors [uw1, vw1] and [uw2, vw2]. For an axis-aligned rectangle, the vectors are [uw, 0] and [0, vw]. See Filter Footprint for details.

Parameters
resultBuffer to hold filter result. Must be large enough to hold nchannels worth of data.
firstchanFirst channel to evaluate [0..tx->numChannels()-1]
nchannelsNumber of channels to evaluate
faceidFace index [0..tx->numFaces()-1]
uU coordinate, normalized [0..1]
vV coordinate, normalized [0..1]
uw1U filter width 1, normalized [0..1]
vw1V filter width 1, normalized [0..1]
uw2U filter width 2, normalized [0..1]
vw2V filter width 2, normalized [0..1]
widthscale factor for filter width
bluramount to add to filter width [0..1]

Implements PtexFilter.

Definition at line 47 of file PtexSeparableFilter.cpp.

References _dt, _firstChanOffset, _nchan, _ntxchan, _result, _tx, _uMode, _vMode, _weight, buildKernel(), PtexUtils::clamp(), Ptex::ConvertToFloat(), Ptex::DataSize(), PtexTexture::dataType(), PtexTexture::getData(), PtexTexture::getFaceInfo(), Ptex::FaceInfo::isNeighborhoodConstant(), Ptex::FaceInfo::isSubface(), PtexSeparableKernel::kmax, Ptex::m_black, Ptex::m_clamp, Ptex::m_periodic, PtexUtils::min(), PtexTexture::numChannels(), PtexTexture::numFaces(), Ptex::OneValue(), PtexSeparableKernel::res, Ptex::FaceInfo::res, splitAndApply(), PtexSeparableKernel::stripZeros(), Ptex::Res::ulog2, PtexSeparableKernel::upresU(), PtexSeparableKernel::upresV(), PtexSeparableKernel::uw, Ptex::Res::vlog2, PtexSeparableKernel::vw, and PtexSeparableKernel::weight().

virtual void PtexSeparableFilter::release ( )
inlinevirtual

Release resources held by this pointer (pointer becomes invalid).

Implements PtexFilter.

Definition at line 46 of file PtexSeparableFilter.h.

void PtexSeparableFilter::splitAndApply ( PtexSeparableKernel k,
int  faceid,
const Ptex::FaceInfo f 
)
protected

Member Data Documentation

DataType PtexSeparableFilter::_dt
protected

Definition at line 76 of file PtexSeparableFilter.h.

Referenced by apply(), and eval().

int PtexSeparableFilter::_firstChanOffset
protected

Definition at line 73 of file PtexSeparableFilter.h.

Referenced by apply(), and eval().

int PtexSeparableFilter::_nchan
protected

Definition at line 74 of file PtexSeparableFilter.h.

Referenced by apply(), and eval().

int PtexSeparableFilter::_ntxchan
protected

Definition at line 75 of file PtexSeparableFilter.h.

Referenced by apply(), and eval().

Options PtexSeparableFilter::_options
protected

Definition at line 70 of file PtexSeparableFilter.h.

float* PtexSeparableFilter::_result
protected

Definition at line 71 of file PtexSeparableFilter.h.

Referenced by apply(), and eval().

PtexTexture* PtexSeparableFilter::_tx
protected

Definition at line 69 of file PtexSeparableFilter.h.

Referenced by apply(), applyAcrossEdge(), applyToCorner(), and eval().

BorderMode PtexSeparableFilter::_uMode
protected

Definition at line 77 of file PtexSeparableFilter.h.

Referenced by eval(), and splitAndApply().

BorderMode PtexSeparableFilter::_vMode
protected

Definition at line 77 of file PtexSeparableFilter.h.

Referenced by eval(), and splitAndApply().

float PtexSeparableFilter::_weight
protected

Definition at line 72 of file PtexSeparableFilter.h.

Referenced by applyToCorner(), and eval().


The documentation for this class was generated from the following files: