21struct AtAOVSampleIterator;
47 bool (*DriverSupportsPixelType)(
const AtNode*, uint8_t);
48 const char** (*DriverExtension)();
50 bool (*DriverNeedsBucket)(
AtNode*, int, int, int, int, uint16_t);
51 void (*DriverPrepareBucket)(
AtNode*, int, int, int, int, uint16_t);
52 void (*DriverProcessBucket)(
AtNode*,
struct AtOutputIterator*,
struct AtAOVSampleIterator*, int, int, int, int, uint16_t);
53 void (*DriverWriteBucket)(
AtNode*,
struct AtOutputIterator*,
struct AtAOVSampleIterator*, int, int, int, int);
58#define AI_DRIVER_NODE_EXPORT_METHODS(tag) \
59AI_INSTANCE_COMMON_METHODS \
60driver_supports_pixel_type; \
64driver_prepare_bucket; \
65driver_process_bucket; \
68static AtDriverNodeMethods ai_driver_mtds = { \
69 DriverSupportsPixelType, \
73 DriverPrepareBucket, \
74 DriverProcessBucket, \
78static AtNodeMethods ai_node_mtds = { \
82const AtNodeMethods *tag = &ai_node_mtds;
96#define driver_supports_pixel_type \
97static bool DriverSupportsPixelType(const AtNode* node, uint8_t pixel_type)
113#define driver_extension \
114static const char** DriverExtension()
129static void DriverOpen(AtNode* node, struct AtOutputIterator* iterator, AtBBox2 display_window, AtBBox2 data_window, int bucket_size)
146#define driver_needs_bucket \
147static bool DriverNeedsBucket(AtNode* node, int bucket_xo, int bucket_yo, int bucket_size_x, int bucket_size_y, uint16_t tid)
165#define driver_prepare_bucket \
166static void DriverPrepareBucket(AtNode* node, int bucket_xo, int bucket_yo, int bucket_size_x, int bucket_size_y, uint16_t tid)
186#define driver_process_bucket \
187static 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)
205#define driver_write_bucket \
206static 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)
216#define driver_close \
217static 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.
AtOutputIterator type and methods.
AI_API const AtNodeEntry * AiFindDriverType(const char *extension)
Get correct driver node type from an extension.
Definition: ai_drivers.cpp:121
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:26
AI_API void AiRawDriverInitialize(AtNode *node, const char **required_aovs, bool requires_depth)
Allocates and initializes the driver structure.
Definition: ai_drivers.cpp:60
AI_API void AiDriverInitialize(AtNode *node, bool supports_multiple_outputs)
Allocates and initializes the driver structure.
Definition: ai_drivers.cpp:39
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:80
2D axis-aligned bounding box (uses integers)
Definition: ai_bbox.h:169
Driver Node methods structure.
Definition: ai_drivers.h:46
Definition: ai_matrix.h:30
This represents a node type in Arnold.
This represents a node in Arnold.
This represents an iterator that is used to iterate over group of ouputs in Arnold.