Blender V4.3
eevee_shader_shared.hh File Reference
#include "BLI_math_bits.h"
#include "BLI_memory_utils.hh"
#include "DRW_gpu_wrapper.hh"
#include "draw_manager.hh"
#include "draw_pass.hh"
#include "eevee_defines.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
 
#define M_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
}
 
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
}
 
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)   _value
 
#define DATA_MEMBER   local
 
#define SAFE_READ_BEGIN(dst_type, light, check)    SAFE_BEGIN(dst_type, LightLocalData, light.DATA_MEMBER, check)
 
#define SAFE_READ_END()   _dst
 
#define SAFE_WRITE_BEGIN(src_type, src, check)   SAFE_BEGIN(LightLocalData, src_type, src, check)
 
#define SAFE_WRITE_END(light)   light.DATA_MEMBER = _dst;
 
#define ERROR_OFS(a, b)   "Offset of " STRINGIFY(a) " mismatch offset of " STRINGIFY(b)
 
#define SAFE_ASSIGN(a, reinterpret_fn, in_type, b)
 
#define SAFE_ASSIGN_FLOAT(a, b)   SAFE_ASSIGN(a, TYPECAST_NOOP, float, b);
 
#define SAFE_ASSIGN_FLOAT2(a, b)   SAFE_ASSIGN(a, TYPECAST_NOOP, float2, b);
 
#define SAFE_ASSIGN_FLOAT3(a, b)   SAFE_ASSIGN(a, TYPECAST_NOOP, float3, b);
 
#define SAFE_ASSIGN_INT(a, b)   SAFE_ASSIGN(a, TYPECAST_NOOP, int, b);
 
#define SAFE_ASSIGN_FLOAT_AS_INT(a, b)   SAFE_ASSIGN(a, FLOAT_AS_INT, float, b);
 
#define SAFE_ASSIGN_INT_AS_FLOAT(a, b)   SAFE_ASSIGN(a, INT_AS_FLOAT, int, b);
 
#define light_local_data_get(light)   light.local
 
#define light_spot_data_get(light)   light.spot
 
#define light_area_data_get(light)   light.area
 
#define light_sun_data_get(light)   light.sun
 
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 494 of file eevee_shader_shared.hh.

◆ CULLING_MAX_ITEM

#define CULLING_MAX_ITEM   65536

Definition at line 776 of file eevee_shader_shared.hh.

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

◆ CULLING_TILE_RES

#define CULLING_TILE_RES   16

Definition at line 780 of file eevee_shader_shared.hh.

◆ CULLING_ZBIN_COUNT

#define CULLING_ZBIN_COUNT   4096

Definition at line 778 of file eevee_shader_shared.hh.

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

◆ DATA_MEMBER

#define DATA_MEMBER   local

Definition at line 1103 of file eevee_shader_shared.hh.

◆ DOF_DILATE_RING_COUNT

#define DOF_DILATE_RING_COUNT   3

Definition at line 678 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 676 of file eevee_shader_shared.hh.

◆ DOF_GATHER_RING_COUNT

#define DOF_GATHER_RING_COUNT   5

Definition at line 677 of file eevee_shader_shared.hh.

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

◆ EEVEE_PI

#define EEVEE_PI

WORKAROUND(@fclem): This is because this file is included before common_math_lib.glsl.

Definition at line 46 of file eevee_shader_shared.hh.

◆ ERROR_OFS

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

Definition at line 1115 of file eevee_shader_shared.hh.

◆ FILM_PRECOMP_SAMPLE_MAX

#define FILM_PRECOMP_SAMPLE_MAX   16

Definition at line 358 of file eevee_shader_shared.hh.

◆ FLOAT_AS_INT

#define FLOAT_AS_INT   float_as_int

Definition at line 1056 of file eevee_shader_shared.hh.

◆ INT_AS_FLOAT

#define INT_AS_FLOAT   int_as_float

Definition at line 1057 of file eevee_shader_shared.hh.

◆ IrradianceBrickPacked

#define IrradianceBrickPacked   uint
Note
Stored packed as a uint.

Definition at line 1831 of file eevee_shader_shared.hh.

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

◆ IS_CPP

#define IS_CPP   1

Definition at line 41 of file eevee_shader_shared.hh.

◆ light_area_data_get

#define light_area_data_get ( light)    light.area

Definition at line 1243 of file eevee_shader_shared.hh.

◆ light_local_data_get

