Overte C++ Documentation
graphics/src/graphics/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 GRAPHICS_SHADER_CONSTANTS_H@>
11 // <@def GRAPHICS_SHADER_CONSTANTS_H@>
12 
13 // Hack comment to absorb the extra '//' scribe prepends
14 
15 #ifndef GRAPHICS_SHADER_CONSTANTS_H
16 #define GRAPHICS_SHADER_CONSTANTS_H
17 
18 #define GRAPHICS_BUFFER_MATERIAL 0
19 #define GRAPHICS_BUFFER_SKINNING 1
20 #define GRAPHICS_BUFFER_TRIPLANAR_SCALE 2
21 
22 #define GRAPHICS_BUFFER_KEY_LIGHT 3
23 #define GRAPHICS_BUFFER_LIGHT 4
24 #define GRAPHICS_BUFFER_AMBIENT_LIGHT 5
25 #define GRAPHICS_BUFFER_HAZE_PARAMS 6
26 
27 // Textures 0 - 11 are used by material layers (although usually fewer for 1 layer)
28 // 12 is the fade texture
29 // 13 is the skybox
30 // 14 is the ambient fresnel LUT
31 // 15 is the splat map
32 #define GRAPHICS_TEXTURE_MATERIAL_ALBEDO 0
33 #define GRAPHICS_TEXTURE_MATERIAL_NORMAL 1
34 #define GRAPHICS_TEXTURE_MATERIAL_METALLIC 2
35 #define GRAPHICS_TEXTURE_MATERIAL_EMISSIVE_LIGHTMAP 3
36 #define GRAPHICS_TEXTURE_MATERIAL_ROUGHNESS 4
37 #define GRAPHICS_TEXTURE_MATERIAL_OCCLUSION 5
38 #define GRAPHICS_TEXTURE_MATERIAL_SCATTERING 6
39 
40 // 2 layers
41 #define GRAPHICS_TEXTURE_MATERIAL_ALBEDO2_2 6
42 #define GRAPHICS_TEXTURE_MATERIAL_NORMAL2_2 7
43 #define GRAPHICS_TEXTURE_MATERIAL_METALLIC2_2 8
44 #define GRAPHICS_TEXTURE_MATERIAL_EMISSIVE_LIGHTMAP2_2 9
45 #define GRAPHICS_TEXTURE_MATERIAL_ROUGHNESS2_2 10
46 #define GRAPHICS_TEXTURE_MATERIAL_OCCLUSION2_2 11
47 
48 // 3 layers
49 #define GRAPHICS_TEXTURE_MATERIAL_ALBEDO2_3 4
50 #define GRAPHICS_TEXTURE_MATERIAL_NORMAL2_3 5
51 #define GRAPHICS_TEXTURE_MATERIAL_METALLIC2_3 6
52 #define GRAPHICS_TEXTURE_MATERIAL_EMISSIVE_LIGHTMAP2_3 7
53 #define GRAPHICS_TEXTURE_MATERIAL_ALBEDO3_3 8
54 #define GRAPHICS_TEXTURE_MATERIAL_NORMAL3_3 9
55 #define GRAPHICS_TEXTURE_MATERIAL_METALLIC3_3 10
56 #define GRAPHICS_TEXTURE_MATERIAL_EMISSIVE_LIGHTMAP3_3 11
57 
58 #define GRAPHICS_TEXTURE_MATERIAL_MIRROR 1 // Mirrors use albedo textures, but nothing else
59 
60 // MToon
61 // Keep aligned with procedural/ProceduralMaterialCache.h
62 #define GRAPHICS_TEXTURE_MATERIAL_SHADE GRAPHICS_TEXTURE_MATERIAL_METALLIC
63 #define GRAPHICS_TEXTURE_MATERIAL_SHADING_SHIFT GRAPHICS_TEXTURE_MATERIAL_ROUGHNESS
64 #define GRAPHICS_TEXTURE_MATERIAL_MATCAP GRAPHICS_TEXTURE_MATERIAL_OCCLUSION
65 #define GRAPHICS_TEXTURE_MATERIAL_RIM GRAPHICS_TEXTURE_MATERIAL_SCATTERING
66 #define GRAPHICS_TEXTURE_MATERIAL_UV_ANIMATION_MASK 7
67 
68 // 2 layers
69 #define GRAPHICS_TEXTURE_MATERIAL_SHADE2_2 GRAPHICS_TEXTURE_MATERIAL_METALLIC2_2
70 #define GRAPHICS_TEXTURE_MATERIAL_SHADING_SHIFT2_2 GRAPHICS_TEXTURE_MATERIAL_ROUGHNESS2_2
71 #define GRAPHICS_TEXTURE_MATERIAL_MATCAP2_2 GRAPHICS_TEXTURE_MATERIAL_OCCLUSION2_2
72 
73 // 3 layers
74 #define GRAPHICS_TEXTURE_MATERIAL_SHADE2_3 GRAPHICS_TEXTURE_MATERIAL_METALLIC2_3
75 #define GRAPHICS_TEXTURE_MATERIAL_SHADE3_3 GRAPHICS_TEXTURE_MATERIAL_METALLIC3_3
76 
77 // The OpenGL spec says hardware must support at least 16 textures at once, so we use the last
78 // guaranteed slot for the splat map.
79 #define GRAPHICS_TEXTURE_MATERIAL_SPLAT 15
80 
81 // Make sure these match the ones in render-utils/ShaderConstants.h
82 #define GRAPHICS_TEXTURE_SKYBOX 13
83 #define GRAPHICS_BUFFER_SKYBOX_PARAMS 7
84 
85 // <!
86 
87 namespace graphics { namespace slot {
88 
89 namespace buffer {
90 enum Buffer {
91  Material = GRAPHICS_BUFFER_MATERIAL,
92  Skinning = GRAPHICS_BUFFER_SKINNING,
93  TriplanarScale = GRAPHICS_BUFFER_TRIPLANAR_SCALE,
94  KeyLight = GRAPHICS_BUFFER_KEY_LIGHT,
95  Light = GRAPHICS_BUFFER_LIGHT,
96  AmbientLight = GRAPHICS_BUFFER_AMBIENT_LIGHT,
97  HazeParams = GRAPHICS_BUFFER_HAZE_PARAMS,
98  SkyboxParams = GRAPHICS_BUFFER_SKYBOX_PARAMS,
99 };
100 } // namespace buffer
101 
102 namespace texture {
103 enum Texture {
104  MaterialAlbedo = GRAPHICS_TEXTURE_MATERIAL_ALBEDO,
105  MaterialNormal = GRAPHICS_TEXTURE_MATERIAL_NORMAL,
106  MaterialMetallic = GRAPHICS_TEXTURE_MATERIAL_METALLIC,
107  MaterialEmissiveLightmap = GRAPHICS_TEXTURE_MATERIAL_EMISSIVE_LIGHTMAP,
108  MaterialRoughness = GRAPHICS_TEXTURE_MATERIAL_ROUGHNESS,
109  MaterialOcclusion = GRAPHICS_TEXTURE_MATERIAL_OCCLUSION,
110  MaterialScattering = GRAPHICS_TEXTURE_MATERIAL_SCATTERING,
111  MaterialMirror = GRAPHICS_TEXTURE_MATERIAL_MIRROR,
112  Skybox = GRAPHICS_TEXTURE_SKYBOX,
113 
114  MaterialShade = GRAPHICS_TEXTURE_MATERIAL_SHADE,
115  MaterialShadingShift = GRAPHICS_TEXTURE_MATERIAL_SHADING_SHIFT,
116  MaterialMatcap = GRAPHICS_TEXTURE_MATERIAL_MATCAP,
117  MaterialRim = GRAPHICS_TEXTURE_MATERIAL_RIM,
118  MaterialUVAnimationMask = GRAPHICS_TEXTURE_MATERIAL_UV_ANIMATION_MASK,
119 
120  MaterialSplat = GRAPHICS_TEXTURE_MATERIAL_SPLAT,
121 };
122 } // namespace texture
123 
124 } } // namespace graphics::slot
125 
126 // !>
127 // Hack Comment
128 
129 #endif // GRAPHICS_SHADER_CONSTANTS_H
130 
131 // <@if 1@>
132 // Trigger Scribe include
133 // <@endif@> <!def that !>
134 
135 // <@endif@>
136 
137 // Hack Comment
A simple object wrapper for an OpenGL texture.
Definition: material-networking/src/material-networking/TextureCache.h:39