Blender V4.5
eevee_shader_shared.hh File Reference
#include "eevee_defines.hh"
#include "BLI_math_bits.h"
#include "BLI_memory_utils.hh"
#include "DRW_gpu_wrapper.hh"
#include "draw_manager.hh"
#include "draw_pass.hh"
#include "GPU_shader_shared.hh"

Go to the source code of this file.

Classes

struct  blender::eevee::Transform
struct  blender::eevee::SamplingData
struct  blender::eevee::CameraData
struct  blender::eevee::FilmSample
struct  blender::eevee::FilmData
struct  blender::eevee::AOVsInfoData
struct  blender::eevee::RenderBuffersInfoData
struct  blender::eevee::VelocityObjectIndex
struct  blender::eevee::VelocityGeometryIndex
struct  blender::eevee::VelocityIndex
struct  blender::eevee::MotionBlurData
struct  blender::eevee::VolumesInfoData
struct  blender::eevee::DepthOfFieldData
struct  blender::eevee::ScatterRect
struct  blender::eevee::LightCullingData
struct  blender::eevee::LightLocalData
struct  blender::eevee::LightSpotData
struct  blender::eevee::ShadowTileMapData
struct  blender::eevee::ShadowRenderView
struct  blender::eevee::ShadowTileMapClip
struct  blender::eevee::ShadowPagesInfoData
struct  blender::eevee::ShadowStatistics
struct  blender::eevee::ShadowTileData
struct  blender::eevee::ShadowSamplingTile
struct  blender::eevee::ShadowSceneData
struct  blender::eevee::ReflectionProbeLowFreqLight
struct  blender::eevee::SphereProbeUvArea
struct  blender::eevee::SphereProbePixelArea
struct  blender::eevee::SphereProbeData
struct  blender::eevee::SphereProbeDisplayData
struct  blender::eevee::SphereProbeHarmonic
struct  blender::eevee::SphereProbeSunLight
struct  blender::eevee::SurfelRadiance
struct  blender::eevee::Surfel
struct  blender::eevee::CaptureInfoData
struct  blender::eevee::SurfelListInfoData
struct  blender::eevee::VolumeProbeData
struct  blender::eevee::IrradianceBrick
struct  blender::eevee::HiZData
struct  blender::eevee::ClampData
struct  blender::eevee::RayTraceData
struct  blender::eevee::AOData
struct  blender::eevee::SubsurfaceData
struct  blender::eevee::PlanarProbeData
struct  blender::eevee::ClipPlaneData
struct  blender::eevee::PlanarProbeDisplayData
struct  blender::eevee::PipelineInfoData
struct  blender::eevee::UniformData

Namespaces

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

Macros

#define IS_CPP   1
#define EEVEE_PI   3.14159265358979323846 /* pi */
#define SAFE_UNION_ACCESS   0
#define USE_LIGHT_UNION   1
RenderBuffers
#define AOV_MAX   16
Motion Blur
#define MOTION_BLUR_TILE_SIZE   32
#define MOTION_BLUR_MAX_TILE   512 /* 16384 / MOTION_BLUR_TILE_SIZE */
Light Culling
#define CULLING_MAX_ITEM   65536
#define CULLING_ZBIN_COUNT   4096
#define CULLING_TILE_RES   16
Utility texture
#define UTIL_TEX_SIZE   64
#define UTIL_BTDF_LAYER_COUNT   16
#define UTIL_TEX_UV_SCALE   ((UTIL_TEX_SIZE - 1.0f) / UTIL_TEX_SIZE)
#define UTIL_TEX_UV_BIAS   (0.5f / UTIL_TEX_SIZE)
#define UTIL_BLUE_NOISE_LAYER   0
#define UTIL_SSS_TRANSMITTANCE_PROFILE_LAYER   1
#define UTIL_LTC_MAT_LAYER   2
#define UTIL_BSDF_LAYER   3
#define UTIL_BTDF_LAYER   4
#define UTIL_DISK_INTEGRAL_LAYER   UTIL_SSS_TRANSMITTANCE_PROFILE_LAYER
#define UTIL_DISK_INTEGRAL_COMP   3

Typedefs

