Blender V5.0
eevee_common_info.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
5#ifdef GPU_SHADER
6# pragma once
7# include "gpu_shader_compat.hh"
8
10# include "draw_view_infos.hh"
11# include "eevee_light_shared.hh"
14# include "eevee_shadow_shared.hh"
16
17# define EEVEE_SAMPLING_DATA
18# define MAT_CLIP_PLANE
19# define PLANAR_PROBES
20# define MAT_RENDER_PASS_SUPPORT
21# define SHADOW_READ_ATOMIC
22
23/* Stub for C++ compilation. */
24struct NodeTree {
25 float crypto_hash;
26 float _pad0;
27 float _pad1;
28 float _pad2;
29};
30#endif
31
32#include "eevee_defines.hh"
34
35/* -------------------------------------------------------------------- */
38
39/* Stub for C++ compilation. */
40/* TODO(fclem): Use it for actual interface. */
41GPU_SHADER_CREATE_INFO(eevee_node_tree)
42UNIFORM_BUF(0 /*GPU_NODE_TREE_UBO_SLOT*/, NodeTree, node_tree)
44
45GPU_SHADER_CREATE_INFO(eevee_global_ubo)
46TYPEDEF_SOURCE("eevee_uniform_shared.hh")
49
50GPU_SHADER_CREATE_INFO(eevee_hiz_data)
52ADDITIONAL_INFO(eevee_global_ubo)
54
55GPU_SHADER_CREATE_INFO(eevee_sampling_data)
56DEFINE("EEVEE_SAMPLING_DATA")
57TYPEDEF_SOURCE("eevee_defines.hh")
58TYPEDEF_SOURCE("eevee_sampling_shared.hh")
59STORAGE_BUF(SAMPLING_BUF_SLOT, read, SamplingData, sampling_buf)
61
62GPU_SHADER_CREATE_INFO(eevee_utility_texture)
65
66GPU_SHADER_NAMED_INTERFACE_INFO(eevee_clip_plane_iface, clip_interp)
67SMOOTH(float, clip_distance)
69
70GPU_SHADER_CREATE_INFO(eevee_clip_plane)
71VERTEX_OUT(eevee_clip_plane_iface)
72TYPEDEF_SOURCE("eevee_uniform_shared.hh")
73UNIFORM_BUF(CLIP_PLANE_BUF, ClipPlaneData, clip_plane)
74DEFINE("MAT_CLIP_PLANE")
76
77GPU_SHADER_CREATE_INFO(eevee_lightprobe_sphere_data)
78DEFINE("SPHERE_PROBE")
79TYPEDEF_SOURCE("eevee_lightprobe_shared.hh")
80UNIFORM_BUF(SPHERE_PROBE_BUF_SLOT, SphereProbeData, lightprobe_sphere_buf[SPHERE_PROBE_MAX])
81SAMPLER(SPHERE_PROBE_TEX_SLOT, sampler2DArray, lightprobe_spheres_tx)
83
84GPU_SHADER_CREATE_INFO(eevee_volume_probe_data)
85TYPEDEF_SOURCE("eevee_lightprobe_shared.hh")
86UNIFORM_BUF(IRRADIANCE_GRID_BUF_SLOT, VolumeProbeData, grids_infos_buf[IRRADIANCE_GRID_MAX])
87/* NOTE: Use uint instead of IrradianceBrickPacked because Metal needs to know the exact type.
88 */
90SAMPLER(VOLUME_PROBE_TEX_SLOT, sampler3D, irradiance_atlas_tx)
91DEFINE("IRRADIANCE_GRID_SAMPLING")
93
94GPU_SHADER_CREATE_INFO(eevee_lightprobe_planar_data)
95DEFINE("SPHERE_PROBE")
96TYPEDEF_SOURCE("eevee_lightprobe_shared.hh")
97UNIFORM_BUF(PLANAR_PROBE_BUF_SLOT, PlanarProbeData, probe_planar_buf[PLANAR_PROBE_MAX])
101
102GPU_SHADER_CREATE_INFO(eevee_lightprobe_data)
103ADDITIONAL_INFO(eevee_lightprobe_sphere_data)
104ADDITIONAL_INFO(eevee_volume_probe_data)
106
107GPU_SHADER_CREATE_INFO(eevee_light_data)
108TYPEDEF_SOURCE("eevee_light_shared.hh")
109STORAGE_BUF(LIGHT_CULL_BUF_SLOT, read, LightCullingData, light_cull_buf)
111STORAGE_BUF(LIGHT_ZBIN_BUF_SLOT, read, uint, light_zbin_buf[])
112STORAGE_BUF(LIGHT_TILE_BUF_SLOT, read, uint, light_tile_buf[])
114
115GPU_SHADER_CREATE_INFO(eevee_shadow_data)
116TYPEDEF_SOURCE("eevee_shadow_shared.hh")
117/* SHADOW_READ_ATOMIC macro indicating shadow functions should use `usampler2DArrayAtomic` as
118 * the atlas type. */
119DEFINE("SHADOW_READ_ATOMIC")
120BUILTINS(BuiltinBits::TEXTURE_ATOMIC)
122SAMPLER(SHADOW_TILEMAPS_TEX_SLOT, usampler2D, shadow_tilemaps_tx)
124
125GPU_SHADER_CREATE_INFO(eevee_shadow_data_non_atomic)
126TYPEDEF_SOURCE("eevee_shadow_shared.hh")
128SAMPLER(SHADOW_TILEMAPS_TEX_SLOT, usampler2D, shadow_tilemaps_tx)
130
131GPU_SHADER_CREATE_INFO(eevee_surfel_common)
132TYPEDEF_SOURCE("eevee_lightprobe_shared.hh")
133STORAGE_BUF(SURFEL_BUF_SLOT, read_write, Surfel, surfel_buf[])
134STORAGE_BUF(CAPTURE_BUF_SLOT, read, CaptureInfoData, capture_info_buf)
136
137GPU_SHADER_CREATE_INFO(eevee_volume_properties_data)
138ADDITIONAL_INFO(eevee_global_ubo)
139IMAGE(VOLUME_PROP_SCATTERING_IMG_SLOT, UFLOAT_11_11_10, read, image3D, in_scattering_img)
140IMAGE(VOLUME_PROP_EXTINCTION_IMG_SLOT, UFLOAT_11_11_10, read, image3D, in_extinction_img)
141IMAGE(VOLUME_PROP_EMISSION_IMG_SLOT, UFLOAT_11_11_10, read, image3D, in_emission_img)
142IMAGE(VOLUME_PROP_PHASE_IMG_SLOT, SFLOAT_16, read, image3D, in_phase_img)
143IMAGE(VOLUME_PROP_PHASE_WEIGHT_IMG_SLOT, SFLOAT_16, read, image3D, in_phase_weight_img)
145
146GPU_SHADER_CREATE_INFO(eevee_gbuffer_data)
147DEFINE("GBUFFER_LOAD")
148SAMPLER(12, usampler2DArray, gbuf_header_tx)
149SAMPLER(13, sampler2DArray, gbuf_closure_tx)
150SAMPLER(14, sampler2DArray, gbuf_normal_tx)
152
153GPU_SHADER_CREATE_INFO(eevee_render_pass_out)
154DEFINE("MAT_RENDER_PASS_SUPPORT")
155ADDITIONAL_INFO(eevee_global_ubo)
156IMAGE_FREQ(RBUFS_COLOR_SLOT, SFLOAT_16_16_16_16, write, image2DArray, rp_color_img, PASS)
157IMAGE_FREQ(RBUFS_VALUE_SLOT, SFLOAT_16, write, image2DArray, rp_value_img, PASS)
159
160GPU_SHADER_CREATE_INFO(eevee_cryptomatte_out)
161STORAGE_BUF(CRYPTOMATTE_BUF_SLOT, read, float2, cryptomatte_object_buf[])
162IMAGE_FREQ(RBUFS_CRYPTOMATTE_SLOT, SFLOAT_32_32_32_32, write, image2D, rp_cryptomatte_img, PASS)
164
165GPU_SHADER_CREATE_INFO(eevee_tests_data)
166TYPEDEF_SOURCE("eevee_defines.hh")
167DEFINE("MAT_REFLECTION")
168DEFINE("MAT_REFRACTION")
169DEFINE("MAT_SUBSURFACE")
170DEFINE("MAT_TRANSLUCENT")
172
unsigned int uint
#define VOLUME_PROP_SCATTERING_IMG_SLOT
#define LIGHT_BUF_SLOT
#define RBUFS_UTILITY_TEX_SLOT
#define LIGHT_ZBIN_BUF_SLOT
#define CAPTURE_BUF_SLOT
#define SAMPLING_BUF_SLOT
#define IRRADIANCE_GRID_BUF_SLOT
#define VOLUME_PROP_PHASE_WEIGHT_IMG_SLOT
#define PLANAR_PROBE_MAX
#define RBUFS_CRYPTOMATTE_SLOT
#define SHADOW_ATLAS_TEX_SLOT
#define IRRADIANCE_GRID_MAX
#define SPHERE_PROBE_TEX_SLOT
#define CRYPTOMATTE_BUF_SLOT
#define PLANAR_PROBE_DEPTH_TEX_SLOT
#define PLANAR_PROBE_RADIANCE_TEX_SLOT
#define VOLUME_PROBE_TEX_SLOT
#define VOLUME_PROP_EXTINCTION_IMG_SLOT
#define RBUFS_VALUE_SLOT
#define LIGHT_TILE_BUF_SLOT
#define IRRADIANCE_BRICK_BUF_SLOT
#define RBUFS_COLOR_SLOT
#define HIZ_TEX_SLOT
#define SPHERE_PROBE_MAX
#define PLANAR_PROBE_BUF_SLOT
#define SPHERE_PROBE_BUF_SLOT
#define VOLUME_PROP_PHASE_IMG_SLOT
#define UNIFORM_BUF_SLOT
#define LIGHT_CULL_BUF_SLOT
#define CLIP_PLANE_BUF
#define VOLUME_PROP_EMISSION_IMG_SLOT
#define SHADOW_TILEMAPS_TEX_SLOT
#define SURFEL_BUF_SLOT
#define GPU_SHADER_NAMED_INTERFACE_INFO(_interface, _inst_name)
#define GPU_SHADER_NAMED_INTERFACE_END(_inst_name)
#define GPU_SHADER_CREATE_INFO(_info)
#define GPU_SHADER_CREATE_END()
#define TYPEDEF_SOURCE(filename)
#define VERTEX_OUT(stage_interface)
#define SMOOTH(type, name)
#define SAMPLER(slot, type, name)
#define UNIFORM_BUF(slot, type_name, name)
#define IMAGE_FREQ(slot, format, qualifiers, type, name, freq)
#define ADDITIONAL_INFO(info_name)
#define DEFINE(name)
#define BUILTINS(builtin)
#define STORAGE_BUF(slot, qualifiers, type_name, name)
#define IMAGE(slot, format, qualifiers, type, name)
ImageBase< float, 2, true > image2DArray
ImageBase< float, 2 > image2D
ImageBase< float, 3 > image3D
SamplerBase< float, 2, false, true, false, true > sampler2DArrayDepth
SamplerBase< uint, 2, false, true > usampler2DArray
SamplerBase< float, 3 > sampler3D
SamplerBase< uint, 2, false, true, true > usampler2DArrayAtomic
SamplerBase< float, 2, false, true > sampler2DArray
SamplerBase< float, 2 > sampler2D
SamplerBase< uint, 2 > usampler2D