Blender V5.0
eevee_lightprobe_sphere_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"
14
15# define SPHERE_PROBE
16#endif
17
18#include "eevee_defines.hh"
20
21/* Sample cubemap and remap into an octahedral texture. */
22GPU_SHADER_CREATE_INFO(eevee_lightprobe_sphere_remap)
24SPECIALIZATION_CONSTANT(bool, extract_sh, true)
25SPECIALIZATION_CONSTANT(bool, extract_sun, true)
26PUSH_CONSTANT(int4, probe_coord_packed)
27PUSH_CONSTANT(int4, write_coord_packed)
28PUSH_CONSTANT(int4, world_coord_packed)
29SAMPLER(0, samplerCube, cubemap_tx)
30SAMPLER(1, sampler2DArray, atlas_tx)
31STORAGE_BUF(0, write, SphereProbeHarmonic, out_sh[])
32STORAGE_BUF(1, write, SphereProbeSunLight, out_sun[])
33IMAGE(0, SFLOAT_16_16_16_16, write, image2DArray, atlas_img)
34COMPUTE_SOURCE("eevee_lightprobe_sphere_remap_comp.glsl")
35TYPEDEF_SOURCE("eevee_defines.hh")
36TYPEDEF_SOURCE("eevee_lightprobe_shared.hh")
37ADDITIONAL_INFO(eevee_global_ubo)
40
41GPU_SHADER_CREATE_INFO(eevee_lightprobe_sphere_irradiance)
43PUSH_CONSTANT(int3, probe_remap_dispatch_size)
44STORAGE_BUF(0, read, SphereProbeHarmonic, in_sh[])
45STORAGE_BUF(1, write, SphereProbeHarmonic, out_sh)
46TYPEDEF_SOURCE("eevee_defines.hh")
47TYPEDEF_SOURCE("eevee_lightprobe_shared.hh")
49COMPUTE_SOURCE("eevee_lightprobe_sphere_irradiance_comp.glsl")
51
52GPU_SHADER_CREATE_INFO(eevee_lightprobe_sphere_sunlight)
54PUSH_CONSTANT(int3, probe_remap_dispatch_size)
55TYPEDEF_SOURCE("eevee_defines.hh")
56TYPEDEF_SOURCE("eevee_lightprobe_shared.hh")
57TYPEDEF_SOURCE("eevee_light_shared.hh")
58TYPEDEF_SOURCE("eevee_uniform_shared.hh")
59STORAGE_BUF(0, read, SphereProbeSunLight, in_sun[])
60STORAGE_BUF(1, write, LightData, sunlight_buf)
62COMPUTE_SOURCE("eevee_lightprobe_sphere_sunlight_comp.glsl")
64
65GPU_SHADER_CREATE_INFO(eevee_lightprobe_sphere_select)
67STORAGE_BUF(0, read_write, SphereProbeData, lightprobe_sphere_buf[SPHERE_PROBE_MAX])
68PUSH_CONSTANT(int, lightprobe_sphere_count)
69TYPEDEF_SOURCE("eevee_defines.hh")
70TYPEDEF_SOURCE("eevee_lightprobe_shared.hh")
71ADDITIONAL_INFO(eevee_sampling_data)
72ADDITIONAL_INFO(eevee_global_ubo)
73ADDITIONAL_INFO(eevee_volume_probe_data)
74COMPUTE_SOURCE("eevee_lightprobe_sphere_select_comp.glsl")
77
78GPU_SHADER_CREATE_INFO(eevee_lightprobe_sphere_convolve)
80TYPEDEF_SOURCE("eevee_defines.hh")
81TYPEDEF_SOURCE("eevee_lightprobe_shared.hh")
82PUSH_CONSTANT(int4, probe_coord_packed)
83PUSH_CONSTANT(int4, write_coord_packed)
84PUSH_CONSTANT(int4, read_coord_packed)
85PUSH_CONSTANT(int, read_lod)
86SAMPLER(0, samplerCube, cubemap_tx)
87SAMPLER(1, sampler2DArray, in_atlas_mip_tx)
88IMAGE(1, SFLOAT_16_16_16_16, write, image2DArray, out_atlas_mip_img)
89COMPUTE_SOURCE("eevee_lightprobe_sphere_convolve_comp.glsl")
92
93GPU_SHADER_INTERFACE_INFO(eevee_display_lightprobe_sphere_iface)
95SMOOTH(float2, lP)
96FLAT(int, probe_index)
98
99GPU_SHADER_CREATE_INFO(eevee_display_lightprobe_sphere)
100TYPEDEF_SOURCE("eevee_defines.hh")
101TYPEDEF_SOURCE("eevee_lightprobe_shared.hh")
102ADDITIONAL_INFO(draw_view)
103ADDITIONAL_INFO(eevee_lightprobe_sphere_data)
104STORAGE_BUF(0, read, SphereProbeDisplayData, display_data_buf[])
105VERTEX_SOURCE("eevee_display_lightprobe_sphere_vert.glsl")
106VERTEX_OUT(eevee_display_lightprobe_sphere_iface)
107FRAGMENT_SOURCE("eevee_display_lightprobe_sphere_frag.glsl")
108FRAGMENT_OUT(0, float4, out_color)
109BUILTINS(BuiltinBits::CLIP_CONTROL)
112
113GPU_SHADER_INTERFACE_INFO(eevee_display_lightprobe_planar_iface)
114FLAT(float3, probe_normal)
115FLAT(int, probe_index)
117
118GPU_SHADER_CREATE_INFO(eevee_display_lightprobe_planar)
119PUSH_CONSTANT(int4, world_coord_packed)
120TYPEDEF_SOURCE("eevee_defines.hh")
121TYPEDEF_SOURCE("eevee_lightprobe_shared.hh")
122ADDITIONAL_INFO(draw_view)
123ADDITIONAL_INFO(eevee_lightprobe_planar_data)
124ADDITIONAL_INFO(eevee_lightprobe_sphere_data)
125STORAGE_BUF(0, read, PlanarProbeDisplayData, display_data_buf[])
126VERTEX_SOURCE("eevee_display_lightprobe_planar_vert.glsl")
127VERTEX_OUT(eevee_display_lightprobe_planar_iface)
128FRAGMENT_SOURCE("eevee_display_lightprobe_planar_frag.glsl")
129FRAGMENT_OUT(0, float4, out_color)
130BUILTINS(BuiltinBits::CLIP_CONTROL)
133
return true
#define SPHERE_PROBE_REMAP_GROUP_SIZE
#define SPHERE_PROBE_SH_GROUP_SIZE
#define SPHERE_PROBE_SELECT_GROUP_SIZE
#define SPHERE_PROBE_MAX
#define SPHERE_PROBE_GROUP_SIZE
#define GPU_SHADER_INTERFACE_END()
#define GPU_SHADER_INTERFACE_INFO(_interface)
#define GPU_SHADER_CREATE_INFO(_info)
#define GPU_SHADER_CREATE_END()
#define TYPEDEF_SOURCE(filename)
#define VERTEX_OUT(stage_interface)
#define SMOOTH(type, name)
#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 FLAT(type, name)
#define FRAGMENT_OUT(slot, type, name)
#define BUILTINS(builtin)
#define STORAGE_BUF(slot, qualifiers, type_name, name)
#define VERTEX_SOURCE(filename)
#define LOCAL_GROUP_SIZE(...)
#define IMAGE(slot, format, qualifiers, type, name)
#define COMPUTE_SOURCE(filename)
#define DO_STATIC_COMPILATION()
ImageBase< float, 2, true > image2DArray
SamplerBase< float, 2, false, true > sampler2DArray
SamplerBase< float, 2, true > samplerCube