Iray SDK API nvidia_logo_transpbg.gif Up
ilight.h
Go to the documentation of this file.
1/***************************************************************************************************
2 * Copyright 2024 NVIDIA Corporation. All rights reserved.
3 **************************************************************************************************/
6
7#ifndef MI_NEURAYLIB_ILIGHT_H
8#define MI_NEURAYLIB_ILIGHT_H
9
12
13namespace mi {
14
15namespace neuraylib {
16
27 LIGHT_FORCE_32_BIT = 0xffffffffU
28};
29
30mi_static_assert( sizeof( Light_type) == sizeof( Uint32));
31
41 N_AREA_TYPES,
42 AREA_FORCE_32_BIT = 0xffffffffU
43};
44
45mi_static_assert( sizeof( Light_area_shape) == sizeof( Uint32));
46
65class ILight :
66 public base::Interface_declare<0xc9a437cf,0x6d47,0x4666,0x9c,0xf6,0xa4,0x3f,0x50,0xe8,0x0b,0x90,
67 neuraylib::IScene_element>
68{
69public:
71
72
74 virtual Light_type get_type() const = 0;
75
77 virtual void set_type(Light_type type) = 0;
78
80 virtual Light_area_shape get_area_shape() const = 0;
81
83 virtual void set_area_shape(Light_area_shape light_area_shape) = 0;
84
89 virtual Float64 get_area_radius() const = 0;
90
95 virtual void set_area_radius(Float64 radius) = 0;
96
102 virtual Float64 get_area_size_x() const = 0;
103
109 virtual void set_area_size_x(Float64 size_x) = 0;
110
114 virtual Float64 get_area_size_y() const = 0;
115
119 virtual void set_area_size_y(Float64 size_y) = 0;
120
122
124
128 virtual Bbox3_struct get_bbox() const = 0;
129
136 virtual Bbox3_struct get_tight_bbox( const Float64_4_4_struct& transformation_matrix) const = 0;
137
139};
140 // end group mi_neuray_leaf_nodes
142
143} // namespace neuraylib
144
145} // namespace mi
146
147#endif // MI_NEURAYLIB_ILIGHT_H
Mixin class template for deriving new interface declarations.
Definition: interface_declare.h:43
Point, spot, directional and area lighting.
Definition: ilight.h:68
virtual Bbox3_struct get_tight_bbox(const Float64_4_4_struct &transformation_matrix) const =0
Returns the bounding box of the light after transformation.
virtual void set_type(Light_type type)=0
Sets the light type.
virtual Float64 get_area_size_y() const =0
Returns the size of the area in y direction for area lights.
virtual Light_area_shape get_area_shape() const =0
Returns the area light shape.
virtual void set_area_size_y(Float64 size_y)=0
Sets the size of the area in y direction for area light types.
virtual Float64 get_area_radius() const =0
Returns the radius of the area for area lights.
virtual Float64 get_area_size_x() const =0
Returns the size of the area in x direction for area lights.
virtual Light_type get_type() const =0
Returns the light type.
virtual void set_area_shape(Light_area_shape light_area_shape)=0
Sets the area light shape.
virtual Bbox3_struct get_bbox() const =0
Returns the bounding box of the light.
virtual void set_area_size_x(Float64 size_x)=0
Sets the size of the area in x direction for area lights.
virtual void set_area_radius(Float64 radius)=0
Sets the radius of the area for area lights.
#define mi_static_assert(expr)
Compile time assertion that raises a compilation error if the constant expression expr evaluates to f...
Definition: assert.h:65
unsigned int Uint32
32-bit unsigned integer.
Definition: types.h:49
double Float64
64-bit float.
Definition: types.h:52
Light_area_shape
Supported area light shapes.
Definition: ilight.h:35
Light_type
Supported light types.
Definition: ilight.h:24
@ AREA_NONE
Not an area light.
Definition: ilight.h:36
@ AREA_CYLINDER
Cylinder shape.
Definition: ilight.h:40
@ AREA_RECTANGLE
Rectangular shape.
Definition: ilight.h:37
@ AREA_DISC
Disc shape.
Definition: ilight.h:38
@ AREA_SPHERE
Sphere shape.
Definition: ilight.h:39
@ LIGHT_POINT
Point light: emits rays in all directions from the origin.
Definition: ilight.h:25
@ LIGHT_INFINITE
Directional light: no origin, all light rays parallel.
Definition: ilight.h:26
Base class for all scene elements.
Common namespace for APIs of NVIDIA Advanced Rendering Center GmbH.
Definition: neuraylib.h:179
Storage class for an axis-aligned N-dimensional bounding box class template of fixed dimension.
Definition: bbox.h:47
Storage class for a NxM-dimensional matrix class template of fixed dimensions.
Definition: matrix.h:90
Typedefs for types from the math API.