neuray API Programmer's Manual

ilight.h File Reference

Description

Scene element Light.

Code Example

ilight.h

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

#ifndef MI_NEURAYLIB_ILIGHT_H
#define MI_NEURAYLIB_ILIGHT_H

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

namespace mi {

namespace neuraylib {

class IGroup;
class MI_NEURAYLIB_DEPRECATED_CLASS_METASL(IShader);
class MI_NEURAYLIB_DEPRECATED_CLASS_METASL(IShader_graph);




enum Light_type {
    LIGHT_POINT       = 0,       
#ifdef MI_NEURAYLIB_DEPRECATED_METASL
    LIGHT_SPOT        = 1,
#endif // MI_NEURAYLIB_DEPRECATED_METASL
    LIGHT_INFINITE    = 2,       
#ifdef MI_NEURAYLIB_DEPRECATED_METASL
    LIGHT_PLANAR      = 3,
#endif // MI_NEURAYLIB_DEPRECATED_METASL
    N_LIGHT_TYPES,
    LIGHT_FORCE_32_BIT = 0xffffffffU
};

mi_static_assert( sizeof( Light_type) == sizeof( Uint32));

enum Light_area_shape {
    AREA_NONE         = 0,       
    AREA_RECTANGLE    = 1,       
    AREA_DISC         = 2,       
    AREA_SPHERE       = 3,       
    AREA_CYLINDER     = 4,       
    N_AREA_TYPES,
    AREA_FORCE_32_BIT = 0xffffffffU
};

mi_static_assert( sizeof( Light_area_shape) == sizeof( Uint32));

class ILight :
    public base::Interface_declare<0xc9a437cf,0x6d47,0x4666,0x9c,0xf6,0xa4,0x3f,0x50,0xe8,0x0b,0x90,
                                   neuraylib::IScene_element>
{
public:
    virtual Light_type 
               get_type() const = 0;

    virtual void set_type(Light_type type) = 0;

    virtual Light_area_shape 
               get_area_shape() const = 0;

    virtual void set_area_shape(Light_area_shape light_area_shape) = 0;

    virtual Float64 
               get_area_radius() const = 0;

    virtual void set_area_radius(Float64 radius) = 0;

    virtual Float64 
               get_area_size_x() const = 0;

    virtual void set_area_size_x(Float64 size_x) = 0;

    virtual Float64 
               get_area_size_y() const = 0;

    virtual void set_area_size_y(Float64 size_y) = 0;

    virtual Float64 MI_NEURAYLIB_DEPRECATED_METHOD_METASL(get_spread)() const = 0;

    virtual void MI_NEURAYLIB_DEPRECATED_METHOD_METASL(set_spread)(Float64 spread) = 0;

    virtual Float64 MI_NEURAYLIB_DEPRECATED_METHOD_METASL(get_distance)() const = 0;

    virtual void MI_NEURAYLIB_DEPRECATED_METHOD_METASL(set_distance)(Float64 distance) = 0;

    virtual Sint32 attach_light_definition( const char* name) = 0;

    virtual void detach_light_definition() = 0;

    virtual const MI_NEURAYLIB_DEPRECATED_CLASS_METASL(IShader_graph)*
        access_light_definition() const = 0;

    virtual MI_NEURAYLIB_DEPRECATED_CLASS_METASL(IShader_graph)*
        edit_light_definition() const = 0;

    virtual Sint32 MI_NEURAYLIB_DEPRECATED_METHOD_METASL(attach_shader)(
        Shader_type type, const char* name) = 0;

    virtual Sint32 MI_NEURAYLIB_DEPRECATED_METHOD_METASL(detach_shader)(
        Shader_type type) = 0;

    virtual const MI_NEURAYLIB_DEPRECATED_CLASS_METASL(IShader)*
        access_shader( Shader_type type) const = 0;

    virtual MI_NEURAYLIB_DEPRECATED_CLASS_METASL(IShader)*
        edit_shader( Shader_type type) const = 0;
};
 // end group mi_neuray_leaf_nodes

} // namespace neuraylib

#ifdef MI_NEURAYLIB_DEPRECATED_NAMESPACE_MI_TRANSITION
using neuraylib::AREA_CYLINDER;
using neuraylib::AREA_DISC;
using neuraylib::AREA_FORCE_32_BIT;
using neuraylib::AREA_NONE;
using neuraylib::AREA_RECTANGLE;
using neuraylib::AREA_SPHERE;
using neuraylib::IGroup;
using neuraylib::ILight;
using neuraylib::IScene_element;
using neuraylib::MI_NEURAYLIB_DEPRECATED_CLASS_METASL(IShader);
using neuraylib::MI_NEURAYLIB_DEPRECATED_CLASS_METASL(IShader_graph);
using neuraylib::LIGHT_FORCE_32_BIT;
using neuraylib::LIGHT_INFINITE;
using neuraylib::LIGHT_PLANAR;
using neuraylib::LIGHT_POINT;
using neuraylib::LIGHT_SPOT;
using neuraylib::Light_area_shape;
using neuraylib::Light_type;
using neuraylib::N_AREA_TYPES;
using neuraylib::N_LIGHT_TYPES;
using neuraylib::Shader_type;
#endif // MI_NEURAYLIB_DEPRECATED_NAMESPACE_MI_TRANSITION

} // namespace mi

#endif // MI_NEURAYLIB_ILIGHT_H

Namespaces

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

Classes

class 
Point, spot, directional and area lighting. More...

Enumerations

enum  {AREA_NONE = 0, AREA_RECTANGLE = 1, AREA_DISC = 2, AREA_SPHERE = 3, AREA_CYLINDER = 4, N_AREA_TYPES, AREA_FORCE_32_BIT = 0xffffffffU }
Supported area light shapes. More...
enum  {LIGHT_POINT = 0, LIGHT_INFINITE = 2, N_LIGHT_TYPES, LIGHT_FORCE_32_BIT = 0xffffffffU }
Supported light types. More...