Blender V5.0
eevee_film_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"
11# include "eevee_film_shared.hh"
14#endif
15
16#include "eevee_defines.hh"
18
19GPU_SHADER_CREATE_INFO(eevee_film_base)
20SAMPLER(0, sampler2DDepth, depth_tx)
21SAMPLER(1, sampler2D, combined_tx)
22SAMPLER(2, sampler2D, vector_tx)
23SAMPLER(3, sampler2DArray, rp_color_tx)
24SAMPLER(4, sampler2DArray, rp_value_tx)
25/* Color History for TAA needs to be sampler to leverage bilinear sampling. */
26SAMPLER(5, sampler2D, in_combined_tx)
27SAMPLER(6, sampler2D, cryptomatte_tx)
28IMAGE(0, SFLOAT_32, read, image2DArray, in_weight_img)
29IMAGE(1, SFLOAT_32, write, image2DArray, out_weight_img)
30SPECIALIZATION_CONSTANT(uint, enabled_categories, 1)
31SPECIALIZATION_CONSTANT(int, samples_len, 9)
32SPECIALIZATION_CONSTANT(bool, use_reprojection, true)
33SPECIALIZATION_CONSTANT(int, scaling_factor, 1)
34SPECIALIZATION_CONSTANT(int, combined_id, 0)
35SPECIALIZATION_CONSTANT(int, display_id, -1)
37TYPEDEF_SOURCE("eevee_defines.hh")
38ADDITIONAL_INFO(eevee_global_ubo)
39ADDITIONAL_INFO(eevee_velocity_camera)
40ADDITIONAL_INFO(draw_view)
42
43GPU_SHADER_CREATE_INFO(eevee_film)
44/* Color History for TAA needs to be sampler to leverage bilinear sampling. */
45// IMAGE(2, SFLOAT_16_16_16_16, read, image2D, in_combined_img)
46IMAGE(3, SFLOAT_16_16_16_16, write, image2D, out_combined_img)
47IMAGE(4, SFLOAT_32, read_write, image2D, depth_img)
48IMAGE(5, SFLOAT_16_16_16_16, read_write, image2DArray, color_accum_img)
49IMAGE(6, SFLOAT_16, read_write, image2DArray, value_accum_img)
50IMAGE(7, SFLOAT_32_32_32_32, read_write, image2DArray, cryptomatte_img)
51ADDITIONAL_INFO(eevee_film_base)
53
54GPU_SHADER_CREATE_INFO(eevee_film_frag)
56FRAGMENT_OUT(0, float4, out_color)
57FRAGMENT_SOURCE("eevee_film_frag.glsl")
58ADDITIONAL_INFO(gpu_fullscreen)
59ADDITIONAL_INFO(eevee_film)
62
63GPU_SHADER_CREATE_INFO(eevee_film_comp)
66COMPUTE_SOURCE("eevee_film_comp.glsl")
67ADDITIONAL_INFO(eevee_film)
69
70GPU_SHADER_CREATE_INFO(eevee_film_cryptomatte_post)
72IMAGE(0, SFLOAT_32_32_32_32, read_write, image2DArray, cryptomatte_img)
73PUSH_CONSTANT(int, cryptomatte_layer_len)
74PUSH_CONSTANT(int, cryptomatte_samples_per_layer)
76COMPUTE_SOURCE("eevee_film_cryptomatte_post_comp.glsl")
77ADDITIONAL_INFO(eevee_global_ubo)
78TYPEDEF_SOURCE("eevee_defines.hh")
80
81GPU_SHADER_CREATE_INFO(eevee_film_copy_frag)
83IMAGE(3, SFLOAT_16_16_16_16, read, image2D, out_combined_img)
84IMAGE(4, SFLOAT_32, read, image2D, depth_img)
85IMAGE(5, SFLOAT_16_16_16_16, read, image2DArray, color_accum_img)
86IMAGE(6, SFLOAT_16, read, image2DArray, value_accum_img)
87IMAGE(7, SFLOAT_32_32_32_32, read, image2DArray, cryptomatte_img)
89FRAGMENT_OUT(0, float4, out_color)
90FRAGMENT_SOURCE("eevee_film_copy_frag.glsl")
91DEFINE("FILM_COPY")
92ADDITIONAL_INFO(gpu_fullscreen)
93ADDITIONAL_INFO(eevee_film_base)
95
96/* The combined pass is stored into its own 2D texture with a format of
97 * SFLOAT_16_16_16_16. */
98GPU_SHADER_CREATE_INFO(eevee_film_pass_convert_combined)
100PUSH_CONSTANT(int2, offset)
101SAMPLER(0, sampler2D, input_tx)
102IMAGE(0, SFLOAT_16_16_16_16, write, image2D, output_img)
103COMPUTE_SOURCE("eevee_film_pass_convert_comp.glsl")
106
107/* The depth pass is stored into its own 2D texture with a format of
108 * SFLOAT_32. */
109GPU_SHADER_CREATE_INFO(eevee_film_pass_convert_depth)
111PUSH_CONSTANT(int2, offset)
112SAMPLER(0, sampler2D, input_tx)
113IMAGE(0, SFLOAT_32, write, image2D, output_img)
114COMPUTE_SOURCE("eevee_film_pass_convert_comp.glsl")
117
118/* Value passes are stored in a slice of a 2D texture array with a format of
119 * SFLOAT_16. */
120GPU_SHADER_CREATE_INFO(eevee_film_pass_convert_value)
122PUSH_CONSTANT(int2, offset)
123DEFINE("IS_ARRAY_INPUT")
124SAMPLER(0, sampler2DArray, input_tx)
125IMAGE(0, SFLOAT_16, write, image2D, output_img)
126COMPUTE_SOURCE("eevee_film_pass_convert_comp.glsl")
129
130/* Color passes are stored in a slice of a 2D texture array with a format of
131 * SFLOAT_16_16_16_16. */
132GPU_SHADER_CREATE_INFO(eevee_film_pass_convert_color)
134PUSH_CONSTANT(int2, offset)
135DEFINE("IS_ARRAY_INPUT")
136SAMPLER(0, sampler2DArray, input_tx)
137IMAGE(0, SFLOAT_16_16_16_16, write, image2D, output_img)
138COMPUTE_SOURCE("eevee_film_pass_convert_comp.glsl")
141
142/* Cryptomatte passes are stored in a slice of a 2D texture array with a format of
143 * SFLOAT_32_32_32_32. */
144GPU_SHADER_CREATE_INFO(eevee_film_pass_convert_cryptomatte)
146PUSH_CONSTANT(int2, offset)
147DEFINE("IS_ARRAY_INPUT")
148SAMPLER(0, sampler2DArray, input_tx)
149IMAGE(0, SFLOAT_32_32_32_32, write, image2D, output_img)
150COMPUTE_SOURCE("eevee_film_pass_convert_comp.glsl")
unsigned int uint
return true
#define FILM_GROUP_SIZE
#define GPU_SHADER_CREATE_INFO(_info)
#define GPU_SHADER_CREATE_END()
#define TYPEDEF_SOURCE(filename)
#define SAMPLER(slot, type, name)
#define FRAGMENT_SOURCE(filename)
#define SPECIALIZATION_CONSTANT(type, name, default_value)
#define ADDITIONAL_INFO(info_name)
#define PUSH_CONSTANT(type, name)
#define DEFINE(name)
#define FRAGMENT_OUT(slot, type, name)
#define LOCAL_GROUP_SIZE(...)
#define IMAGE(slot, format, qualifiers, type, name)
#define COMPUTE_SOURCE(filename)
#define DO_STATIC_COMPILATION()
#define DEPTH_WRITE(value)
ImageBase< float, 2, true > image2DArray
ImageBase< float, 2 > image2D
SamplerBase< float, 2, false, false, false, true > sampler2DDepth
SamplerBase< float, 2, false, true > sampler2DArray
SamplerBase< float, 2 > sampler2D
std::optional< std::string > normal_id