| Ptex
    | 
#include <PtexSeparableFilter.h>
 
  
 | 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 PtexFilter * | getFilter (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... | |
Definition at line 43 of file PtexSeparableFilter.h.
| 
 | inlineprotected | 
Definition at line 53 of file PtexSeparableFilter.h.
| 
 | inlineprotectedvirtual | 
Definition at line 57 of file PtexSeparableFilter.h.
| 
 | protected | 
Definition at line 342 of file PtexSeparableFilter.cpp.
References _dt, _firstChanOffset, _nchan, _ntxchan, _result, _tx, PtexSeparableKernel::apply(), PtexSeparableKernel::applyConst(), PtexSeparableKernel::downresU(), PtexSeparableKernel::downresV(), PtexTexture::getData(), PtexSeparableKernel::ku, PtexSeparableKernel::kv, PtexUtils::min(), PtexSeparableKernel::res, Ptex::FaceInfo::res, PtexSeparableKernel::u, Ptex::Res::u(), PtexSeparableKernel::uw, PtexSeparableKernel::v, Ptex::Res::v(), and PtexSeparableKernel::vw.
Referenced by applyAcrossEdge(), applyToCornerFace(), and splitAndApply().
| 
 | protected | 
Definition at line 209 of file PtexSeparableFilter.cpp.
References _tx, Ptex::FaceInfo::adjedge(), Ptex::FaceInfo::adjface(), PtexSeparableKernel::adjustMainToSubface(), PtexSeparableKernel::adjustSubfaceToMain(), apply(), PtexTexture::getFaceInfo(), Ptex::FaceInfo::isSubface(), PtexSeparableKernel::rotate(), and splitAndApply().
Referenced by splitAndApply().
| 
 | protected | 
Definition at line 251 of file PtexSeparableFilter.cpp.
References _tx, _weight, Ptex::FaceInfo::adjedge(), Ptex::FaceInfo::adjface(), PtexSeparableKernel::adjustSubfaceToMain(), applyToCornerFace(), PtexTexture::getFaceInfo(), Ptex::FaceInfo::isSubface(), PtexSeparableKernel::makeSymmetric(), PtexSeparableKernel::rotate(), splitAndApply(), and PtexSeparableKernel::weight().
Referenced by splitAndApply().
| 
 | protected | 
Definition at line 325 of file PtexSeparableFilter.cpp.
References PtexSeparableKernel::adjustMainToSubface(), PtexSeparableKernel::adjustSubfaceToMain(), apply(), Ptex::FaceInfo::isSubface(), PtexSeparableKernel::rotate(), and splitAndApply().
Referenced by applyToCorner().
| 
 | protectedpure virtual | 
Referenced by eval().
| 
 | 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.
| result | Buffer to hold filter result. Must be large enough to hold nchannels worth of data. | 
| firstchan | First channel to evaluate [0..tx->numChannels()-1] | 
| nchannels | Number of channels to evaluate | 
| faceid | Face index [0..tx->numFaces()-1] | 
| u | U coordinate, normalized [0..1] | 
| v | V coordinate, normalized [0..1] | 
| uw1 | U filter width 1, normalized [0..1] | 
| vw1 | V filter width 1, normalized [0..1] | 
| uw2 | U filter width 2, normalized [0..1] | 
| vw2 | V filter width 2, normalized [0..1] | 
| width | scale factor for filter width | 
| blur | amount 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().
| 
 | inlinevirtual | 
Release resources held by this pointer (pointer becomes invalid).
Implements PtexFilter.
Definition at line 46 of file PtexSeparableFilter.h.
| 
 | protected | 
Definition at line 130 of file PtexSeparableFilter.cpp.
References _uMode, _vMode, Ptex::FaceInfo::adjface(), apply(), applyAcrossEdge(), applyToCorner(), Ptex::e_bottom, Ptex::e_left, Ptex::e_right, Ptex::e_top, PtexSeparableKernel::mergeB(), PtexSeparableKernel::mergeL(), PtexSeparableKernel::mergeR(), PtexSeparableKernel::mergeT(), PtexSeparableKernel::res, PtexSeparableKernel::splitB(), PtexSeparableKernel::splitL(), PtexSeparableKernel::splitR(), PtexSeparableKernel::splitT(), PtexSeparableKernel::u, Ptex::Res::u(), PtexSeparableKernel::uw, PtexSeparableKernel::v, Ptex::Res::v(), and PtexSeparableKernel::vw.
Referenced by applyAcrossEdge(), applyToCorner(), applyToCornerFace(), and eval().
| 
 | protected | 
Definition at line 76 of file PtexSeparableFilter.h.
| 
 | protected | 
Definition at line 73 of file PtexSeparableFilter.h.
| 
 | protected | 
Definition at line 74 of file PtexSeparableFilter.h.
| 
 | protected | 
Definition at line 75 of file PtexSeparableFilter.h.
| 
 | protected | 
Definition at line 70 of file PtexSeparableFilter.h.
| 
 | protected | 
Definition at line 71 of file PtexSeparableFilter.h.
| 
 | protected | 
Definition at line 69 of file PtexSeparableFilter.h.
Referenced by apply(), applyAcrossEdge(), applyToCorner(), and eval().
| 
 | protected | 
Definition at line 77 of file PtexSeparableFilter.h.
Referenced by eval(), and splitAndApply().
| 
 | protected | 
Definition at line 77 of file PtexSeparableFilter.h.
Referenced by eval(), and splitAndApply().
| 
 | protected | 
Definition at line 72 of file PtexSeparableFilter.h.
Referenced by applyToCorner(), and eval().
 1.8.10
 1.8.10