using blender::eevee::AOVsInfoDataBuf = draw::StorageBuffer<AOVsInfoData>
using blender::eevee::CameraDataBuf = draw::UniformBuffer<CameraData>
using blender::eevee::ClosureTileBuf = draw::StorageArrayBuffer<uint, 1024, true>
using blender::eevee::DepthOfFieldDataBuf = draw::UniformBuffer<DepthOfFieldData>
using blender::eevee::DepthOfFieldScatterListBuf = draw::StorageArrayBuffer<ScatterRect, 16, true>
using blender::eevee::DrawIndirectBuf = draw::StorageBuffer<DrawCommand, true>
using blender::eevee::DispatchIndirectBuf = draw::StorageBuffer<DispatchCommand>
using blender::eevee::UniformDataBuf = draw::UniformBuffer<UniformData>
using blender::eevee::VolumeProbeDataBuf = draw::UniformArrayBuffer<VolumeProbeData, IRRADIANCE_GRID_MAX>
using blender::eevee::IrradianceBrickBuf = draw::StorageVectorBuffer<IrradianceBrickPacked, 16>
using blender::eevee::LightCullingDataBuf = draw::StorageBuffer<LightCullingData>
using blender::eevee::LightCullingKeyBuf = draw::StorageArrayBuffer<uint, LIGHT_CHUNK, true>
using blender::eevee::LightCullingTileBuf = draw::StorageArrayBuffer<uint, LIGHT_CHUNK, true>
using blender::eevee::LightCullingZbinBuf = draw::StorageArrayBuffer<uint, CULLING_ZBIN_COUNT, true>
using blender::eevee::LightCullingZdistBuf = draw::StorageArrayBuffer<float, LIGHT_CHUNK, true>
using blender::eevee::LightDataBuf = draw::StorageArrayBuffer<LightData, LIGHT_CHUNK>
using blender::eevee::MotionBlurDataBuf = draw::UniformBuffer<MotionBlurData>
using blender::eevee::MotionBlurTileIndirectionBuf = draw::StorageBuffer<MotionBlurTileIndirection, true>
using blender::eevee::RayTraceTileBuf = draw::StorageArrayBuffer<uint, 1024, true>
using blender::eevee::SubsurfaceTileBuf = RayTraceTileBuf
using blender::eevee::SphereProbeDataBuf = draw::UniformArrayBuffer<SphereProbeData, SPHERE_PROBE_MAX>
using blender::eevee::SphereProbeDisplayDataBuf = draw::StorageArrayBuffer<SphereProbeDisplayData>
using blender::eevee::PlanarProbeDataBuf = draw::UniformArrayBuffer<PlanarProbeData, PLANAR_PROBE_MAX>
using blender::eevee::PlanarProbeDisplayDataBuf = draw::StorageArrayBuffer<PlanarProbeDisplayData>
using blender::eevee::SamplingDataBuf = draw::StorageBuffer<SamplingData>
using blender::eevee::ShadowStatisticsBuf = draw::StorageBuffer<ShadowStatistics>
using blender::eevee::ShadowPagesInfoDataBuf = draw::StorageBuffer<ShadowPagesInfoData>
using blender::eevee::ShadowPageHeapBuf = draw::StorageVectorBuffer<uint, SHADOW_MAX_PAGE>
using blender::eevee::ShadowPageCacheBuf = draw::StorageArrayBuffer<uint2, SHADOW_MAX_PAGE, true>
using blender::eevee::ShadowTileMapDataBuf = draw::StorageVectorBuffer<ShadowTileMapData, SHADOW_MAX_TILEMAP>
using blender::eevee::ShadowTileMapClipBuf = draw::StorageArrayBuffer<ShadowTileMapClip, SHADOW_MAX_TILEMAP, true>
using blender::eevee::ShadowTileDataBuf = draw::StorageArrayBuffer<ShadowTileDataPacked, SHADOW_MAX_TILE, true>
using blender::eevee::ShadowRenderViewBuf = draw::StorageArrayBuffer<ShadowRenderView, SHADOW_VIEW_MAX, true>
using blender::eevee::SurfelBuf = draw::StorageArrayBuffer<Surfel, 64>
using blender::eevee::SurfelRadianceBuf = draw::StorageArrayBuffer<SurfelRadiance, 64>
using blender::eevee::CaptureInfoBuf = draw::StorageBuffer<CaptureInfoData>
using blender::eevee::SurfelListInfoBuf = draw::StorageBuffer<SurfelListInfoData>
using blender::eevee::VelocityGeometryBuf = draw::StorageArrayBuffer<float4, 16, true>
using blender::eevee::VelocityIndexBuf = draw::StorageArrayBuffer<VelocityIndex, 16>
using blender::eevee::VelocityObjectBuf = draw::StorageArrayBuffer<float4x4, 16>
using blender::eevee::CryptomatteObjectBuf = draw::StorageArrayBuffer<float2, 16>
using blender::eevee::ClipPlaneBuf = draw::UniformBuffer<ClipPlaneData>

