Ptex

Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
PtexFilter Class Referenceabstract

Interface for filtered sampling of ptex data files. More...

`#include <Ptexture.h>`

Inheritance diagram for PtexFilter:

## Classes
struct | Options
| Choose filter options. More...

## Public Types
enum | FilterType { f_point , f_bilinear , f_box , f_gaussian , f_bicubic , f_bspline , f_catmullrom , f_mitchell }
| Filter types. More...

## Public Member Functions
virtual void | release ()=0
| 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=1, float blur=0)=0
| Apply filter to a ptex data file. More...

## Static Public Member Functions
static PtexFilter * | getFilter (PtexTexture *tx, const Options &opts)

## Protected Member Functions
virtual | ~PtexFilter ()
| Destructor not for public use. Use release() instead. More...

## Detailed Description

Interface for filtered sampling of ptex data files.

PtexFilter instances are obtained by calling one of the particular static methods. When finished using the filter, it must be returned to the library using release().

To apply the filter to a ptex data file, use the eval() method.

Definition at line 937 of file Ptexture.h.

## Member Enumeration Documentation

## ◆ FilterType

enum PtexFilter::FilterType

Filter types.

Enumerator
f_point | Point-sampled (no filtering)
f_bilinear | Bi-linear interpolation.
f_box | Box filter.
f_gaussian | Gaussian filter.
f_bicubic | General bi-cubic filter (uses sharpness option)
f_bspline | BSpline (equivalent to bi-cubic w/ sharpness=0)
f_catmullrom | Catmull-Rom (equivalent to bi-cubic w/ sharpness=1)
f_mitchell | Mitchell (equivalent to bi-cubic w/ sharpness=2/3)

Definition at line 944 of file Ptexture.h.

## Constructor & Destructor Documentation

## ◆ ~PtexFilter()

virtual PtexFilter::~PtexFilter | ( |  | ) |
| inline protected virtual

Destructor not for public use. Use release() instead.

Definition at line 940 of file Ptexture.h.

## Member Function Documentation

## ◆ eval()

virtual void PtexFilter::eval | ( | float * | result,
|  | int | firstchan,
|  | int | nchannels,
|  | int | faceid,
|  | float | u,
|  | float | v,
|  | float | uw1,
|  | float | vw1,
|  | float | uw2,
|  | float | vw2,
|  | float | width = `1`,
|  | float | blur = `0`
| ) |  |
| pure 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

  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]

Implemented in PtexPointFilterTri, PtexPointFilter, PtexTriangleFilter, and PtexSeparableFilter.

## ◆ getFilter()

PtexFilter * PtexFilter::getFilter | ( | PtexTexture * | tx,
|  | const Options & | opts
| ) |  |
| static

Definition at line 419 of file PtexFilters.cpp.

References f_bicubic, f_bilinear, f_box, f_bspline, f_catmullrom, f_gaussian, f_mitchell, f_point, PtexFilter::Options::filter, PtexTexture::meshType(), Ptex::mt_quad, Ptex::mt_triangle, and PtexFilter::Options::sharpness.

## ◆ release()

virtual void PtexFilter::release | ( |  | ) |
| pure virtual

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

Implemented in PtexTriangleFilter, PtexSeparableFilter, PtexPointFilterTri, and PtexPointFilter.

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

- Ptexture.h
- PtexFilters.cpp