MDL SDK API nvidia_logo_transpbg.gif Up
imdl_factory.h
Go to the documentation of this file.
1/***************************************************************************************************
2 * Copyright 2025 NVIDIA Corporation. All rights reserved.
3 **************************************************************************************************/
6
7#ifndef MI_NEURAYLIB_IMDL_FACTORY_H
8#define MI_NEURAYLIB_IMDL_FACTORY_H
9
12
13namespace mi {
14
15class IArray;
16class IString;
17
18namespace neuraylib {
19
20class IExpression_factory;
21class IMdl_execution_context;
22class IMdl_module_builder;
23class IMdl_module_transformer;
24class ITransaction;
25class IType_factory;
26class IValue_bsdf_measurement;
27class IValue_factory;
28class IValue_light_profile;
29class IValue_texture;
30
46class IMdl_factory : public
47 mi::base::Interface_declare<0xba936279,0x4b71,0x42a4,0x95,0x37,0x98,0x69,0x97,0xb3,0x47,0x72>
48{
49public:
51
52
54 virtual IType_factory* create_type_factory( ITransaction* transaction) = 0;
55
58
61
64
73
75
77
115 ITransaction* transaction,
116 const char* file_path,
118 Float32 gamma,
119 const char* selector,
120 bool shared,
121 IMdl_execution_context* context) = 0;
122
152 ITransaction* transaction,
153 const char* file_path,
154 bool shared,
155 IMdl_execution_context* context) = 0;
156
186 ITransaction* transaction,
187 const char* file_path,
188 bool shared,
189 IMdl_execution_context* context) = 0;
190
192
194
214 ITransaction* transaction,
215 const char* module_name,
216 Mdl_version min_module_version,
217 Mdl_version max_module_version,
218 IMdl_execution_context* context) = 0;
219
230 ITransaction* transaction, const char* module_name, IMdl_execution_context* context) = 0;
231
233
235
251 virtual const IString* get_db_module_name( const char* mdl_name) = 0;
252
268 virtual const IString* get_db_definition_name( const char* mdl_name) = 0;
269
284 virtual const IString* decode_name( const char* name) = 0;
285
296 virtual const IString* encode_module_name( const char* name) = 0;
297
316 const char* name, const IArray* parameter_types) const = 0;
317
330 virtual const IString* encode_type_name( const char* name) const = 0;
331
333
335
337 virtual bool is_valid_mdl_identifier( const char* name) const = 0;
338
376 virtual void analyze_uniform(
377 ITransaction* transaction,
378 const char* root_name,
379 bool root_uniform,
380 const IExpression* query_expr,
381 bool& query_result,
382 IString* error_path,
383 IMdl_execution_context* context) const = 0;
384
386};
387 // end group mi_neuray_mdl_misc
389
390} // namespace neuraylib
391
392} // namespace mi
393
394#endif // MI_NEURAYLIB_IMDL_FACTORY_H
This interface represents static arrays, i.e., arrays with a fixed number of elements.
Definition: iarray.h:37
A simple string class.
Definition: istring.h:22
Mixin class template for deriving new interface declarations.
Definition: interface_declare.h:43
The interface for creating expressions.
Definition: iexpression.h:655
The interface to MDL expressions.
Definition: iexpression.h:51
The execution context can be used to query status information like error and warning messages concern...
Definition: imdl_execution_context.h:163
Factory for various MDL interfaces and functions.
Definition: imdl_factory.h:48
virtual IMdl_execution_context * create_execution_context()=0
Creates an execution context.
virtual IMdl_module_builder * create_module_builder(ITransaction *transaction, const char *module_name, Mdl_version min_module_version, Mdl_version max_module_version, IMdl_execution_context *context)=0
Creates a module builder for a given module.
virtual IMdl_execution_context * clone(const IMdl_execution_context *context)=0
Clones an execution context.
virtual bool is_valid_mdl_identifier(const char *name) const =0
Indicates whether the given string is a valid MDL identifier.
virtual IType_factory * create_type_factory(ITransaction *transaction)=0
Returns an MDL type factory for the given transaction.
virtual IValue_bsdf_measurement * create_bsdf_measurement(ITransaction *transaction, const char *file_path, bool shared, IMdl_execution_context *context)=0
Creates a value referencing a BSDF measurement identified by an MDL file path.
virtual const IString * encode_type_name(const char *name) const =0
Encodes an MDL type name.
virtual const IString * encode_module_name(const char *name)=0
Encodes a DB or MDL module name.
virtual IMdl_module_transformer * create_module_transformer(ITransaction *transaction, const char *module_name, IMdl_execution_context *context)=0
Creates a module transformer for a given module.
virtual void analyze_uniform(ITransaction *transaction, const char *root_name, bool root_uniform, const IExpression *query_expr, bool &query_result, IString *error_path, IMdl_execution_context *context) const =0
Analyzes whether an expression graph violates the uniform constraints.
virtual IExpression_factory * create_expression_factory(ITransaction *transaction)=0
Returns an MDL expression factory for the given transaction.
virtual IValue_texture * create_texture(ITransaction *transaction, const char *file_path, IType_texture::Shape shape, Float32 gamma, const char *selector, bool shared, IMdl_execution_context *context)=0
Creates a value referencing a texture identified by an MDL file path.
virtual const IString * get_db_module_name(const char *mdl_name)=0
Returns the DB name for the MDL name of a module (or file path for MDLE modules).
virtual const IString * decode_name(const char *name)=0
Decodes a DB or MDL name.
virtual const IString * encode_function_definition_name(const char *name, const IArray *parameter_types) const =0
Encodes a DB or MDL function or material definition name.
virtual IValue_light_profile * create_light_profile(ITransaction *transaction, const char *file_path, bool shared, IMdl_execution_context *context)=0
Creates a value referencing a light profile identified by an MDL file path.
virtual IValue_factory * create_value_factory(ITransaction *transaction)=0
Returns an MDL value factory for the given transaction.
virtual const IString * get_db_definition_name(const char *mdl_name)=0
Returns the DB name for the MDL name of an material or function definition.
The module builder allows to create new MDL modules.
Definition: imdl_module_builder.h:35
The module transformer allows to apply certain transformations on an MDL module.
Definition: imdl_module_transformer.h:38
A transaction provides a consistent view on the database.
Definition: itransaction.h:82
The interface for creating types.
Definition: itype.h:711
Shape
The possible texture shapes.
Definition: itype.h:553
A BSDF measurement value.
Definition: ivalue.h:558
The interface for creating values.
Definition: ivalue.h:658
A light profile value.
Definition: ivalue.h:545
A texture value.
Definition: ivalue.h:523
float Float32
32-bit float.
Definition: types.h:51
Mdl_version
The MDL version.
Definition: iexpression.h:28
Expressions of the MDL type system.
Mixin class template for deriving new interface declarations.
Common namespace for APIs of NVIDIA Advanced Rendering Center GmbH.
Definition: example_derivatives.dox:5