Blender V4.5
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_glsl_cpp_stubs.hh"
8
10# include "draw_view_info.hh"
11# include "eevee_shader_shared.hh"
12
13# define EEVEE_SAMPLING_DATA
14# define EEVEE_UTILITY_TX
15# define MAT_CLIP_PLANE
16# define PLANAR_PROBES
17# define MAT_RENDER_PASS_SUPPORT
18# define SHADOW_READ_ATOMIC
19
20/* Stub for C++ compilation. */
21struct NodeTree {
22 float crypto_hash;
23 float _pad0;
24 float _pad1;
25 float _pad2;
26};
27#endif
28
29#include "eevee_defines.hh"
31
32/* -------------------------------------------------------------------- */
35
36/* Stub for C++ compilation. */
37/* TODO(fclem): Use it for actual interface. */
38GPU_SHADER_CREATE_INFO(eevee_node_tree)
39UNIFORM_BUF(0 /*GPU_NODE_TREE_UBO_SLOT*/, NodeTree, node_tree)
41
42GPU_SHADER_CREATE_INFO(eevee_shared)
43TYPEDEF_SOURCE("eevee_defines.hh")
44TYPEDEF_SOURCE("eevee_shader_shared.hh")
46
47GPU_SHADER_CREATE_INFO(eevee_global_ubo)
50
51GPU_SHADER_CREATE_INFO(eevee_hiz_data)
53ADDITIONAL_INFO(eevee_global_ubo)
55
56GPU_SHADER_CREATE_INFO(eevee_sampling_data)
57DEFINE("EEVEE_SAMPLING_DATA")
58ADDITIONAL_INFO(eevee_shared)
59STORAGE_BUF(SAMPLING_BUF_SLOT, read, SamplingData, sampling_buf)
61
62GPU_SHADER_CREATE_INFO(eevee_utility_texture)
63DEFINE("EEVEE_UTILITY_TX")
66
67GPU_SHADER_NAMED_INTERFACE_INFO(eevee_clip_plane_iface, clip_interp)
68SMOOTH(float, clip_distance)
70
71GPU_SHADER_CREATE_INFO(eevee_clip_plane)
72VERTEX_OUT(eevee_clip_plane_iface)
73UNIFORM_BUF(CLIP_PLANE_BUF, ClipPlaneData, clip_plane)
74DEFINE("MAT_CLIP_PLANE")
76
77GPU_SHADER_CREATE_INFO(eevee_lightprobe_sphere_data)
78DEFINE("SPHERE_PROBE")
79UNIFORM_BUF(SPHERE_PROBE_BUF_SLOT, SphereProbeData, lightprobe_sphere_buf[SPHERE_PROBE_MAX])
80SAMPLER(SPHERE_PROBE_TEX_SLOT, sampler2DArray, lightprobe_spheres_tx)
82
83GPU_SHADER_CREATE_INFO(eevee_volume_probe_data)
84UNIFORM_BUF(IRRADIANCE_GRID_BUF_SLOT, VolumeProbeData, grids_infos_buf[IRRADIANCE_GRID_MAX])
85/* NOTE: Use uint instead of IrradianceBrickPacked because Metal needs to know the exact type.
86 */
88SAMPLER(VOLUME_PROBE_TEX_SLOT, sampler3D, irradiance_atlas_tx)
89DEFINE("IRRADIANCE_GRID_SAMPLING")
91
92GPU_SHADER_CREATE_INFO(eevee_lightprobe_planar_data)
93DEFINE("SPHERE_PROBE")
94UNIFORM_BUF(PLANAR_PROBE_BUF_SLOT, PlanarProbeData, probe_planar_buf[PLANAR_PROBE_MAX])
98
99GPU_SHADER_CREATE_INFO(eevee_lightprobe_data)
100ADDITIONAL_INFO(eevee_lightprobe_sphere_data)
101ADDITIONAL_INFO(eevee_volume_probe_data)
103
104GPU_SHADER_CREATE_INFO(eevee_light_data)
105STORAGE_BUF(LIGHT_CULL_BUF_SLOT, read, LightCullingData, light_cull_buf)
107STORAGE_BUF(LIGHT_ZBIN_BUF_SLOT, read, uint, light_zbin_buf[])
108STORAGE_BUF(LIGHT_TILE_BUF_SLOT, read, uint, light_tile_buf[])
110
111GPU_SHADER_CREATE_INFO(eevee_shadow_data)
112/* SHADOW_READ_ATOMIC macro indicating shadow functions should use `usampler2DArrayAtomic` as
113 * the atlas type. */
114DEFINE("SHADOW_READ_ATOMIC")
115BUILTINS(BuiltinBits::TEXTURE_ATOMIC)
117SAMPLER(SHADOW_TILEMAPS_TEX_SLOT, usampler2D, shadow_tilemaps_tx)
119
120GPU_SHADER_CREATE_INFO(eevee_shadow_data_non_atomic)
122SAMPLER(SHADOW_TILEMAPS_TEX_SLOT, usampler2D, shadow_tilemaps_tx)
124
125GPU_SHADER_CREATE_INFO(eevee_surfel_common)
126STORAGE_BUF(SURFEL_BUF_SLOT, read_write, Surfel, surfel_buf[])
127STORAGE_BUF(CAPTURE_BUF_SLOT, read, CaptureInfoData, capture_info_buf)
129
130GPU_SHADER_CREATE_INFO(eevee_volume_properties_data)
131ADDITIONAL_INFO(eevee_global_ubo)
138
139GPU_SHADER_CREATE_INFO(eevee_gbuffer_data)
140DEFINE("GBUFFER_LOAD")
141SAMPLER(12, usampler2DArray, gbuf_header_tx)
142SAMPLER(13, sampler2DArray, gbuf_closure_tx)
143SAMPLER(14, sampler2DArray, gbuf_normal_tx)
145
146GPU_SHADER_CREATE_INFO(eevee_render_pass_out)
147DEFINE("MAT_RENDER_PASS_SUPPORT")
148ADDITIONAL_INFO(eevee_global_ubo)
149IMAGE_FREQ(RBUFS_COLOR_SLOT, GPU_RGBA16F, write, image2DArray, rp_color_img, PASS)
150IMAGE_FREQ(RBUFS_VALUE_SLOT, GPU_R16F, write, image2DArray, rp_value_img, PASS)
152
153GPU_SHADER_CREATE_INFO(eevee_cryptomatte_out)
154STORAGE_BUF(CRYPTOMATTE_BUF_SLOT, read, float2, cryptomatte_object_buf[])
155IMAGE_FREQ(RBUFS_CRYPTOMATTE_SLOT, GPU_RGBA32F, write, image2D, rp_cryptomatte_img, PASS)
157
unsigned int uint
@ GPU_R16F
@ GPU_RGBA32F
@ GPU_RGBA16F
@ GPU_R11F_G11F_B10F
#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
SamplerBase< float, 2, false, true, false, true > sampler2DArrayDepth
SamplerBase< uint, 2, false, true > usampler2DArray
ImageBase< float, 2, true > image2DArray
ImageBase< float, 2 > image2D
SamplerBase< float, 3 > sampler3D
SamplerBase< uint, 2, false, true, true > usampler2DArrayAtomic
ImageBase< float, 3 > image3D
SamplerBase< float, 2, false, true > sampler2DArray
SamplerBase< float, 2 > sampler2D
SamplerBase< uint, 2 > usampler2D
#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 GPU_SHADER_NAMED_INTERFACE_INFO(_interface, _inst_name)
#define GPU_SHADER_NAMED_INTERFACE_END(_inst_name)
#define BUILTINS(builtin)
#define STORAGE_BUF(slot, qualifiers, type_name, name)
#define GPU_SHADER_CREATE_INFO(_info)
#define IMAGE(slot, format, qualifiers, type, name)
#define GPU_SHADER_CREATE_END()
read