MDL SDK API nvidia_logo_transpbg.gif Up
ifunction_definition.h
Go to the documentation of this file.
1/***************************************************************************************************
2 * Copyright 2024 NVIDIA Corporation. All rights reserved.
3 **************************************************************************************************/
6
7#ifndef MI_NEURAYLIB_IFUNCTION_DEFINITION_H
8#define MI_NEURAYLIB_IFUNCTION_DEFINITION_H
9
10#include <cstring>
11
14
15namespace mi {
16
17namespace neuraylib {
18
23class IFunction_call;
24class IMdl_execution_context;
25
42 mi::base::Interface_declare<0x3504744d,0xd45b,0x4a99,0xb6,0x21,0x10,0x9e,0xd5,0xcb,0x36,0xc1,
43 neuraylib::IScene_element>
44{
45public:
46
54 {
56
67
68 // Unary operators
69
71 DS_UNARY_FIRST = DS_BITWISE_COMPLEMENT,
72 DS_OPERATOR_FIRST = DS_UNARY_FIRST,
82 DS_UNARY_LAST = DS_CAST,
83
84 // Binary operators
85
87 DS_BINARY_FIRST = DS_SELECT,
121 DS_BINARY_LAST = DS_BITWISE_AND_ASSIGN,
122
123 // Ternary operator
124
127 DS_OPERATOR_LAST = DS_TERNARY,
128
129 // ::math module intrinsics
130
132 DS_INTRINSIC_MATH_FIRST = DS_INTRINSIC_MATH_ABS,
199 DS_INTRINSIC_MATH_LAST = DS_INTRINSIC_MATH_DY,
200
201 // ::state module intrinsics
202
204 DS_INTRINSIC_STATE_FIRST = DS_INTRINSIC_STATE_POSITION,
229 DS_INTRINSIC_STATE_LAST = DS_INTRINSIC_STATE_WAVELENGTH_MAX,
230
231 // ::tex module intrinsics
232
234 DS_INTRINSIC_TEX_FIRST = DS_INTRINSIC_TEX_WIDTH,
254 DS_INTRINSIC_TEX_LAST = DS_INTRINSIC_TEX_GRID_TO_OBJECT_SPACE,
255
256 // ::df module intrinsics
257
260 DS_INTRINSIC_DF_FIRST = DS_INTRINSIC_DF_DIFFUSE_REFLECTION_BSDF,
311 DS_INTRINSIC_DF_LAST = DS_INTRINSIC_DF_COLOR_UNBOUNDED_MIX,
312
313#ifndef MDL_SOURCE_RELEASE
314 // ::nvidia::df module intrinsics
315
318 DS_INTRINSIC_NVIDIA_DF_FIRST = DS_INTRINSIC_NVIDIA_DF_ASHIKHMIN_SHIRLEY_GLOSSY_BSDF,
327 DS_INTRINSIC_NVIDIA_DF_LAST = DS_INTRINSIC_NVIDIA_DF_SHEEN_LTC_BSDF,
328#endif
329
330 // ::scene module intrinsics
331
334 DS_INTRINSIC_SCENE_FIRST = DS_INTRINSIC_SCENE_DATA_ISVALID,
375 DS_INTRINSIC_SCENE_LAST = DS_INTRINSIC_SCENE_DATA_LOOKUP_UNIFORM_FLOAT4X4,
376
377 // ::debug module intrinsics
378
380 DS_INTRINSIC_DEBUG_FIRST = DS_INTRINSIC_DEBUG_BREAKPOINT,
383 DS_INTRINSIC_DEBUG_LAST = DS_INTRINSIC_DEBUG_PRINT,
384
385 // DAG backend intrinsics
386
389 DS_INTRINSIC_DAG_FIRST = DS_INTRINSIC_DAG_FIELD_ACCESS,
396 DS_INTRINSIC_DAG_LAST = DS_INTRINSIC_DAG_DECL_CAST,
397
398 DS_FORCE_32_BIT = 0xffffffffU // Undocumented, for alignment only.
399 };
400
404 virtual const char* get_module() const = 0;
405
412 virtual const char* get_mdl_name() const = 0;
413
415 virtual const char* get_mdl_module_name() const = 0;
416
423 virtual const char* get_mdl_simple_name() const = 0;
424
437 virtual const char* get_mdl_parameter_type_name( Size index) const = 0;
438
441 virtual const char* get_prototype() const = 0;
442
451 virtual void get_mdl_version( Mdl_version& since, Mdl_version& removed) const = 0;
452
454 virtual Semantics get_semantic() const = 0;
455
459 inline bool is_array_constructor() const { return strcmp( get_mdl_name(), "T[](...)") == 0; }
460
462 virtual bool is_exported() const = 0;
463
468 // to be declarative.
469 virtual bool is_declarative() const = 0;
470
476 virtual bool is_uniform() const = 0;
477
479 virtual bool is_material() const = 0;
480
484 virtual const IType* get_return_type() const = 0;
485
496 template<class T>
497 const T* get_return_type() const
498 {
499 const IType* ptr_itype = get_return_type();
500 if ( !ptr_itype)
501 return 0;
502 const T* ptr_T = static_cast<const T*>( ptr_itype->get_interface( typename T::IID()));
503 ptr_itype->release();
504 return ptr_T;
505 }
506
508 virtual Size get_parameter_count() const = 0;
509
514 virtual const char* get_parameter_name( Size index) const = 0;
515
520 virtual Size get_parameter_index( const char* name) const = 0;
521
523 virtual const IType_list* get_parameter_types() const = 0;
524
530 virtual const IExpression_list* get_defaults() const = 0;
531
538 virtual const IExpression_list* get_enable_if_conditions() const = 0;
539
546 virtual Size get_enable_if_users( Size index) const = 0;
547
555 virtual Size get_enable_if_user( Size index, Size u_index) const = 0;
556
559 virtual const IAnnotation_block* get_annotations() const = 0;
560
563 virtual const IAnnotation_block* get_return_annotations() const = 0;
564
571 virtual const IAnnotation_list* get_parameter_annotations() const = 0;
572
580 virtual const char* get_thumbnail() const = 0;
581
593 virtual bool is_valid( IMdl_execution_context* context) const = 0;
594
605 virtual const IExpression* get_body() const = 0;
606
608 virtual Size get_temporary_count() const = 0;
609
615 virtual const IExpression* get_temporary( Size index) const = 0;
616
627 virtual const char* get_temporary_name( Size index) const = 0;
628
641 template<class T>
642 const T* get_temporary( Size index) const
643 {
644 const IExpression* ptr_iexpression = get_temporary( index);
645 if ( !ptr_iexpression)
646 return 0;
647 const T* ptr_T = static_cast<const T*>( ptr_iexpression->get_interface( typename T::IID()));
648 ptr_iexpression->release();
649 return ptr_T;
650 }
651
688 const IExpression_list* arguments, Sint32* errors = 0) const = 0;
689
695 virtual const char* get_mangled_name() const = 0;
696
697#ifdef MI_NEURAYLIB_DEPRECATED_15_0
698 inline const char* get_mdl_mangled_name() const { return get_mangled_name(); }
699#endif // MI_NEURAYLIB_DEPRECATED_15_0
700};
701
703 // end group mi_neuray_mdl_elements
705
706} // namespace neuraylib
707
708} // namespace mi
709
710#endif // MI_NEURAYLIB_IFUNCTION_DEFINITION_H
Mixin class template for deriving new interface declarations.
Definition: interface_declare.h:43
An annotation block is an array of annotations.
Definition: iexpression.h:575
An ordered collection of annotation blocks identified by name or index.
Definition: iexpression.h:603
An ordered collection of expressions identified by name or index.
Definition: iexpression.h:317
The interface to MDL expressions.
Definition: iexpression.h:50
This interface represents a function call.
Definition: ifunction_call.h:52
This interface represents a function definition.
Definition: ifunction_definition.h:44
virtual const char * get_module() const =0
Returns the DB name of the module containing this function definition.
virtual const IExpression * get_temporary(Size index) const =0
Returns the expression of a temporary.
Semantics
All known semantics of functions definitions.
Definition: ifunction_definition.h:54
@ DS_INTRINSIC_TEX_DEPTH
The tex::depth() function.
Definition: ifunction_definition.h:236
@ DS_INTRINSIC_DF_DIFFUSE_EDF
The df::diffuse_edf() function.
Definition: ifunction_definition.h:269
@ DS_INTRINSIC_MATH_ROUND
The math::round() intrinsic function.
Definition: ifunction_definition.h:174
@ DS_INTRINSIC_DF_COLOR_CLAMPED_MIX
The df::color_clamped_mix() function.
Definition: ifunction_definition.h:299
@ DS_INTRINSIC_SCENE_DATA_LOOKUP_UNIFORM_FLOAT
The scene::data_lookup_uniform_float() function.
Definition: ifunction_definition.h:362
@ DS_SHIFT_LEFT_ASSIGN
The shift-left-assign operator.
Definition: ifunction_definition.h:115
@ DS_INTRINSIC_MATH_LERP
The math::lerp() intrinsic function.
Definition: ifunction_definition.h:157
@ DS_UNSIGNED_SHIFT_RIGHT
The unsigned shift-right operator.
Definition: ifunction_definition.h:97
@ DS_POST_INCREMENT
The post-increment operator.
Definition: ifunction_definition.h:78
@ DS_INTRINSIC_MATH_BLACKBODY
The math::blackbody() intrinsic function.
Definition: ifunction_definition.h:185
@ DS_INTRINSIC_MATH_CLAMP
The math::clamp() intrinsic function.
Definition: ifunction_definition.h:141
@ DS_INTRINSIC_DAG_ARRAY_LENGTH
The array length operator. See Array length operator.
Definition: ifunction_definition.h:393
@ DS_PLUS_ASSIGN
The plus-assign operator.
Definition: ifunction_definition.h:113
@ DS_BITWISE_OR
The bitwise or operator.
Definition: ifunction_definition.h:106
@ DS_INTRINSIC_DF_ANISOTROPIC_VDF
The df::anisotropic_vdf() function.
Definition: ifunction_definition.h:272
@ DS_INTRINSIC_DEBUG_PRINT
The debug::print() function.
Definition: ifunction_definition.h:382
@ DS_INTRINSIC_MATH_ALL
The math::all() intrinsic function.
Definition: ifunction_definition.h:134
@ DS_INTRINSIC_MATH_TANH
The math::tanh() intrinsic function.
Definition: ifunction_definition.h:190
@ DS_INTRINSIC_STATE_TEXTURE_TANGENT_V
The state::texture_tangent_v() function.
Definition: ifunction_definition.h:211
@ DS_MODULO
The modulus operator.
Definition: ifunction_definition.h:92
@ DS_INTRINSIC_MATH_ACOS
The math::acos() intrinsic function.
Definition: ifunction_definition.h:133
@ DS_UNKNOWN
Unknown semantics.
Definition: ifunction_definition.h:55
@ DS_INTRINSIC_MATH_MIN_VALUE
The math::min_value() intrinsic function.
Definition: ifunction_definition.h:167
@ DS_PLUS
The addition operator.
Definition: ifunction_definition.h:93
@ DS_NOT_EQUAL
The not-equal operator.
Definition: ifunction_definition.h:103
@ DS_INTRINSIC_SCENE_DATA_LOOKUP_UNIFORM_FLOAT2
The scene::data_lookup_uniform_float2() function.
Definition: ifunction_definition.h:364
@ DS_INTRINSIC_MATH_DY
The math::DY() intrinsic function.
Definition: ifunction_definition.h:198
@ DS_BITWISE_XOR
The bitwise xor operator.
Definition: ifunction_definition.h:105
@ DS_INTRINSIC_DF_SHEEN_BSDF
The df::sheen_bsdf() function.
Definition: ifunction_definition.h:308
@ DS_INTRINSIC_DF_DIFFUSE_TRANSMISSION_BSDF
The df::diffuse_transmission_bsdf() function.
Definition: ifunction_definition.h:263
@ DS_INTRINSIC_NVIDIA_DF_ASHIKHMIN_SHIRLEY_GLOSSY_BSDF
The nvidia::df::ashikhmin_shirley_glossy_bsdf() function.
Definition: ifunction_definition.h:317
@ DS_INTRINSIC_DF_COLOR_NORMALIZED_MIX
The df::color_normalized_mix() function.
Definition: ifunction_definition.h:298
@ DS_INTRINSIC_TEX_DEPTH_OFFSET
The tex::depth_offset() function.
Definition: ifunction_definition.h:250
@ DS_INTRINSIC_NVIDIA_DF_COAT_ABSORPTION
The nvidia::df::coat_absorption() function.
Definition: ifunction_definition.h:324
@ DS_INTRINSIC_DF_MEASURED_CURVE_FACTOR
The df::measured_curve_factor() function.
Definition: ifunction_definition.h:283
@ DS_INTRINSIC_TEX_FIRST_FRAME
The tex::first_frame() function.
Definition: ifunction_definition.h:251
@ DS_INTRINSIC_STATE_DIRECTION
The state::direction() function.
Definition: ifunction_definition.h:215
@ DS_INTRINSIC_DF_SPECULAR_BSDF
The df::specular_bsdf() function.
Definition: ifunction_definition.h:264
@ DS_BITWISE_XOR_ASSIGN
The bitwise xor-assign operator.
Definition: ifunction_definition.h:119
@ DS_POST_DECREMENT
The post-decrement operator.
Definition: ifunction_definition.h:79
@ DS_INTRINSIC_DF_MEASURED_BSDF
The df::measured_bsdf() function.
Definition: ifunction_definition.h:268
@ DS_INTRINSIC_MATH_LOG
The math::log() intrinsic function.
Definition: ifunction_definition.h:158
@ DS_CONV_OPERATOR
The type conversion operator.
Definition: ifunction_definition.h:65
@ DS_INTRINSIC_MATH_ISFINITE
The math::isfinite() intrinsic function.
Definition: ifunction_definition.h:155
@ DS_INTRINSIC_DF_BSDF_MEASUREMENT_ISVALID
The df::bsdf_measurement_is_valid() function.
Definition: ifunction_definition.h:287
@ DS_INTRINSIC_STATE_SCENE_UNITS_PER_METER
The state::scene_units_per_meter() function.
Definition: ifunction_definition.h:225
@ DS_INTRINSIC_SCENE_DATA_LOOKUP_UNIFORM_FLOAT4X4
The scene::data_lookup_uniform_float4x4() function.
Definition: ifunction_definition.h:374
@ DS_MULTIPLY
The multiplication operator.
Definition: ifunction_definition.h:90
@ DS_INTRINSIC_STATE_ANIMATION_TIME
The state::animation_time() function.
Definition: ifunction_definition.h:216
@ DS_INTRINSIC_STATE_GEOMETRY_TANGENT_U
The state::geometry_tangent_u() function.
Definition: ifunction_definition.h:213
@ DS_INTRINSIC_SCENE_DATA_ISVALID
The scene::data_is_valid() function.
Definition: ifunction_definition.h:333
@ DS_LESS
The less operator.
Definition: ifunction_definition.h:98
@ DS_INVALID_REF_CONSTRUCTOR
The invalid reference constructor.
Definition: ifunction_definition.h:62
@ DS_SHIFT_RIGHT_ASSIGN
The arithmetic shift-right-assign operator.
Definition: ifunction_definition.h:116
@ DS_INTRINSIC_SCENE_DATA_LOOKUP_INT3
The scene::data_lookup_int3() function.
Definition: ifunction_definition.h:340
@ DS_GREATER_OR_EQUAL
The greater-or-equal operator.
Definition: ifunction_definition.h:100
@ DS_INTRINSIC_DF_DIRECTIONAL_FACTOR
The df::directional_factor() function.
Definition: ifunction_definition.h:282
@ DS_INTRINSIC_DF_MEASURED_FACTOR
The df::measured_factor() function.
Definition: ifunction_definition.h:306
@ DS_INTRINSIC_STATE_TRANSFORM_NORMAL
The state::transform_normal() function.
Definition: ifunction_definition.h:221
@ DS_INTRINSIC_MATH_STEP
The math::step() intrinsic function.
Definition: ifunction_definition.h:182
@ DS_INTRINSIC_MATH_ATAN2
The math::atan2() intrinsic function.
Definition: ifunction_definition.h:138
@ DS_INTRINSIC_MATH_RSQRT
The math::rsqrt() intrinsic function.
Definition: ifunction_definition.h:175
@ DS_INTRINSIC_MATH_POW
The math::pow() intrinsic function.
Definition: ifunction_definition.h:172
@ DS_INTRINSIC_MATH_MAX_VALUE_WAVELENGTH
The math::max_value_wavelength() intrinsic function.
Definition: ifunction_definition.h:164
@ DS_INTRINSIC_SCENE_DATA_LOOKUP_FLOAT4X4
The scene::data_lookup_float4x4() function.
Definition: ifunction_definition.h:372
@ DS_NEGATIVE
The unary arithmetic negation operator.
Definition: ifunction_definition.h:75
@ DS_INTRINSIC_DF_MICROFACET_BECKMANN_VCAVITIES_BSDF
The df::microfacet_beckmann_vcavities() function.
Definition: ifunction_definition.h:293
@ DS_INTRINSIC_TEX_LOOKUP_COLOR
The tex::lookup_color() function.
Definition: ifunction_definition.h:241
@ DS_INTRINSIC_MATH_LOG2
The math::log2() intrinsic function.
Definition: ifunction_definition.h:159
@ DS_INTRINSIC_TEX_TEXEL_FLOAT4
The tex::texel_float4() function.
Definition: ifunction_definition.h:245
@ DS_INTRINSIC_MATH_CEIL
The math::ceil() intrinsic function.
Definition: ifunction_definition.h:140
@ DS_INTRINSIC_MATH_ROUND_AWAY_FROM_ZERO
The math::round_away_from_zero() intrinsic function.
Definition: ifunction_definition.h:195
@ DS_INTRINSIC_MATH_SATURATE
The math::saturate() intrinsic function.
Definition: ifunction_definition.h:176
@ DS_INTRINSIC_SCENE_DATA_LOOKUP_UNIFORM_INT2
The scene::data_lookup_uniform_int2() function.
Definition: ifunction_definition.h:356
@ DS_INTRINSIC_STATE_GEOMETRY_TANGENT_V
The state::geometry_tangent_v() function.
Definition: ifunction_definition.h:214
@ DS_INTRINSIC_TEX_TEXEL_FLOAT3
The tex::texel_float3() function.
Definition: ifunction_definition.h:244
@ DS_INTRINSIC_SCENE_DATA_LOOKUP_UNIFORM_COLOR
The scene::data_lookup_uniform_color() function.
Definition: ifunction_definition.h:370
@ DS_INTRINSIC_SCENE_DATA_LOOKUP_UNIFORM_FLOAT4
The scene::data_lookup_uniform_float4() function.
Definition: ifunction_definition.h:368
@ DS_INTRINSIC_SCENE_DATA_LOOKUP_UNIFORM_INT
The scene::data_lookup_uniform_int() function.
Definition: ifunction_definition.h:354
@ DS_INTRINSIC_STATE_WAVELENGTH_MIN
The state::wavelength_min() function.
Definition: ifunction_definition.h:227
@ DS_INTRINSIC_SCENE_DATA_LOOKUP_UNIFORM_INT3
The scene::data_lookup_uniform_int3() function.
Definition: ifunction_definition.h:358
@ DS_INTRINSIC_DF_CHIANG_HAIR_BSDF
The df::chiang_hair_bsdf() function.
Definition: ifunction_definition.h:307
@ DS_INTRINSIC_MATH_ANY
The math::any() intrinsic function.
Definition: ifunction_definition.h:135
@ DS_INTRINSIC_TEX_TEXEL_COLOR
The tex::texel_color() function.
Definition: ifunction_definition.h:246
@ DS_INTRINSIC_TEX_TEXEL_FLOAT2
The tex::texel_float2() function.
Definition: ifunction_definition.h:243
@ DS_INTRINSIC_DF_MEASURED_EDF
The df::measured_edf() function.
Definition: ifunction_definition.h:270
@ DS_INTRINSIC_MATH_CROSS
The math::cross() intrinsic function.
Definition: ifunction_definition.h:143
@ DS_INTRINSIC_DF_SIMPLE_GLOSSY_BSDF
The df::simple_glossy_bsdf() function.
Definition: ifunction_definition.h:265
@ DS_INTRINSIC_STATE_TRANSFORM_VECTOR
The state::transform_vector() function.
Definition: ifunction_definition.h:220
@ DS_INTRINSIC_MATH_EMISSION_COLOR
The math::emission_color() intrinsic function.
Definition: ifunction_definition.h:186
@ DS_INTRINSIC_MATH_NORMALIZE
The math::normalize() intrinsic function.
Definition: ifunction_definition.h:171
@ DS_EQUAL
The equal operator.
Definition: ifunction_definition.h:102
@ DS_LESS_OR_EQUAL
The less-or-equal operator.
Definition: ifunction_definition.h:99
@ DS_TERNARY
The ternary operator (conditional). See Ternary operator.
Definition: ifunction_definition.h:126
@ DS_MATRIX_ELEM_CONSTRUCTOR
The matrix elemental constructor.
Definition: ifunction_definition.h:60
@ DS_INTRINSIC_DEBUG_BREAKPOINT
The debug::breakpoint() function.
Definition: ifunction_definition.h:379
@ DS_INTRINSIC_MATH_LENGTH
The math::length() intrinsic function.
Definition: ifunction_definition.h:156
@ DS_INTRINSIC_STATE_TEXTURE_COORDINATE
The state::texture_coordinate() function.
Definition: ifunction_definition.h:209
@ DS_INTRINSIC_TEX_GRID_TO_OBJECT_SPACE
The tex::grid_to_object_space() function.
Definition: ifunction_definition.h:253
@ DS_INTRINSIC_TEX_HEIGHT_OFFSET
The tex::height_offset() function.
Definition: ifunction_definition.h:249
@ DS_INTRINSIC_STATE_TEXTURE_SPACE_MAX
The state::texture_space_max() function.
Definition: ifunction_definition.h:208
@ DS_INTRINSIC_TEX_LOOKUP_FLOAT2
The tex::lookup_float2() function.
Definition: ifunction_definition.h:238
@ DS_INTRINSIC_DF_FRESNEL_LAYER
The df::fresnel_layer() function.
Definition: ifunction_definition.h:277
@ DS_INTRINSIC_SCENE_DATA_LOOKUP_INT2
The scene::data_lookup_int2() function.
Definition: ifunction_definition.h:338
@ DS_INTRINSIC_MATH_DOT
The math::dot() intrinsic function.
Definition: ifunction_definition.h:146
@ DS_INTRINSIC_SCENE_DATA_LOOKUP_UNIFORM_INT4
The scene::data_lookup_uniform_int4() function.
Definition: ifunction_definition.h:360
@ DS_BITWISE_AND_ASSIGN
The bitwise and-assign operator.
Definition: ifunction_definition.h:120
@ DS_INTRINSIC_DEBUG_ASSERT
The debug::assert() function.
Definition: ifunction_definition.h:381
@ DS_INTRINSIC_STATE_WAVELENGTH_MAX
The state::wavelength_max() function.
Definition: ifunction_definition.h:228
@ DS_INTRINSIC_NVIDIA_DF_SHEEN_LTC_BSDF
The nvidia::df::sheen_ltc_bsdf() function.
Definition: ifunction_definition.h:326
@ DS_INTRINSIC_MATH_FLOOR
The math::floor() intrinsic function.
Definition: ifunction_definition.h:151
@ DS_INTRINSIC_NVIDIA_DF_LEGACY_MCP_GLOSSY_BSDF
The nvidia::df::legacy_mcp_glossy_bsdf() function.
Definition: ifunction_definition.h:322
@ DS_INTRINSIC_MATH_EXP
The math::exp() intrinsic function.
Definition: ifunction_definition.h:149
@ DS_INTRINSIC_MATH_MAX_VALUE
The math::max_value() intrinsic function.
Definition: ifunction_definition.h:163
@ DS_INTRINSIC_STATE_GEOMETRY_NORMAL
The state::geometry_normal() function.
Definition: ifunction_definition.h:206
@ DS_CONV_CONSTRUCTOR
The conversion constructor.
Definition: ifunction_definition.h:57
@ DS_INTRINSIC_DF_FRESNEL_FACTOR
The df::fresnel_factor() function.
Definition: ifunction_definition.h:305
@ DS_GREATER
The greater operator.
Definition: ifunction_definition.h:101
@ DS_INTRINSIC_STATE_TANGENT_SPACE
The state::tangent_space() function.
Definition: ifunction_definition.h:212
@ DS_INTRINSIC_MATH_SQRT
The math::sqrt() intrinsic function.
Definition: ifunction_definition.h:181
@ DS_INTRINSIC_MATH_FRAC
The math::frac() intrinsic function.
Definition: ifunction_definition.h:153
@ DS_CAST
The cast operator. See Cast operator.
Definition: ifunction_definition.h:81
@ DS_INTRINSIC_MATH_SINH
The math::sinh() intrinsic function.
Definition: ifunction_definition.h:189
@ DS_INTRINSIC_MATH_FMOD
The math::fmod() intrinsic function.
Definition: ifunction_definition.h:152
@ DS_INTRINSIC_TEX_LOOKUP_FLOAT3
The tex::lookup_float3() function.
Definition: ifunction_definition.h:239
@ DS_INTRINSIC_MATH_ASIN
The math::asin() intrinsic function.
Definition: ifunction_definition.h:136
@ DS_INTRINSIC_MATH_LUMINANCE
The math::luminance() intrinsic function.
Definition: ifunction_definition.h:161
@ DS_BITWISE_COMPLEMENT
The bitwise complement operator.
Definition: ifunction_definition.h:70
@ DS_DIVIDE
The division operator.
Definition: ifunction_definition.h:91
@ DS_INTRINSIC_DF_THIN_FILM
The df::thin_film() function.
Definition: ifunction_definition.h:280
@ DS_DEFAULT_STRUCT_CONSTRUCTOR
The default constructor for a struct.
Definition: ifunction_definition.h:63
@ DS_INTRINSIC_DF_MICROFACET_GGX_VCAVITIES_BSDF
The df::microfacet_ggx_vcavities() function.
Definition: ifunction_definition.h:295
@ DS_INTRINSIC_MATH_ATAN
The math::atan() intrinsic function.
Definition: ifunction_definition.h:137
@ DS_INTRINSIC_DF_UNBOUNDED_MIX
The df::unbounded_mix() function.
Definition: ifunction_definition.h:309
@ DS_INTRINSIC_TEX_LAST_FRAME
The tex::last_frame() function.
Definition: ifunction_definition.h:252
@ DS_LOGICAL_AND
The logical and operator.
Definition: ifunction_definition.h:107
@ DS_INTRINSIC_TEX_WIDTH_OFFSET
The tex::width_offset() function.
Definition: ifunction_definition.h:248
@ DS_INTRINSIC_DF_CLAMPED_MIX
The df::clamped_mix() function.
Definition: ifunction_definition.h:275
@ DS_INTRINSIC_MATH_ABS
The math::abs() intrinsic function.
Definition: ifunction_definition.h:131
@ DS_INTRINSIC_MATH_TAN
The math::tan() intrinsic function.
Definition: ifunction_definition.h:183
@ DS_INTRINSIC_DF_DIFFUSE_REFLECTION_BSDF
The df::diffuse_reflection_bsdf() function.
Definition: ifunction_definition.h:259
@ DS_INTRINSIC_DF_SPOT_EDF
The df::spot_edf() function.
Definition: ifunction_definition.h:271
@ DS_INTRINSIC_TEX_TEXTURE_ISVALID
The tex::texture_isvalid() function.
Definition: ifunction_definition.h:247
@ DS_INTRINSIC_MATH_RADIANS
The math::radians() intrinsic function.
Definition: ifunction_definition.h:173
@ DS_INTRINSIC_DF_COLOR_MEASURED_CURVE_LAYER
The df::color_measured_curve_layer() function.
Definition: ifunction_definition.h:304
@ DS_INTRINSIC_TEX_WIDTH
The tex::width() function.
Definition: ifunction_definition.h:233
@ DS_INTRINSIC_DF_WARD_GEISLER_MORODER_BSDF
The df::ward_geisler_moroder_bsdf() function.
Definition: ifunction_definition.h:297
@ DS_INTRINSIC_MATH_MAX
The math::max() intrinsic function.
Definition: ifunction_definition.h:162
@ DS_INTRINSIC_DAG_ARRAY_CONSTRUCTOR
The array constructor. See Array constructor.
Definition: ifunction_definition.h:391
@ DS_INTRINSIC_STATE_MOTION
The state::motion() function.
Definition: ifunction_definition.h:207
@ DS_INTRINSIC_DF_BACKSCATTERING_GLOSSY_REFLECTION_BSDF
The df::backscattering_glossy_reflection_bsdf() function.
Definition: ifunction_definition.h:267
@ DS_BITWISE_OR_ASSIGN
The bitwise or-assign operator.
Definition: ifunction_definition.h:118
@ DS_INTRINSIC_STATE_ROUNDED_CORNER_NORMAL
The state::rounded_corner_normal() function.
Definition: ifunction_definition.h:223
@ DS_INTRINSIC_DF_NORMALIZED_MIX
The df::normalized_mix() function.
Definition: ifunction_definition.h:274
@ DS_INTRINSIC_MATH_SINCOS
The math::sincos() intrinsic function.
Definition: ifunction_definition.h:179
@ DS_INTRINSIC_SCENE_DATA_LOOKUP_COLOR
The scene::data_lookup_color() function.
Definition: ifunction_definition.h:352
@ DS_INTRINSIC_DF_COLOR_UNBOUNDED_MIX
The df::color_unbounded() function.
Definition: ifunction_definition.h:310
@ DS_INTRINSIC_MATH_AVERAGE
The math::average() intrinsic function.
Definition: ifunction_definition.h:139
@ DS_INTRINSIC_DF_TINT
The df::tint() function.
Definition: ifunction_definition.h:281
@ DS_INTRINSIC_STATE_METERS_PER_SCENE_UNIT
The state::meters_per_scene_unit() function.
Definition: ifunction_definition.h:224
@ DS_INTRINSIC_DF_FOG_VDF
The df::fog_vdf() function.
Definition: ifunction_definition.h:273
@ DS_INTRINSIC_SCENE_DATA_LOOKUP_FLOAT4
The scene::data_lookup_float4() function.
Definition: ifunction_definition.h:350
@ DS_INTRINSIC_MATH_DISTANCE
The math::distance() intrinsic function.
Definition: ifunction_definition.h:145
@ DS_INTRINSIC_MATH_FLOAT_BITS_TO_INT
The math::float_bits_to_int() intrinsic function.
Definition: ifunction_definition.h:193
@ DS_UNSIGNED_SHIFT_RIGHT_ASSIGN
The unsigned shift-right-assign operator.
Definition: ifunction_definition.h:117
@ DS_COPY_CONSTRUCTOR
The copy constructor.
Definition: ifunction_definition.h:66
@ DS_INTRINSIC_MATH_TRANSPOSE
The math::transpose() intrinsic function.
Definition: ifunction_definition.h:184
@ DS_ASSIGN
The assign operator.
Definition: ifunction_definition.h:109
@ DS_INTRINSIC_TEX_HEIGHT
The tex::height() function.
Definition: ifunction_definition.h:235
@ DS_MODULO_ASSIGN
The modulus-assign operator.
Definition: ifunction_definition.h:112
@ DS_INTRINSIC_MATH_MODF
The math::modf() intrinsic function.
Definition: ifunction_definition.h:170
@ DS_SHIFT_RIGHT
The arithmetic shift-right operator.
Definition: ifunction_definition.h:96
@ DS_LOGICAL_OR
The logical or operator.
Definition: ifunction_definition.h:108
@ DS_MATRIX_DIAG_CONSTRUCTOR
The matrix diagonal constructor.
Definition: ifunction_definition.h:61
@ DS_INTRINSIC_MATH_DX
The math::DX() intrinsic function.
Definition: ifunction_definition.h:197
@ DS_INTRINSIC_DF_MEASURED_CURVE_LAYER
The df::measured_curve_layer() function.
Definition: ifunction_definition.h:279
@ DS_INTRINSIC_MATH_ISNAN
The math::isnan() intrinsic function.
Definition: ifunction_definition.h:154
@ DS_INTRINSIC_MATH_COS
The math::cos() intrinsic function.
Definition: ifunction_definition.h:142
@ DS_INTRINSIC_SCENE_DATA_LOOKUP_FLOAT
The scene::data_lookup_float() function.
Definition: ifunction_definition.h:344
@ DS_MINUS_ASSIGN
The minus-assign operator.
Definition: ifunction_definition.h:114
@ DS_INTRINSIC_TEX_LOOKUP_FLOAT
The tex::lookup_float() function.
Definition: ifunction_definition.h:237
@ DS_LOGICAL_NOT
The unary logical negation operator.
Definition: ifunction_definition.h:73
@ DS_INTRINSIC_MATH_DEGREES
The math::degrees() intrinsic function.
Definition: ifunction_definition.h:144
@ DS_INTRINSIC_DF_COLOR_WEIGHTED_LAYER
The df::color_weighted_layer() function.
Definition: ifunction_definition.h:300
@ DS_INTRINSIC_MATH_SIN
The math::sin() intrinsic function.
Definition: ifunction_definition.h:178
@ DS_MULTIPLY_ASSIGN
The multiplication-assign operator.
Definition: ifunction_definition.h:110
@ DS_INTRINSIC_MATH_EVAL_AT_WAVELENGTH
The math::eval_at_wavelength() intrinsic function.
Definition: ifunction_definition.h:147
@ DS_INTRINSIC_TEX_LOOKUP_FLOAT4
The tex::lookup_float4() function.
Definition: ifunction_definition.h:240
@ DS_INTRINSIC_SCENE_DATA_LOOKUP_INT
The scene::data_lookup_int() function.
Definition: ifunction_definition.h:336
@ DS_INTRINSIC_DF_LIGHT_PROFILE_ISVALID
The df::light_profile_isvalid() function.
Definition: ifunction_definition.h:286
@ DS_INTRINSIC_SCENE_DATA_LOOKUP_INT4
The scene::data_lookup_int4() function.
Definition: ifunction_definition.h:342
@ DS_INTRINSIC_MATH_INT_BITS_TO_FLOAT
The math::int_bits_to_float() intrinsic function.
Definition: ifunction_definition.h:191
@ DS_INTRINSIC_STATE_TRANSFORM_POINT
The state::transform_point() function.
Definition: ifunction_definition.h:219
@ DS_INTRINSIC_STATE_TEXTURE_TANGENT_U
The state::texture_tangent_u() function.
Definition: ifunction_definition.h:210
@ DS_INTRINSIC_MATH_SIGN
The math::sign() intrinsic function.
Definition: ifunction_definition.h:177
@ DS_INTRINSIC_SCENE_DATA_LOOKUP_FLOAT2
The scene::data_lookup_float2() function.
Definition: ifunction_definition.h:346
@ DS_INTRINSIC_NVIDIA_DF_SIMPLE_GLOSSY_BSDF_LEGACY
The nvidia::df::simple_glossy_bsdf_legacy() function.
Definition: ifunction_definition.h:320
@ DS_INTRINSIC_STATE_OBJECT_ID
The state::object_id() function.
Definition: ifunction_definition.h:226
@ DS_COLOR_SPECTRUM_CONSTRUCTOR
The color from spectrum constructor.
Definition: ifunction_definition.h:59
@ DS_INTRINSIC_MATH_EXP2
The math::exp2() intrinsic function.
Definition: ifunction_definition.h:150
@ DS_INTRINSIC_DF_COLOR_CUSTOM_CURVE_LAYER
The df::color_custom_curve_layer() function.
Definition: ifunction_definition.h:302
@ DS_INTRINSIC_SCENE_DATA_LOOKUP_UNIFORM_FLOAT3
The scene::data_lookup_uniform_float3() function.
Definition: ifunction_definition.h:366
@ DS_DIVIDE_ASSIGN
The division-assign operator.
Definition: ifunction_definition.h:111
@ DS_INTRINSIC_DF_MICROFACET_BECKMANN_SMITH_BSDF
The df::microfacet_beckmann_smith_bsdf() function.
Definition: ifunction_definition.h:289
@ DS_INTRINSIC_DF_CUSTOM_CURVE_LAYER
The df::custom_curve_layer() function.
Definition: ifunction_definition.h:278
@ DS_INTRINSIC_STATE_WAVELENGTH_BASE
The state::wavelength_base() function.
Definition: ifunction_definition.h:217
@ DS_ARRAY_INDEX
The array index operator. See Array index operator.
Definition: ifunction_definition.h:89
@ DS_INTRINSIC_DF_DUSTY_DIFFUSE_REFLECTION_BSDF
The df::dusty_diffuse_reflection_bsdf() function.
Definition: ifunction_definition.h:262
@ DS_BITWISE_AND
The bitwise and operator.
Definition: ifunction_definition.h:104
@ DS_SHIFT_LEFT
The shift-left operator.
Definition: ifunction_definition.h:95
@ DS_INTRINSIC_MATH_COSH
The math::cosh() intrinsic function.
Definition: ifunction_definition.h:188
@ DS_INTRINSIC_DAG_DECL_CAST
The decl_cast operator. See Decl_cast operator.
Definition: ifunction_definition.h:395
@ DS_POSITIVE
The unary arithmetic positive operator.
Definition: ifunction_definition.h:74
@ DS_INTRINSIC_MATH_SMOOTHSTEP
The math::smoothstep() intrinsic function.
Definition: ifunction_definition.h:180
@ DS_INTRINSIC_STATE_TRANSFORM_SCALE
The state::transform_scale() function.
Definition: ifunction_definition.h:222
@ DS_INTRINSIC_DF_COLOR_FRESNEL_LAYER
The df::color_fresnel_layer() function.
Definition: ifunction_definition.h:301
@ DS_INTRINSIC_DF_MICROFACET_GGX_SMITH_BSDF
The df::microfacet_ggx_smith_bsdf() function.
Definition: ifunction_definition.h:291
@ DS_INTRINSIC_DAG_FIELD_ACCESS
The structure field access function.
Definition: ifunction_definition.h:388
@ DS_INTRINSIC_DF_LIGHT_PROFILE_POWER
The df::light_profile_power() function.
Definition: ifunction_definition.h:284
@ DS_PRE_DECREMENT
The pre-decrement operator.
Definition: ifunction_definition.h:77
@ DS_INTRINSIC_DF_WEIGHTED_LAYER
The df::weighted_layer() function.
Definition: ifunction_definition.h:276
@ DS_INTRINSIC_MATH_MIN
The math::min() intrinsic function.
Definition: ifunction_definition.h:166
@ DS_INTRINSIC_MATH_LOG10
The math::log10() intrinsic function.
Definition: ifunction_definition.h:160
@ DS_INTRINSIC_TEX_TEXEL_FLOAT
The tex::texel_float() function.
Definition: ifunction_definition.h:242
@ DS_INTRINSIC_MATH_MIN_VALUE_WAVELENGTH
The math::min_value_wavelength() intrinsic function.
Definition: ifunction_definition.h:168
@ DS_INTRINSIC_STATE_NORMAL
The state::normal() function.
Definition: ifunction_definition.h:205
@ DS_PRE_INCREMENT
The pre-increment operator.
Definition: ifunction_definition.h:76
@ DS_INTRINSIC_STATE_TRANSFORM
The state::transform() function.
Definition: ifunction_definition.h:218
@ DS_MINUS
The subtraction operator.
Definition: ifunction_definition.h:94
@ DS_INTRINSIC_STATE_POSITION
The state::position() function.
Definition: ifunction_definition.h:203
@ DS_INTRINSIC_SCENE_DATA_LOOKUP_FLOAT3
The scene::data_lookup_float3() function.
Definition: ifunction_definition.h:348
@ DS_ELEM_CONSTRUCTOR
The elemental constructor.
Definition: ifunction_definition.h:58
@ DS_INTRINSIC_DF_LIGHT_PROFILE_MAXIMUM
The df::light_profile_maximum() function.
Definition: ifunction_definition.h:285
@ DS_TEXTURE_CONSTRUCTOR
The texture constructor.
Definition: ifunction_definition.h:64
@ DS_SELECT
The select operator.
Definition: ifunction_definition.h:86
virtual bool is_valid(IMdl_execution_context *context) const =0
Returns true if the definition is valid, false otherwise.
virtual const IAnnotation_list * get_parameter_annotations() const =0
Returns the annotations of all parameters.
virtual bool is_uniform() const =0
Indicates whether the function definition is uniform.
virtual Size get_parameter_count() const =0
Returns the number of parameters.
virtual const char * get_thumbnail() const =0
Returns the resolved file name of the thumbnail image for this function definition.
const T * get_temporary(Size index) const
Returns the expression of a temporary.
Definition: ifunction_definition.h:642
virtual bool is_declarative() const =0
Indicates whether the function definition is declarative.
virtual const IExpression * get_body() const =0
Returns the expression that represents the body of the function (if possible).
virtual Size get_temporary_count() const =0
Returns the number of temporaries used by this function.
virtual const char * get_mdl_name() const =0
Returns the MDL name of the function definition.
virtual IFunction_call * create_function_call(const IExpression_list *arguments, Sint32 *errors=0) const =0
Creates a new function call.
virtual const IAnnotation_block * get_return_annotations() const =0
Returns the annotations of the return type of this function definition, or NULL if there are no such ...
virtual const IType_list * get_parameter_types() const =0
Returns the types of all parameters.
virtual void get_mdl_version(Mdl_version &since, Mdl_version &removed) const =0
Returns the MDL version when this function definition was added and removed.
virtual const char * get_mangled_name() const =0
Returns the mangled name of the function.
virtual const char * get_prototype() const =0
Returns the DB name of the prototype, or NULL if this function definition is not a variant.
virtual const IAnnotation_block * get_annotations() const =0
Returns the annotations of the function definition itself, or NULL if there are no such annotations.
bool is_array_constructor() const
Indicates whether this definition represents the array constructor.
Definition: ifunction_definition.h:459
virtual Size get_parameter_index(const char *name) const =0
Returns the index position of a parameter.
virtual const char * get_mdl_simple_name() const =0
Returns the simple MDL name of the function definition.
virtual const char * get_parameter_name(Size index) const =0
Returns the name of the parameter at index.
const T * get_return_type() const
Returns the return type.
Definition: ifunction_definition.h:497
virtual const IExpression_list * get_defaults() const =0
Returns the defaults of all parameters.
virtual Size get_enable_if_user(Size index, Size u_index) const =0
Returns the index of a parameter whose enable_if condition might depend on the argument of the given ...
virtual Size get_enable_if_users(Size index) const =0
Returns the number of other parameters whose enable_if condition might depend on the argument of the ...
virtual const char * get_temporary_name(Size index) const =0
Returns the name of a temporary.
virtual bool is_exported() const =0
Indicates whether the function definition is exported by its module.
virtual const IType * get_return_type() const =0
Returns the return type.
virtual const char * get_mdl_module_name() const =0
Returns the MDL name of the module containing this function definition.
virtual bool is_material() const =0
Indicates whether the definition represents a material.
virtual const char * get_mdl_parameter_type_name(Size index) const =0
Returns the type name of the parameter at index.
virtual Semantics get_semantic() const =0
Returns the semantic of this function definition.
virtual const IExpression_list * get_enable_if_conditions() const =0
Returns the enable_if conditions of all parameters.
The execution context can be used to query status information like error and warning messages concern...
Definition: imdl_execution_context.h:131
An ordered collection of types identified by name or index.
Definition: itype.h:646
The interface to MDL types.
Definition: itype.h:151
#define mi_static_assert(expr)
Compile time assertion that raises a compilation error if the constant expression expr evaluates to f...
Definition: assert.h:58
virtual const IInterface * get_interface(const Uuid &interface_id) const =0
Acquires a const interface from another.
virtual Uint32 release() const =0
Decrements the reference count.
unsigned int Uint32
32-bit unsigned integer.
Definition: types.h:49
Uint64 Size
Unsigned integral type that is large enough to hold the size of all types.
Definition: types.h:112
signed int Sint32
32-bit signed integer.
Definition: types.h:46
Mdl_version
The MDL version.
Definition: iexpression.h:28
Expressions of the MDL type system.
Base class for all scene elements.
Common namespace for APIs of NVIDIA Advanced Rendering Center GmbH.
Definition: example_derivatives.dox:5