Enumerations

enum  blender::eevee::eCubeFace : uint32_t {
  blender::eevee::Z_NEG = 0u , blender::eevee::X_POS = 1u , blender::eevee::X_NEG = 2u , blender::eevee::Y_POS = 3u ,
  blender::eevee::Y_NEG = 4u , blender::eevee::Z_POS = 5u
}
enum  blender::eevee::ShaderGroups : uint32_t {
  blender::eevee::NONE = 0 , blender::eevee::DEFERRED_LIGHTING_SHADERS = 1 << 0 , blender::eevee::DEFERRED_CAPTURE_SHADERS = 1 << 1 , blender::eevee::DEFERRED_PLANAR_SHADERS = 1 << 2 ,
  blender::eevee::DEPTH_OF_FIELD_SHADERS = 1 << 3 , blender::eevee::HIZ_SHADERS = 1 << 4 , blender::eevee::HORIZON_SCAN_SHADERS = 1 << 5 , blender::eevee::LIGHT_CULLING_SHADERS = 1 << 6 ,
  blender::eevee::IRRADIANCE_BAKE_SHADERS = 1 << 7 , blender::eevee::SPHERE_PROBE_SHADERS = 1 << 8 , blender::eevee::SHADOW_SHADERS = 1 << 9 , blender::eevee::AMBIENT_OCCLUSION_SHADERS = 1 << 10 ,
  blender::eevee::MOTION_BLUR_SHADERS = 1 << 11 , blender::eevee::RAYTRACING_SHADERS = 1 << 12 , blender::eevee::FILM_SHADERS = 1 << 13 , blender::eevee::SUBSURFACE_SHADERS = 1 << 14 ,
  blender::eevee::SURFEL_SHADERS = 1 << 15 , blender::eevee::VERTEX_COPY_SHADERS = 1 << 16 , blender::eevee::VOLUME_EVAL_SHADERS = 1 << 17 , blender::eevee::DEFAULT_MATERIALS = 1 << 18 ,
  blender::eevee::WORLD_SHADERS = 1 << 19 , blender::eevee::MATERIAL_SHADERS = 1 << 20 , blender::eevee::VOLUME_PROBE_SHADERS = 1 << 21
}
Debug Mode
enum  blender::eevee::eDebugMode : uint32_t {
  blender::eevee::DEBUG_NONE = 0u , blender::eevee::DEBUG_LIGHT_CULLING = 1u , blender::eevee::DEBUG_HIZ_VALIDATION = 2u , blender::eevee::DEBUG_IRRADIANCE_CACHE_SURFELS_NORMAL = 3u ,
  blender::eevee::DEBUG_IRRADIANCE_CACHE_SURFELS_IRRADIANCE = 4u , blender::eevee::DEBUG_IRRADIANCE_CACHE_SURFELS_VISIBILITY = 5u , blender::eevee::DEBUG_IRRADIANCE_CACHE_SURFELS_CLUSTER = 6u , blender::eevee::DEBUG_IRRADIANCE_CACHE_VIRTUAL_OFFSET = 7u ,
  blender::eevee::DEBUG_IRRADIANCE_CACHE_VALIDITY = 8u , blender::eevee::DEBUG_SHADOW_TILEMAPS = 10u , blender::eevee::DEBUG_SHADOW_VALUES = 11u , blender::eevee::DEBUG_SHADOW_TILE_RANDOM_COLOR = 12u ,
  blender::eevee::DEBUG_SHADOW_TILEMAP_RANDOM_COLOR = 13u , blender::eevee::DEBUG_GBUFFER_STORAGE = 14u , blender::eevee::DEBUG_GBUFFER_EVALUATION = 15u , blender::eevee::DEBUG_DOF_PLANES = 16u
}
Look-Up Table Generation
enum  blender::eevee::PrecomputeType : uint32_t {
  blender::eevee::LUT_GGX_BRDF_SPLIT_SUM = 0u , blender::eevee::LUT_GGX_BTDF_IOR_GT_ONE = 1u , blender::eevee::LUT_GGX_BSDF_SPLIT_SUM = 2u , blender::eevee::LUT_BURLEY_SSS_PROFILE = 3u ,
  blender::eevee::LUT_RANDOM_WALK_SSS_PROFILE = 4u
}
Light-probe Sphere
enum  blender::eevee::LightProbeShape : uint32_t { blender::eevee::SHAPE_ELIPSOID = 0u , blender::eevee::SHAPE_CUBOID = 1u }
Ray-tracing
enum  blender::eevee::eClosureBits : uint32_t {
  blender::eevee::CLOSURE_NONE = 0u , blender::eevee::CLOSURE_DIFFUSE = (1u << 0u) , blender::eevee::CLOSURE_SSS = (1u << 1u) , blender::eevee::CLOSURE_REFLECTION = (1u << 2u) ,
  blender::eevee::CLOSURE_REFRACTION = (1u << 3u) , blender::eevee::CLOSURE_TRANSLUCENT = (1u << 4u) , blender::eevee::CLOSURE_TRANSPARENCY = (1u << 8u) , blender::eevee::CLOSURE_EMISSION = (1u << 9u) ,
  blender::eevee::CLOSURE_HOLDOUT = (1u << 10u) , blender::eevee::CLOSURE_VOLUME = (1u << 11u) , blender::eevee::CLOSURE_AMBIENT_OCCLUSION = (1u << 12u) , blender::eevee::CLOSURE_SHADER_TO_RGBA = (1u << 13u) ,
  blender::eevee::CLOSURE_CLEARCOAT = (1u << 14u) , blender::eevee::CLOSURE_TRANSMISSION = CLOSURE_SSS | CLOSURE_REFRACTION | CLOSURE_TRANSLUCENT
}
enum  blender::eevee::GBufferMode : uint32_t {
  blender::eevee::GBUF_NONE = 0u , blender::eevee::GBUF_DIFFUSE = 1u , blender::eevee::GBUF_REFLECTION = 2u , blender::eevee::GBUF_REFLECTION_COLORLESS = 3u ,
  blender::eevee::GBUF_UNLIT = 4u , blender::eevee::GBUF_TRANSMISSION_BIT = 1u << 3u , blender::eevee::GBUF_REFRACTION = 0u | GBUF_TRANSMISSION_BIT , blender::eevee::GBUF_REFRACTION_COLORLESS = 1u | GBUF_TRANSMISSION_BIT ,
  blender::eevee::GBUF_TRANSLUCENT = 2u | GBUF_TRANSMISSION_BIT , blender::eevee::GBUF_SUBSURFACE = 3u | GBUF_TRANSMISSION_BIT
}

