Blender V4.3
eevee_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
6
7#pragma once
8
9/* Used for shaders that need the final accumulated volume transmittance and scattering. */
11 .additional_info("eevee_shared", "eevee_global_ubo", "draw_view")
12 .sampler(VOLUME_SCATTERING_TEX_SLOT, ImageType::FLOAT_3D, "volume_scattering_tx")
13 .sampler(VOLUME_TRANSMITTANCE_TEX_SLOT, ImageType::FLOAT_3D, "volume_transmittance_tx");
14
15GPU_SHADER_CREATE_INFO(eevee_volume_properties_data)
16 .additional_info("eevee_global_ubo")
19 Qualifier::READ,
20 ImageType::FLOAT_3D,
21 "in_scattering_img")
24 Qualifier::READ,
25 ImageType::FLOAT_3D,
26 "in_extinction_img")
29 Qualifier::READ,
30 ImageType::FLOAT_3D,
31 "in_emission_img")
32 .image(
33 VOLUME_PROP_PHASE_IMG_SLOT, GPU_R16F, Qualifier::READ, ImageType::FLOAT_3D, "in_phase_img")
36 Qualifier::READ,
37 ImageType::FLOAT_3D,
38 "in_phase_weight_img");
39
40GPU_SHADER_CREATE_INFO(eevee_volume_scatter)
42 .additional_info("eevee_shared")
43 .additional_info("eevee_global_ubo")
44 .additional_info("draw_resource_id_varying")
45 .additional_info("draw_view")
46 .additional_info("eevee_light_data")
47 .additional_info("eevee_lightprobe_data")
48 .additional_info("eevee_shadow_data")
49 .additional_info("eevee_sampling_data")
50 .additional_info("eevee_utility_texture")
51 .additional_info("eevee_volume_properties_data")
52 .sampler(0, ImageType::FLOAT_3D, "scattering_history_tx")
53 .sampler(1, ImageType::FLOAT_3D, "extinction_history_tx")
54 .image(5, GPU_R11F_G11F_B10F, Qualifier::WRITE, ImageType::FLOAT_3D, "out_scattering_img")
55 .image(6, GPU_R11F_G11F_B10F, Qualifier::WRITE, ImageType::FLOAT_3D, "out_extinction_img")
56 .compute_source("eevee_volume_scatter_comp.glsl")
57 .do_static_compilation(true);
58
59GPU_SHADER_CREATE_INFO(eevee_volume_scatter_with_lights)
60 .additional_info("eevee_volume_scatter")
61 .define("VOLUME_LIGHTING")
62 .define("VOLUME_IRRADIANCE")
63 .define("VOLUME_SHADOW")
64 .sampler(9, ImageType::FLOAT_3D, "extinction_tx")
65 .do_static_compilation(true);
66
67GPU_SHADER_CREATE_INFO(eevee_volume_occupancy_convert)
68 .additional_info("eevee_shared", "eevee_global_ubo", "draw_fullscreen")
69 .builtins(BuiltinBits::TEXTURE_ATOMIC)
70 .image(VOLUME_HIT_DEPTH_SLOT, GPU_R32F, Qualifier::READ, ImageType::FLOAT_3D, "hit_depth_img")
73 Qualifier::READ_WRITE,
74 ImageType::UINT_2D,
75 "hit_count_img")
78 Qualifier::READ_WRITE,
79 ImageType::UINT_3D_ATOMIC,
80 "occupancy_img")
81 .fragment_source("eevee_occupancy_convert_frag.glsl")
82 .do_static_compilation(true);
83
84GPU_SHADER_CREATE_INFO(eevee_volume_integration)
85 .additional_info("eevee_shared", "eevee_global_ubo", "draw_view")
86 .additional_info("eevee_sampling_data")
87 .compute_source("eevee_volume_integration_comp.glsl")
89 /* Inputs. */
90 .sampler(0, ImageType::FLOAT_3D, "in_scattering_tx")
91 .sampler(1, ImageType::FLOAT_3D, "in_extinction_tx")
92 /* Outputs. */
93 .image(0, GPU_R11F_G11F_B10F, Qualifier::WRITE, ImageType::FLOAT_3D, "out_scattering_img")
94 .image(1, GPU_R11F_G11F_B10F, Qualifier::WRITE, ImageType::FLOAT_3D, "out_transmittance_img")
95 .do_static_compilation(true);
96
97GPU_SHADER_CREATE_INFO(eevee_volume_resolve)
98 .additional_info("eevee_shared")
99 .additional_info("eevee_volume_lib")
100 .additional_info("draw_fullscreen")
101 .additional_info("eevee_render_pass_out")
102 .additional_info("eevee_hiz_data")
103 .fragment_source("eevee_volume_resolve_frag.glsl")
104 .fragment_out(0, Type::VEC4, "out_radiance", DualBlend::SRC_0)
105 .fragment_out(0, Type::VEC4, "out_transmittance", DualBlend::SRC_1)
107 .do_static_compilation(true);
#define VOLUME_PROP_SCATTERING_IMG_SLOT
#define VOLUME_HIT_DEPTH_SLOT
#define VOLUME_GROUP_SIZE
#define VOLUME_PROP_PHASE_WEIGHT_IMG_SLOT
#define VOLUME_HIT_COUNT_SLOT
#define VOLUME_OCCUPANCY_SLOT
#define VOLUME_TRANSMITTANCE_TEX_SLOT
#define VOLUME_PROP_EXTINCTION_IMG_SLOT
#define VOLUME_PROP_PHASE_IMG_SLOT
#define VOLUME_SCATTERING_TEX_SLOT
#define VOLUME_PROP_EMISSION_IMG_SLOT
DualBlend::SRC_0 eevee_volume_lib
SHADOW_TILEMAP_RES tiles_buf[] statistics_buf render_view_buf[SHADOW_VIEW_MAX] GPU_R32UI
in_scattering_img in_emission_img GPU_R16F
additional_info("eevee_shared", "eevee_global_ubo", "draw_fullscreen") .builtins(BuiltinBits VOLUME_INTEGRATION_GROUP_SIZE
GPU_R11F_G11F_B10F
#define GPU_SHADER_CREATE_INFO(_info)