MDL SDK API nvidia_logo_transpbg.gif Up
mdl_distiller_plugin_api.h
Go to the documentation of this file.
1/******************************************************************************
2 * Copyright 2025 NVIDIA Corporation. All rights reserved.
3 *****************************************************************************/
4
7
8#ifndef MDL_DISTILLER_PLUGIN_API_H
9#define MDL_DISTILLER_PLUGIN_API_H
10
11#include <mi/mdl/mdl_streams.h>
14
15namespace mi {
16namespace mdl {
17
18class ICall_name_resolver;
19
24#define MI_MDL_DISTILLER_PLUGIN_API_VERSION 6
25
30{
31public:
42 IMaterial_instance const *inst,
43 IRule_matcher &matcher,
44 IRule_matcher_event *event_handler,
45 const Distiller_options *options,
46 mi::Sint32 &error) = 0;
47
51
53 bool operator()(char const *a, char const *b) const
54 {
55 return strcmp(a, b) < 0;
56 }
57 };
58
59 virtual void dump_attributes(
60 IMaterial_instance const *inst) = 0;
61 virtual void dump_attributes(
62 IMaterial_instance const *inst,
63 DAG_node const *node) = 0;
64
71 virtual void set_attribute(
72 DAG_node const *node,
73 char const *name,
74 DAG_node const *value) = 0;
75 virtual void set_attribute(
76 IMaterial_instance const *inst,
77 DAG_node const *node,
78 char const *name,
79 mi::Float32 value) = 0;
80 virtual void set_attribute(
81 IMaterial_instance const *inst,
82 DAG_node const *node,
83 char const *name,
84 mi::Sint32 value) = 0;
85
89 virtual void remove_attributes(
90 DAG_node const *node) = 0;
91
98 virtual DAG_node const *get_attribute(
99 DAG_node const *node,
100 char const *name) = 0;
101
108 virtual bool attribute_exists(
109 DAG_node const *node,
110 char const *name) = 0;
111
117 virtual void move_attributes(
118 DAG_node const *to_node,
119 DAG_node const *from_node) = 0;
120
121
123
126 FS_NONE = 0x0000,
127 //
129 //
136 //
143 //
145 //
150 //
155 FS_MATERIAL_HAIR = 0x10000
156 };
157
168 IMaterial_instance const *m0,
169 IMaterial_instance const *m1,
170 Field_selector field_selector) = 0;
171
178 IValue const *value) = 0;
179
187 DAG_node const *node,
188 int index) = 0;
189
200 virtual DAG_node const *create_call(
201 char const *name,
202 IDefinition::Semantics sema,
203 DAG_call::Call_argument const call_args[],
204 size_t num_call_args,
205 IType const *ret_type,
206 DAG_DbgInfo dbg_info) = 0;
207
218 char const *name,
219 DAG_node const * const call_args[],
220 size_t num_call_args,
221 DAG_DbgInfo dbg_info) = 0;
222
225 DAG_call::Call_argument const call_args[],
226 int num_call_args) = 0;
227
230 DAG_call::Call_argument const call_args[],
231 int num_call_args) = 0;
232
241 IType const *type,
242 int index,
243 DAG_DbgInfo dbg_info) = 0;
244
248 virtual IType_factory *get_type_factory() = 0;
249
253 virtual IValue_factory *get_value_factory() = 0;
254
257 OK_BITWISE_COMPLEMENT = IExpression::OK_BITWISE_COMPLEMENT,
258 OK_LOGICAL_NOT = IExpression::OK_LOGICAL_NOT,
259 OK_POSITIVE = IExpression::OK_POSITIVE,
260 OK_NEGATIVE = IExpression::OK_NEGATIVE,
261 OK_PRE_INCREMENT = IExpression::OK_PRE_INCREMENT,
262 OK_PRE_DECREMENT = IExpression::OK_PRE_DECREMENT,
263 OK_POST_INCREMENT = IExpression::OK_POST_INCREMENT,
264 OK_POST_DECREMENT = IExpression::OK_POST_DECREMENT
265 };
266
269 OK_SELECT = IExpression_binary::OK_SELECT,
270 OK_ARRAY_INDEX = IExpression_binary::OK_ARRAY_INDEX,
271 OK_MULTIPLY = IExpression_binary::OK_MULTIPLY,
272 OK_DIVIDE = IExpression_binary::OK_DIVIDE,
273 OK_MODULO = IExpression_binary::OK_MODULO,
274 OK_PLUS = IExpression_binary::OK_PLUS,
275 OK_MINUS = IExpression_binary::OK_MINUS,
276 OK_SHIFT_LEFT = IExpression_binary::OK_SHIFT_LEFT,
277 OK_SHIFT_RIGHT = IExpression_binary::OK_SHIFT_RIGHT,
278 OK_UNSIGNED_SHIFT_RIGHT = IExpression_binary::OK_UNSIGNED_SHIFT_RIGHT,
279 OK_LESS = IExpression_binary::OK_LESS,
280 OK_LESS_OR_EQUAL = IExpression_binary::OK_LESS_OR_EQUAL,
281 OK_GREATER_OR_EQUAL = IExpression_binary::OK_GREATER_OR_EQUAL,
282 OK_GREATER = IExpression_binary::OK_GREATER,
283 OK_EQUAL = IExpression_binary::OK_EQUAL,
284 OK_NOT_EQUAL = IExpression_binary::OK_NOT_EQUAL,
285 OK_BITWISE_AND = IExpression_binary::OK_BITWISE_AND,
286 OK_BITWISE_XOR = IExpression_binary::OK_BITWISE_XOR,
287 OK_BITWISE_OR = IExpression_binary::OK_BITWISE_OR,
288 OK_LOGICAL_AND = IExpression_binary::OK_LOGICAL_AND,
289 OK_LOGICAL_OR = IExpression_binary::OK_LOGICAL_OR,
290 };
291
293 virtual IType const *get_bsdf_component_type() = 0;
294
296 virtual IType const *get_edf_component_type() = 0;
297
299 virtual IType const *get_vdf_component_type() = 0;
300
302 virtual IType const *get_bsdf_component_array_type(
303 int n_values) = 0;
304
306 virtual IType const *get_edf_component_array_type(
307 int n_values) = 0;
308
310 virtual IType const *get_vdf_component_array_type(
311 int n_values) = 0;
312
314 virtual IType const *get_color_bsdf_component_type() = 0;
315
317 virtual IType const *get_color_edf_component_type() = 0;
318
320 virtual IType const *get_color_vdf_component_type() = 0;
321
324 int n_values) = 0;
325
328 int n_values) = 0;
329
332 int n_values) = 0;
333
335 virtual IType const *get_bool_type() = 0;
336
343 virtual DAG_node const *create_unary(
345 DAG_node const *o) = 0;
346
354 virtual DAG_node const *create_binary(
356 DAG_node const *l,
357 DAG_node const *r) = 0;
358
366 virtual DAG_node const *create_ternary(
367 DAG_node const *cond,
368 DAG_node const *t_expr,
369 DAG_node const *f_expr) = 0;
370
375 virtual DAG_node const *create_select(
376 DAG_node const *s,
377 char const *member) = 0;
378
386 virtual DAG_node const *create_array(
387 IType const *elem_type,
388 DAG_node const * const values[],
389 size_t n_values) = 0;
390
393 bool f) = 0;
394
397 int i) = 0;
398
403 int i) = 0;
404
409 int i) = 0;
410
415 int i) = 0;
416
419 float f) = 0;
420
423 float x, float y, float z) = 0;
424
427 float r, float g, float b) = 0;
428
430 virtual DAG_constant const *create_global_ior() = 0;
431
434
437 char const *s) = 0;
438
440 virtual DAG_constant const *create_bsdf_constant() = 0;
441
443 virtual DAG_constant const *create_edf_constant() = 0;
444
446 virtual DAG_constant const *create_vdf_constant() = 0;
447
450
453 DAG_node const *weight_arg,
454 DAG_node const *bsdf_arg) = 0;
455
458 DAG_node const *weight_arg,
459 DAG_node const *edf_arg) = 0;
460
463 DAG_node const *weight_arg,
464 DAG_node const *vdf_arg) = 0;
465
468 DAG_node const *weight_arg,
469 DAG_node const *bsdf_arg) = 0;
470
473 DAG_node const *weight_arg,
474 DAG_node const *edf_arg) = 0;
475
478 DAG_node const *weight_arg,
479 DAG_node const *edf_arg) = 0;
480
482 virtual DAG_constant const *mk_constant(
483 const char *const_type,
484 const char *value) = 0;
485
487 virtual DAG_node const *mk_default(
488 char const *param_type,
489 char const *param_default) = 0;
490
494 DAG_node const *node) = 0;
495
499 DAG_node const *node,
500 size_t i) = 0;
501
506 DAG_node const *node,
507 size_t i) = 0;
508
510 virtual char const *get_compound_parameter_name(
511 DAG_node const *node,
512 size_t i) const = 0;
513
515 virtual bool eval_if(
516 DAG_node const *node) = 0;
517
520 virtual bool eval_maybe_if(
521 DAG_node const *node) = 0;
522
529 virtual int get_selector(
530 DAG_node const *node) const = 0;
531
533 virtual bool all_nodes(
535 DAG_node const *node) = 0;
536
539 bool new_value) = 0;
540
550 IMaterial_instance const *inst,
551 IRule_matcher_event *event_handler,
552 const mi::mdl::Distiller_options *options,
553 mi::Sint32 &error) = 0;
554
556 virtual void release() const = 0;
557
558 virtual void debug_node(
559 IOutput_stream *outs,
560 DAG_node const *node) = 0;
561
562 // This structs collects the node properties that are required for matching on a node in
563 // the Distiller. The following properties are relevant.
564 // 1. Semantics
565 // 2. Type kind (if the semantics is not enough, e.g. DS_UNKOWN or DS_ELEM_CONSTRUCTOR or
566 // ternaries)
567 // 3. Predefined struct Id (if the Type kind is also not enough, e.g. for materials)
568 // 4. Arity (number of arguments for mixers and tint())
569 // The properties are stored in the output parameters. Parameters that are not relevant
570 // (or not even meaningful) for a node are set to default values as follows:
571 // - sema: DS_UNKNOWN
572 // - type_kind: TK_ERROR
573 // - struct_id: SID_USER
574 // - arity: 0
575 struct Match_properties {
576 IDefinition::Semantics sema;
577 IType::Kind type_kind;
578 IType_struct::Predefined_id struct_id;
579 size_t arity;
580 };
581
582 // Compute all properties of a node that are required for matching against a rule pattern.
583 virtual void get_match_properties(
584 DAG_node const *node,
585 Match_properties &mprops) const = 0;
586};
587
588} // mdl
589} // mi
590
591#endif // MDL_DISTILLER_PLUGIN_API_H
The debug info type for DAG nodes.
Definition: mdl_generated_dag.h:119
A DAG IR constant.
Definition: mdl_generated_dag.h:207
A node inside the DAG Intermediate Representation.
Definition: mdl_generated_dag.h:178
A DAG IR parameter reference.
Definition: mdl_generated_dag.h:313
A DAG IR temporary reference.
Definition: mdl_generated_dag.h:220
Options class to hold all parameters for algorithm and rule customizations.
Definition: mdl_distiller_options.h:15
The rule engine handles the transformation of a compiled material by a rule set.
Definition: mdl_distiller_plugin_api.h:30
virtual DAG_constant const * mk_constant(const char *const_type, const char *value)=0
Create a constant node for a given type and value.
virtual char const * get_compound_parameter_name(DAG_node const *node, size_t i) const =0
Returns the name of the i-th parameter of node, or NULL if there is none or node is NULL.
virtual bool all_nodes(IRule_matcher::Checker_function test_fct, DAG_node const *node)=0
Checks recursively for all call nodes if the property test_fct returns true.
virtual void move_attributes(DAG_node const *to_node, DAG_node const *from_node)=0
Move all nodes from from_node to node to_node, removing them from from_node.
virtual DAG_node const * create_select(DAG_node const *s, char const *member)=0
Creates a SELECT operator on a struct or vector.
virtual IType const * get_color_bsdf_component_type()=0
Return the type for ::df::color_bsdf_component.
virtual DAG_node const * create_edf_component(DAG_node const *weight_arg, DAG_node const *edf_arg)=0
Create a edf_component for a mixer; can be a call or a constant.
virtual DAG_constant const * create_string_constant(char const *s)=0
Creates a string constant.
virtual IType const * get_color_bsdf_component_array_type(int n_values)=0
Return the type for ::df::color_bsdf_component.
virtual DAG_node const * create_function_call(char const *name, DAG_node const *const call_args[], size_t num_call_args, DAG_DbgInfo dbg_info)=0
Create a function call for a non-overloaded function.
virtual DAG_node const * create_ternary(DAG_node const *cond, DAG_node const *t_expr, DAG_node const *f_expr)=0
Creates a ternary operator.
virtual DAG_node const * create_vdf_component(DAG_node const *weight_arg, DAG_node const *vdf_arg)=0
Create a vdf_component for a mixer; can be a call or a constant.
virtual DAG_node const * create_color_mixer_call(DAG_call::Call_argument const call_args[], int num_call_args)=0
Create a 1-, 2-, 3-, or 4-color-mixer call, with 2, 4, 6, or 8 parameters respectively.
Binary_operator
Supported binary operators in the DAG representation.
Definition: mdl_distiller_plugin_api.h:268
@ OK_NOT_EQUAL
"!="
Definition: mdl_distiller_plugin_api.h:284
@ OK_PLUS
"+"
Definition: mdl_distiller_plugin_api.h:274
@ OK_ARRAY_INDEX
"[]"
Definition: mdl_distiller_plugin_api.h:270
@ OK_BITWISE_XOR
"^"
Definition: mdl_distiller_plugin_api.h:286
@ OK_BITWISE_OR
"|"
Definition: mdl_distiller_plugin_api.h:287
@ OK_EQUAL
"=="
Definition: mdl_distiller_plugin_api.h:283
@ OK_LESS
"<"
Definition: mdl_distiller_plugin_api.h:279
@ OK_SHIFT_LEFT
"<<"
Definition: mdl_distiller_plugin_api.h:276
@ OK_DIVIDE
"/"
Definition: mdl_distiller_plugin_api.h:272
@ OK_LOGICAL_AND
"&&"
Definition: mdl_distiller_plugin_api.h:288
@ OK_SELECT
"."
Definition: mdl_distiller_plugin_api.h:269
@ OK_GREATER
">"
Definition: mdl_distiller_plugin_api.h:282
@ OK_SHIFT_RIGHT
">>"
Definition: mdl_distiller_plugin_api.h:277
@ OK_GREATER_OR_EQUAL
">="
Definition: mdl_distiller_plugin_api.h:281
@ OK_MINUS
"-"
Definition: mdl_distiller_plugin_api.h:275
@ OK_MODULO
"%"
Definition: mdl_distiller_plugin_api.h:273
@ OK_LESS_OR_EQUAL
"<="
Definition: mdl_distiller_plugin_api.h:280
@ OK_MULTIPLY
"*"
Definition: mdl_distiller_plugin_api.h:271
@ OK_LOGICAL_OR
"||"
Definition: mdl_distiller_plugin_api.h:289
@ OK_BITWISE_AND
"&"
Definition: mdl_distiller_plugin_api.h:285
@ OK_UNSIGNED_SHIFT_RIGHT
">>>"
Definition: mdl_distiller_plugin_api.h:278
virtual DAG_constant const * create_global_ior()=0
Creates a RGB color constant of the global material IOR value.
virtual IType const * get_bsdf_component_array_type(int n_values)=0
Return the type for ::df::bsdf_component.
virtual DAG_constant const * create_hair_bsdf_constant()=0
Creates an invalid hair_bsdf.
virtual IType const * get_color_edf_component_array_type(int n_values)=0
Return the type for ::df::color_edf_component.
virtual DAG_constant const * create_wrap_mode_enum_constant(int i)=0
Creates a constant of the tex::wrap_mode enum.
Field_selector
================================================================================
Definition: mdl_distiller_plugin_api.h:125
@ FS_MATERIAL_VOLUME_SCATTERING
volume.scattering field
Definition: mdl_distiller_plugin_api.h:146
@ FS_MATERIAL_BACKFACE_EMISSION
all backface.emission fields
Definition: mdl_distiller_plugin_api.h:141
@ FS_MATERIAL_GEOMETRY_NORMAL
geometry.normal field
Definition: mdl_distiller_plugin_api.h:153
@ FS_MATERIAL_SURFACE_EMISSION_EMISSION
surface.emission.emission field
Definition: mdl_distiller_plugin_api.h:131
@ FS_MATERIAL_HAIR
hair field
Definition: mdl_distiller_plugin_api.h:155
@ FS_MATERIAL_SURFACE_EMISSION
all surface.emission fields
Definition: mdl_distiller_plugin_api.h:134
@ FS_MATERIAL_IOR
ior field
Definition: mdl_distiller_plugin_api.h:144
@ FS_MATERIAL_BACKFACE_EMISSION_MODE
backface.emission.mode field
Definition: mdl_distiller_plugin_api.h:140
@ FS_MATERIAL_GEOMETRY_DISPLACEMENT
geometry.displacement field
Definition: mdl_distiller_plugin_api.h:151
@ FS_MATERIAL_BACKFACE
all backface fields
Definition: mdl_distiller_plugin_api.h:142
@ FS_MATERIAL_VOLUME_ABSORPTION_COEFFICIENT
volume.absorption_coefficient field
Definition: mdl_distiller_plugin_api.h:147
@ FS_MATERIAL_SURFACE_EMISSION_INTENSITY
surface.emission.intensity field
Definition: mdl_distiller_plugin_api.h:132
@ FS_MATERIAL_VOLUME_SCATTERING_COEFFICIENT
volume.scattering_coefficient field
Definition: mdl_distiller_plugin_api.h:148
@ FS_MATERIAL_VOLUME
all volume fields
Definition: mdl_distiller_plugin_api.h:149
@ FS_MATERIAL_SURFACE
all surface fields
Definition: mdl_distiller_plugin_api.h:135
@ FS_MATERIAL_BACKFACE_EMISSION_INTENSITY
backface.emission.intensity field
Definition: mdl_distiller_plugin_api.h:139
@ FS_MATERIAL_BACKFACE_SCATTERING
backface.scattering field
Definition: mdl_distiller_plugin_api.h:137
@ FS_MATERIAL_THIN_WALLED
thin_walled field
Definition: mdl_distiller_plugin_api.h:128
@ FS_MATERIAL_GEOMETRY_CUTOUT_OPACITY
geometry.cutout_opacity field
Definition: mdl_distiller_plugin_api.h:152
@ FS_MATERIAL_GEOMETRY
all geometry fields
Definition: mdl_distiller_plugin_api.h:154
@ FS_MATERIAL_SURFACE_SCATTERING
surface.scattering field
Definition: mdl_distiller_plugin_api.h:130
@ FS_NONE
no fields copied
Definition: mdl_distiller_plugin_api.h:126
@ FS_MATERIAL_SURFACE_EMISSION_MODE
surface.emission.mode field
Definition: mdl_distiller_plugin_api.h:133
@ FS_MATERIAL_BACKFACE_EMISSION_EMISSION
backface.emission.emission field
Definition: mdl_distiller_plugin_api.h:138
virtual void set_attribute(DAG_node const *node, char const *name, DAG_node const *value)=0
Set the value of a named attribute of a node.
virtual void remove_attributes(DAG_node const *node)=0
Remove all attributes from the given DAG node.
virtual DAG_node const * get_attribute(DAG_node const *node, char const *name)=0
Get the value of an attribute for the given DAG node.
virtual DAG_node const * get_remapped_argument(DAG_node const *node, size_t i)=0
Return the i-th argument if node is non-null and of the call kind, or a compound constant,...
virtual IType const * get_color_vdf_component_array_type(int n_values)=0
Return the type for ::df::color_vdf_component.
virtual DAG_constant const * create_float3_constant(float x, float y, float z)=0
Creates a float3 constant.
virtual IType const * get_edf_component_array_type(int n_values)=0
Return the type for ::df::edf_component.
virtual IType const * get_bool_type()=0
Return the type for bool.
virtual DAG_constant const * create_scatter_enum_constant(int i)=0
Creates a constant of the df::scatter_mode enum.
virtual DAG_constant const * create_edf_constant()=0
Creates an invalid edf.
virtual bool eval_if(DAG_node const *node)=0
Returns true if node evaluates to true.
virtual DAG_node const * mk_default(char const *param_type, char const *param_default)=0
Create DAG_node's for possible default values of Node_types parameter.
virtual DAG_node const * create_binary(Binary_operator op, DAG_node const *l, DAG_node const *r)=0
Creates an operator, handles types.
virtual IType const * get_color_vdf_component_type()=0
Return the type for ::df::color_vdf_component.
virtual size_t get_compound_argument_size(DAG_node const *node)=0
Returns the argument count if node is non-null and of the call kind or a compound constant,...
virtual IType const * get_vdf_component_array_type(int n_values)=0
Return the type for ::df::vdf_component.
virtual DAG_node const * create_unary(Unary_operator op, DAG_node const *o)=0
Creates an operator, handles types.
virtual bool attribute_exists(DAG_node const *node, char const *name)=0
Check whether a named attribute exists for a DAG node.
virtual bool set_normalize_mixers(bool new_value)=0
Set the normalization of mixer node flag and return its previous value.
virtual DAG_constant const * create_emission_enum_constant(int i)=0
Creates a constant of the predefined intensity_mode enum.
virtual IType const * get_color_edf_component_type()=0
Return the type for ::df::color_edf_component.
virtual DAG_constant const * create_bool_constant(bool f)=0
Creates a boolean constant.
virtual DAG_constant const * create_int_constant(int i)=0
Creates an integer constant.
virtual IType const * get_edf_component_type()=0
Return the type for ::df::edf_component.
virtual DAG_temporary const * create_temporary(DAG_node const *node, int index)=0
Create a temporary reference.
virtual IType const * get_bsdf_component_type()=0
Return the type for ::df::bsdf_component.
virtual DAG_constant const * create_bsdf_constant()=0
Creates an invalid bsdf.
virtual IType_factory * get_type_factory()=0
Get the type factory associated with this expression factory.
virtual DAG_node const * create_color_vdf_component(DAG_node const *weight_arg, DAG_node const *edf_arg)=0
Create a vdf_color_component for a color mixer; can be a call or a constant.
virtual DAG_node const * create_color_bsdf_component(DAG_node const *weight_arg, DAG_node const *bsdf_arg)=0
Create a bsdf_color_component for a color mixer; can be a call or a constant.
virtual IType const * get_vdf_component_type()=0
Return the type for ::df::vdf_component.
virtual DAG_node const * create_array(IType const *elem_type, DAG_node const *const values[], size_t n_values)=0
Creates an array constructor.
Unary_operator
Supported unary operators in the DAG representation.
Definition: mdl_distiller_plugin_api.h:256
virtual IValue_factory * get_value_factory()=0
Get the value factory associated with this expression factory.
virtual IMaterial_instance * merge_materials(IMaterial_instance const *m0, IMaterial_instance const *m1, Field_selector field_selector)=0
Returns a new material instance as a merge of two material instances based on a material field select...
virtual IMaterial_instance * normalize_mixers(IMaterial_instance const *inst, IRule_matcher_event *event_handler, const mi::mdl::Distiller_options *options, mi::Sint32 &error)=0
Normalize mixer nodes and set respective flag to keep them normalized.
virtual DAG_constant const * create_constant(IValue const *value)=0
Create a constant.
virtual void release() const =0
Immediately deletes this distiller plugin API.
virtual DAG_constant const * create_color_constant(float r, float g, float b)=0
Creates a RGB color constant.
virtual DAG_constant const * create_vdf_constant()=0
Creates an invalid vdf.
virtual DAG_parameter const * create_parameter(IType const *type, int index, DAG_DbgInfo dbg_info)=0
Create a parameter reference.
virtual DAG_node const * create_bsdf_component(DAG_node const *weight_arg, DAG_node const *bsdf_arg)=0
Create a bsdf_component for a mixer; can be a call or a constant.
virtual DAG_node const * create_mixer_call(DAG_call::Call_argument const call_args[], int num_call_args)=0
Create a 1-, 2-, 3-, or 4-mixer call, with 2, 4, 6, or 8 parameters respectively.
virtual DAG_node const * get_compound_argument(DAG_node const *node, size_t i)=0
Return the i-th argument if node is non-null and of the call kind, or a compound constant,...
virtual DAG_constant const * create_global_float_ior()=0
Creates a float constant of the global material IOR green value.
virtual IMaterial_instance * apply_rules(IMaterial_instance const *inst, IRule_matcher &matcher, IRule_matcher_event *event_handler, const Distiller_options *options, mi::Sint32 &error)=0
Apply rules using a strategy.
virtual int get_selector(DAG_node const *node) const =0
Compute the node selector for the matcher, either the semantic for a DAG_call node,...
virtual DAG_constant const * create_float_constant(float f)=0
Creates a floating point constant.
virtual DAG_node const * create_color_edf_component(DAG_node const *weight_arg, DAG_node const *edf_arg)=0
Create a edf_color_component for a color mixer; can be a call or a constant.
virtual DAG_node const * create_call(char const *name, IDefinition::Semantics sema, DAG_call::Call_argument const call_args[], size_t num_call_args, IType const *ret_type, DAG_DbgInfo dbg_info)=0
Create a call.
virtual bool eval_maybe_if(DAG_node const *node)=0
Returns true if node is not evaluating to false, i.e., it either evaluates to true or cannot be evalu...
An instantiated material.
Definition: mdl_generated_dag.h:1467
An interface for reporting rule matcher events.
Definition: mdl_distiller_rules.h:139
The interface to the generated rule matcher, new version for distiller plugin API.
Definition: mdl_distiller_rules.h:203
bool(* Checker_function)(IDistiller_plugin_api &plugin_api, DAG_node const *node)
Function pointer for individual checker functions in rule sets.
Definition: mdl_distiller_rules.h:206
std::basic_ostream<C, T> & error(std::basic_ostream<C, T> &ostream)
Manipulator for mi::base::Log_stream.
Definition: ilogger.h:541
int Sint32
32-bit signed integer.
Definition: types.h:46
float Float32
32-bit float.
Definition: types.h:51
MDL distiller rule definitions and rule base class.
Interfaces for the MDL DAG Intermediate Representation.
Common namespace for APIs of NVIDIA Advanced Rendering Center GmbH.
Definition: example_derivatives.dox:5
A simple value helper class, a pair of an argument expression and a parameter name.
Definition: mdl_generated_dag.h:239
== Node attributes =============================================================
Definition: mdl_distiller_plugin_api.h:52