Functions

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)
Transform
static float4x4 blender::eevee::transform_to_matrix (Transform t)
static Transform blender::eevee::transform_from_matrix (float4x4 m)
static float3 blender::eevee::transform_x_axis (Transform t)
static float3 blender::eevee::transform_y_axis (Transform t)
static float3 blender::eevee::transform_z_axis (Transform t)
static float3 blender::eevee::transform_location (Transform t)
static float3 blender::eevee::transform_point (Transform t, float3 point)
static float3 blender::eevee::transform_direction (Transform t, float3 direction)
static float3 blender::eevee::transform_direction_transposed (Transform t, float3 direction)
static float3 blender::eevee::transform_point_inversed (Transform t, float3 point)

Variables

constexpr GPUSamplerState blender::eevee::no_filter = GPUSamplerState::default_sampler()
constexpr GPUSamplerState blender::eevee::with_filter = {GPU_SAMPLER_FILTERING_LINEAR}

Sampling

#define SAMPLING_DIMENSION_COUNT   32
enum  blender::eevee::eSamplingDimension : uint32_t {
  blender::eevee::SAMPLING_FILTER_U = 0u , blender::eevee::SAMPLING_FILTER_V = 1u , blender::eevee::SAMPLING_LENS_U = 2u , blender::eevee::SAMPLING_LENS_V = 3u ,
  blender::eevee::SAMPLING_TIME = 4u , blender::eevee::SAMPLING_SHADOW_U = 5u , blender::eevee::SAMPLING_SHADOW_V = 6u , blender::eevee::SAMPLING_SHADOW_W = 7u ,
  blender::eevee::SAMPLING_SHADOW_X = 8u , blender::eevee::SAMPLING_SHADOW_Y = 9u , blender::eevee::SAMPLING_CLOSURE = 10u , blender::eevee::SAMPLING_LIGHTPROBE = 11u ,
  blender::eevee::SAMPLING_TRANSPARENCY = 12u , blender::eevee::SAMPLING_SSS_U = 13u , blender::eevee::SAMPLING_SSS_V = 14u , blender::eevee::SAMPLING_RAYTRACE_U = 15u ,
  blender::eevee::SAMPLING_RAYTRACE_V = 16u , blender::eevee::SAMPLING_RAYTRACE_W = 17u , blender::eevee::SAMPLING_RAYTRACE_X = 18u , blender::eevee::SAMPLING_AO_U = 19u ,
  blender::eevee::SAMPLING_AO_V = 20u , blender::eevee::SAMPLING_AO_W = 21u , blender::eevee::SAMPLING_CURVES_U = 22u , blender::eevee::SAMPLING_VOLUME_U = 23u ,
  blender::eevee::SAMPLING_VOLUME_V = 24u , blender::eevee::SAMPLING_VOLUME_W = 25u , blender::eevee::SAMPLING_SHADOW_I = 26u , blender::eevee::SAMPLING_SHADOW_J = 27u ,
  blender::eevee::SAMPLING_SHADOW_K = 28u , blender::eevee::SAMPLING_UNUSED_0 = 29u , blender::eevee::SAMPLING_UNUSED_1 = 30u , blender::eevee::SAMPLING_UNUSED_2 = 31u
}
static int blender::eevee::sampling_web_sample_count_get (int web_density, int in_ring_count)
static int blender::eevee::sampling_web_ring_count_get (int web_density, int sample_count)

