GPU: GLSL-C++ Stubs: Make compilation possible

- Add `main` workaournd.
- Define out create info class when compiling with stubs.
- Move interfaces and info namespace to global namespace.
This commit is contained in:
Clément Foucault
2024-11-01 01:47:48 +01:00
parent 01236be188
commit d9ff375e7e
2 changed files with 147 additions and 251 deletions

View File

@@ -13,7 +13,7 @@
#pragma once
#if !defined(GLSL_CPP_STUBS)
#if !defined(GPU_SHADER)
# include "BLI_hash.hh"
# include "BLI_string_ref.hh"
# include "BLI_utildefines_variadic.h"
@@ -39,22 +39,20 @@
/* Used for primitive expansion. */
#define GPU_SSBO_INDEX_BUF_SLOT 7
namespace blender::gpu::shader {
#if defined(GLSL_CPP_STUBS)
# define GPU_SHADER_NAMED_INTERFACE_INFO(_interface, _inst_name) \
namespace create_info::interface::_interface { \
namespace interface::_interface { \
struct {
# define GPU_SHADER_NAMED_INTERFACE_END(_inst_name) \
} \
_inst_name; \
}
# define GPU_SHADER_INTERFACE_INFO(_interface) namespace create_info::interface::_interface {
# define GPU_SHADER_INTERFACE_INFO(_interface) namespace interface::_interface {
# define GPU_SHADER_INTERFACE_END() }
# define GPU_SHADER_CREATE_INFO(_info) \
namespace create_info::_info { \
namespace _info { \
namespace gl_VertexShader { \
} \
namespace gl_FragmentShader { \
@@ -63,19 +61,19 @@ namespace blender::gpu::shader {
}
# define GPU_SHADER_CREATE_END() }
# define SHADER_LIBRARY_CREATE_INFO(_info) using namespace create_info::_info;
# define SHADER_LIBRARY_CREATE_INFO(_info) using namespace _info;
# define VERTEX_SHADER_CREATE_INFO(_info) \
using namespace ::gl_VertexShader; \
using namespace create_info::_info::gl_VertexShader; \
using namespace create_info::_info;
using namespace _info::gl_VertexShader; \
using namespace _info;
# define FRAGMENT_SHADER_CREATE_INFO(_info) \
using namespace ::gl_FragmentShader; \
using namespace create_info::_info::gl_FragmentShader; \
using namespace create_info::_info;
using namespace _info::gl_FragmentShader; \
using namespace _info;
# define COMPUTE_SHADER_CREATE_INFO(_info) \
using namespace ::gl_ComputeShader; \
using namespace create_info::_info::gl_ComputeShader; \
using namespace create_info::_info;
using namespace _info::gl_ComputeShader; \
using namespace _info;
#elif !defined(GPU_SHADER_CREATE_INFO)
/* Helps intellisense / auto-completion inside info files. */
@@ -216,10 +214,10 @@ namespace blender::gpu::shader {
namespace gl_VertexShader { \
const type name = {}; \
}
# define VERTEX_OUT(stage_interface) using namespace create_info::interface::stage_interface;
# define VERTEX_OUT(stage_interface) using namespace interface::stage_interface;
/* TO REMOVE. */
# define GEOMETRY_LAYOUT(...)
# define GEOMETRY_OUT(stage_interface) using namespace create_info::interface::stage_interface;
# define GEOMETRY_OUT(stage_interface) using namespace interface::stage_interface;
# define SUBPASS_IN(slot, type, name, rog) const type name = {};
@@ -239,10 +237,10 @@ namespace blender::gpu::shader {
# define EARLY_FRAGMENT_TEST(enable)
# define DEPTH_WRITE(value)
# define SPECIALIZATION_CONSTANT(type, name, default_value) constexpr type name = {};
# define SPECIALIZATION_CONSTANT(type, name, default_value) constexpr type name = type(1);
# define PUSH_CONSTANT(type, name) const type name = {};
# define PUSH_CONSTANT_ARRAY(type, name, array_size) const type name[array_size] = {};
# define PUSH_CONSTANT(type, name) const type name = type(1);
# define PUSH_CONSTANT_ARRAY(type, name, array_size) const type name[array_size] = {type(1)};
# define UNIFORM_BUF(slot, type_name, name) const type_name name = {};
# define UNIFORM_BUF_FREQ(slot, type_name, name, freq) const type_name name = {};
@@ -272,13 +270,35 @@ namespace blender::gpu::shader {
/* TO REMOVE. */
# define METAL_BACKEND_ONLY()
# define ADDITIONAL_INFO(info_name) using namespace create_info::info_name;
# define ADDITIONAL_INFO(info_name) \
using namespace info_name; \
using namespace info_name::gl_FragmentShader; \
using namespace info_name::gl_VertexShader;
# define TYPEDEF_SOURCE(filename)
# define MTL_MAX_TOTAL_THREADS_PER_THREADGROUP(value) \
.mtl_max_total_threads_per_threadgroup(value)
#endif
#define _INFO_EXPAND2(a, b) ADDITIONAL_INFO(a) ADDITIONAL_INFO(b)
#define _INFO_EXPAND3(a, b, c) _INFO_EXPAND2(a, b) ADDITIONAL_INFO(c)
#define _INFO_EXPAND4(a, b, c, d) _INFO_EXPAND3(a, b, c) ADDITIONAL_INFO(d)
#define _INFO_EXPAND5(a, b, c, d, e) _INFO_EXPAND4(a, b, c, d) ADDITIONAL_INFO(e)
#define _INFO_EXPAND6(a, b, c, d, e, f) _INFO_EXPAND5(a, b, c, d, e) ADDITIONAL_INFO(f)
#define ADDITIONAL_INFO_EXPAND(...) VA_NARGS_CALL_OVERLOAD(_INFO_EXPAND, __VA_ARGS__)
#define CREATE_INFO_VARIANT(name, ...) \
GPU_SHADER_CREATE_INFO(name) \
DO_STATIC_COMPILATION() \
ADDITIONAL_INFO_EXPAND(__VA_ARGS__) \
GPU_SHADER_CREATE_END()
#if !defined(GLSL_CPP_STUBS)
namespace blender::gpu::shader {
/* All of these functions is a bit out of place */
static inline Type to_type(const eGPUType type)
{
@@ -623,16 +643,16 @@ struct ShaderCreateInfo {
/** Manually set generated dependencies. */
Vector<StringRefNull, 0> dependencies_generated;
#define TEST_EQUAL(a, b, _member) \
if (!((a)._member == (b)._member)) { \
return false; \
}
# define TEST_EQUAL(a, b, _member) \
if (!((a)._member == (b)._member)) { \
return false; \
}
#define TEST_VECTOR_EQUAL(a, b, _vector) \
TEST_EQUAL(a, b, _vector.size()); \
for (auto i : _vector.index_range()) { \
TEST_EQUAL(a, b, _vector[i]); \
}
# define TEST_VECTOR_EQUAL(a, b, _vector) \
TEST_EQUAL(a, b, _vector.size()); \
for (auto i : _vector.index_range()) { \
TEST_EQUAL(a, b, _vector[i]); \
}
struct VertIn {
int index;
@@ -848,9 +868,9 @@ struct ShaderCreateInfo {
Vector<const char *> tf_names_;
/* Api-specific parameters. */
#ifdef WITH_METAL_BACKEND
# ifdef WITH_METAL_BACKEND
ushort mtl_max_threads_per_threadgroup_ = 0;
#endif
# endif
public:
ShaderCreateInfo(const char *name) : name_(name){};
@@ -1250,11 +1270,11 @@ struct ShaderCreateInfo {
* front. Maximum value is 1024. */
Self &mtl_max_total_threads_per_threadgroup(ushort max_total_threads_per_threadgroup)
{
#ifdef WITH_METAL_BACKEND
# ifdef WITH_METAL_BACKEND
mtl_max_threads_per_threadgroup_ = max_total_threads_per_threadgroup;
#else
# else
UNUSED_VARS(max_total_threads_per_threadgroup);
#endif
# endif
return *(Self *)this;
}
@@ -1380,8 +1400,8 @@ struct ShaderCreateInfo {
/** \} */
#undef TEST_EQUAL
#undef TEST_VECTOR_EQUAL
# undef TEST_EQUAL
# undef TEST_VECTOR_EQUAL
};
} // namespace blender::gpu::shader
@@ -1399,16 +1419,4 @@ template<> struct DefaultHash<Vector<blender::gpu::shader::SpecializationConstan
};
} // namespace blender
#define _INFO_EXPAND2(a, b) ADDITIONAL_INFO(a) ADDITIONAL_INFO(b)
#define _INFO_EXPAND3(a, b, c) _INFO_EXPAND2(a, b) ADDITIONAL_INFO(c)
#define _INFO_EXPAND4(a, b, c, d) _INFO_EXPAND3(a, b, c) ADDITIONAL_INFO(d)
#define _INFO_EXPAND5(a, b, c, d, e) _INFO_EXPAND4(a, b, c, d) ADDITIONAL_INFO(e)
#define _INFO_EXPAND6(a, b, c, d, e, f) _INFO_EXPAND5(a, b, c, d, e) ADDITIONAL_INFO(f)
#define ADDITIONAL_INFO_EXPAND(...) VA_NARGS_CALL_OVERLOAD(_INFO_EXPAND, __VA_ARGS__)
#define CREATE_INFO_VARIANT(name, ...) \
GPU_SHADER_CREATE_INFO(name) \
DO_STATIC_COMPILATION() \
ADDITIONAL_INFO_EXPAND(__VA_ARGS__) \
GPU_SHADER_CREATE_END()
#endif

View File

@@ -46,65 +46,82 @@ template<typename T, int Sz> struct VecBase {};
template<typename T, int Sz> struct VecOp {
using VecT = VecBase<T, Sz>;
T &operator[](int) RET;
const T &operator[](int) const RET;
const T &operator[](int) const
{
return *reinterpret_cast<const T *>(this);
}
T &operator[](int)
{
return *reinterpret_cast<T *>(this);
}
VecT operator+() RET;
VecT operator-() RET;
VecT operator+(VecT) RET;
VecT operator-(VecT) RET;
VecT operator/(VecT) RET;
VecT operator*(VecT) RET;
friend VecT operator+(VecT, VecT) RET;
friend VecT operator-(VecT, VecT) RET;
friend VecT operator/(VecT, VecT) RET;
friend VecT operator*(VecT, VecT) RET;
VecT operator+=(VecT) RET;
VecT operator-=(VecT) RET;
VecT operator/=(VecT) RET;
VecT operator*=(VecT) RET;
VecT operator+(T) const RET;
VecT operator-(T) const RET;
VecT operator/(T) const RET;
VecT operator*(T) const RET;
VecT operator+=(T) const RET;
VecT operator-=(T) const RET;
VecT operator/=(T) const RET;
VecT operator*=(T) const RET;
friend VecT operator+(VecT, T) RET;
friend VecT operator-(VecT, T) RET;
friend VecT operator/(VecT, T) RET;
friend VecT operator*(VecT, T) RET;
friend VecT operator+(T, VecT) RET;
friend VecT operator-(T, VecT) RET;
friend VecT operator/(T, VecT) RET;
friend VecT operator*(T, VecT) RET;
friend VecT operator+=(VecT, VecT) RET;
friend VecT operator-=(VecT, VecT) RET;
friend VecT operator/=(VecT, VecT) RET;
friend VecT operator*=(VecT, VecT) RET;
friend VecT operator+=(VecT, T) RET;
friend VecT operator-=(VecT, T) RET;
friend VecT operator/=(VecT, T) RET;
friend VecT operator*=(VecT, T) RET;
#define INT_OP \
template<typename U = T, typename std::enable_if_t<std::is_integral_v<U>> * = nullptr>
INT_OP VecT operator%(VecT) const RET;
INT_OP VecT operator&(VecT) const RET;
INT_OP VecT operator|(VecT) const RET;
INT_OP VecT operator^(VecT) const RET;
INT_OP friend VecT operator~(VecT) RET;
INT_OP VecT operator%=(VecT) const RET;
INT_OP VecT operator&=(VecT) const RET;
INT_OP VecT operator|=(VecT) const RET;
INT_OP VecT operator^=(VecT) const RET;
INT_OP friend VecT operator%(VecT, VecT) RET;
INT_OP friend VecT operator&(VecT, VecT) RET;
INT_OP friend VecT operator|(VecT, VecT) RET;
INT_OP friend VecT operator^(VecT, VecT) RET;
INT_OP VecT operator%(T) const RET;
INT_OP VecT operator&(T) const RET;
INT_OP VecT operator|(T) const RET;
INT_OP VecT operator^(T) const RET;
INT_OP VecT operator%=(T) const RET;
INT_OP VecT operator&=(T) const RET;
INT_OP VecT operator|=(T) const RET;
INT_OP VecT operator^=(T) const RET;
INT_OP friend VecT operator%(VecT, T) RET;
INT_OP friend VecT operator&(VecT, T) RET;
INT_OP friend VecT operator|(VecT, T) RET;
INT_OP friend VecT operator^(VecT, T) RET;
INT_OP friend VecT operator%(T, VecT) RET;
INT_OP friend VecT operator&(T, VecT) RET;
INT_OP friend VecT operator|(T, VecT) RET;
INT_OP friend VecT operator^(T, VecT) RET;
INT_OP friend VecT operator%=(VecT, VecT) RET;
INT_OP friend VecT operator&=(VecT, VecT) RET;
INT_OP friend VecT operator|=(VecT, VecT) RET;
INT_OP friend VecT operator^=(VecT, VecT) RET;
INT_OP friend VecT operator%=(VecT, T) RET;
INT_OP friend VecT operator&=(VecT, T) RET;
INT_OP friend VecT operator|=(VecT, T) RET;
INT_OP friend VecT operator^=(VecT, T) RET;
INT_OP friend VecT operator<<(VecT, VecT) RET;
INT_OP friend VecT operator>>(VecT, VecT) RET;
INT_OP friend VecT operator<<(T, VecT) RET;
INT_OP friend VecT operator>>(T, VecT) RET;
INT_OP friend VecT operator<<(VecT, T) RET;
INT_OP friend VecT operator>>(VecT, T) RET;
#undef INT_OP
};
@@ -336,8 +353,14 @@ template<int C, int R> struct MatOp {
using ColT = VecBase<double, R>;
using RowT = VecBase<double, C>;
ColT &operator[](int) RET;
const ColT &operator[](int) const RET;
const ColT &operator[](int) const
{
return *reinterpret_cast<const ColT *>(this);
}
ColT &operator[](int)
{
return *reinterpret_cast<ColT *>(this);
}
MatT operator*(MatT) const RET;
@@ -406,6 +429,7 @@ using mat3 = float3x3;
using mat4 = float4x4;
using MAT4 = float4x4;
using MAT3 = float3x3;
/** \} */
@@ -433,13 +457,13 @@ template<typename T, int Dimensions, bool Cube = false, bool Array = false> stru
typename DataVec = typename T::data_vec_type, \
typename SizeVec = typename T::size_vec_type>
TEX_TEMPLATE SizeVec textureSize(T, int) {}
TEX_TEMPLATE DataVec texelFetch(T, IntCoord, int) {}
TEX_TEMPLATE DataVec texelFetchOffset(T, IntCoord, int, IntCoord) {}
TEX_TEMPLATE DataVec texture(T, FltCoord, double /*bias*/ = 0.0) {}
TEX_TEMPLATE DataVec textureGather(T, FltCoord) {}
TEX_TEMPLATE DataVec textureGrad(T, FltCoord, DerivVec, DerivVec) {}
TEX_TEMPLATE DataVec textureLod(T, FltCoord, double) {}
TEX_TEMPLATE SizeVec textureSize(T, int) RET;
TEX_TEMPLATE DataVec texelFetch(T, IntCoord, int) RET;
TEX_TEMPLATE DataVec texelFetchOffset(T, IntCoord, int, IntCoord) RET;
TEX_TEMPLATE DataVec texture(T, FltCoord, double /*bias*/ = 0.0) RET;
TEX_TEMPLATE DataVec textureGather(T, FltCoord) RET;
TEX_TEMPLATE DataVec textureGrad(T, FltCoord, DerivVec, DerivVec) RET;
TEX_TEMPLATE DataVec textureLod(T, FltCoord, double) RET;
#undef TEX_TEMPLATE
@@ -602,14 +626,15 @@ template<typename T> T isinf(T) RET;
template<typename T> T isnan(T) RET;
template<typename T> T log(T) RET;
template<typename T> T log2(T) RET;
template<typename T> T mod(T, double);
template<typename T> T mod(T, T);
double mod(double, double) RET;
template<int D> VecBase<double, D> mod(VecBase<double, D>, double) RET;
template<int D> VecBase<double, D> mod(VecBase<double, D>, VecBase<double, D>) RET;
template<typename T> T modf(T, T);
template<typename T> T pow(T, T) RET;
template<typename T, typename U> T pow(T, U) RET;
template<typename T> T round(T) RET;
template<typename T> T smoothstep(T, T, T) RET;
template<typename T> T sqrt(T) RET;
template<typename T> T step(T) RET;
template<typename T> T step(T, T) RET;
template<typename T> T trunc(T) RET;
template<typename T, typename U> T ldexp(T, U) RET;
static inline double smoothstep(double, double, double) RET;
@@ -634,6 +659,8 @@ template<typename T> T radians(T) RET;
/* Declared explicitly to avoid type errors. */
static inline double mix(double, double, double) RET;
template<int D> VecBase<double, D> mix(VecBase<double, D>, VecBase<double, D>, double) RET;
template<int D>
VecBase<double, D> mix(VecBase<double, D>, VecBase<double, D>, VecBase<double, D>) RET;
template<typename T, int D> VecBase<T, D> mix(VecBase<T, D>, VecBase<T, D>, VecBase<bool, D>) RET;
#define select(A, B, C) mix(A, B, C)
@@ -809,159 +836,20 @@ static inline void groupMemoryBarrier() {}
/** \} */
/* GLSL main function must return void. C++ need to return int.
* Inject real main (C++) inside the GLSL main definition. */
#define main() \
/* Fake main prototype. */ \
/* void */ _fake_main(); \
/* Real main. */ \
int main() \
{ \
_fake_main(); \
return 0; \
} \
/* Fake main definition. */ \
void _fake_main()
#define GLSL_CPP_STUBS
/* Include all shader shared files to that custom type definitions are available when create infos
* macros are included. Include them here so that only including this file is needed. */
#include "GPU_shader_shared.hh"
#include "draw_common_shader_shared.hh"
#include "draw_shader_shared.hh"
#include "eevee_shader_shared.hh"
#include "overlay_shader_shared.h"
#include "select_shader_shared.hh"
#include "workbench_shader_shared.h"
/* Include all create infos here so that they don't need to be individually included
* inside shaders. */
#include "draw_debug_info.hh"
#include "draw_fullscreen_info.hh"
#include "draw_hair_refine_info.hh"
#include "draw_object_infos_info.hh"
#include "draw_view_info.hh"
#include "infos/basic_depth_info.hh"
#include "infos/compositor_alpha_crop_info.hh"
#include "infos/compositor_bilateral_blur_info.hh"
#include "infos/compositor_bokeh_blur_info.hh"
#include "infos/compositor_bokeh_blur_variable_size_info.hh"
#include "infos/compositor_bokeh_image_info.hh"
#include "infos/compositor_box_mask_info.hh"
#include "infos/compositor_compute_preview_info.hh"
#include "infos/compositor_convert_info.hh"
#include "infos/compositor_cryptomatte_info.hh"
#include "infos/compositor_defocus_info.hh"
#include "infos/compositor_deriche_gaussian_blur_info.hh"
#include "infos/compositor_despeckle_info.hh"
#include "infos/compositor_directional_blur_info.hh"
#include "infos/compositor_displace_info.hh"
#include "infos/compositor_double_edge_mask_info.hh"
#include "infos/compositor_edge_filter_info.hh"
#include "infos/compositor_ellipse_mask_info.hh"
#include "infos/compositor_filter_info.hh"
#include "infos/compositor_flip_info.hh"
#include "infos/compositor_glare_info.hh"
#include "infos/compositor_id_mask_info.hh"
#include "infos/compositor_image_crop_info.hh"
#include "infos/compositor_inpaint_info.hh"
#include "infos/compositor_jump_flooding_info.hh"
#include "infos/compositor_keying_info.hh"
#include "infos/compositor_keying_screen_info.hh"
#include "infos/compositor_kuwahara_info.hh"
#include "infos/compositor_map_uv_info.hh"
#include "infos/compositor_morphological_blur_info.hh"
#include "infos/compositor_morphological_distance_feather_info.hh"
#include "infos/compositor_morphological_distance_info.hh"
#include "infos/compositor_morphological_distance_threshold_info.hh"
#include "infos/compositor_morphological_step_info.hh"
#include "infos/compositor_motion_blur_info.hh"
#include "infos/compositor_movie_distortion_info.hh"
#include "infos/compositor_normalize_info.hh"
#include "infos/compositor_parallel_reduction_info.hh"
#include "infos/compositor_pixelate_info.hh"
#include "infos/compositor_plane_deform_info.hh"
#include "infos/compositor_premultiply_alpha_info.hh"
#include "infos/compositor_projector_lens_distortion_info.hh"
#include "infos/compositor_read_input_info.hh"
#include "infos/compositor_realize_on_domain_info.hh"
#include "infos/compositor_scale_variable_info.hh"
#include "infos/compositor_screen_lens_distortion_info.hh"
#include "infos/compositor_smaa_info.hh"
#include "infos/compositor_split_info.hh"
#include "infos/compositor_summed_area_table_info.hh"
#include "infos/compositor_sun_beams_info.hh"
#include "infos/compositor_symmetric_blur_info.hh"
#include "infos/compositor_symmetric_blur_variable_size_info.hh"
#include "infos/compositor_symmetric_separable_blur_info.hh"
#include "infos/compositor_symmetric_separable_blur_variable_size_info.hh"
#include "infos/compositor_tone_map_photoreceptor_info.hh"
#include "infos/compositor_tone_map_simple_info.hh"
#include "infos/compositor_van_vliet_gaussian_blur_info.hh"
#include "infos/compositor_write_output_info.hh"
#include "infos/compositor_z_combine_info.hh"
#include "infos/eevee_ambient_occlusion_info.hh"
#include "infos/eevee_deferred_info.hh"
#include "infos/eevee_depth_of_field_info.hh"
#include "infos/eevee_film_info.hh"
#include "infos/eevee_hiz_info.hh"
#include "infos/eevee_light_culling_info.hh"
#include "infos/eevee_lightprobe_sphere_info.hh"
#include "infos/eevee_lightprobe_volume_info.hh"
#include "infos/eevee_lookdev_info.hh"
#include "infos/eevee_lut_info.hh"
#include "infos/eevee_material_info.hh"
#include "infos/eevee_motion_blur_info.hh"
#include "infos/eevee_shadow_info.hh"
#include "infos/eevee_subsurface_info.hh"
#include "infos/eevee_tracing_info.hh"
#include "infos/eevee_velocity_info.hh"
#include "infos/eevee_volume_info.hh"
#include "infos/engine_image_info.hh"
#include "infos/gpencil_info.hh"
#include "infos/gpencil_vfx_info.hh"
#include "infos/gpu_clip_planes_info.hh"
#include "infos/gpu_index_load_info.hh"
#include "infos/gpu_shader_2D_area_borders_info.hh"
#include "infos/gpu_shader_2D_checker_info.hh"
#include "infos/gpu_shader_2D_diag_stripes_info.hh"
#include "infos/gpu_shader_2D_image_desaturate_color_info.hh"
#include "infos/gpu_shader_2D_image_info.hh"
#include "infos/gpu_shader_2D_image_overlays_merge_info.hh"
#include "infos/gpu_shader_2D_image_overlays_stereo_merge_info.hh"
#include "infos/gpu_shader_2D_image_rect_color_info.hh"
#include "infos/gpu_shader_2D_image_shuffle_color_info.hh"
#include "infos/gpu_shader_2D_nodelink_info.hh"
#include "infos/gpu_shader_2D_point_uniform_size_uniform_color_aa_info.hh"
#include "infos/gpu_shader_2D_point_uniform_size_uniform_color_outline_aa_info.hh"
#include "infos/gpu_shader_2D_point_varying_size_varying_color_info.hh"
#include "infos/gpu_shader_2D_widget_info.hh"
#include "infos/gpu_shader_3D_depth_only_info.hh"
#include "infos/gpu_shader_3D_flat_color_info.hh"
#include "infos/gpu_shader_3D_image_info.hh"
#include "infos/gpu_shader_3D_point_info.hh"
#include "infos/gpu_shader_3D_polyline_info.hh"
#include "infos/gpu_shader_3D_smooth_color_info.hh"
#include "infos/gpu_shader_3D_uniform_color_info.hh"
#include "infos/gpu_shader_gpencil_stroke_info.hh"
#include "infos/gpu_shader_icon_info.hh"
#include "infos/gpu_shader_index_info.hh"
#include "infos/gpu_shader_instance_varying_color_varying_size_info.hh"
#include "infos/gpu_shader_keyframe_shape_info.hh"
#include "infos/gpu_shader_line_dashed_uniform_color_info.hh"
#include "infos/gpu_shader_print_info.hh"
#include "infos/gpu_shader_sequencer_info.hh"
#include "infos/gpu_shader_simple_lighting_info.hh"
#include "infos/gpu_shader_text_info.hh"
#include "infos/gpu_srgb_to_framebuffer_space_info.hh"
#include "infos/overlay_antialiasing_info.hh"
#include "infos/overlay_armature_info.hh"
#include "infos/overlay_background_info.hh"
#include "infos/overlay_edit_mode_info.hh"
#include "infos/overlay_extra_info.hh"
#include "infos/overlay_facing_info.hh"
#include "infos/overlay_grid_info.hh"
#include "infos/overlay_outline_info.hh"
#include "infos/overlay_paint_info.hh"
#include "infos/overlay_sculpt_curves_info.hh"
#include "infos/overlay_sculpt_info.hh"
#include "infos/overlay_viewer_attribute_info.hh"
#include "infos/overlay_volume_info.hh"
#include "infos/overlay_wireframe_info.hh"
#include "infos/select_id_info.hh"
#include "infos/workbench_composite_info.hh"
#include "infos/workbench_depth_info.hh"
#include "infos/workbench_effect_antialiasing_info.hh"
#include "infos/workbench_effect_dof_info.hh"
#include "infos/workbench_effect_outline_info.hh"
#include "infos/workbench_prepass_info.hh"
#include "infos/workbench_shadow_info.hh"
#include "infos/workbench_transparent_resolve_info.hh"
#include "infos/workbench_volume_info.hh"