Blender V5.0
eevee_tracing_infos.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
9# include "draw_view_infos.hh"
10# include "eevee_common_infos.hh"
12
13# define SPHERE_PROBE
14#endif
15
16#include "eevee_defines.hh"
18
19/* -------------------------------------------------------------------- */
22
23#define image_out(slot, format, type, name) \
24 image(slot, format, Qualifier::write, type, name, Frequency::PASS)
25#define image_in(slot, format, type, name) \
26 image(slot, format, Qualifier::read, type, name, Frequency::PASS)
27
28GPU_SHADER_CREATE_INFO(eevee_ray_tile_classify)
31TYPEDEF_SOURCE("eevee_defines.hh")
32ADDITIONAL_INFO(eevee_gbuffer_data)
33ADDITIONAL_INFO(eevee_global_ubo)
34TYPEDEF_SOURCE("draw_shader_shared.hh")
35IMAGE_FREQ(0, RAYTRACE_TILEMASK_FORMAT, write, uimage2DArray, tile_raytrace_denoise_img, PASS)
36IMAGE_FREQ(1, RAYTRACE_TILEMASK_FORMAT, write, uimage2DArray, tile_raytrace_tracing_img, PASS)
37IMAGE_FREQ(2, RAYTRACE_TILEMASK_FORMAT, write, uimage2DArray, tile_horizon_denoise_img, PASS)
38IMAGE_FREQ(3, RAYTRACE_TILEMASK_FORMAT, write, uimage2DArray, tile_horizon_tracing_img, PASS)
39COMPUTE_SOURCE("eevee_ray_tile_classify_comp.glsl")
41
42GPU_SHADER_CREATE_INFO(eevee_ray_tile_compact)
45TYPEDEF_SOURCE("eevee_defines.hh")
46ADDITIONAL_INFO(eevee_global_ubo)
47TYPEDEF_SOURCE("draw_shader_shared.hh")
48IMAGE_FREQ(0, RAYTRACE_TILEMASK_FORMAT, read, uimage2DArray, tile_raytrace_denoise_img, PASS)
49IMAGE_FREQ(1, RAYTRACE_TILEMASK_FORMAT, read, uimage2DArray, tile_raytrace_tracing_img, PASS)
50STORAGE_BUF(0, read_write, DispatchCommand, raytrace_tracing_dispatch_buf)
51STORAGE_BUF(1, read_write, DispatchCommand, raytrace_denoise_dispatch_buf)
52STORAGE_BUF(4, write, uint, raytrace_tracing_tiles_buf[])
53STORAGE_BUF(5, write, uint, raytrace_denoise_tiles_buf[])
54SPECIALIZATION_CONSTANT(int, closure_index, 0)
55SPECIALIZATION_CONSTANT(int, resolution_scale, 2)
56COMPUTE_SOURCE("eevee_ray_tile_compact_comp.glsl")
58
59GPU_SHADER_CREATE_INFO(eevee_ray_generate)
62TYPEDEF_SOURCE("eevee_defines.hh")
63ADDITIONAL_INFO(eevee_gbuffer_data)
64ADDITIONAL_INFO(eevee_global_ubo)
65ADDITIONAL_INFO(eevee_sampling_data)
66ADDITIONAL_INFO(draw_view)
67ADDITIONAL_INFO(eevee_utility_texture)
68IMAGE(0, SFLOAT_16_16_16_16, write, image2D, out_ray_data_img)
69STORAGE_BUF(4, read, uint, tiles_coord_buf[])
70SPECIALIZATION_CONSTANT(int, closure_index, 0)
71COMPUTE_SOURCE("eevee_ray_generate_comp.glsl")
73
74GPU_SHADER_CREATE_INFO(eevee_ray_trace_fallback)
77TYPEDEF_SOURCE("eevee_defines.hh")
78ADDITIONAL_INFO(eevee_gbuffer_data)
79ADDITIONAL_INFO(eevee_global_ubo)
80ADDITIONAL_INFO(draw_view)
81ADDITIONAL_INFO(eevee_sampling_data)
82ADDITIONAL_INFO(eevee_lightprobe_data)
83IMAGE(0, SFLOAT_16_16_16_16, read, image2D, ray_data_img)
84IMAGE(1, RAYTRACE_RAYTIME_FORMAT, write, image2D, ray_time_img)
85IMAGE(2, RAYTRACE_RADIANCE_FORMAT, write, image2D, ray_radiance_img)
86SAMPLER(1, sampler2DDepth, depth_tx)
87STORAGE_BUF(5, read, uint, tiles_coord_buf[])
88SPECIALIZATION_CONSTANT(int, closure_index, 0)
89COMPUTE_SOURCE("eevee_ray_trace_fallback_comp.glsl")
91
92GPU_SHADER_CREATE_INFO(eevee_ray_trace_planar)
95DEFINE("PLANAR_PROBES")
96TYPEDEF_SOURCE("eevee_defines.hh")
97ADDITIONAL_INFO(eevee_global_ubo)
98ADDITIONAL_INFO(eevee_sampling_data)
99ADDITIONAL_INFO(eevee_gbuffer_data)
100ADDITIONAL_INFO(draw_view)
101ADDITIONAL_INFO(eevee_lightprobe_data)
102ADDITIONAL_INFO(eevee_lightprobe_planar_data)
103IMAGE(0, SFLOAT_16_16_16_16, read_write, image2D, ray_data_img)
104IMAGE(1, RAYTRACE_RAYTIME_FORMAT, write, image2D, ray_time_img)
105IMAGE(2, RAYTRACE_RADIANCE_FORMAT, write, image2D, ray_radiance_img)
106SAMPLER(2, sampler2DDepth, depth_tx)
107STORAGE_BUF(5, read, uint, tiles_coord_buf[])
108SPECIALIZATION_CONSTANT(int, closure_index, 0)
109COMPUTE_SOURCE("eevee_ray_trace_planar_comp.glsl")
111
112GPU_SHADER_CREATE_INFO(eevee_ray_trace_screen)
115TYPEDEF_SOURCE("eevee_defines.hh")
116ADDITIONAL_INFO(eevee_global_ubo)
117ADDITIONAL_INFO(eevee_sampling_data)
118ADDITIONAL_INFO(eevee_gbuffer_data)
119ADDITIONAL_INFO(draw_view)
120ADDITIONAL_INFO(eevee_hiz_data)
121ADDITIONAL_INFO(eevee_lightprobe_data)
122IMAGE(0, SFLOAT_16_16_16_16, read, image2D, ray_data_img)
123IMAGE(1, RAYTRACE_RAYTIME_FORMAT, write, image2D, ray_time_img)
124IMAGE(2, RAYTRACE_RADIANCE_FORMAT, write, image2D, ray_radiance_img)
125SAMPLER(0, sampler2DDepth, depth_tx)
126SAMPLER(1, sampler2D, radiance_front_tx)
127SAMPLER(2, sampler2D, radiance_back_tx)
128SAMPLER(4, sampler2D, hiz_front_tx)
129SAMPLER(5, sampler2D, hiz_back_tx)
130STORAGE_BUF(5, read, uint, tiles_coord_buf[])
131COMPUTE_SOURCE("eevee_ray_trace_screen_comp.glsl")
132/* Metal: Provide compiler with hint to tune per-thread resource allocation. */
134SPECIALIZATION_CONSTANT(bool, trace_refraction, true)
135SPECIALIZATION_CONSTANT(int, closure_index, 0)
136COMPUTE_SOURCE("eevee_ray_trace_screen_comp.glsl")
138
139GPU_SHADER_CREATE_INFO(eevee_ray_denoise_spatial)
142TYPEDEF_SOURCE("eevee_defines.hh")
143ADDITIONAL_INFO(eevee_gbuffer_data)
144ADDITIONAL_INFO(eevee_global_ubo)
145ADDITIONAL_INFO(eevee_sampling_data)
146ADDITIONAL_INFO(draw_view)
147ADDITIONAL_INFO(eevee_utility_texture)
148SAMPLER(3, sampler2DDepth, depth_tx)
149IMAGE(0, SFLOAT_16_16_16_16, read, image2D, ray_data_img)
150IMAGE(1, RAYTRACE_RAYTIME_FORMAT, read, image2D, ray_time_img)
151IMAGE(2, RAYTRACE_RADIANCE_FORMAT, read, image2D, ray_radiance_img)
152IMAGE(3, RAYTRACE_RADIANCE_FORMAT, write, image2D, out_radiance_img)
153IMAGE(4, RAYTRACE_VARIANCE_FORMAT, write, image2D, out_variance_img)
154IMAGE(5, SFLOAT_32, write, image2D, out_hit_depth_img)
156STORAGE_BUF(4, read, uint, tiles_coord_buf[])
157/* Metal: Provide compiler with hint to tune per-thread resource allocation. */
159SPECIALIZATION_CONSTANT(int, raytrace_resolution_scale, 2)
160SPECIALIZATION_CONSTANT(bool, skip_denoise, false)
161SPECIALIZATION_CONSTANT(int, closure_index, 0)
162COMPUTE_SOURCE("eevee_ray_denoise_spatial_comp.glsl")
164
165GPU_SHADER_CREATE_INFO(eevee_ray_denoise_temporal)
168TYPEDEF_SOURCE("eevee_defines.hh")
169ADDITIONAL_INFO(eevee_global_ubo)
170ADDITIONAL_INFO(draw_view)
171SAMPLER(0, sampler2D, radiance_history_tx)
172SAMPLER(1, sampler2D, variance_history_tx)
173SAMPLER(2, usampler2DArray, tilemask_history_tx)
174SAMPLER(3, sampler2DDepth, depth_tx)
175IMAGE(0, SFLOAT_32, read, image2D, hit_depth_img)
176IMAGE(1, RAYTRACE_RADIANCE_FORMAT, read, image2D, in_radiance_img)
177IMAGE(2, RAYTRACE_RADIANCE_FORMAT, write, image2D, out_radiance_img)
178IMAGE(3, RAYTRACE_VARIANCE_FORMAT, read, image2D, in_variance_img)
179IMAGE(4, RAYTRACE_VARIANCE_FORMAT, write, image2D, out_variance_img)
180STORAGE_BUF(4, read, uint, tiles_coord_buf[])
181COMPUTE_SOURCE("eevee_ray_denoise_temporal_comp.glsl")
182/* Metal: Provide compiler with hint to tune per-thread resource allocation. */
184SPECIALIZATION_CONSTANT(int, closure_index, 0)
185COMPUTE_SOURCE("eevee_ray_denoise_temporal_comp.glsl")
187
188GPU_SHADER_CREATE_INFO(eevee_ray_denoise_bilateral)
191TYPEDEF_SOURCE("eevee_defines.hh")
192ADDITIONAL_INFO(eevee_gbuffer_data)
193ADDITIONAL_INFO(eevee_global_ubo)
194ADDITIONAL_INFO(eevee_sampling_data)
195ADDITIONAL_INFO(draw_view)
196SAMPLER(1, sampler2DDepth, depth_tx)
197IMAGE(1, RAYTRACE_RADIANCE_FORMAT, read, image2D, in_radiance_img)
198IMAGE(2, RAYTRACE_RADIANCE_FORMAT, write, image2D, out_radiance_img)
199IMAGE(3, RAYTRACE_VARIANCE_FORMAT, read, image2D, in_variance_img)
201STORAGE_BUF(4, read, uint, tiles_coord_buf[])
202SPECIALIZATION_CONSTANT(int, closure_index, 0)
203COMPUTE_SOURCE("eevee_ray_denoise_bilateral_comp.glsl")
205
206GPU_SHADER_CREATE_INFO(eevee_horizon_setup)
209TYPEDEF_SOURCE("eevee_defines.hh")
210ADDITIONAL_INFO(eevee_gbuffer_data)
211ADDITIONAL_INFO(eevee_global_ubo)
212ADDITIONAL_INFO(draw_view)
213SAMPLER(0, sampler2DDepth, depth_tx)
214SAMPLER(1, sampler2D, in_radiance_tx)
215IMAGE(2, RAYTRACE_RADIANCE_FORMAT, write, image2D, out_radiance_img)
216IMAGE(3, UNORM_10_10_10_2, write, image2D, out_normal_img)
217COMPUTE_SOURCE("eevee_horizon_setup_comp.glsl")
219
220GPU_SHADER_CREATE_INFO(eevee_horizon_scan)
223TYPEDEF_SOURCE("eevee_defines.hh")
224ADDITIONAL_INFO(eevee_gbuffer_data)
225ADDITIONAL_INFO(eevee_global_ubo)
226ADDITIONAL_INFO(eevee_sampling_data)
227ADDITIONAL_INFO(eevee_utility_texture)
228ADDITIONAL_INFO(eevee_hiz_data)
229ADDITIONAL_INFO(draw_view)
230SPECIALIZATION_CONSTANT(int, fast_gi_slice_count, 2)
231SPECIALIZATION_CONSTANT(int, fast_gi_step_count, 8)
232SPECIALIZATION_CONSTANT(bool, fast_gi_ao_only, false)
233SAMPLER(0, sampler2D, screen_radiance_tx)
234SAMPLER(1, sampler2D, screen_normal_tx)
235IMAGE(2, SFLOAT_16_16_16_16, write, image2D, horizon_radiance_0_img)
236IMAGE(3, UNORM_8_8_8_8, write, image2D, horizon_radiance_1_img)
237IMAGE(4, UNORM_8_8_8_8, write, image2D, horizon_radiance_2_img)
238IMAGE(5, UNORM_8_8_8_8, write, image2D, horizon_radiance_3_img)
239STORAGE_BUF(7, read, uint, tiles_coord_buf[])
240/* Metal: Provide compiler with hint to tune per-thread resource allocation. */
242COMPUTE_SOURCE("eevee_horizon_scan_comp.glsl")
244
245GPU_SHADER_CREATE_INFO(eevee_horizon_denoise)
248TYPEDEF_SOURCE("eevee_defines.hh")
249ADDITIONAL_INFO(eevee_global_ubo)
250ADDITIONAL_INFO(eevee_sampling_data)
251ADDITIONAL_INFO(eevee_hiz_data)
252ADDITIONAL_INFO(draw_view)
253SAMPLER(2, sampler2D, in_sh_0_tx)
254SAMPLER(4, sampler2D, in_sh_1_tx)
255SAMPLER(5, sampler2D, in_sh_2_tx)
256SAMPLER(6, sampler2D, in_sh_3_tx)
257SAMPLER(7, sampler2D, screen_normal_tx)
258IMAGE(2, SFLOAT_16_16_16_16, write, image2D, out_sh_0_img)
259IMAGE(3, UNORM_8_8_8_8, write, image2D, out_sh_1_img)
260IMAGE(4, UNORM_8_8_8_8, write, image2D, out_sh_2_img)
261IMAGE(5, UNORM_8_8_8_8, write, image2D, out_sh_3_img)
262STORAGE_BUF(7, read, uint, tiles_coord_buf[])
263COMPUTE_SOURCE("eevee_horizon_denoise_comp.glsl")
265
266GPU_SHADER_CREATE_INFO(eevee_horizon_resolve)
269TYPEDEF_SOURCE("eevee_defines.hh")
270ADDITIONAL_INFO(eevee_gbuffer_data)
271ADDITIONAL_INFO(eevee_global_ubo)
272ADDITIONAL_INFO(eevee_sampling_data)
273ADDITIONAL_INFO(eevee_lightprobe_data)
274ADDITIONAL_INFO(draw_view)
275SAMPLER(1, sampler2DDepth, depth_tx)
276SAMPLER(2, sampler2D, horizon_radiance_0_tx)
277SAMPLER(3, sampler2D, horizon_radiance_1_tx)
278SAMPLER(4, sampler2D, horizon_radiance_2_tx)
279SAMPLER(5, sampler2D, horizon_radiance_3_tx)
280SAMPLER(8, sampler2D, screen_normal_tx)
281IMAGE(3, RAYTRACE_RADIANCE_FORMAT, read_write, image2D, closure0_img)
282IMAGE(4, RAYTRACE_RADIANCE_FORMAT, read_write, image2D, closure1_img)
283IMAGE(5, RAYTRACE_RADIANCE_FORMAT, read_write, image2D, closure2_img)
284STORAGE_BUF(7, read, uint, tiles_coord_buf[])
285/* Metal: Provide compiler with hint to tune per-thread resource allocation. */
287COMPUTE_SOURCE("eevee_horizon_resolve_comp.glsl")
289
290#undef image_out
291#undef image_in
292
unsigned int uint
return true
#define RAYTRACE_VARIANCE_FORMAT
#define RAYTRACE_TILEMASK_FORMAT
#define RAYTRACE_GROUP_SIZE
#define RAYTRACE_RAYTIME_FORMAT
#define RAYTRACE_RADIANCE_FORMAT
#define GPU_SHADER_CREATE_INFO(_info)
#define GPU_SHADER_CREATE_END()
#define TYPEDEF_SOURCE(filename)
#define SAMPLER(slot, type, name)
#define IMAGE_FREQ(slot, format, qualifiers, type, name, freq)
#define SPECIALIZATION_CONSTANT(type, name, default_value)
#define ADDITIONAL_INFO(info_name)
#define DEFINE(name)
#define STORAGE_BUF(slot, qualifiers, type_name, name)
#define LOCAL_GROUP_SIZE(...)
#define IMAGE(slot, format, qualifiers, type, name)
#define MTL_MAX_TOTAL_THREADS_PER_THREADGROUP(value)
#define COMPUTE_SOURCE(filename)
#define DO_STATIC_COMPILATION()
ImageBase< uint, 2, true > uimage2DArray
ImageBase< float, 2 > image2D
SamplerBase< uint, 2, false, true > usampler2DArray
SamplerBase< float, 2, false, false, false, true > sampler2DDepth
SamplerBase< float, 2 > sampler2D