Film

#define FILM_PRECOMP_SAMPLE_MAX   16
enum  blender::eevee::eFilmWeightLayerIndex : uint32_t { blender::eevee::FILM_WEIGHT_LAYER_ACCUMULATION = 0u , blender::eevee::FILM_WEIGHT_LAYER_DISTANCE = 1u }
enum  blender::eevee::ePassStorageType : uint32_t { blender::eevee::PASS_STORAGE_COLOR = 0u , blender::eevee::PASS_STORAGE_VALUE = 1u , blender::eevee::PASS_STORAGE_CRYPTOMATTE = 2u }
enum  blender::eevee::PassCategory : uint32_t {
  blender::eevee::PASS_CATEGORY_DATA = 1u << 0 , blender::eevee::PASS_CATEGORY_COLOR_1 = 1u << 1 , blender::eevee::PASS_CATEGORY_COLOR_2 = 1u << 2 , blender::eevee::PASS_CATEGORY_COLOR_3 = 1u << 3 ,
  blender::eevee::PASS_CATEGORY_AOV = 1u << 4 , blender::eevee::PASS_CATEGORY_CRYPTOMATTE = 1u << 5
}
static float blender::eevee::film_filter_weight (float filter_radius, float sample_distance_sqr)

VelocityModule

#define VELOCITY_INVALID   512.0
enum  blender::eevee::eVelocityStep : uint32_t { blender::eevee::STEP_PREVIOUS = 0 , blender::eevee::STEP_NEXT = 1 , blender::eevee::STEP_CURRENT = 2 }

Depth of field

#define DOF_FAST_GATHER_COC_ERROR   0.05
#define DOF_GATHER_RING_COUNT   5
#define DOF_DILATE_RING_COUNT   3
static float blender::eevee::coc_radius_from_camera_depth (DepthOfFieldData dof, float depth)
static float blender::eevee::regular_polygon_side_length (float sides_count)
static float blender::eevee::circle_to_polygon_radius (float sides_count, float theta)
static float blender::eevee::circle_to_polygon_angle (float sides_count, float theta)

Lights

