Blender V5.0
eevee_light_shared.hh File Reference
#include "eevee_defines.hh"
#include "eevee_transform.hh"
#include "BLI_math_bits.h"

Go to the source code of this file.

Classes

struct  blender::eevee::LightLocalData
struct  blender::eevee::LightSpotData
struct  blender::eevee::LightCullingData

Namespaces

namespace  blender
namespace  blender::eevee
namespace  blender::eevee::do_not_use

Macros

#define LIGHT_NO_SHADOW   -1
#define LOCAL_LIGHT_COMMON
#define SAFE_UNION_ACCESS   0
#define USE_LIGHT_UNION   1
#define FLOAT_AS_INT   float_as_int
#define INT_AS_FLOAT   int_as_float
#define TYPECAST_NOOP
#define SAFE_BEGIN(dst_type, src_type, src_, check)
#define SAFE_ASSIGN_LIGHT_TYPE_CHECK(_type, _value)
#define DATA_MEMBER   local
#define SAFE_READ_BEGIN(dst_type, light, check)
#define SAFE_READ_END()
#define SAFE_WRITE_BEGIN(src_type, src, check)
#define SAFE_WRITE_END(light)
#define ERROR_OFS(a, b)
#define SAFE_ASSIGN(a, reinterpret_fn, in_type, b)
#define SAFE_ASSIGN_FLOAT(a, b)
#define SAFE_ASSIGN_FLOAT2(a, b)
#define SAFE_ASSIGN_FLOAT3(a, b)
#define SAFE_ASSIGN_INT(a, b)
#define SAFE_ASSIGN_FLOAT_AS_INT(a, b)
#define SAFE_ASSIGN_INT_AS_FLOAT(a, b)
#define light_local_data_get(light)
#define light_spot_data_get(light)
#define light_area_data_get(light)
#define light_sun_data_get(light)
Light Culling
#define CULLING_MAX_ITEM   65536
#define CULLING_ZBIN_COUNT   4096
#define CULLING_TILE_RES   16

Enumerations

enum  blender::eevee::eLightType : uint32_t {
  blender::eevee::LIGHT_SUN = 0u , blender::eevee::LIGHT_SUN_ORTHO = 1u , blender::eevee::LIGHT_OMNI_SPHERE = 10u , blender::eevee::LIGHT_OMNI_DISK = 11u ,
  blender::eevee::LIGHT_SPOT_SPHERE = 12u , blender::eevee::LIGHT_SPOT_DISK = 13u , blender::eevee::LIGHT_RECT = 20u , blender::eevee::LIGHT_ELLIPSE = 21u
}

Functions

static bool blender::eevee::is_area_light (eLightType type)
static bool blender::eevee::is_point_light (eLightType type)
static bool blender::eevee::is_spot_light (eLightType type)
static bool blender::eevee::is_sphere_light (eLightType type)
static bool blender::eevee::is_oriented_disk_light (eLightType type)
static bool blender::eevee::is_sun_light (eLightType type)
static bool blender::eevee::is_local_light (eLightType type)
 blender::eevee::BLI_STATIC_ASSERT (sizeof(LightSpotData)==sizeof(LightLocalData), "Data size must match") struct LightAreaData
 blender::eevee::BLI_STATIC_ASSERT (sizeof(LightAreaData)==sizeof(LightLocalData), "Data size must match") struct LightSunData
 blender::eevee::BLI_STATIC_ASSERT (sizeof(LightSunData)==sizeof(LightLocalData), "Data size must match") struct LightData
static float3 blender::eevee::light_x_axis (LightData light)
static float3 blender::eevee::light_y_axis (LightData light)
static float3 blender::eevee::light_z_axis (LightData light)
static float3 blender::eevee::light_position_get (LightData light)
static LightSpotData blender::eevee::do_not_use::light_local_data_get_ex (LightData light, bool check)
static LightData blender::eevee::do_not_use::light_local_data_set (LightData light, LightSpotData spot_data)
static LightSpotData blender::eevee::do_not_use::light_local_data_get (LightData light)
static LightSpotData blender::eevee::do_not_use::light_spot_data_get (LightData light)
static LightAreaData blender::eevee::do_not_use::light_area_data_get (LightData light)
static LightSunData blender::eevee::do_not_use::light_sun_data_get (LightData light)
static LightData blender::eevee::do_not_use::light_sun_data_set (LightData light, LightSunData sun_data)
static int blender::eevee::light_tilemap_max_get (LightData light)
static int blender::eevee::light_local_tilemap_count (LightData light)

Macro Definition Documentation

◆ CULLING_MAX_ITEM

#define CULLING_MAX_ITEM   65536

Definition at line 481 of file eevee_light_shared.hh.

Referenced by blender::eevee::LightModule::end_sync().

◆ CULLING_TILE_RES

#define CULLING_TILE_RES   16

Definition at line 485 of file eevee_light_shared.hh.

◆ CULLING_ZBIN_COUNT

#define CULLING_ZBIN_COUNT   4096

Definition at line 483 of file eevee_light_shared.hh.

Referenced by blender::eevee::LightModule::set_view().

◆ DATA_MEMBER

#define DATA_MEMBER   local

Definition at line 296 of file eevee_light_shared.hh.

◆ ERROR_OFS

#define ERROR_OFS ( a,
b )
Value:
"Offset of " STRINGIFY(a) " mismatch offset of " STRINGIFY(b)
#define STRINGIFY(x)

Definition at line 308 of file eevee_light_shared.hh.

◆ FLOAT_AS_INT

#define FLOAT_AS_INT   float_as_int

