12#if defined(GPU_SHADER) || defined(GLSL_CPP_STUBS)
18#if IS_CPP || defined(GLSL_CPP_STUBS)
37class ShadowDirectional;
47#define EEVEE_PI 3.14159265358979323846
101 :
x(tx[0][0], tx[1][0], tx[2][0], tx[3][0]),
102 y(tx[0][1], tx[1][1], tx[2][1], tx[3][1]),
103 z(tx[0][2], tx[1][2], tx[2][2], tx[3][2])
128 t.
x =
float4(m[0][0], m[1][0], m[2][0], m[3][0]);
129 t.
y =
float4(m[0][1], m[1][1], m[2][1], m[3][1]);
130 t.
z =
float4(m[0][2], m[1][2], m[2][2], m[3][2]);
305#define SAMPLING_DIMENSION_COUNT 32
317 return ((in_ring_count * in_ring_count + in_ring_count) / 2) * web_density + 1;
324 float x = 2.0f * (float(sample_count) - 1.0f) /
float(web_density);
326 float discriminant = 1.0f + 4.0f *
x;
327 return int(
ceilf(0.5f * (
sqrtf(discriminant) - 1.0f)));
392#define FILM_PRECOMP_SAMPLE_MAX 16
507 float r = sample_distance_sqr / (filter_radius * filter_radius);
508 const float sigma = 0.284;
509 const float fac = -0.5 / (sigma * sigma);
510 float weight =
expf(fac * r);
513 float r = M_TAU *
saturate(0.5 +
sqrtf(sample_distance_sqr) / (2.0 * filter_radius));
514 float weight = 0.35875 - 0.48829 *
cosf(r) + 0.14128 *
cosf(2.0 * r) - 0.01168 *
cosf(3.0 * r);
573#define VELOCITY_INVALID 512.0
624#define MOTION_BLUR_TILE_SIZE 32
625#define MOTION_BLUR_MAX_TILE 512
641struct MotionBlurTileIndirection {
710#define DOF_FAST_GATHER_COC_ERROR 0.05
711#define DOF_GATHER_RING_COUNT 5
712#define DOF_DILATE_RING_COUNT 3
761 depth = (dof.camera_type !=
CAMERA_ORTHO) ? 1.0f / depth : depth;
762 return dof.coc_mul * depth + dof.coc_bias;
775 float side_angle = (2.0f *
EEVEE_PI) / sides_count;
776 return cosf(side_angle * 0.5f) /
784 float side_angle = (2.0f *
EEVEE_PI) / sides_count;
785 float halfside_angle = side_angle * 0.5f;
786 float side =
floorf(theta / side_angle);
791 float local_theta = theta - side * side_angle;
792 float ratio = (local_theta - halfside_angle) / halfside_angle;
795 float opposite = ratio * halfside_len;
798 float final_local_theta =
atanf(opposite / adjacent);
800 return side * side_angle + final_local_theta;
810#define CULLING_MAX_ITEM 65536
812#define CULLING_ZBIN_COUNT 4096
814#define CULLING_TILE_RES 16
851#define LIGHT_NO_SHADOW -1
914#define LOCAL_LIGHT_COMMON \
917 packed_float3 shadow_position; \
920 float shadow_radius; \
922 float shape_radius; \
924 float influence_radius_max; \
926 float influence_radius_invsqr_surface; \
927 float influence_radius_invsqr_volume; \
961struct LightAreaData {
983 int2 clipmap_base_offset_neg;
984 int2 clipmap_base_offset_pos;
1001#define SAFE_UNION_ACCESS 0
1005# define USE_LIGHT_UNION 1
1006#elif defined(GPU_BACKEND_METAL) && !SAFE_UNION_ACCESS
1008# define USE_LIGHT_UNION 1
1011# define USE_LIGHT_UNION 0
1036 float filter_radius;
1045 uint2 light_set_membership;
1049 uint2 shadow_set_membership;
1083# define CHECK_TYPE_PAIR(a, b)
1084# define CHECK_TYPE(a, b)
1085# define FLOAT_AS_INT floatBitsToInt
1086# define INT_AS_FLOAT intBitsToFloat
1087# define TYPECAST_NOOP
1090# define FLOAT_AS_INT float_as_int
1091# define INT_AS_FLOAT int_as_float
1092# define TYPECAST_NOOP
1099#if SAFE_UNION_ACCESS
1102# if defined(GPU_FRAGMENT_SHADER)
1103# define GARBAGE_VALUE sin(gl_FragCoord.x + gl_FragCoord.y)
1104# elif defined(GPU_COMPUTE_SHADER)
1105# define GARBAGE_VALUE \
1106 sin(float(gl_GlobalInvocationID.x + gl_GlobalInvocationID.y + gl_GlobalInvocationID.z))
1108# define GARBAGE_VALUE sin(float(gl_VertexID))
1115# define GARBAGE_VALUE 0.0f
1118# define SAFE_BEGIN(dst_type, src_type, src_, check) \
1119 src_type _src = src_; \
1121 bool _validity_check = check; \
1122 float _garbage = GARBAGE_VALUE;
1125# define SAFE_ASSIGN_LIGHT_TYPE_CHECK(_type, _value) \
1126 (_validity_check ? (_value) : _type(_garbage))
1128# define SAFE_BEGIN(dst_type, src_type, src_, check) \
1129 UNUSED_VARS(check); \
1130 src_type _src = src_; \
1133# define SAFE_ASSIGN_LIGHT_TYPE_CHECK(_type, _value) _value
1137# define DATA_MEMBER local
1139# define DATA_MEMBER do_not_access_directly
1142#define SAFE_READ_BEGIN(dst_type, light, check) \
1143 SAFE_BEGIN(dst_type, LightLocalData, light.DATA_MEMBER, check)
1144#define SAFE_READ_END() _dst
1146#define SAFE_WRITE_BEGIN(src_type, src, check) SAFE_BEGIN(LightLocalData, src_type, src, check)
1147#define SAFE_WRITE_END(light) light.DATA_MEMBER = _dst;
1149#define ERROR_OFS(a, b) "Offset of " STRINGIFY(a) " mismatch offset of " STRINGIFY(b)
1152#define SAFE_ASSIGN(a, reinterpret_fn, in_type, b) \
1153 CHECK_TYPE_PAIR(_src.b, in_type(_dst.a)); \
1154 CHECK_TYPE_PAIR(_dst.a, reinterpret_fn(_src.b)); \
1155 _dst.a = reinterpret_fn(SAFE_ASSIGN_LIGHT_TYPE_CHECK(in_type, _src.b)); \
1156 BLI_STATIC_ASSERT(offsetof(decltype(_dst), a) == offsetof(decltype(_src), b), ERROR_OFS(a, b))
1158#define SAFE_ASSIGN_FLOAT(a, b) SAFE_ASSIGN(a, TYPECAST_NOOP, float, b);
1159#define SAFE_ASSIGN_FLOAT2(a, b) SAFE_ASSIGN(a, TYPECAST_NOOP, float2, b);
1160#define SAFE_ASSIGN_FLOAT3(a, b) SAFE_ASSIGN(a, TYPECAST_NOOP, float3, b);
1161#define SAFE_ASSIGN_INT(a, b) SAFE_ASSIGN(a, TYPECAST_NOOP, int, b);
1162#define SAFE_ASSIGN_FLOAT_AS_INT(a, b) SAFE_ASSIGN(a, FLOAT_AS_INT, float, b);
1163#define SAFE_ASSIGN_INT_AS_FLOAT(a, b) SAFE_ASSIGN(a, INT_AS_FLOAT, int, b);
1165#if !USE_LIGHT_UNION || IS_CPP
1181 SAFE_ASSIGN_FLOAT(influence_radius_invsqr_surface, influence_radius_invsqr_surface)
1182 SAFE_ASSIGN_FLOAT(influence_radius_invsqr_volume, influence_radius_invsqr_volume)
1199 SAFE_ASSIGN_FLOAT(influence_radius_invsqr_surface, influence_radius_invsqr_surface)
1200 SAFE_ASSIGN_FLOAT(influence_radius_invsqr_volume, influence_radius_invsqr_volume)
1225 SAFE_ASSIGN_FLOAT(influence_radius_invsqr_surface, influence_radius_invsqr_surface)
1226 SAFE_ASSIGN_FLOAT(influence_radius_invsqr_volume, influence_radius_invsqr_volume)
1275# define light_local_data_get(light) light.local
1276# define light_spot_data_get(light) light.spot
1277# define light_area_data_get(light) light.area
1278# define light_sun_data_get(light) light.sun
1286#undef SAFE_ASSIGN_LIGHT_TYPE_CHECK
1289#undef SAFE_ASSIGN_FLOAT
1290#undef SAFE_ASSIGN_FLOAT2
1291#undef SAFE_ASSIGN_INT
1292#undef SAFE_ASSIGN_FLOAT_AS_INT
1293#undef SAFE_ASSIGN_INT_AS_FLOAT
1299 return light.tilemap_index +
1340 return (base_offset * level_relative) / (1 << 16);
1487#define ShadowTileDataPacked uint
1503 return (page.x << 0u) | (page.y << 2u) | (page.z << 4u);
1509 page.x = (
data >> 0u) & 3u;
1510 page.y = (
data >> 2u) & 3u;
1512 page.z = (
data >> 4u) & 255u;
1524 tile.cache_index = (
data >> 15u) & 4095u;
1540 data |= (
tile.cache_index & 4095u) << 15u;
1565#define ShadowSamplingTilePacked uint
1595 if (
tile.lod == 0) {
1596 tile.lod_offset.x = 0;
1604 if (!
tile.is_valid) {
1610 if (
tile.lod == 0) {
1611 tile.lod_offset.x = 1;
1863#define IrradianceBrickPacked uint
1869 return brick_packed;
2025#define SSS_SAMPLE_MAX 64
2026#define SSS_BURLEY_TRUNCATE 16.0
2027#define SSS_BURLEY_TRUNCATE_CDF 0.9963790093708328
2028#define SSS_TRANSMIT_LUT_SIZE 64.0
2029#define SSS_TRANSMIT_LUT_RADIUS 2.0
2030#define SSS_TRANSMIT_LUT_SCALE ((SSS_TRANSMIT_LUT_SIZE - 1.0) / float(SSS_TRANSMIT_LUT_SIZE))
2031#define SSS_TRANSMIT_LUT_BIAS (0.5 / float(SSS_TRANSMIT_LUT_SIZE))
2032#define SSS_TRANSMIT_LUT_STEP_RES 64.0
2052 const float m_1_pi = 0.318309886183790671538;
2056 float3 s = 1.9 -
A + 3.5 * ((
A - 0.8) * (
A - 0.8));
2058 float3 l = 0.25 * m_1_pi * radius;
2068 exp_r_3_d.x =
expf(-r / (3.0 * d.x));
2069 exp_r_3_d.y =
expf(-r / (3.0 * d.y));
2070 exp_r_3_d.z =
expf(-r / (3.0 * d.z));
2071 float3 exp_r_d = exp_r_3_d * exp_r_3_d * exp_r_3_d;
2077 return (exp_r_d + exp_r_3_d) / (4.0 * d);
2158#define UTIL_TEX_SIZE 64
2159#define UTIL_BTDF_LAYER_COUNT 16
2162#define UTIL_TEX_UV_SCALE ((UTIL_TEX_SIZE - 1.0f) / UTIL_TEX_SIZE)
2163#define UTIL_TEX_UV_BIAS (0.5f / UTIL_TEX_SIZE)
2165#define UTIL_BLUE_NOISE_LAYER 0
2166#define UTIL_SSS_TRANSMITTANCE_PROFILE_LAYER 1
2167#define UTIL_LTC_MAT_LAYER 2
2168#define UTIL_BSDF_LAYER 3
2169#define UTIL_BTDF_LAYER 4
2170#define UTIL_DISK_INTEGRAL_LAYER UTIL_SSS_TRANSMITTANCE_PROFILE_LAYER
2171#define UTIL_DISK_INTEGRAL_COMP 3
2175# if defined(GPU_FRAGMENT_SHADER)
2176# define UTIL_TEXEL float2(gl_FragCoord.xy)
2177# elif defined(GPU_COMPUTE_SHADER)
2178# define UTIL_TEXEL float2(gl_GlobalInvocationID.xy)
2179# elif defined(GPU_VERTEX_SHADER)
2180# define UTIL_TEXEL float2(gl_VertexID, 0)
2181# elif defined(GPU_LIBRARY_SHADER)
2182# define UTIL_TEXEL float2(0)
2212 float layer_floored;
2228 return utility_tx_sample_lut(util_tx, coords, layer);
#define BLI_STATIC_ASSERT_ALIGN(st, align)
#define ENUM_OPERATORS(_type, _max)
@ GPU_SAMPLER_FILTERING_LINEAR
BMesh const char void * data
ATTR_WARN_UNUSED_RESULT const BMLoop * l
ccl_device_inline float cos_theta(const float3 w)
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
#define SHADOW_PAGE_PER_ROW
#define SHADOW_TILEMAP_MAX_CLIPMAP_LOD
#define SHADOW_PAGE_PER_COL
#define SAFE_ASSIGN_FLOAT(a, b)
#define SAFE_ASSIGN_INT_AS_FLOAT(a, b)
#define IrradianceBrickPacked
#define MOTION_BLUR_MAX_TILE
#define ShadowTileDataPacked
#define light_area_data_get(light)
#define SAFE_WRITE_END(light)
#define SAFE_ASSIGN_FLOAT3(a, b)
#define SAFE_WRITE_BEGIN(src_type, src, check)
#define light_sun_data_get(light)
#define light_local_data_get(light)
#define FILM_PRECOMP_SAMPLE_MAX
#define light_spot_data_get(light)
#define UTIL_BTDF_LAYER_COUNT
#define SAMPLING_DIMENSION_COUNT
#define UTIL_TEX_UV_SCALE
#define LOCAL_LIGHT_COMMON
#define SAFE_READ_BEGIN(dst_type, light, check)
#define ShadowSamplingTilePacked
#define SAFE_ASSIGN_FLOAT_AS_INT(a, b)
#define SAFE_ASSIGN_FLOAT2(a, b)
#define SAFE_ASSIGN_INT(a, b)
TEX_TEMPLATE DataVec texelFetch(T, IntCoord, int) RET
TEX_TEMPLATE DataVec textureLod(T, FltCoord, float) RET
SamplerBase< float, 2, false, true > sampler2DArray
bool all(VecOp< bool, D >) RET
VecBase< bool, D > equal(VecOp< T, D >, VecOp< T, D >) RET
const ccl_global KernelWorkTile * tile
ccl_device_inline float interp(const float a, const float b, const float t)
ccl_device_inline float2 power(const float2 v, const float e)
BLI_STATIC_ASSERT(MBC_BATCH_LEN< 32, "Number of batches exceeded the limit of bit fields")
static LightData light_local_data_set(LightData light, LightSpotData spot_data)
static LightData light_sun_data_set(LightData light, LightSunData sun_data)
static LightSpotData light_local_data_get_ex(LightData light, bool check)
draw::UniformBuffer< MotionBlurData > MotionBlurDataBuf
draw::StorageArrayBuffer< LightData, LIGHT_CHUNK > LightDataBuf
constexpr GPUSamplerState no_filter
draw::StorageBuffer< ShadowPagesInfoData > ShadowPagesInfoDataBuf
@ CAMERA_PANO_EQUIDISTANT
draw::UniformBuffer< DepthOfFieldData > DepthOfFieldDataBuf
draw::StorageArrayBuffer< ShadowTileDataPacked, SHADOW_MAX_TILE, true > ShadowTileDataBuf
static int2 shadow_cascade_grid_offset(int2 base_offset, int level_relative)
static bool is_panoramic(eCameraType type)
draw::StorageArrayBuffer< ShadowTileMapClip, SHADOW_MAX_TILEMAP, true > ShadowTileMapClipBuf
draw::StorageArrayBuffer< uint, CULLING_ZBIN_COUNT, true > LightCullingZbinBuf
draw::StorageArrayBuffer< float, LIGHT_CHUNK, true > LightCullingZdistBuf
static bool is_sphere_light(eLightType type)
static bool is_area_light(eLightType type)
static float film_filter_weight(float filter_radius, float sample_distance_sqr)
draw::StorageBuffer< DrawCommand, true > DrawIndirectBuf
draw::StorageArrayBuffer< uint2, SHADOW_MAX_PAGE, true > ShadowPageCacheBuf
static int light_local_tilemap_count(LightData light)
static float3 transform_point_inversed(Transform t, float3 point)
@ GBUF_REFRACTION_COLORLESS
@ GBUF_REFLECTION_COLORLESS
@ DEFERRED_CAPTURE_SHADERS
@ DEFERRED_LIGHTING_SHADERS
@ IRRADIANCE_BAKE_SHADERS
@ DEFERRED_PLANAR_SHADERS
@ AMBIENT_OCCLUSION_SHADERS
draw::StorageArrayBuffer< PlanarProbeDisplayData > PlanarProbeDisplayDataBuf
draw::StorageArrayBuffer< uint, LIGHT_CHUNK, true > LightCullingTileBuf
draw::StorageArrayBuffer< ShadowRenderView, SHADOW_VIEW_MAX, true > ShadowRenderViewBuf
static float3 transform_x_axis(Transform t)
@ LUT_GGX_BTDF_IOR_GT_ONE
@ LUT_RANDOM_WALK_SSS_PROFILE
draw::StorageArrayBuffer< uint, 1024, true > ClosureTileBuf
constexpr GPUSamplerState with_filter
draw::StorageBuffer< SamplingData > SamplingDataBuf
static Transform transform_from_matrix(float4x4 m)
static IrradianceBrickPacked irradiance_brick_pack(IrradianceBrick brick)
static float circle_to_polygon_angle(float sides_count, float theta)
static float regular_polygon_side_length(float sides_count)
draw::StorageBuffer< LightCullingData > LightCullingDataBuf
static ShadowTileDataPacked shadow_tile_pack(ShadowTileData tile)
static float3 transform_direction_transposed(Transform t, float3 direction)
static ShadowSamplingTilePacked shadow_sampling_tile_pack(ShadowSamplingTile tile)
@ CLOSURE_AMBIENT_OCCLUSION
static float3 light_position_get(LightData light)
draw::StorageBuffer< SurfelListInfoData > SurfelListInfoBuf
static float3 light_y_axis(LightData light)
draw::StorageArrayBuffer< uint, LIGHT_CHUNK, true > LightCullingKeyBuf
static bool is_sun_light(eLightType type)
static ShadowTileData shadow_tile_unpack(ShadowTileDataPacked data)
draw::StorageArrayBuffer< Surfel, 64 > SurfelBuf
static int light_tilemap_max_get(LightData light)
static uint2 shadow_lod_offset_unpack(uint data)
draw::StorageBuffer< MotionBlurTileIndirection, true > MotionBlurTileIndirectionBuf
static float3 transform_z_axis(Transform t)
draw::StorageArrayBuffer< ScatterRect, 16, true > DepthOfFieldScatterListBuf
static int sampling_web_ring_count_get(int web_density, int sample_count)
static float3 light_z_axis(LightData light)
static bool is_spot_light(eLightType type)
static float3 transform_y_axis(Transform t)
draw::StorageArrayBuffer< SphereProbeDisplayData > SphereProbeDisplayDataBuf
draw::StorageArrayBuffer< VelocityIndex, 16 > VelocityIndexBuf
draw::UniformArrayBuffer< PlanarProbeData, PLANAR_PROBE_MAX > PlanarProbeDataBuf
static uint3 shadow_page_unpack(uint data)
draw::UniformArrayBuffer< VolumeProbeData, IRRADIANCE_GRID_MAX > VolumeProbeDataBuf
static bool is_oriented_disk_light(eLightType type)
draw::StorageBuffer< AOVsInfoData > AOVsInfoDataBuf
draw::StorageArrayBuffer< float4, 16, true > VelocityGeometryBuf
@ FILM_WEIGHT_LAYER_DISTANCE
@ FILM_WEIGHT_LAYER_ACCUMULATION
static float3 light_x_axis(LightData light)
static IrradianceBrick irradiance_brick_unpack(IrradianceBrickPacked brick_packed)
draw::StorageBuffer< CaptureInfoData > CaptureInfoBuf
draw::StorageArrayBuffer< SurfelRadiance, 64 > SurfelRadianceBuf
@ DEBUG_IRRADIANCE_CACHE_SURFELS_VISIBILITY
@ DEBUG_GBUFFER_EVALUATION
@ DEBUG_IRRADIANCE_CACHE_SURFELS_IRRADIANCE
@ DEBUG_IRRADIANCE_CACHE_SURFELS_NORMAL
@ DEBUG_IRRADIANCE_CACHE_VIRTUAL_OFFSET
@ DEBUG_SHADOW_TILE_RANDOM_COLOR
@ DEBUG_IRRADIANCE_CACHE_VALIDITY
@ DEBUG_IRRADIANCE_CACHE_SURFELS_CLUSTER
@ DEBUG_SHADOW_TILEMAP_RANDOM_COLOR
draw::StorageArrayBuffer< float2, 16 > CryptomatteObjectBuf
draw::UniformBuffer< UniformData > UniformDataBuf
draw::StorageArrayBuffer< float4x4, 16 > VelocityObjectBuf
RayTraceTileBuf SubsurfaceTileBuf
@ PASS_STORAGE_CRYPTOMATTE
static float3 burley_setup(float3 radius, float3 albedo)
static float coc_radius_from_camera_depth(DepthOfFieldData dof, float depth)
draw::UniformBuffer< CameraData > CameraDataBuf
static uint shadow_page_pack(uint3 page)
static bool is_local_light(eLightType type)
static float4x4 transform_to_matrix(Transform t)
static float3 burley_eval(float3 d, float r)
static uint shadow_lod_offset_pack(uint2 ofs)
draw::StorageBuffer< ShadowStatistics > ShadowStatisticsBuf
draw::UniformBuffer< ClipPlaneData > ClipPlaneBuf
@ LIGHT_TRANSLUCENT_WITH_THICKNESS
draw::StorageVectorBuffer< ShadowTileMapData, SHADOW_MAX_TILEMAP > ShadowTileMapDataBuf
static ShadowSamplingTile shadow_sampling_tile_create(ShadowTileData tile_data, uint lod)
draw::StorageArrayBuffer< uint, 1024, true > RayTraceTileBuf
draw::UniformArrayBuffer< SphereProbeData, SPHERE_PROBE_MAX > SphereProbeDataBuf
static bool is_point_light(eLightType type)
static int sampling_web_sample_count_get(int web_density, int in_ring_count)
@ SHADOW_PROJECTION_CLIPMAP
@ SHADOW_PROJECTION_CASCADE
@ SHADOW_PROJECTION_CUBEFACE
draw::StorageVectorBuffer< IrradianceBrickPacked, 16 > IrradianceBrickBuf
static float circle_to_polygon_radius(float sides_count, float theta)
static ShadowSamplingTile shadow_sampling_tile_unpack(ShadowSamplingTilePacked data)
draw::StorageBuffer< DispatchCommand > DispatchIndirectBuf
@ PASS_CATEGORY_CRYPTOMATTE
draw::StorageVectorBuffer< uint, SHADOW_MAX_PAGE > ShadowPageHeapBuf
static float3 transform_location(Transform t)
T clamp(const T &a, const T &min, const T &max)
VecBase< T, 3 > transform_direction(const MatBase< T, 3, 3 > &mat, const VecBase< T, 3 > &direction)
VecBase< T, 3 > transform_point(const CartesianBasis &basis, const VecBase< T, 3 > &v)
VecBase< uint32_t, 2 > uint2
VecBase< uint32_t, 4 > uint4
VecBase< uint32_t, 3 > uint3
MatBase< float, 4, 4 > float4x4
MatBase< float, 3, 4 > float3x4
VecBase< float, 4 > float4
VecBase< int32_t, 2 > int2
VecBase< float, 2 > float2
VecBase< int32_t, 3 > int3
MatBase< float, 3, 3 > float3x3
VecBase< float, 3 > float3
static constexpr GPUSamplerState default_sampler()
bool32_t display_is_value
uint4 hash_value[AOV_MAX]
uint4 hash_color[AOV_MAX]
float2 equirect_scale_inv
float screen_diagonal_length
bool32_t capture_visibility_indirect
SphereProbeUvArea world_atlas_coord
bool32_t capture_indirect
bool32_t capture_visibility_direct
packed_int3 irradiance_grid_size
float4x4 irradiance_grid_world_to_local
float min_distance_to_surface
bool32_t capture_world_indirect
bool32_t capture_emission
float4x4 irradiance_grid_world_to_local_rotation
float4x4 irradiance_grid_local_to_world
bool32_t do_surfel_output
bool32_t capture_world_direct
float scatter_coc_threshold
float2 bokeh_anisotropic_scale_inv
int scatter_sprite_per_row
float2 bokeh_anisotropic_scale
float4 filter_samples_weight
float scatter_neighbor_max_color
float scatter_color_threshold
float filter_center_weight
int cryptomatte_samples_len
ePassStorageType display_storage_type
float samples_weight_total
int cryptomatte_material_id
int cryptomatte_object_id
FilmSample samples[FILM_PRECOMP_SAMPLE_MAX]
LOCAL_LIGHT_COMMON float _pad1
LOCAL_LIGHT_COMMON float _pad1
float3x4 world_to_object_transposed
float roughness_mask_scale
float4x4 radiance_persmat
int horizon_resolution_scale
bool32_t trace_refraction
int2 horizon_resolution_bias
float2 full_resolution_inv
float roughness_mask_bias
float dimensions[SAMPLING_DIMENSION_COUNT]
uint2 shadow_set_membership
Transform object_to_world
eShadowProjectionType projection_type
uint2 shadow_set_membership
ReflectionProbeLowFreqLight low_freq_light
LightProbeShape parallax_shape
float3x4 world_to_probe_transposed
SphereProbeUvArea atlas_coord
LightProbeShape influence_shape
float4 samples[SSS_SAMPLE_MAX]
packed_float3 albedo_front
SurfelRadiance radiance_direct
packed_float3 albedo_back
SurfelRadiance radiance_indirect[2]
VelocityGeometryIndex geo
float3x4 world_to_grid_transposed
packed_int3 grid_size_padded
float2 main_view_extent_inv
float4x4 history_winmat_stable
float history_depth_distribution
packed_float3 inv_tex_size
float4x4 curr_view_to_past_view