neuray API Programmer's Manual

imdl_impexp_api.h File Reference

Description

API component for MDL related import and export operations.

Code Example

imdl_impexp_api.h

‎/***************************************************************************************************
 * Copyright 2023 NVIDIA Corporation. All rights reserved.
 **************************************************************************************************/

#ifndef MI_NEURAYLIB_IMDL_IMPEXP_API_H
#define MI_NEURAYLIB_IMDL_IMPEXP_API_H

#include <mi/base/interface_declare.h>
#include <mi/neuraylib/version.h>

namespace mi {

class IString;

namespace neuraylib {

class IBuffer;
class IBsdf_isotropic_data;
class ICanvas;
class IDeserialized_function_name;
class IDeserialized_module_name;
class ILightprofile;
class IMdl_execution_context;
class IMdle_deserialization_callback;
class IMdle_serialization_callback;
class IReader;
class ISerialized_function_name;
class ITransaction;
class IType;
class IType_list;
class IWriter;


class IMdl_impexp_api : public
    mi::base::Interface_declare<0xd8584ade,0xa400,0x486b,0xab,0x29,0x39,0xcd,0x87,0x55,0x14,0x5d>
{
public:



    virtual Sint32 
               load_module(
        ITransaction* transaction, const char* argument, IMdl_execution_context* context = 0) = 0;

    virtual Sint32 
               load_module_from_string(
        ITransaction* transaction,
        const char* module_name,
        const char* module_source,
        IMdl_execution_context* context = 0) = 0;




    virtual Sint32 
               export_module(
        ITransaction* transaction,
        const char* module_name,
        const char* filename,
        IMdl_execution_context* context = 0) = 0;

    virtual Sint32 
               export_module_to_string(
        ITransaction* transaction,
        const char* module_name,
        IString* exported_module,
        IMdl_execution_context* context = 0) = 0;

    virtual Sint32 
               export_canvas(
        const char* filename,
        const ICanvas* canvas,
        Uint32 quality = 100,
        bool force_default_gamma = false) const = 0;

    virtual Sint32 
               export_lightprofile(
        const char* filename, const ILightprofile* lightprofile) const = 0;

    virtual Sint32 
               export_bsdf_data(
        const char* filename,
        const IBsdf_isotropic_data* reflection,
        const IBsdf_isotropic_data* transmission) const = 0;




    enum Search_option
    {
        SEARCH_OPTION_USE_FIRST    = 0,
        SEARCH_OPTION_USE_SHORTEST = 1,
        SEARCH_OPTION_USE_LONGEST  = 2,
        //  Undocumented, for alignment only.
        SEARCH_OPTION_FORCE_32_BIT = 0xffffffffU
    };

    virtual const IString* get_mdl_module_name(
        const char* filename, Search_option option = SEARCH_OPTION_USE_FIRST) const = 0;

    virtual const IString* frame_uvtile_marker_to_string(
        const char* marker, Size f, Sint32 u, Sint32 v) const = 0;

#ifdef MI_NEURAYLIB_DEPRECATED_12_1
    inline const IString* uvtile_marker_to_string( const char* marker, Sint32 u, Sint32 v)
    { return frame_uvtile_marker_to_string( marker, 0, u, v); }
#endif




    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;

    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;

    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;

    virtual const IDeserialized_module_name* deserialize_module_name(
        const char* module_name,
        IMdle_deserialization_callback* mdle_callback,
        IMdl_execution_context* context) const = 0;




    virtual IReader* create_reader( const IBuffer* buffer) const = 0;

    virtual IReader* create_reader( const char* filename) const = 0;

    virtual IWriter* create_writer( const char* filename) const = 0;


    virtual const IString* MI_NEURAYLIB_DEPRECATED_METHOD_12_1(uvtile_string_to_marker)(
        const char* str, const char* marker) const = 0;

    virtual const IString* MI_NEURAYLIB_DEPRECATED_METHOD_12_1(frame_string_to_marker)(
        const char* str, Size digits) const = 0;
};

mi_static_assert( sizeof( IMdl_impexp_api::Search_option) == sizeof( Uint32));

class ISerialized_function_name : public
    mi::base::Interface_declare<0x1b22f27d,0xf815,0x495f,0x96,0x71,0x64,0x08,0x5a,0xcc,0x8c,0x0d>
{
public:
    virtual const char* get_function_name() const = 0;

    virtual const char* get_module_name() const = 0;

    virtual const char* get_function_name_without_module_name() const = 0;
};

class IDeserialized_function_name : public
    mi::base::Interface_declare<0x2bb03f26,0x3a73,0x499d,0x90,0x64,0x19,0x79,0xea,0x40,0xc1,0x49>
{
public:
    virtual const char* get_db_name() const = 0;

    virtual const IType_list* get_argument_types() const = 0;
};

class IDeserialized_module_name : public
    mi::base::Interface_declare<0xe2136899,0x0011,0x45d1,0xb0,0x45,0xa7,0xbb,0x03,0xa7,0xf4,0x0c>
{
public:
    virtual const char* get_db_name() const = 0;

    virtual const char* get_load_module_argument() const = 0;
};

class IMdle_serialization_callback : public
    mi::base::Interface_declare<0x5888652a,0x79d6,0x49ba,0x87,0x90,0x0c,0x1b,0x32,0x83,0xf8,0x63>
{
public:
    virtual const IString* get_serialized_filename( const char* filename) const = 0;
};

class IMdle_deserialization_callback : public
    mi::base::Interface_declare<0xe7f636eb,0x8d04,0x4e3b,0x97,0x67,0x3a,0x93,0x1c,0x90,0xc9,0x7e>
{
public:
    virtual const IString* get_deserialized_filename( const char* serialized_filename) const = 0;
};
 // end group mi_neuray_mdl_misc

} // namespace neuraylib

} // namespace mi

#endif // MI_NEURAYLIB_IMDL_IMPEXP_API_H

Namespaces

namespace 
Common namespace for APIs of NVIDIA Advanced Rendering Center GmbH. More...
namespace 
Namespace for the neuray API. More...

Classes

class 
Represents a deserialized function name. More...
class 
Represents a deserialized module name. More...
class 
API component for MDL related import and export operations. More...
class 
Callback to map references to MDLE modules during deserialization. More...
class 
Callback to map references to MDLE modules during serialization. More...
class 
Represents a serialized function name. More...