#define LIGHT_NO_SHADOW   -1
#define LOCAL_LIGHT_COMMON
#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)
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
}
enum  blender::eevee::LightingType : uint32_t {
  blender::eevee::LIGHT_DIFFUSE = 0u , blender::eevee::LIGHT_SPECULAR = 1u , blender::eevee::LIGHT_TRANSMISSION = 2u , blender::eevee::LIGHT_VOLUME = 3u ,
  blender::eevee::LIGHT_TRANSLUCENT_WITH_THICKNESS = 4u
}
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 int blender::eevee::light_tilemap_max_get (LightData light)
static int blender::eevee::light_local_tilemap_count (LightData light)

Shadows

Shadow data for either a directional shadow or a punctual shadow.

A punctual shadow is composed of 1, 5 or 6 shadow regions. Regions are sorted in this order -Z, +X, -X, +Y, -Y, +Z. Face index is computed from light's object space coordinates.

A directional light shadow is composed of multiple clip-maps with each level covering twice as much area as the previous one.

#define ShadowTileDataPacked   uint
#define ShadowSamplingTilePacked   uint
enum  blender::eevee::eShadowProjectionType : uint32_t { blender::eevee::SHADOW_PROJECTION_CUBEFACE = 0u , blender::eevee::SHADOW_PROJECTION_CLIPMAP = 1u , blender::eevee::SHADOW_PROJECTION_CASCADE = 2u }
enum  blender::eevee::eShadowFlag : uint32_t {
  blender::eevee::SHADOW_NO_DATA = 0u , blender::eevee::SHADOW_IS_CACHED = (1u << 27u) , blender::eevee::SHADOW_IS_ALLOCATED = (1u << 28u) , blender::eevee::SHADOW_DO_UPDATE = (1u << 29u) ,
  blender::eevee::SHADOW_IS_RENDERED = (1u << 30u) , blender::eevee::SHADOW_IS_USED = (1u << 31u)
}
static int2 blender::eevee::shadow_cascade_grid_offset (int2 base_offset, int level_relative)
static uint blender::eevee::shadow_page_pack (uint3 page)
static uint3 blender::eevee::shadow_page_unpack (uint data)
static ShadowTileData blender::eevee::shadow_tile_unpack (ShadowTileDataPacked data)
static ShadowTileDataPacked blender::eevee::shadow_tile_pack (ShadowTileData tile)
static uint blender::eevee::shadow_lod_offset_pack (uint2 ofs)
static uint2 blender::eevee::shadow_lod_offset_unpack (uint data)
static ShadowSamplingTile blender::eevee::shadow_sampling_tile_unpack (ShadowSamplingTilePacked data)
static ShadowSamplingTilePacked blender::eevee::shadow_sampling_tile_pack (ShadowSamplingTile tile)
static ShadowSamplingTile blender::eevee::shadow_sampling_tile_create (ShadowTileData tile_data, uint lod)

Volume Probe Cache

#define IrradianceBrickPacked   uint
static IrradianceBrickPacked blender::eevee::irradiance_brick_pack (IrradianceBrick brick)
static IrradianceBrick blender::eevee::irradiance_brick_unpack (IrradianceBrickPacked brick_packed)

Subsurface

#define SSS_SAMPLE_MAX   64
#define SSS_BURLEY_TRUNCATE   16.0
#define SSS_BURLEY_TRUNCATE_CDF   0.9963790093708328
#define SSS_TRANSMIT_LUT_SIZE   64.0
#define SSS_TRANSMIT_LUT_RADIUS   2.0
#define SSS_TRANSMIT_LUT_SCALE   ((SSS_TRANSMIT_LUT_SIZE - 1.0) / float(SSS_TRANSMIT_LUT_SIZE))
#define SSS_TRANSMIT_LUT_BIAS   (0.5 / float(SSS_TRANSMIT_LUT_SIZE))
#define SSS_TRANSMIT_LUT_STEP_RES   64.0
static float3 blender::eevee::burley_setup (float3 radius, float3 albedo)
static float3 blender::eevee::burley_eval (float3 d, float r)

Camera

enum  blender::eevee::eCameraType : uint32_t {
  blender::eevee::CAMERA_PERSP = 0u , blender::eevee::CAMERA_ORTHO = 1u , blender::eevee::CAMERA_PANO_EQUIRECT = 2u , blender::eevee::CAMERA_PANO_EQUISOLID = 3u ,
  blender::eevee::CAMERA_PANO_EQUIDISTANT = 4u , blender::eevee::CAMERA_PANO_MIRROR = 5u
}
static bool blender::eevee::is_panoramic (eCameraType type)

