neuray API Programmer's Manual

imdl_entity_resolver.h File Reference

Description

Interfaces for resolving and accessing MDL entities.

Code Example

imdl_entity_resolver.h

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

#ifndef MI_NEURAYLIB_IMDL_ENTITY_RESOLVER_H
#define MI_NEURAYLIB_IMDL_ENTITY_RESOLVER_H

#include <mi/base/interface_declare.h>

namespace mi {

namespace neuraylib {

class IMdl_execution_context;
class IMdl_resolved_module;
class IMdl_resolved_resource;
class IReader;








class IMdl_entity_resolver : public
    mi::base::Interface_declare<0xfe6e553a,0x6a1f,0x4300,0xb5,0x46,0x96,0xc8,0xee,0x12,0xcf,0x95>
{
public:
    virtual IMdl_resolved_module* resolve_module(
        const char* module_name,
        const char* owner_file_path,
        const char* owner_name,
        Sint32 pos_line,
        Sint32 pos_column,
        IMdl_execution_context* context = 0) = 0;

    virtual IMdl_resolved_resource* resolve_resource(
        const char* file_path,
        const char* owner_file_path,
        const char* owner_name,
        Sint32 pos_line,
        Sint32 pos_column,
        IMdl_execution_context* context = 0) = 0;
};

enum Uvtile_mode {
    UVTILE_MODE_NONE         = 0, 
    UVTILE_MODE_UDIM         = 1, 
    UVTILE_MODE_UVTILE0      = 2, 
    UVTILE_MODE_UVTILE1      = 3, 
    UVTILE_MODE_FORCE_32_BIT = 0xffffffffU
};

class IMdl_resolved_module : public
    mi::base::Interface_declare<0xd725c3bb,0xd34d,0x4a1a,0x93,0x5d,0xa3,0x96,0x53,0x9f,0xb1,0x76>
{
public:
    virtual const char* get_module_name() const = 0;

    virtual const char* get_filename() const = 0;

    virtual IReader* create_reader() const = 0;
};

class IMdl_resolved_resource_element : public
    mi::base::Interface_declare<0x0c49fcd6,0xc675,0x4ca5,0xbf,0xae,0xb1,0x59,0xd9,0x75,0x5f,0xe2>
{
public:
    virtual Size 
               get_frame_number() const = 0;

    virtual Size 
               get_count() const = 0;

    virtual const char* get_mdl_file_path( Size i) const = 0;

    virtual const char* get_filename( Size i) const = 0;

    virtual IReader* create_reader( Size i) const = 0;

    virtual base::Uuid 
               get_resource_hash( Size i) const = 0;

    virtual bool get_uvtile_uv( Size i, Sint32& u, Sint32& v) const = 0;
};

class IMdl_resolved_resource : public
    mi::base::Interface_declare<0x650cbe23,0xed44,0x4c2f,0x9f,0xbc,0x3b,0x64,0x4a,0x08,0x15,0xa1>
{
public:
    virtual bool has_sequence_marker() const = 0;

    virtual Uvtile_mode 
               get_uvtile_mode() const = 0;

    virtual const char* get_mdl_file_path_mask() const = 0;

    virtual const char* get_filename_mask() const = 0;

    virtual Size 
               get_count() const = 0;

    virtual const IMdl_resolved_resource_element* get_element( Size i) const = 0;
};
 // end group mi_neuray_mdl_misc

} // namespace neuraylib

} // namespace mi

#endif // MI_NEURAYLIB_IMDL_ENTITY_RESOLVER_H

Namespaces

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

Classes

class 
The entity resolver is used to resolve MDL modules and resources in such modules. More...
class 
Describes a resolved module (or a failed attempt). More...
class 
Describes an ordered set of resolved resource elements. More...
class 
Describes an ordered set of resolved resource entities. More...

Enumerations

enum  {UVTILE_MODE_NONE = 0, UVTILE_MODE_UDIM = 1, UVTILE_MODE_UVTILE0 = 2, UVTILE_MODE_UVTILE1 = 3, UVTILE_MODE_FORCE_32_BIT = 0xffffffffU }
Supported uvtile modes for resources. More...