neuray API Programmer's Manual

iscene_element.h File Reference

Description

Base class for all scene elements.

Code Example

iscene_element.h

‎//*****************************************************************************
// Copyright 1986, 2016 NVIDIA Corporation. All rights reserved.
//*****************************************************************************
//*****************************************************************************

#ifndef MI_NEURAYLIB_ISCENE_ELEMENT_H
#define MI_NEURAYLIB_ISCENE_ELEMENT_H

#include <mi/neuraylib/iattribute_set.h>
#include <mi/neuraylib/version.h>

namespace mi {

namespace neuraylib {




enum Element_type
{
#ifndef MI_SKIP_WITH_MDL_SDK_DOXYGEN
    ELEMENT_TYPE_INSTANCE                        =  0, 
    ELEMENT_TYPE_GROUP                           =  1, 
    ELEMENT_TYPE_OPTIONS                         =  2, 
    ELEMENT_TYPE_CAMERA                          =  3, 
    ELEMENT_TYPE_LIGHT                           =  4, 
#endif // MI_SKIP_WITH_MDL_SDK_DOXYGEN
    ELEMENT_TYPE_LIGHTPROFILE                    =  5, 
#ifndef MI_SKIP_WITH_MDL_SDK_DOXYGEN
    ELEMENT_TYPE_MATERIAL                        =  6, //    mi::neuraylib::IMaterial
#endif // MI_SKIP_WITH_MDL_SDK_DOXYGEN
    ELEMENT_TYPE_TEXTURE                         =  7, 
    ELEMENT_TYPE_IMAGE                           =  8, 
#ifndef MI_SKIP_WITH_MDL_SDK_DOXYGEN
    ELEMENT_TYPE_SHADER                          =  9, //    mi::neuraylib::IShader
    ELEMENT_TYPE_TRIANGLE_MESH                   = 10, 
    ELEMENT_TYPE_ATTRIBUTE_CONTAINER             = 16, 
    ELEMENT_TYPE_POLYGON_MESH                    = 18, 
    ELEMENT_TYPE_SHADER_CLASS                    = 19, //    mi::neuraylib::IShader_class
    ELEMENT_TYPE_SUBDIVISION_SURFACE             = 23, 
    ELEMENT_TYPE_FREEFORM_SURFACE                = 24, 
    ELEMENT_TYPE_SHADER_GRAPH_CLASS              = 26, //    mi::neuraylib::IShader_graph_class
    ELEMENT_TYPE_SHADER_GRAPH                    = 27, //    mi::neuraylib::IShader_graph
    ELEMENT_TYPE_COMPOUND_SHADER_CLASS           = 28, //    mi::neuraylib::ICompound_shader_class
#endif // MI_SKIP_WITH_MDL_SDK_DOXYGEN
    ELEMENT_TYPE_MDL_MODULE                      = 29, 
    ELEMENT_TYPE_MDL_FUNCTION_DEFINITION         = 30, 
    ELEMENT_TYPE_MDL_FUNCTION_CALL               = 31, 
    ELEMENT_TYPE_MDL_MATERIAL_DEFINITION         = 32, 
    ELEMENT_TYPE_MDL_MATERIAL_INSTANCE           = 33, 
    ELEMENT_TYPE_MDL_COMPILED_MATERIAL           = 34, 
    ELEMENT_TYPE_BSDF_MEASUREMENT                = 35, 
#ifndef MI_SKIP_WITH_MDL_SDK_DOXYGEN
    ELEMENT_TYPE_IRRADIANCE_PROBES               = 36, 
    ELEMENT_TYPE_DECAL                           = 37, 
    ELEMENT_TYPE_ON_DEMAND_MESH                  = 38, 
#endif // MI_SKIP_WITH_MDL_SDK_DOXYGEN
    ELEMENT_TYPE_FORCE_32_BIT                    = 0xffffffffU
};

mi_static_assert( sizeof( Element_type)== sizeof( Uint32));

enum Shader_type {
  VOLUME_SHADER            = 0,
  ENVIRONMENT_SHADER       = 1,
  SURFACE_SHADER           = 2,
  DISPLACEMENT_SHADER      = 3,
  LIGHT_SHADER             = 4,
  SHADER_TYPE_FORCE_32_BIT = 0xffffffffU
};

mi_static_assert( sizeof( Shader_type) == sizeof( Uint32));

class IScene_element :
    public base::Interface_declare<0x8a2a4da9,0xe323,0x452c,0xb8,0xda,0x92,0x45,0x67,0x85,0xd7,0x78,
                                   neuraylib::IAttribute_set>
{
public:
    virtual Element_type 
               get_element_type() const = 0;
};
 // end group mi_neuray_scene_element

} // namespace neuraylib

#ifdef MI_NEURAYLIB_DEPRECATED_NAMESPACE_MI_TRANSITION
using neuraylib::DISPLACEMENT_SHADER;
using neuraylib::ELEMENT_TYPE_ATTRIBUTE_CONTAINER;
using neuraylib::ELEMENT_TYPE_BSDF_MEASUREMENT;
using neuraylib::ELEMENT_TYPE_CAMERA;
using neuraylib::ELEMENT_TYPE_COMPOUND_SHADER_CLASS;
using neuraylib::ELEMENT_TYPE_DECAL;
using neuraylib::ELEMENT_TYPE_FORCE_32_BIT;
using neuraylib::ELEMENT_TYPE_FREEFORM_SURFACE;
using neuraylib::ELEMENT_TYPE_GROUP;
using neuraylib::ELEMENT_TYPE_IMAGE;
using neuraylib::ELEMENT_TYPE_INSTANCE;
using neuraylib::ELEMENT_TYPE_IRRADIANCE_PROBES;
using neuraylib::ELEMENT_TYPE_LIGHT;
using neuraylib::ELEMENT_TYPE_LIGHTPROFILE;
using neuraylib::ELEMENT_TYPE_MATERIAL;
using neuraylib::ELEMENT_TYPE_MDL_COMPILED_MATERIAL;
using neuraylib::ELEMENT_TYPE_MDL_FUNCTION_CALL;
using neuraylib::ELEMENT_TYPE_MDL_FUNCTION_DEFINITION;
using neuraylib::ELEMENT_TYPE_MDL_MATERIAL_DEFINITION;
using neuraylib::ELEMENT_TYPE_MDL_MATERIAL_INSTANCE;
using neuraylib::ELEMENT_TYPE_MDL_MODULE;
using neuraylib::ELEMENT_TYPE_ON_DEMAND_MESH;
using neuraylib::ELEMENT_TYPE_OPTIONS;
using neuraylib::ELEMENT_TYPE_POLYGON_MESH;
using neuraylib::ELEMENT_TYPE_SHADER;
using neuraylib::ELEMENT_TYPE_SHADER_CLASS;
using neuraylib::ELEMENT_TYPE_SHADER_GRAPH;
using neuraylib::ELEMENT_TYPE_SHADER_GRAPH_CLASS;
using neuraylib::ELEMENT_TYPE_SUBDIVISION_SURFACE;
using neuraylib::ELEMENT_TYPE_TEXTURE;
using neuraylib::ELEMENT_TYPE_TRIANGLE_MESH;
using neuraylib::ENVIRONMENT_SHADER;
using neuraylib::Element_type;
using neuraylib::IAttribute_set;
using neuraylib::IScene_element;
using neuraylib::LIGHT_SHADER;
using neuraylib::SHADER_TYPE_FORCE_32_BIT;
using neuraylib::SURFACE_SHADER;
using neuraylib::Shader_type;
using neuraylib::VOLUME_SHADER;
#endif // MI_NEURAYLIB_DEPRECATED_NAMESPACE_MI_TRANSITION

} // namespace mi