Definition at line 249 of file eevee_light_shared.hh.

◆ INT_AS_FLOAT

#define INT_AS_FLOAT   int_as_float

Definition at line 250 of file eevee_light_shared.hh.

◆ light_area_data_get

#define light_area_data_get ( light)
Value:
light.area

Definition at line 436 of file eevee_light_shared.hh.

◆ light_local_data_get

#define light_local_data_get ( light)
Value:
light.local

Definition at line 434 of file eevee_light_shared.hh.

Referenced by blender::eevee::light_tilemap_max_get().

◆ LIGHT_NO_SHADOW

#define LIGHT_NO_SHADOW   -1

Definition at line 20 of file eevee_light_shared.hh.

Referenced by blender::eevee::ShadowModule::end_sync().

◆ light_spot_data_get

#define light_spot_data_get ( light)
Value:
light.spot

Definition at line 435 of file eevee_light_shared.hh.

Referenced by blender::eevee::light_local_tilemap_count().

◆ light_sun_data_get

#define light_sun_data_get ( light)
Value:
light.sun

Definition at line 437 of file eevee_light_shared.hh.

Referenced by blender::eevee::light_tilemap_max_get().

◆ LOCAL_LIGHT_COMMON

#define LOCAL_LIGHT_COMMON
Value:
\ \
packed_float3 shadow_position; \
float _pad0; \ \
float shadow_radius; \ \
float shape_radius; \ \
float influence_radius_max; \ \
float influence_radius_invsqr_surface; \
float influence_radius_invsqr_volume; \ \
int tilemaps_count;

Definition at line 73 of file eevee_light_shared.hh.

Referenced by blender::eevee::BLI_STATIC_ASSERT().

◆ SAFE_ASSIGN

#define SAFE_ASSIGN ( a,
reinterpret_fn,
in_type,
b )
Value:
CHECK_TYPE_PAIR(_src.b, in_type(_dst.a)); \
CHECK_TYPE_PAIR(_dst.a, reinterpret_fn(_src.b)); \
_dst.a = reinterpret_fn(SAFE_ASSIGN_LIGHT_TYPE_CHECK(in_type, _src.b)); \
BLI_STATIC_ASSERT(offsetof(decltype(_dst), a) == offsetof(decltype(_src), b), ERROR_OFS(a, b))
#define CHECK_TYPE_PAIR(var_a, var_b)
#define offsetof(t, d)
#define SAFE_ASSIGN_LIGHT_TYPE_CHECK(_type, _value)
#define ERROR_OFS(a, b)

Definition at line 311 of file eevee_light_shared.hh.

◆ SAFE_ASSIGN_FLOAT

◆ SAFE_ASSIGN_FLOAT2

◆ SAFE_ASSIGN_FLOAT3

◆ SAFE_ASSIGN_FLOAT_AS_INT

#define SAFE_ASSIGN_FLOAT_AS_INT ( a,
b )
Value:
#define FLOAT_AS_INT

Definition at line 321 of file eevee_light_shared.hh.

Referenced by blender::eevee::do_not_use::light_sun_data_get().

◆ SAFE_ASSIGN_INT

◆ SAFE_ASSIGN_INT_AS_FLOAT

#define SAFE_ASSIGN_INT_AS_FLOAT ( a,
b )
Value:
#define INT_AS_FLOAT

Definition at line 322 of file eevee_light_shared.hh.

Referenced by blender::eevee::do_not_use::light_sun_data_set().

◆ SAFE_ASSIGN_LIGHT_TYPE_CHECK

#define SAFE_ASSIGN_LIGHT_TYPE_CHECK ( _type,
_value )
Value:
_value

Definition at line 292 of file eevee_light_shared.hh.

◆ SAFE_BEGIN

#define SAFE_BEGIN ( dst_type,
src_type,
src_,
check )
Value:
UNUSED_VARS(check); \
src_type _src = src_; \
dst_type _dst;
#define UNUSED_VARS(...)

Definition at line 287 of file eevee_light_shared.hh.

◆ SAFE_READ_BEGIN

#define SAFE_READ_BEGIN ( dst_type,
light,
check )
Value:
SAFE_BEGIN(dst_type, LightLocalData, light.DATA_MEMBER, check)
#define SAFE_BEGIN(dst_type, src_type, src_, check)

Definition at line 301 of file eevee_light_shared.hh.

Referenced by blender::eevee::do_not_use::light_area_data_get(), blender::eevee::do_not_use::light_local_data_get_ex(), and blender::eevee::do_not_use::light_sun_data_get().

◆ SAFE_READ_END

◆ SAFE_UNION_ACCESS

#define SAFE_UNION_ACCESS   0

◆ SAFE_WRITE_BEGIN

#define SAFE_WRITE_BEGIN ( src_type,
src,
check )
Value:
SAFE_BEGIN(LightLocalData, src_type, src, check)

Definition at line 305 of file eevee_light_shared.hh.

Referenced by blender::eevee::do_not_use::light_local_data_set(), and blender::eevee::do_not_use::light_sun_data_set().

◆ SAFE_WRITE_END

#define SAFE_WRITE_END ( light)
Value:
light.DATA_MEMBER = _dst;

Definition at line 306 of file eevee_light_shared.hh.

Referenced by blender::eevee::do_not_use::light_local_data_set(), and blender::eevee::do_not_use::light_sun_data_set().

◆ TYPECAST_NOOP

#define TYPECAST_NOOP

Definition at line 251 of file eevee_light_shared.hh.

◆ USE_LIGHT_UNION

#define USE_LIGHT_UNION   1