Blender V5.0
eevee_volume_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
10# include "draw_view_infos.hh"
11# include "eevee_common_infos.hh"
12# include "eevee_volume_shared.hh"
14
15# define SPHERE_PROBE
16#endif
17
19
20#pragma once
21
22/* Used for shaders that need the final accumulated volume transmittance and scattering. */
23GPU_SHADER_CREATE_INFO(eevee_volume_lib)
24TYPEDEF_SOURCE("eevee_defines.hh")
25ADDITIONAL_INFO(eevee_global_ubo)
26ADDITIONAL_INFO(draw_view)
27SAMPLER(VOLUME_SCATTERING_TEX_SLOT, sampler3D, volume_scattering_tx)
28SAMPLER(VOLUME_TRANSMITTANCE_TEX_SLOT, sampler3D, volume_transmittance_tx)
30
31GPU_SHADER_CREATE_INFO(eevee_volume_scatter)
33TYPEDEF_SOURCE("eevee_defines.hh")
34ADDITIONAL_INFO(eevee_global_ubo)
35ADDITIONAL_INFO(draw_resource_id_varying)
36ADDITIONAL_INFO(draw_view)
37ADDITIONAL_INFO(eevee_light_data)
38ADDITIONAL_INFO(eevee_lightprobe_data)
39ADDITIONAL_INFO(eevee_shadow_data)
40ADDITIONAL_INFO(eevee_sampling_data)
41ADDITIONAL_INFO(eevee_utility_texture)
42ADDITIONAL_INFO(eevee_volume_properties_data)
43SAMPLER(0, sampler3D, scattering_history_tx)
44SAMPLER(1, sampler3D, extinction_history_tx)
45IMAGE(5, UFLOAT_11_11_10, write, image3D, out_scattering_img)
46IMAGE(6, UFLOAT_11_11_10, write, image3D, out_extinction_img)
47COMPUTE_SOURCE("eevee_volume_scatter_comp.glsl")
50
51GPU_SHADER_CREATE_INFO(eevee_volume_scatter_with_lights)
52ADDITIONAL_INFO(eevee_volume_scatter)
53DEFINE("VOLUME_LIGHTING")
54DEFINE("VOLUME_IRRADIANCE")
55DEFINE("VOLUME_SHADOW")
56SAMPLER(9, sampler3D, extinction_tx)
59
60GPU_SHADER_CREATE_INFO(eevee_volume_occupancy_convert)
61TYPEDEF_SOURCE("eevee_defines.hh")
62ADDITIONAL_INFO(eevee_global_ubo)
63ADDITIONAL_INFO(gpu_fullscreen)
64BUILTINS(BuiltinBits::TEXTURE_ATOMIC)
65IMAGE(VOLUME_HIT_DEPTH_SLOT, SFLOAT_32, read, image3D, hit_depth_img)
66IMAGE(VOLUME_HIT_COUNT_SLOT, UINT_32, read_write, uimage2D, hit_count_img)
67IMAGE(VOLUME_OCCUPANCY_SLOT, UINT_32, read_write, uimage3DAtomic, occupancy_img)
68FRAGMENT_SOURCE("eevee_occupancy_convert_frag.glsl")
71
72GPU_SHADER_CREATE_INFO(eevee_volume_integration)
73TYPEDEF_SOURCE("eevee_defines.hh")
74ADDITIONAL_INFO(eevee_global_ubo)
75ADDITIONAL_INFO(draw_view)
76ADDITIONAL_INFO(eevee_sampling_data)
77COMPUTE_SOURCE("eevee_volume_integration_comp.glsl")
79/* Inputs. */
80SAMPLER(0, sampler3D, in_scattering_tx)
81SAMPLER(1, sampler3D, in_extinction_tx)
82/* Outputs. */
83IMAGE(0, UFLOAT_11_11_10, write, image3D, out_scattering_img)
84IMAGE(1, UFLOAT_11_11_10, write, image3D, out_transmittance_img)
87
88GPU_SHADER_CREATE_INFO(eevee_volume_resolve)
89TYPEDEF_SOURCE("eevee_defines.hh")
90ADDITIONAL_INFO(eevee_volume_lib)
91ADDITIONAL_INFO(gpu_fullscreen)
92ADDITIONAL_INFO(eevee_render_pass_out)
93ADDITIONAL_INFO(eevee_hiz_data)
94FRAGMENT_SOURCE("eevee_volume_resolve_frag.glsl")
95FRAGMENT_OUT_DUAL(0, float4, out_radiance, SRC_0)
96FRAGMENT_OUT_DUAL(0, float4, out_transmittance, SRC_1)
#define VOLUME_HIT_DEPTH_SLOT
#define VOLUME_GROUP_SIZE
#define VOLUME_HIT_COUNT_SLOT
#define VOLUME_OCCUPANCY_SLOT
#define VOLUME_TRANSMITTANCE_TEX_SLOT
#define VOLUME_INTEGRATION_GROUP_SIZE
#define VOLUME_SCATTERING_TEX_SLOT
#define GPU_SHADER_CREATE_INFO(_info)
#define GPU_SHADER_CREATE_END()
#define TYPEDEF_SOURCE(filename)
#define FRAGMENT_OUT_DUAL(slot, type, name, blend)
#define SAMPLER(slot, type, name)
#define FRAGMENT_SOURCE(filename)
#define ADDITIONAL_INFO(info_name)
#define DEFINE(name)
#define BUILTINS(builtin)
#define LOCAL_GROUP_SIZE(...)
#define IMAGE(slot, format, qualifiers, type, name)
#define COMPUTE_SOURCE(filename)
#define DO_STATIC_COMPILATION()
ImageBase< uint, 2 > uimage2D
ImageBase< uint, 3, false, true > uimage3DAtomic
ImageBase< float, 3 > image3D
SamplerBase< float, 3 > sampler3D