Macro Definition Documentation

◆ AOV_MAX

#define AOV_MAX   16

Definition at line 528 of file eevee_shader_shared.hh.

◆ CULLING_MAX_ITEM

#define CULLING_MAX_ITEM   65536

Definition at line 810 of file eevee_shader_shared.hh.

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

◆ CULLING_TILE_RES

#define CULLING_TILE_RES   16

Definition at line 814 of file eevee_shader_shared.hh.

◆ CULLING_ZBIN_COUNT

#define CULLING_ZBIN_COUNT   4096

Definition at line 812 of file eevee_shader_shared.hh.

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

◆ DATA_MEMBER

#define DATA_MEMBER   local

Definition at line 1137 of file eevee_shader_shared.hh.

◆ DOF_DILATE_RING_COUNT

#define DOF_DILATE_RING_COUNT   3

Definition at line 712 of file eevee_shader_shared.hh.

Referenced by blender::eevee::DepthOfField::render().

◆ DOF_FAST_GATHER_COC_ERROR

#define DOF_FAST_GATHER_COC_ERROR   0.05

Definition at line 710 of file eevee_shader_shared.hh.

◆ DOF_GATHER_RING_COUNT

#define DOF_GATHER_RING_COUNT   5

Definition at line 711 of file eevee_shader_shared.hh.

Referenced by blender::eevee::DepthOfField::render().

◆ EEVEE_PI

◆ ERROR_OFS

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

Definition at line 1149 of file eevee_shader_shared.hh.

◆ FILM_PRECOMP_SAMPLE_MAX

#define FILM_PRECOMP_SAMPLE_MAX   16

Definition at line 392 of file eevee_shader_shared.hh.

◆ FLOAT_AS_INT

#define FLOAT_AS_INT   float_as_int

Definition at line 1090 of file eevee_shader_shared.hh.

◆ INT_AS_FLOAT

#define INT_AS_FLOAT   int_as_float

Definition at line 1091 of file eevee_shader_shared.hh.

◆ IrradianceBrickPacked

#define IrradianceBrickPacked   uint
Note
Stored packed as a uint.

Definition at line 1863 of file eevee_shader_shared.hh.

Referenced by blender::eevee::irradiance_brick_pack(), and blender::eevee::irradiance_brick_unpack().

◆ IS_CPP

#define IS_CPP   1

Shared structures, enums & defines between C++ and GLSL. Can also include some math functions but they need to be simple enough to be valid in both language.

Definition at line 15 of file eevee_shader_shared.hh.

◆ light_area_data_get

#define light_area_data_get ( light)
Value:
light.area

Definition at line 1277 of file eevee_shader_shared.hh.

◆ light_local_data_get

#define light_local_data_get ( light)
Value:
light.local

Definition at line 1275 of file eevee_shader_shared.hh.

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

◆ LIGHT_NO_SHADOW

#define LIGHT_NO_SHADOW   -1

Definition at line 851 of file eevee_shader_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 1276 of file eevee_shader_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 1278 of file eevee_shader_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 914 of file eevee_shader_shared.hh.

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

◆ MOTION_BLUR_MAX_TILE

#define MOTION_BLUR_MAX_TILE   512 /* 16384 / MOTION_BLUR_TILE_SIZE */

Definition at line 625 of file eevee_shader_shared.hh.

◆ MOTION_BLUR_TILE_SIZE

◆ 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 1152 of file eevee_shader_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 1162 of file eevee_shader_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 1163 of file eevee_shader_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 1133 of file eevee_shader_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 1128 of file eevee_shader_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 1142 of file eevee_shader_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 1146 of file eevee_shader_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 1147 of file eevee_shader_shared.hh.

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

◆ SAMPLING_DIMENSION_COUNT

#define SAMPLING_DIMENSION_COUNT   32

IMPORTANT: Make sure the array can contain all sampling dimensions. Also note that it needs to be multiple of 4.

Definition at line 305 of file eevee_shader_shared.hh.

Referenced by blender::eevee::Sampling::step().

◆ ShadowSamplingTilePacked

#define ShadowSamplingTilePacked   uint
Note
Stored packed as a uint.

