18struct AtAOVSampleIterator;
40 uint8_t (*FilterOutputType)(
const AtNode*, uint8_t);
41 void (*FilterPixel)(
AtNode*, AtAOVSampleIterator*,
void*, uint8_t);
45#define AI_FILTER_NODE_EXPORT_METHODS(tag) \
46AI_INSTANCE_COMMON_METHODS \
49static AtFilterNodeMethods ai_filter_mtds = { \
53static AtNodeMethods ai_node_mtds = { \
57const AtNodeMethods *tag = &ai_node_mtds;
78#define filter_output_type \
79static uint8_t FilterOutputType(const AtNode* node, uint8_t input_type)
95static void FilterPixel(AtNode* node, AtAOVSampleIterator* iterator, void* data_out, uint8_t data_type)
128AI_API AI_PURE
bool AiAOVSampleIteratorGetBool (
const AtAOVSampleIterator* iter);
129AI_API AI_PURE
int AiAOVSampleIteratorGetInt (
const AtAOVSampleIterator* iter);
130AI_API AI_PURE
unsigned int AiAOVSampleIteratorGetUInt (
const AtAOVSampleIterator* iter);
131AI_API AI_PURE
float AiAOVSampleIteratorGetFlt (
const AtAOVSampleIterator* iter);
132AI_API AI_PURE
AtRGB AiAOVSampleIteratorGetRGB (
const AtAOVSampleIterator* iter);
133AI_API AI_PURE
AtRGBA AiAOVSampleIteratorGetRGBA (
const AtAOVSampleIterator* iter);
134AI_API AI_PURE
AtVector AiAOVSampleIteratorGetVec (
const AtAOVSampleIterator* iter);
135AI_API AI_PURE
AtVector2 AiAOVSampleIteratorGetVec2 (
const AtAOVSampleIterator* iter);
136AI_API AI_PURE
AtMatrix AiAOVSampleIteratorGetMatrix(
const AtAOVSampleIterator* iter);
137AI_API AI_PURE
const void* AiAOVSampleIteratorGetPtr (
const AtAOVSampleIterator* iter);
144AI_API AI_PURE
bool AiAOVSampleIteratorGetAOVBool (
const AtAOVSampleIterator* iter,
const AtString name);
145AI_API AI_PURE
int AiAOVSampleIteratorGetAOVInt (
const AtAOVSampleIterator* iter,
const AtString name);
146AI_API AI_PURE
unsigned int AiAOVSampleIteratorGetAOVUInt (
const AtAOVSampleIterator* iter,
const AtString name);
147AI_API AI_PURE
float AiAOVSampleIteratorGetAOVFlt (
const AtAOVSampleIterator* iter,
const AtString name);
148AI_API AI_PURE
AtRGB AiAOVSampleIteratorGetAOVRGB (
const AtAOVSampleIterator* iter,
const AtString name);
149AI_API AI_PURE
AtRGBA AiAOVSampleIteratorGetAOVRGBA (
const AtAOVSampleIterator* iter,
const AtString name);
150AI_API AI_PURE
AtVector AiAOVSampleIteratorGetAOVVec (
const AtAOVSampleIterator* iter,
const AtString name);
151AI_API AI_PURE
AtVector2 AiAOVSampleIteratorGetAOVVec2 (
const AtAOVSampleIterator* iter,
const AtString name);
152AI_API AI_PURE
AtMatrix AiAOVSampleIteratorGetAOVMatrix(
const AtAOVSampleIterator* iter,
const AtString name);
153AI_API AI_PURE
const void* AiAOVSampleIteratorGetAOVPtr (
const AtAOVSampleIterator* iter,
const AtString name);
AtNode struct and methods.
Vector math types, operators and utilities.
Arnold String allows for fast string comparisons.
Definition: ai_string.h:46
AI_API void AiFilterUpdate(AtNode *node, float width)
Updates an AOV filter.
Definition: ai_aov_filters.cpp:49
AI_API bool AiAOVSampleIteratorGetNext(AtAOVSampleIterator *iter)
Advance iterator to next sample (or return false if none are left).
Definition: ai_sample_iterator.cpp:53
AI_API AI_PURE AtString AiAOVSampleIteratorGetAOVName(const AtAOVSampleIterator *iter)
Returns the name of the primary AOV.
Definition: ai_sample_iterator.cpp:164
AI_API void AiFilterInitialize(AtNode *node, bool requires_depth, const char **required_aovs)
Initializes an AOV filter.
Definition: ai_aov_filters.cpp:24
AI_API AI_PURE AtVector2 AiAOVSampleIteratorGetOffset(const AtAOVSampleIterator *iter)
Get the (x,y) offset from the pixel center.
Definition: ai_sample_iterator.cpp:79
AI_API AI_PURE bool AiAOVSampleIteratorHasValue(const AtAOVSampleIterator *iter)
Test if the iterator has a value for the primary AOV at the current location.
Definition: ai_sample_iterator.cpp:133
AI_API void AiAOVSampleIteratorReset(AtAOVSampleIterator *iter)
Reset the iterator to its initial state (start of the same pixel).
Definition: ai_sample_iterator.cpp:40
AI_API bool AiAOVSampleIteratorGetNextDepth(AtAOVSampleIterator *iter)
Advance the iterator through the "deep" sample off of the current sub-pixel sample.
Definition: ai_sample_iterator.cpp:65
AI_API void AiAOVSampleIteratorInitPixel(AtAOVSampleIterator *iter, int x, int y)
Initialize the iterator for looping over the sample of the specified pixel.
Definition: ai_sample_iterator.cpp:16
AI_API AI_PURE bool AiAOVSampleIteratorHasAOVValue(const AtAOVSampleIterator *iter, AtString name, uint8_t type)
Test if the iterator has a value for an arbitrary AOV at the current location.
Definition: ai_sample_iterator.cpp:151
AI_API AI_PURE float AiAOVSampleIteratorGetInvDensity(const AtAOVSampleIterator *iter)
Get the inverse of the sampling density of the current sample.
Definition: ai_sample_iterator.cpp:105
AI_API void AiAOVSampleIteratorGetPixel(AtAOVSampleIterator *iter, int &x, int &y)
Returns the pixel coordinates that the iterator was initialized for.
Definition: ai_sample_iterator.cpp:28
AI_API AI_PURE int AiAOVSampleIteratorGetDepth(const AtAOVSampleIterator *iter)
Get the depth of the current sample.
Definition: ai_sample_iterator.cpp:118
Filter Node methods structure.
Definition: ai_filters.h:39
Definition: ai_matrix.h:30
This represents a node in Arnold.
RGB color + alpha.
Definition: ai_color.h:267
RGB color.
Definition: ai_color.h:32
2D point
Definition: ai_vector.h:255
3D point (single precision)
Definition: ai_vector.h:30