19struct AtOutputIterator;
20struct AtAOVSampleIterator;
46 bool (*DriverSupportsPixelType)(
const AtNode*, uint8_t);
47 const char** (*DriverExtension)();
49 bool (*DriverNeedsBucket)(
AtNode*, int, int, int, int, uint16_t);
50 void (*DriverPrepareBucket)(
AtNode*, int, int, int, int, uint16_t);
51 void (*DriverProcessBucket)(
AtNode*,
struct AtOutputIterator*,
struct AtAOVSampleIterator*, int, int, int, int, uint16_t);
52 void (*DriverWriteBucket)(
AtNode*,
struct AtOutputIterator*,
struct AtAOVSampleIterator*, int, int, int, int);
53 void (*DriverClose)(
AtNode*,
struct AtOutputIterator*);
57#define AI_DRIVER_NODE_EXPORT_METHODS(tag) \
58AI_INSTANCE_COMMON_METHODS \
59driver_supports_pixel_type; \
63driver_prepare_bucket; \
64driver_process_bucket; \
67static AtDriverNodeMethods ai_driver_mtds = { \
68 DriverSupportsPixelType, \
72 DriverPrepareBucket, \
73 DriverProcessBucket, \
77static AtNodeMethods ai_node_mtds = { \
81const AtNodeMethods *tag = &ai_node_mtds;
95#define driver_supports_pixel_type \
96static bool DriverSupportsPixelType(const AtNode* node, uint8_t pixel_type)
112#define driver_extension \
113static const char** DriverExtension()
128static void DriverOpen(AtNode* node, struct AtOutputIterator* iterator, AtBBox2 display_window, AtBBox2 data_window, int bucket_size)
145#define driver_needs_bucket \
146static bool DriverNeedsBucket(AtNode* node, int bucket_xo, int bucket_yo, int bucket_size_x, int bucket_size_y, uint16_t tid)
164#define driver_prepare_bucket \
165static void DriverPrepareBucket(AtNode* node, int bucket_xo, int bucket_yo, int bucket_size_x, int bucket_size_y, uint16_t tid)
185#define driver_process_bucket \
186static void DriverProcessBucket(AtNode* node, struct AtOutputIterator* iterator, struct AtAOVSampleIterator* sample_iterator, int bucket_xo, int bucket_yo, int bucket_size_x, int bucket_size_y, uint16_t tid)
204#define driver_write_bucket \
205static void DriverWriteBucket(AtNode* node, struct AtOutputIterator* iterator, struct AtAOVSampleIterator* sample_iterator, int bucket_xo, int bucket_yo, int bucket_size_x, int bucket_size_y)
215#define driver_close \
216static void DriverClose(AtNode* node, struct AtOutputIterator* iterator)
DLL export prefix for API functions (necessary for multi-platform development)
Axis-aligned bounding box types and utilities.
AtNode struct and methods.
Arnold String allows for fast string comparisons.
Definition: ai_string.h:46
AI_API const AtNodeEntry * AiFindDriverType(const char *extension)
Get correct driver node type from an extension.
Definition: ai_drivers.cpp:107
AI_API const char ** AiDriverExtension(const AtNodeEntry *node_entry)
Invokes a driver's driver_extension method which returns a NULL-terminated array of filename extensio...
Definition: ai_drivers.cpp:25
AI_API void AiRawDriverInitialize(AtNode *node, const char **required_aovs, bool requires_depth)
Allocates and initializes the driver structure.
Definition: ai_drivers.cpp:63
AI_API void AiOutputIteratorReset(struct AtOutputIterator *iter)
Reset an output iterator.
Definition: ai_output_iterator.cpp:14
AI_API AtString AiOutputIteratorGetLayerName(struct AtOutputIterator *iter)
Get the name of the targer layer of the current output.
Definition: ai_output_iterator.cpp:71
AI_API AtNode * AiOutputIteratorGetFilter(struct AtOutputIterator *iter)
Get the filter associated with the current output.
Definition: ai_output_iterator.cpp:49
AI_API bool AiOutputIteratorIsHalf(struct AtOutputIterator *iter)
Is the current output is half format.
Definition: ai_output_iterator.cpp:60
AI_API void AiDriverInitialize(AtNode *node, bool supports_multiple_outputs)
Allocates and initializes the driver structure.
Definition: ai_drivers.cpp:38
AI_API AtNode * AiOutputIteratorGetCamera(struct AtOutputIterator *iter)
Get the camera associated with the current output.
Definition: ai_output_iterator.cpp:82
AI_API void AiDriverGetMatrices(AtMatrix &world_to_camera, AtMatrix &world_to_screen)
Get Renderman compliant matrices from the active camera for use in file headers.
Definition: ai_drivers.cpp:87
AI_API bool AiOutputIteratorGetNext(struct AtOutputIterator *iter, AtString *output_name, int *pixel_type, const void **bucket_data)
Get information about the next output connected to a driver.
Definition: ai_output_iterator.cpp:36
2D axis-aligned bounding box (uses integers)
Definition: ai_bbox.h:169
Driver Node methods structure.
Definition: ai_drivers.h:45
Definition: ai_matrix.h:30
This represents a node type in Arnold.
This represents a node in Arnold.