Blender V4.5
eevee_lightprobe_volume_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_common_info.hh"
12# include "eevee_shader_shared.hh"
13
14# define SPHERE_PROBE
15#endif
16
17#include "eevee_defines.hh"
19
20/* -------------------------------------------------------------------- */
23
24GPU_SHADER_INTERFACE_INFO(eevee_debug_surfel_iface)
26FLAT(int, surfel_index)
28
29GPU_SHADER_CREATE_INFO(eevee_debug_surfels)
30ADDITIONAL_INFO(eevee_shared)
31ADDITIONAL_INFO(draw_view)
32VERTEX_SOURCE("eevee_debug_surfels_vert.glsl")
33VERTEX_OUT(eevee_debug_surfel_iface)
34FRAGMENT_SOURCE("eevee_debug_surfels_frag.glsl")
35FRAGMENT_OUT(0, float4, out_color)
36STORAGE_BUF(0, read, Surfel, surfels_buf[])
37PUSH_CONSTANT(float, debug_surfel_radius)
38PUSH_CONSTANT(int, debug_mode)
39BUILTINS(BuiltinBits::CLIP_CONTROL)
42
43GPU_SHADER_INTERFACE_INFO(eevee_debug_irradiance_grid_iface)
44SMOOTH(float4, interp_color)
46
47GPU_SHADER_CREATE_INFO(eevee_debug_irradiance_grid)
48ADDITIONAL_INFO(eevee_shared)
49ADDITIONAL_INFO(draw_view)
50FRAGMENT_OUT(0, float4, out_color)
51VERTEX_OUT(eevee_debug_irradiance_grid_iface)
52SAMPLER(0, sampler3D, debug_data_tx)
53PUSH_CONSTANT(float4x4, grid_mat)
54PUSH_CONSTANT(int, debug_mode)
55PUSH_CONSTANT(float, debug_value)
56VERTEX_SOURCE("eevee_debug_irradiance_grid_vert.glsl")
57FRAGMENT_SOURCE("eevee_debug_irradiance_grid_frag.glsl")
58BUILTINS(BuiltinBits::CLIP_CONTROL)
61
62GPU_SHADER_INTERFACE_INFO(eevee_display_lightprobe_volume_iface)
63SMOOTH(float2, lP)
64FLAT(int3, cell)
66
67GPU_SHADER_CREATE_INFO(eevee_display_lightprobe_volume)
68ADDITIONAL_INFO(eevee_shared)
69ADDITIONAL_INFO(draw_view)
70VERTEX_SOURCE("eevee_display_lightprobe_volume_vert.glsl")
71VERTEX_OUT(eevee_display_lightprobe_volume_iface)
72FRAGMENT_SOURCE("eevee_display_lightprobe_volume_frag.glsl")
73FRAGMENT_OUT(0, float4, out_color)
74PUSH_CONSTANT(float, sphere_radius)
75PUSH_CONSTANT(int3, grid_resolution)
77PUSH_CONSTANT(float4x4, world_to_grid)
78PUSH_CONSTANT(bool, display_validity)
79SAMPLER(0, sampler3D, irradiance_a_tx)
80SAMPLER(1, sampler3D, irradiance_b_tx)
81SAMPLER(2, sampler3D, irradiance_c_tx)
82SAMPLER(3, sampler3D, irradiance_d_tx)
83SAMPLER(4, sampler3D, validity_tx)
84BUILTINS(BuiltinBits::CLIP_CONTROL)
87
89
90/* -------------------------------------------------------------------- */
93
94GPU_SHADER_CREATE_INFO(eevee_surfel_light)
95DEFINE("LIGHT_ITER_FORCE_NO_CULLING")
96DEFINE_VALUE("LIGHT_CLOSURE_EVAL_COUNT", "1")
98ADDITIONAL_INFO(eevee_shared)
99ADDITIONAL_INFO(draw_view)
100ADDITIONAL_INFO(eevee_global_ubo)
101ADDITIONAL_INFO(eevee_utility_texture)
102ADDITIONAL_INFO(eevee_surfel_common)
103ADDITIONAL_INFO(eevee_light_data)
104ADDITIONAL_INFO(eevee_shadow_data)
105COMPUTE_SOURCE("eevee_surfel_light_comp.glsl")
108
109GPU_SHADER_CREATE_INFO(eevee_surfel_cluster_build)
111BUILTINS(BuiltinBits::TEXTURE_ATOMIC)
112ADDITIONAL_INFO(eevee_shared)
113ADDITIONAL_INFO(eevee_surfel_common)
114ADDITIONAL_INFO(draw_view)
115IMAGE(0, GPU_R32I, read_write, iimage3DAtomic, cluster_list_img)
116COMPUTE_SOURCE("eevee_surfel_cluster_build_comp.glsl")
119
120GPU_SHADER_CREATE_INFO(eevee_surfel_list_build)
122BUILTINS(BuiltinBits::TEXTURE_ATOMIC)
123ADDITIONAL_INFO(eevee_shared)
124ADDITIONAL_INFO(eevee_surfel_common)
125ADDITIONAL_INFO(draw_view)
126STORAGE_BUF(0, read_write, int, list_start_buf[])
127STORAGE_BUF(6, read_write, SurfelListInfoData, list_info_buf)
128COMPUTE_SOURCE("eevee_surfel_list_build_comp.glsl")
131
132GPU_SHADER_CREATE_INFO(eevee_surfel_list_sort)
134ADDITIONAL_INFO(eevee_shared)
135ADDITIONAL_INFO(eevee_surfel_common)
136ADDITIONAL_INFO(draw_view)
137STORAGE_BUF(0, read_write, int, list_start_buf[])
138STORAGE_BUF(6, read, SurfelListInfoData, list_info_buf)
139COMPUTE_SOURCE("eevee_surfel_list_sort_comp.glsl")
142
143GPU_SHADER_CREATE_INFO(eevee_surfel_ray)
145ADDITIONAL_INFO(eevee_shared)
146ADDITIONAL_INFO(eevee_surfel_common)
147ADDITIONAL_INFO(eevee_lightprobe_sphere_data)
148ADDITIONAL_INFO(draw_view)
149PUSH_CONSTANT(int, radiance_src)
150PUSH_CONSTANT(int, radiance_dst)
151COMPUTE_SOURCE("eevee_surfel_ray_comp.glsl")
154
155GPU_SHADER_CREATE_INFO(eevee_lightprobe_volume_bounds)
158STORAGE_BUF(0, read_write, CaptureInfoData, capture_info_buf)
159STORAGE_BUF(1, read, ObjectBounds, bounds_buf[])
160PUSH_CONSTANT(int, resource_len)
161TYPEDEF_SOURCE("draw_shader_shared.hh")
162ADDITIONAL_INFO(eevee_shared)
163COMPUTE_SOURCE("eevee_lightprobe_volume_bounds_comp.glsl")
165
166GPU_SHADER_CREATE_INFO(eevee_lightprobe_volume_ray)
170ADDITIONAL_INFO(eevee_shared)
171ADDITIONAL_INFO(eevee_surfel_common)
172ADDITIONAL_INFO(eevee_lightprobe_sphere_data)
173ADDITIONAL_INFO(draw_view)
174PUSH_CONSTANT(int, radiance_src)
175STORAGE_BUF(0, read, int, list_start_buf[])
176STORAGE_BUF(6, read, SurfelListInfoData, list_info_buf)
177IMAGE(0, GPU_RGBA32F, read_write, image3D, irradiance_L0_img)
178IMAGE(1, GPU_RGBA32F, read_write, image3D, irradiance_L1_a_img)
179IMAGE(2, GPU_RGBA32F, read_write, image3D, irradiance_L1_b_img)
180IMAGE(3, GPU_RGBA32F, read_write, image3D, irradiance_L1_c_img)
181IMAGE(4, GPU_RGBA16F, read, image3D, virtual_offset_img)
182IMAGE(5, GPU_R32F, read_write, image3D, validity_img)
183COMPUTE_SOURCE("eevee_lightprobe_volume_ray_comp.glsl")
186
187GPU_SHADER_CREATE_INFO(eevee_lightprobe_volume_offset)
191ADDITIONAL_INFO(eevee_shared)
192ADDITIONAL_INFO(eevee_surfel_common)
193ADDITIONAL_INFO(draw_view)
194STORAGE_BUF(0, read, int, list_start_buf[])
195STORAGE_BUF(6, read, SurfelListInfoData, list_info_buf)
196IMAGE(0, GPU_R32I, read, iimage3DAtomic, cluster_list_img)
197IMAGE(1, GPU_RGBA16F, read_write, image3D, virtual_offset_img)
198COMPUTE_SOURCE("eevee_lightprobe_volume_offset_comp.glsl")
201
203
204/* -------------------------------------------------------------------- */
207
208GPU_SHADER_CREATE_INFO(eevee_lightprobe_volume_world)
212DEFINE("IRRADIANCE_GRID_UPLOAD")
213ADDITIONAL_INFO(eevee_shared)
214ADDITIONAL_INFO(eevee_global_ubo)
215PUSH_CONSTANT(int, grid_index)
216STORAGE_BUF(0, read, uint, bricks_infos_buf[])
217STORAGE_BUF(1, read, SphereProbeHarmonic, harmonic_buf)
218UNIFORM_BUF(0, VolumeProbeData, grids_infos_buf[IRRADIANCE_GRID_MAX])
219IMAGE(0, VOLUME_PROBE_FORMAT, write, image3D, irradiance_atlas_img)
220COMPUTE_SOURCE("eevee_lightprobe_volume_world_comp.glsl")
223
224GPU_SHADER_CREATE_INFO(eevee_lightprobe_volume_load)
228DEFINE("IRRADIANCE_GRID_UPLOAD")
229ADDITIONAL_INFO(eevee_shared)
230ADDITIONAL_INFO(eevee_global_ubo)
231PUSH_CONSTANT(float4x4, grid_local_to_world)
232PUSH_CONSTANT(int, grid_index)
233PUSH_CONSTANT(int, grid_start_index)
234PUSH_CONSTANT(float, validity_threshold)
235PUSH_CONSTANT(float, dilation_threshold)
236PUSH_CONSTANT(float, dilation_radius)
237PUSH_CONSTANT(float, grid_intensity_factor)
238UNIFORM_BUF(0, VolumeProbeData, grids_infos_buf[IRRADIANCE_GRID_MAX])
239STORAGE_BUF(0, read, uint, bricks_infos_buf[])
240SAMPLER(0, sampler3D, irradiance_a_tx)
241SAMPLER(1, sampler3D, irradiance_b_tx)
242SAMPLER(2, sampler3D, irradiance_c_tx)
243SAMPLER(3, sampler3D, irradiance_d_tx)
244SAMPLER(4, sampler3D, visibility_a_tx)
245SAMPLER(5, sampler3D, visibility_b_tx)
246SAMPLER(6, sampler3D, visibility_c_tx)
247SAMPLER(7, sampler3D, visibility_d_tx)
248SAMPLER(8, sampler3D, irradiance_atlas_tx)
249SAMPLER(9, sampler3D, validity_tx)
250IMAGE(0, VOLUME_PROBE_FORMAT, write, image3D, irradiance_atlas_img)
251COMPUTE_SOURCE("eevee_lightprobe_volume_load_comp.glsl")
254
unsigned int uint
@ GPU_R32F
@ GPU_R32I
@ GPU_RGBA32F
@ GPU_RGBA16F
#define SURFEL_GROUP_SIZE
#define IRRADIANCE_BOUNDS_GROUP_SIZE
#define SURFEL_LIST_GROUP_SIZE
#define IRRADIANCE_GRID_MAX
#define IRRADIANCE_GRID_BRICK_SIZE
#define IRRADIANCE_GRID_GROUP_SIZE
#define VOLUME_PROBE_FORMAT
ImageBase< int, 3, false, true > iimage3DAtomic
VecBase< float, 4 > float4
MatBase< 4, 4 > float4x4
SamplerBase< float, 3 > sampler3D
ImageBase< float, 3 > image3D
#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 GPU_SHADER_INTERFACE_END()
#define FRAGMENT_SOURCE(filename)
#define ADDITIONAL_INFO(info_name)
#define PUSH_CONSTANT(type, name)
#define DEFINE(name)
#define FLAT(type, name)
#define FRAGMENT_OUT(slot, type, name)
#define BUILTINS(builtin)
#define GPU_SHADER_INTERFACE_INFO(_interface)
#define STORAGE_BUF(slot, qualifiers, type_name, name)
#define GPU_SHADER_CREATE_INFO(_info)
#define VERTEX_SOURCE(filename)
#define LOCAL_GROUP_SIZE(...)
#define IMAGE(slot, format, qualifiers, type, name)
#define GPU_SHADER_CREATE_END()
#define COMPUTE_SOURCE(filename)
#define DO_STATIC_COMPILATION()
#define DEFINE_VALUE(name, value)
BLI_INLINE void grid_to_world(HairGrid *grid, float vecw[3], const float vec[3])
read