#endif // MI_NEURAYLIB_ISCENE_ELEMENT_H

Namespaces

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

Classes

class 
Common base interface for all scene elements. More...

Enumerations

enum  {ELEMENT_TYPE_INSTANCE = 0, ELEMENT_TYPE_GROUP = 1, ELEMENT_TYPE_OPTIONS = 2, ELEMENT_TYPE_CAMERA = 3, ELEMENT_TYPE_LIGHT = 4, ELEMENT_TYPE_LIGHTPROFILE = 5, ELEMENT_TYPE_MATERIAL = 6, ELEMENT_TYPE_TEXTURE = 7, ELEMENT_TYPE_IMAGE = 8, ELEMENT_TYPE_SHADER = 9, ELEMENT_TYPE_TRIANGLE_MESH = 10, ELEMENT_TYPE_ATTRIBUTE_CONTAINER = 16, ELEMENT_TYPE_POLYGON_MESH = 18, ELEMENT_TYPE_SHADER_CLASS = 19, ELEMENT_TYPE_SUBDIVISION_SURFACE = 23, ELEMENT_TYPE_FREEFORM_SURFACE = 24, ELEMENT_TYPE_SHADER_GRAPH_CLASS = 26, ELEMENT_TYPE_SHADER_GRAPH = 27, ELEMENT_TYPE_COMPOUND_SHADER_CLASS = 28, ELEMENT_TYPE_MDL_MODULE = 29, ELEMENT_TYPE_MDL_FUNCTION_DEFINITION = 30, ELEMENT_TYPE_MDL_FUNCTION_CALL = 31, ELEMENT_TYPE_MDL_MATERIAL_DEFINITION = 32, ELEMENT_TYPE_MDL_MATERIAL_INSTANCE = 33, ELEMENT_TYPE_MDL_COMPILED_MATERIAL = 34, ELEMENT_TYPE_BSDF_MEASUREMENT = 35, ELEMENT_TYPE_IRRADIANCE_PROBES = 36, ELEMENT_TYPE_DECAL = 37, ELEMENT_TYPE_ON_DEMAND_MESH = 38, ELEMENT_TYPE_FORCE_32_BIT = 0xffffffffU }
Distinguishes scene elements. More...