#define light_local_data_get ( light)    light.local

Definition at line 1241 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 817 of file eevee_shader_shared.hh.

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

◆ light_spot_data_get

#define light_spot_data_get ( light)    light.spot

Definition at line 1242 of file eevee_shader_shared.hh.

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

◆ light_sun_data_get

#define light_sun_data_get ( light)    light.sun

Definition at line 1244 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 880 of file eevee_shader_shared.hh.

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

◆ M_PI

#define M_PI   3.14159265358979323846 /* pi */

Definition at line 47 of file eevee_shader_shared.hh.

◆ MOTION_BLUR_MAX_TILE

#define MOTION_BLUR_MAX_TILE   512 /* 16384 / MOTION_BLUR_TILE_SIZE */

Definition at line 591 of file eevee_shader_shared.hh.

◆ MOTION_BLUR_TILE_SIZE

#define MOTION_BLUR_TILE_SIZE   32

Definition at line 590 of file eevee_shader_shared.hh.

◆ 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)
local_group_size(16, 16) .push_constant(Type b
#define offsetof(t, d)
#define SAFE_ASSIGN_LIGHT_TYPE_CHECK(_type, _value)
#define ERROR_OFS(a, b)

Definition at line 1118 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 )   SAFE_ASSIGN(a, FLOAT_AS_INT, float, b);

◆ SAFE_ASSIGN_INT

◆ SAFE_ASSIGN_INT_AS_FLOAT

#define SAFE_ASSIGN_INT_AS_FLOAT ( a,
b )   SAFE_ASSIGN(a, INT_AS_FLOAT, int, b);

◆ SAFE_ASSIGN_LIGHT_TYPE_CHECK

#define SAFE_ASSIGN_LIGHT_TYPE_CHECK ( _type,
_value )   _value

Definition at line 1099 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 1094 of file eevee_shader_shared.hh.

◆ SAFE_READ_BEGIN

#define SAFE_READ_BEGIN ( dst_type,
light,
check )    SAFE_BEGIN(dst_type, LightLocalData, light.DATA_MEMBER, check)

◆ SAFE_READ_END

◆ SAFE_UNION_ACCESS

#define SAFE_UNION_ACCESS   0

◆ SAFE_WRITE_BEGIN

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

◆ SAFE_WRITE_END

◆ 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 271 of file eevee_shader_shared.hh.

◆ ShadowSamplingTilePacked

#define ShadowSamplingTilePacked   uint
Note
Stored packed as a uint.

Definition at line 1533 of file eevee_shader_shared.hh.

◆ ShadowTileDataPacked

#define ShadowTileDataPacked   uint
Note
Stored packed as a uint.

Definition at line 1455 of file eevee_shader_shared.hh.

◆ SSS_BURLEY_TRUNCATE

#define SSS_BURLEY_TRUNCATE   16.0

Definition at line 1994 of file eevee_shader_shared.hh.

◆ SSS_BURLEY_TRUNCATE_CDF

#define SSS_BURLEY_TRUNCATE_CDF   0.9963790093708328

Definition at line 1995 of file eevee_shader_shared.hh.

◆ SSS_SAMPLE_MAX

#define SSS_SAMPLE_MAX   64

Definition at line 1993 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 1999 of file eevee_shader_shared.hh.

◆ SSS_TRANSMIT_LUT_RADIUS

#define SSS_TRANSMIT_LUT_RADIUS   2.0

Definition at line 1997 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 1998 of file eevee_shader_shared.hh.

◆ SSS_TRANSMIT_LUT_SIZE

#define SSS_TRANSMIT_LUT_SIZE   64.0

Definition at line 1996 of file eevee_shader_shared.hh.

◆ SSS_TRANSMIT_LUT_STEP_RES

#define SSS_TRANSMIT_LUT_STEP_RES   64.0

Definition at line 2000 of file eevee_shader_shared.hh.

◆ TYPECAST_NOOP

#define TYPECAST_NOOP

Definition at line 1058 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 2126 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 2125 of file eevee_shader_shared.hh.

◆ UTIL_TEX_UV_BIAS

#define UTIL_TEX_UV_BIAS   (0.5f / UTIL_TEX_SIZE)

Definition at line 2130 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 2129 of file eevee_shader_shared.hh.

◆ VELOCITY_INVALID

#define VELOCITY_INVALID   512.0

Definition at line 539 of file eevee_shader_shared.hh.

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