Iray SDK API nvidia_logo_transpbg.gif Up
imdl_impexp_api.h
Go to the documentation of this file.
1/***************************************************************************************************
2 * Copyright 2025 NVIDIA Corporation. All rights reserved.
3 **************************************************************************************************/
6
7#ifndef MI_NEURAYLIB_IMDL_IMPEXP_API_H
8#define MI_NEURAYLIB_IMDL_IMPEXP_API_H
9
12
13namespace mi {
14
15class IMap;
16class IString;
17
18namespace neuraylib {
19
20class IBuffer;
21class IBsdf_isotropic_data;
22class ICanvas;
23class IDeserialized_function_name;
24class IDeserialized_module_name;
25class ILightprofile;
26class IMdl_execution_context;
27class IMdle_deserialization_callback;
28class IMdle_serialization_callback;
29class IReader;
30class ISerialized_function_name;
31class ITransaction;
32class IType;
33class IType_list;
34class IWriter;
35
41class IMdl_impexp_api : public
42 mi::base::Interface_declare<0xd8584ade,0xa400,0x486b,0xab,0x29,0x39,0xcd,0x87,0x55,0x14,0x5d>
43{
44public:
45
47
48
85 ITransaction* transaction,
86 const char* argument,
87 IMdl_execution_context* context = nullptr) = 0;
88
126 ITransaction* transaction,
127 const char* module_name,
128 const char* module_source,
129 IMdl_execution_context* context = nullptr) = 0;
130
132
134
179 ITransaction* transaction,
180 const char* module_name,
181 const char* filename,
182 IMdl_execution_context* context = nullptr) = 0;
183
215 ITransaction* transaction,
216 const char* module_name,
217 IString* exported_module,
218 IMdl_execution_context* context = nullptr) = 0;
219
250 const char* filename,
251 const ICanvas* canvas,
252 const IMap* export_options = nullptr) const = 0;
253
264 const char* filename, const ILightprofile* lightprofile) const = 0;
265
276 const char* filename,
277 const IBsdf_isotropic_data* reflection,
278 const IBsdf_isotropic_data* transmission) const = 0;
279
281
283
286 {
293 // Undocumented, for alignment only.
294 SEARCH_OPTION_FORCE_32_BIT = 0xffffffffU
295 };
296
312 const char* filename, Search_option option = SEARCH_OPTION_USE_FIRST) const = 0;
313
323 const char* marker, Size f, Sint32 u, Sint32 v) const = 0;
324
326
328
347 const char* definition_name,
348 const IType_list* argument_types,
349 const IType* return_type,
350 IMdle_serialization_callback* mdle_callback,
351 IMdl_execution_context* context) const = 0;
352
366 ITransaction* transaction,
367 const char* function_name,
368 IMdle_deserialization_callback* mdle_callback,
369 IMdl_execution_context* context) const = 0;
370
393 ITransaction* transaction,
394 const char* module_name,
395 const char* function_name_without_module_name,
396 IMdle_deserialization_callback* mdle_callback,
397 IMdl_execution_context* context) const = 0;
398
416 const char* module_name,
417 IMdle_deserialization_callback* mdle_callback,
418 IMdl_execution_context* context) const = 0;
419
421
423
425 virtual IReader* create_reader( const IBuffer* buffer) const = 0;
426
432 virtual IReader* create_reader( const char* filename) const = 0;
433
439 virtual IWriter* create_writer( const char* filename) const = 0;
440
442
443 virtual Sint32 deprecated_export_canvas(
444 const char* filename,
445 const ICanvas* canvas,
446 Uint32 quality,
447 bool force_default_gamma) const = 0;
448
449#ifdef MI_NEURAYLIB_DEPRECATED_15_0
450 inline Sint32 export_canvas(
451 const char* filename,
452 const ICanvas* canvas,
453 Uint32 quality,
454 bool force_default_gamma = false) const
455 { return deprecated_export_canvas( filename, canvas, quality, force_default_gamma); }
456#endif
457};
458
460
465 mi::base::Interface_declare<0x1b22f27d,0xf815,0x495f,0x96,0x71,0x64,0x08,0x5a,0xcc,0x8c,0x0d>
466{
467public:
474 virtual const char* get_function_name() const = 0;
475
482 virtual const char* get_module_name() const = 0;
483
490 virtual const char* get_function_name_without_module_name() const = 0;
491};
492
497 mi::base::Interface_declare<0x2bb03f26,0x3a73,0x499d,0x90,0x64,0x19,0x79,0xea,0x40,0xc1,0x49>
498{
499public:
501 virtual const char* get_db_name() const = 0;
502
509 virtual const IType_list* get_argument_types() const = 0;
510};
511
516 mi::base::Interface_declare<0xe2136899,0x0011,0x45d1,0xb0,0x45,0xa7,0xbb,0x03,0xa7,0xf4,0x0c>
517{
518public:
520 virtual const char* get_db_name() const = 0;
521
523 virtual const char* get_load_module_argument() const = 0;
524};
525
539 mi::base::Interface_declare<0x5888652a,0x79d6,0x49ba,0x87,0x90,0x0c,0x1b,0x32,0x83,0xf8,0x63>
540{
541public:
554 virtual const IString* get_serialized_filename( const char* filename) const = 0;
555};
556
571 mi::base::Interface_declare<0xe7f636eb,0x8d04,0x4e3b,0x97,0x67,0x3a,0x93,0x1c,0x90,0xc9,0x7e>
572{
573public:
583 virtual const IString* get_deserialized_filename( const char* serialized_filename) const = 0;
584};
585 // end group mi_neuray_mdl_misc
587
588} // namespace neuraylib
589
590} // namespace mi
591
592#endif // MI_NEURAYLIB_IMDL_IMPEXP_API_H
This interface represents maps, i.e., a key-value based data structure.
Definition: imap.h:41
A simple string class.
Definition: istring.h:22
Mixin class template for deriving new interface declarations.
Definition: interface_declare.h:43
Abstract interface for isotropic BSDF data.
Definition: ibsdf_isotropic_data.h:44
Abstract interface for a simple buffer with binary data.
Definition: ibuffer.h:25
Abstract interface for a canvas represented by a rectangular array of tiles.
Definition: icanvas.h:89
Represents a deserialized function name.
Definition: imdl_impexp_api.h:498
virtual const IType_list * get_argument_types() const =0
Returns the argument types of the serialized function call or material instance.
virtual const char * get_db_name() const =0
Returns the DB name of the function of material definition.
Represents a deserialized module name.
Definition: imdl_impexp_api.h:517
virtual const char * get_load_module_argument() const =0
Returns a string suitable for mi::neuraylib::IMdl_impexp_api::load_module().
virtual const char * get_db_name() const =0
Returns the DB name of the module.
This interface represents light profiles.
Definition: ilightprofile.h:73
The execution context can be used to query status information like error and warning messages concern...
Definition: imdl_execution_context.h:142
API component for MDL related import and export operations.
Definition: imdl_impexp_api.h:43
virtual IReader * create_reader(const char *filename) const =0
Returns a random-access reader for a given file.
virtual IReader * create_reader(const IBuffer *buffer) const =0
Creates a random-access reader for a given buffer.
virtual IWriter * create_writer(const char *filename) const =0
Returns a random-access writer for a given file.
virtual const IDeserialized_function_name * deserialize_function_name(ITransaction *transaction, const char *module_name, const char *function_name_without_module_name, IMdle_deserialization_callback *mdle_callback, IMdl_execution_context *context) const =0
Deserializes the serialized name of a function or material definition (second overload).
virtual const IString * get_mdl_module_name(const char *filename, Search_option option=SEARCH_OPTION_USE_FIRST) const =0
Returns the MDL name for an MDL module identified by its filename.
virtual const ISerialized_function_name * serialize_function_name(const char *definition_name, const IType_list *argument_types, const IType *return_type, IMdle_serialization_callback *mdle_callback, IMdl_execution_context *context) const =0
Serializes the name of a function or material definition.
virtual const IDeserialized_module_name * deserialize_module_name(const char *module_name, IMdle_deserialization_callback *mdle_callback, IMdl_execution_context *context) const =0
Deserializes the serialized name of a module.
virtual const IDeserialized_function_name * deserialize_function_name(ITransaction *transaction, const char *function_name, IMdle_deserialization_callback *mdle_callback, IMdl_execution_context *context) const =0
Deserializes the serialized name of a function or material definition (first overload)
virtual Sint32 export_lightprofile(const char *filename, const ILightprofile *lightprofile) const =0
Exports a light profile to disk.
virtual Sint32 export_bsdf_data(const char *filename, const IBsdf_isotropic_data *reflection, const IBsdf_isotropic_data *transmission) const =0
Exports BSDF data to a file on disk.
Search_option
Controls the behavior of mi::neuraylib::IMdl_impexp_api::get_mdl_module_name().
Definition: imdl_impexp_api.h:286
@ SEARCH_OPTION_USE_FIRST
Derive module name from the first search path that matches.
Definition: imdl_impexp_api.h:288
@ SEARCH_OPTION_USE_LONGEST
Derive module name from the longest search path that matches.
Definition: imdl_impexp_api.h:292
@ SEARCH_OPTION_USE_SHORTEST
Derive module name from the shortest search path that matches.
Definition: imdl_impexp_api.h:290
virtual Sint32 export_canvas(const char *filename, const ICanvas *canvas, const IMap *export_options=nullptr) const =0
Exports a canvas to a file on disk.
virtual Sint32 export_module(ITransaction *transaction, const char *module_name, const char *filename, IMdl_execution_context *context=nullptr)=0
Exports an MDL module from the database to disk.
virtual Sint32 load_module(ITransaction *transaction, const char *argument, IMdl_execution_context *context=nullptr)=0
Loads an MDL module from disk (or a builtin module) into the database.
virtual Sint32 load_module_from_string(ITransaction *transaction, const char *module_name, const char *module_source, IMdl_execution_context *context=nullptr)=0
Loads an MDL module from memory into the database.
virtual Sint32 export_module_to_string(ITransaction *transaction, const char *module_name, IString *exported_module, IMdl_execution_context *context=nullptr)=0
Exports an MDL module from the database to string.
virtual const IString * frame_uvtile_marker_to_string(const char *marker, Size f, Sint32 u, Sint32 v) const =0
Replaces a frame and/or uv-tile marker by coordinates of a given uv-tile.
Callback to map references to MDLE modules during deserialization.
Definition: imdl_impexp_api.h:572
virtual const IString * get_deserialized_filename(const char *serialized_filename) const =0
Returns a the filename of an MDLE module given its serialized filename.
Callback to map references to MDLE modules during serialization.
Definition: imdl_impexp_api.h:540
virtual const IString * get_serialized_filename(const char *filename) const =0
Returns a serialized filename for the given MDLE filename.
A reader supports binary block reads and string-oriented line reads that zero-terminate the result.
Definition: ireader.h:27
Represents a serialized function name.
Definition: imdl_impexp_api.h:466
virtual const char * get_function_name_without_module_name() const =0
Returns the serialized function name (without the module name).
virtual const char * get_module_name() const =0
Returns the serialized module name.
virtual const char * get_function_name() const =0
Returns the serialized function name.
A transaction provides a consistent view on the database.
Definition: itransaction.h:82
An ordered collection of types identified by name or index.
Definition: itype.h:650
The interface to MDL types.
Definition: itype.h:154
A writer supports binary block writes and string-oriented line writes that accept a zero-terminated s...
Definition: iwriter.h:27
#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
int Sint32
32-bit signed integer.
Definition: types.h:46
Uint64 Size
Unsigned integral type that is large enough to hold the size of all types.
Definition: types.h:112
unsigned int Uint32
32-bit unsigned integer.
Definition: types.h:49
Mixin class template for deriving new interface declarations.
Common namespace for APIs of NVIDIA Advanced Rendering Center GmbH.
Definition: neuraylib.h:179
Major and minor version number and an optional qualifier.