Overte C++ Documentation
render-utils/src/render-utils/ShaderConstants.h
1 // <!
2 // Created by Bradley Austin Davis on 2018/05/25
3 // Copyright 2013-2018 High Fidelity, Inc.
4 // Copyright 2024 Overte e.V.
5 //
6 // Distributed under the Apache License, Version 2.0.
7 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
8 // !>
9 
10 // <@if not RENDER_UTILS_SHADER_CONSTANTS_H@>
11 // <@def RENDER_UTILS_SHADER_CONSTANTS_H@>
12 
13 // Hack comment to absorb the extra '//' scribe prepends
14 
15 #ifndef RENDER_UTILS_SHADER_CONSTANTS_H
16 #define RENDER_UTILS_SHADER_CONSTANTS_H
17 
18 // Feature enabling flags (possibly need to rebuild shaders if this changes)
19 #define RENDER_UTILS_ENABLE_AMBIENT_FRESNEL_LUT 1
20 
21 // Binding slots
22 #define RENDER_UTILS_ATTR_TEXCOORD01 0 // one per layer, so takes slots 0 - 2
23 #define RENDER_UTILS_ATTR_COLOR 3
24 
25 // World space
26 #define RENDER_UTILS_ATTR_POSITION_WS 4
27 #define RENDER_UTILS_ATTR_NORMAL_WS 5
28 #define RENDER_UTILS_ATTR_TANGENT_WS 6
29 
30 // Model space
31 #define RENDER_UTILS_ATTR_POSITION_MS 7
32 #define RENDER_UTILS_ATTR_NORMAL_MS 8
33 
34 // Eye space
35 #define RENDER_UTILS_ATTR_POSITION_ES 9
36 
37 // Clip space
38 #define RENDER_UTILS_ATTR_PREV_POSITION_CS 10
39 
40 // Fade
41 #define RENDER_UTILS_ATTR_FADE1 11
42 #define RENDER_UTILS_ATTR_FADE2 12
43 #define RENDER_UTILS_ATTR_FADE3 13
44 #define RENDER_UTILS_ATTR_FADE4 14
45 #define RENDER_UTILS_ATTR_FADE5 15
46 #define RENDER_UTILS_ATTR_FADE6 16
47 #define RENDER_UTILS_ATTR_FADE7 17
48 
49 // don't conflict with GPU_ATTR_V2F_STEREO_SIDE in the GPU shader constants
50 #define RENDER_UTILS_ATTR_DO_NOT_USE 18
51 // don't conflict with GPU_ATTR_V2F_DRAW_CALL_INFO in the GPU shader constants
52 #define RENDER_UTILS_ATTR_DO_NOT_USE2 19
53 
54 // 0 - 7 are in graphics/ShaderConstants.h
55 #define RENDER_UTILS_BUFFER_DEFERRED_FRAME_TRANSFORM 7 // can overlap with GRAPHICS_BUFFER_SKYBOX_PARAMS
56 #define RENDER_UTILS_BUFFER_LIGHT_MODEL 8
57 #define RENDER_UTILS_BUFFER_LIGHT_INDEX 9 // only used in deferred pass
58 
59 // Fading
60 #define RENDER_UTILS_BUFFER_FADE_OBJECT_PARAMS 9 // this can overlap RENDER_UTILS_BUFFER_LIGHT_INDEX because they aren't used at the same time
61 #define RENDER_UTILS_TEXTURE_FADE_MASK 12
62 
63 // Deferred lighting resolution
64 #define RENDER_UTILS_TEXTURE_DEFERRRED_COLOR 0
65 #define RENDER_UTILS_TEXTURE_DEFERRRED_NORMAL 1
66 #define RENDER_UTILS_TEXTURE_DEFERRRED_SPECULAR 2
67 #define RENDER_UTILS_TEXTURE_DEFERRRED_DEPTH 3
68 #define RENDER_UTILS_TEXTURE_DEFERRED_OBSCURANCE 4
69 #define RENDER_UTILS_TEXTURE_DEFERRRED_LINEAR_Z_EYE 5
70 #define RENDER_UTILS_TEXTURE_DEFERRED_CURVATURE 6
71 #define RENDER_UTILS_TEXTURE_DEFERRED_DIFFUSED_CURVATURE 7
72 #define RENDER_UTILS_TEXTURE_DEFERRED_LIGHTING 10
73 #define RENDER_UTILS_TEXTURE_SKYBOX 13
74 #define RENDER_UTILS_TEXTURE_AMBIENT_FRESNEL 14
75 
76 #define RENDER_UTILS_BUFFER_SHADOW_PARAMS 0
77 #define RENDER_UTILS_TEXTURE_SHADOW 12
78 
79 #define RENDER_UTILS_BUFFER_LIGHT_CLUSTER_FRUSTUM_GRID 10
80 #define RENDER_UTILS_BUFFER_LIGHT_CLUSTER_GRID 11
81 #define RENDER_UTILS_BUFFER_LIGHT_CLUSTER_CONTENT 12
82 
83 // Haze
84 #define RENDER_UTILS_TEXTURE_HAZE_LINEAR_DEPTH 1
85 
86 // Highlighting
87 #define RENDER_UTILS_BUFFER_HIGHLIGHT_PARAMS 2
88 #define RENDER_UTILS_TEXTURE_HIGHLIGHT_SCENE_DEPTH 0
89 #define RENDER_UTILS_TEXTURE_HIGHLIGHT_DEPTH 1
90 
91 // Subsurface scattering
92 #define RENDER_UTILS_BUFFER_SSSC_PARAMS 13
93 #define RENDER_UTILS_TEXTURE_SSSC_PROFILE 12
94 #define RENDER_UTILS_TEXTURE_SSSC_LUT 8
95 #define RENDER_UTILS_TEXTURE_SSSC_SPECULAR_BECKMANN 9
96 
97 // Ambient occlusion
98 #define RENDER_UTILS_BUFFER_SSAO_PARAMS 2
99 #define RENDER_UTILS_BUFFER_SSAO_DEBUG_PARAMS 3
100 #define RENDER_UTILS_BUFFER_SSAO_BLUR_PARAMS 4
101 #define RENDER_UTILS_BUFFER_SSAO_FRAME_PARAMS 5
102 #define RENDER_UTILS_TEXTURE_SSAO_DEPTH 1
103 #define RENDER_UTILS_TEXTURE_SSAO_NORMAL 2
104 #define RENDER_UTILS_TEXTURE_SSAO_OCCLUSION 0
105 
106 // Temporal anti-aliasing
107 #define RENDER_UTILS_BUFFER_TAA_PARAMS 2
108 #define RENDER_UTILS_TEXTURE_TAA_HISTORY 0
109 #define RENDER_UTILS_TEXTURE_TAA_SOURCE 1
110 #define RENDER_UTILS_TEXTURE_TAA_VELOCITY 2
111 #define RENDER_UTILS_TEXTURE_TAA_DEPTH 3
112 #define RENDER_UTILS_TEXTURE_TAA_NEXT 4
113 #define RENDER_UTILS_TEXTURE_TAA_INTENSITY 5
114 
115 // Surface Geometry
116 #define RENDER_UTILS_BUFFER_SG_PARAMS 1
117 #define RENDER_UTILS_TEXTURE_SG_DEPTH 0
118 #define RENDER_UTILS_TEXTURE_SG_NORMAL 1
119 
120 // Blur
121 #define RENDER_UTILS_BUFFER_BLUR_PARAMS 0
122 #define RENDER_UTILS_TEXTURE_BLUR_SOURCE 0
123 #define RENDER_UTILS_TEXTURE_BLUR_DEPTH 1
124 
125 // Tone Mapping
126 #define RENDER_UTILS_BUFFER_TM_PARAMS 0
127 #define RENDER_UTILS_TEXTURE_TM_COLOR 0
128 
129 // Bloom
130 #define RENDER_UTILS_BUFFER_BLOOM_PARAMS 1
131 #define RENDER_UTILS_TEXTURE_BLOOM_COLOR 0
132 
133 // SDF Text rendering
134 #define RENDER_UTILS_TEXTURE_TEXT_FONT 0
135 #define RENDER_UTILS_UNIFORM_TEXT_COLOR 0
136 #define RENDER_UTILS_UNIFORM_TEXT_OUTLINE 1
137 
138 // Debugging
139 #define RENDER_UTILS_BUFFER_DEBUG_SKYBOX 7
140 #define RENDER_UTILS_DEBUG_TEXTURE0 11
141 #define RENDER_UTILS_BUFFER_DEBUG_DEFERRED_PARAMS 1
142 
143 // <!
144 #include <gpu/ShaderConstants.h>
145 
146 namespace render_utils { namespace slot {
147 
148 namespace buffer {
149 enum Buffer {
150  DeferredFrameTransform = RENDER_UTILS_BUFFER_DEFERRED_FRAME_TRANSFORM,
151  LightModel = RENDER_UTILS_BUFFER_LIGHT_MODEL,
152  FadeObjectParameters = RENDER_UTILS_BUFFER_FADE_OBJECT_PARAMS,
153  LightClusterFrustumGrid = RENDER_UTILS_BUFFER_LIGHT_CLUSTER_FRUSTUM_GRID,
154  LightClusterGrid = RENDER_UTILS_BUFFER_LIGHT_CLUSTER_GRID,
155  LightClusterContent = RENDER_UTILS_BUFFER_LIGHT_CLUSTER_CONTENT,
156  SsscParams = RENDER_UTILS_BUFFER_SSSC_PARAMS,
157  SsaoParams = RENDER_UTILS_BUFFER_SSAO_PARAMS,
158  SsaoFrameParams = RENDER_UTILS_BUFFER_SSAO_FRAME_PARAMS,
159  SsaoDebugParams = RENDER_UTILS_BUFFER_SSAO_DEBUG_PARAMS,
160  SsaoBlurParams = RENDER_UTILS_BUFFER_SSAO_BLUR_PARAMS,
161  LightIndex = RENDER_UTILS_BUFFER_LIGHT_INDEX,
162  TaaParams = RENDER_UTILS_BUFFER_TAA_PARAMS,
163  HighlightParams = RENDER_UTILS_BUFFER_HIGHLIGHT_PARAMS,
164  DebugSkyboxParams = RENDER_UTILS_BUFFER_DEBUG_SKYBOX,
165  SurfaceGeometryParams = RENDER_UTILS_BUFFER_SG_PARAMS,
166  BlurParams = RENDER_UTILS_BUFFER_BLUR_PARAMS,
167  BloomParams = RENDER_UTILS_BUFFER_BLOOM_PARAMS,
168  ToneMappingParams = RENDER_UTILS_BUFFER_TM_PARAMS,
169  ShadowParams = RENDER_UTILS_BUFFER_SHADOW_PARAMS,
170  DebugDeferredParams = RENDER_UTILS_BUFFER_DEBUG_DEFERRED_PARAMS,
171 };
172 } // namespace buffer
173 
174 namespace texture {
175 enum Texture {
176  DeferredColor = RENDER_UTILS_TEXTURE_DEFERRRED_COLOR,
177  DeferredNormal = RENDER_UTILS_TEXTURE_DEFERRRED_NORMAL,
178  DeferredSpecular = RENDER_UTILS_TEXTURE_DEFERRRED_SPECULAR,
179  DeferredDepth = RENDER_UTILS_TEXTURE_DEFERRRED_DEPTH,
180  DeferredLinearZEye = RENDER_UTILS_TEXTURE_DEFERRRED_LINEAR_Z_EYE,
181  DeferredObscurance = RENDER_UTILS_TEXTURE_DEFERRED_OBSCURANCE,
182  DeferredLighting = RENDER_UTILS_TEXTURE_DEFERRED_LIGHTING,
183  DeferredCurvature = RENDER_UTILS_TEXTURE_DEFERRED_CURVATURE,
184  DeferredDiffusedCurvature = RENDER_UTILS_TEXTURE_DEFERRED_DIFFUSED_CURVATURE,
185  SsscLut = RENDER_UTILS_TEXTURE_SSSC_LUT,
186  SsscSpecularBeckmann = RENDER_UTILS_TEXTURE_SSSC_SPECULAR_BECKMANN,
187  SsscProfile = RENDER_UTILS_TEXTURE_SSSC_PROFILE,
188  FadeMask = RENDER_UTILS_TEXTURE_FADE_MASK,
189  Skybox = RENDER_UTILS_TEXTURE_SKYBOX,
190  HazeLinearDepth = RENDER_UTILS_TEXTURE_HAZE_LINEAR_DEPTH,
191  Shadow = RENDER_UTILS_TEXTURE_SHADOW,
192  TaaHistory = RENDER_UTILS_TEXTURE_TAA_HISTORY,
193  TaaSource = RENDER_UTILS_TEXTURE_TAA_SOURCE,
194  TaaVelocity = RENDER_UTILS_TEXTURE_TAA_VELOCITY,
195  TaaDepth = RENDER_UTILS_TEXTURE_TAA_DEPTH,
196  TaaNext = RENDER_UTILS_TEXTURE_TAA_NEXT,
197  TaaIntensity = RENDER_UTILS_TEXTURE_TAA_INTENSITY,
198  SsaoOcclusion = RENDER_UTILS_TEXTURE_SSAO_OCCLUSION,
199  SsaoDepth = RENDER_UTILS_TEXTURE_SSAO_DEPTH,
200  SsaoNormal = RENDER_UTILS_TEXTURE_SSAO_NORMAL,
201  HighlightSceneDepth = RENDER_UTILS_TEXTURE_HIGHLIGHT_SCENE_DEPTH,
202  HighlightDepth = RENDER_UTILS_TEXTURE_HIGHLIGHT_DEPTH,
203  SurfaceGeometryDepth = RENDER_UTILS_TEXTURE_SG_DEPTH,
204  SurfaceGeometryNormal = RENDER_UTILS_TEXTURE_SG_NORMAL,
205  BlurSource = RENDER_UTILS_TEXTURE_BLUR_SOURCE,
206  BlurDepth = RENDER_UTILS_TEXTURE_BLUR_DEPTH,
207  BloomColor = RENDER_UTILS_TEXTURE_BLOOM_COLOR,
208  ToneMappingColor = RENDER_UTILS_TEXTURE_TM_COLOR,
209  TextFont = RENDER_UTILS_TEXTURE_TEXT_FONT,
210  AmbientFresnel = RENDER_UTILS_TEXTURE_AMBIENT_FRESNEL,
211  DebugTexture0 = RENDER_UTILS_DEBUG_TEXTURE0,
212 };
213 } // namespace texture
214 
215 } } // namespace render_utils::slot
216 
217 // !>
218 // Hack Comment
219 
220 #endif // RENDER_UTILS_SHADER_CONSTANTS_H
221 
222 // <@if 1@>
223 // Trigger Scribe include
224 // <@endif@> <!def that !>
225 
226 // <@endif@>
227 
228 // Hack Comment
A simple object wrapper for an OpenGL texture.
Definition: material-networking/src/material-networking/TextureCache.h:39