Definition at line 1565 of file eevee_shader_shared.hh.

Referenced by blender::eevee::shadow_sampling_tile_pack(), and blender::eevee::shadow_sampling_tile_unpack().

◆ ShadowTileDataPacked

#define ShadowTileDataPacked   uint
Note
Stored packed as a uint.

Definition at line 1487 of file eevee_shader_shared.hh.

Referenced by blender::eevee::shadow_tile_pack(), and blender::eevee::shadow_tile_unpack().

◆ SSS_BURLEY_TRUNCATE

#define SSS_BURLEY_TRUNCATE   16.0

Definition at line 2026 of file eevee_shader_shared.hh.

◆ SSS_BURLEY_TRUNCATE_CDF

#define SSS_BURLEY_TRUNCATE_CDF   0.9963790093708328

Definition at line 2027 of file eevee_shader_shared.hh.

◆ SSS_SAMPLE_MAX

#define SSS_SAMPLE_MAX   64

Definition at line 2025 of file eevee_shader_shared.hh.

◆ SSS_TRANSMIT_LUT_BIAS

#define SSS_TRANSMIT_LUT_BIAS   (0.5 / float(SSS_TRANSMIT_LUT_SIZE))

Definition at line 2031 of file eevee_shader_shared.hh.

◆ SSS_TRANSMIT_LUT_RADIUS

#define SSS_TRANSMIT_LUT_RADIUS   2.0

Definition at line 2029 of file eevee_shader_shared.hh.

◆ SSS_TRANSMIT_LUT_SCALE

#define SSS_TRANSMIT_LUT_SCALE   ((SSS_TRANSMIT_LUT_SIZE - 1.0) / float(SSS_TRANSMIT_LUT_SIZE))

Definition at line 2030 of file eevee_shader_shared.hh.

◆ SSS_TRANSMIT_LUT_SIZE

#define SSS_TRANSMIT_LUT_SIZE   64.0

Definition at line 2028 of file eevee_shader_shared.hh.

◆ SSS_TRANSMIT_LUT_STEP_RES

#define SSS_TRANSMIT_LUT_STEP_RES   64.0

Definition at line 2032 of file eevee_shader_shared.hh.

◆ TYPECAST_NOOP

#define TYPECAST_NOOP

Definition at line 1092 of file eevee_shader_shared.hh.

◆ USE_LIGHT_UNION

#define USE_LIGHT_UNION   1

◆ UTIL_BLUE_NOISE_LAYER

#define UTIL_BLUE_NOISE_LAYER   0

◆ UTIL_BSDF_LAYER

#define UTIL_BSDF_LAYER   3

◆ UTIL_BTDF_LAYER

#define UTIL_BTDF_LAYER   4

◆ UTIL_BTDF_LAYER_COUNT

#define UTIL_BTDF_LAYER_COUNT   16

Definition at line 2159 of file eevee_shader_shared.hh.

◆ UTIL_DISK_INTEGRAL_COMP

#define UTIL_DISK_INTEGRAL_COMP   3

◆ UTIL_DISK_INTEGRAL_LAYER

#define UTIL_DISK_INTEGRAL_LAYER   UTIL_SSS_TRANSMITTANCE_PROFILE_LAYER

◆ UTIL_LTC_MAT_LAYER

#define UTIL_LTC_MAT_LAYER   2

◆ UTIL_SSS_TRANSMITTANCE_PROFILE_LAYER

#define UTIL_SSS_TRANSMITTANCE_PROFILE_LAYER   1

◆ UTIL_TEX_SIZE

#define UTIL_TEX_SIZE   64

Definition at line 2158 of file eevee_shader_shared.hh.

◆ UTIL_TEX_UV_BIAS

#define UTIL_TEX_UV_BIAS   (0.5f / UTIL_TEX_SIZE)

Definition at line 2163 of file eevee_shader_shared.hh.

◆ UTIL_TEX_UV_SCALE

#define UTIL_TEX_UV_SCALE   ((UTIL_TEX_SIZE - 1.0f) / UTIL_TEX_SIZE)

Definition at line 2162 of file eevee_shader_shared.hh.

◆ VELOCITY_INVALID

#define VELOCITY_INVALID   512.0

Definition at line 573 of file eevee_shader_shared.hh.

Referenced by blender::eevee::ShadingView::render().