-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path_config_ubo.glsl
More file actions
147 lines (135 loc) · 5.27 KB
/
_config_ubo.glsl
File metadata and controls
147 lines (135 loc) · 5.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
// NOTE: rust packing has problems with raw floats (packing?) - use vec4
const uint DISPLAY_MODE_FINAL = 0;
const uint DISPLAY_MODE_NORMALS = 1;
const uint DISPLAY_MODE_LUMA = 2;
const uint DISPLAY_MODE_SSAO = 3;
const uint DISPLAY_MODE_LINEAR_DEPTH = 4;
const uint DISPLAY_MODE_SHADOW_MAP = 5;
const uint DISPLAY_MODE_SSS_SCATTERING = 6;
const uint DISPLAY_MODE_SSS_THICKNESS = 7;
layout(binding = 0)
uniform GlobalConfigUniformBuffer {
vec4 u_cameraPositionAndDisplayMode; // [cameraPosition.xyz, u_displayMode]
vec4 u_viewportAndNearFar; // [viewport.w,viewport.h, near,far]
mat4 u_viewMat;
mat4 u_projectionMat;
mat4 u_invProjectionMat; // inverse projection matrix
mat4 u_viewProjectionMat;
// hair + simulation
vec4 u_tfxHairSettings; // [hairDisplayMode, u_tfxLinkedListPoolSize, g_GravityMagnitude, g_TimeStep]
vec4 u_tfxWind; // [windDir.xyz, windStrength]
vec4 u_tfxShape; // [Sim0.Verlet damping, Sim2.LSC local stiffness, Sim0.GSC global stiffness, Sim0.GSC global range.]
vec4 u_tfxConstraints; // [Sim3.Length Constraints iterations, Sim3.Length stiffness,-,-]
// AO + Shadow
mat4 u_directionalShadowMatrix_VP;
vec4 u_shadowRadiusAndBias; // [u_shadowRadiusForwardShading, u_shadowBiasForwardShading, u_shadowRadiusTfx, u_shadowBiasTfx]
vec4 u_directionalShadowCasterPosition; // [position.xyz, u_maxShadowContribution]
vec4 u_aoSettings; // (u_aoStrength, u_aoExp, showDebugPositions+u_maxShadowContribution, gamma)
// sss
vec4 u_sssSettings; // [u_sssPosition, u_sssFarPlane]
mat4 u_sssMatrix_VP;
vec4 u_sssBlur; // [u_sssWidth, u_sssStrength, u_sssFovy+u_sssFollowSurface, -]
// Lights
vec4 u_lightAmbient;
vec3 u_light0_Position;
vec4 u_light0_Color;
vec3 u_light1_Position;
vec4 u_light1_Color;
vec3 u_light2_Position;
vec4 u_light2_Color;
// SSAO
vec4 u_ssao;
vec4 u_ssao_and_misc;
// FXAA
vec4 u_fxaaSettings;
// Color correction
vec4 u_tonemapping;
vec4 u_tonemapping2;
// TONEMAPPING
// vec2 u_colorCorrectionSettings;
vec4 u_colorSaturation; // general
vec4 u_colorContrast;
vec4 u_colorGamma;
vec4 u_colorGain;
vec4 u_colorOffset;
vec4 u_colorSaturationShadows; // shadows
vec4 u_colorContrastShadows;
vec4 u_colorGammaShadows;
vec4 u_colorGainShadows;
vec4 u_colorOffsetShadows;
vec4 u_colorSaturationMidtones; // midtones
vec4 u_colorContrastMidtones;
vec4 u_colorGammaMidtones;
vec4 u_colorGainMidtones;
vec4 u_colorOffsetMidtones;
vec4 u_colorSaturationHighlights; // highlights
vec4 u_colorContrastHighlights;
vec4 u_colorGammaHighlights;
vec4 u_colorGainHighlights;
vec4 u_colorOffsetHighlights;
// TressFX collision spheres
vec4 u_debugCollisionSphere0;
vec4 u_debugCollisionSphere1;
vec4 u_debugCollisionSphere2;
vec4 u_debugCollisionSphere3;
};
// u_cameraPositionAndDisplayMode
#define u_cameraPosition (u_cameraPositionAndDisplayMode.xyz)
#define u_displayMode (readConfigUint(u_cameraPositionAndDisplayMode.w))
// u_viewportAndNearFar
#define u_viewport (u_viewportAndNearFar.xy)
#define u_nearAndFar (u_viewportAndNearFar.zw)
#define u_tfxDisplayMode (readConfigUint(u_tfxHairSettings.x))
#define u_tfxLinkedListPoolSize (readConfigUint(u_tfxHairSettings.y))
// Shadows
#define u_shadowRadiusForwardShading (readConfigInt(u_shadowRadiusAndBias.x))
#define u_shadowBiasForwardShading (u_shadowRadiusAndBias.y)
#define u_shadowRadiusTfx (readConfigInt(u_shadowRadiusAndBias.z))
#define u_shadowBiasTfx (u_shadowRadiusAndBias.w)
#define u_shadowsTechnique (readConfigUint(u_directionalShadowCasterPosition.w))
// AO + misc
#define u_aoStrength (u_aoSettings.r)
#define u_aoExp (u_aoSettings.g)
#define u_showDebugPositions (readConfigFlagFromSign(u_aoSettings.b))
#define u_maxShadowContribution (readConfigValueFromValueWithFlag(u_aoSettings.b))
#define u_gamma (u_aoSettings.w)
// SSS (u_sssSettings)
#define u_sssPosition (u_sssSettings.xyz)
#define u_sssFarPlane (u_sssSettings.w)
// u_sssBlur
#define u_sssBlurWidth (u_sssBlur.x)
#define u_sssBlurStrength (u_sssBlur.y) // SSSS_STREGTH_SOURCE
#define u_sssBlurFovy (readConfigValueFromValueWithFlag(u_sssBlur.z)) // SSSS_FOVY 20.0
#define u_sssBlurFollowSurface (readConfigFlagFromSign(u_sssBlur.z) ? 1 : 0) // SSSS_FOLLOW_SURFACE: 0 or 1
// fxaa (u_fxaaSettings)
#define u_subpixel (u_fxaaSettings.x)
#define u_edgeThreshold (u_fxaaSettings.y)
#define u_edgeThresholdMin (u_fxaaSettings.z)
#define u_fxaa_luma_gamma (u_fxaaSettings.w)
// TONEMAPPING
// u_tonemapping
#define u_exposure (u_tonemapping.x)
#define u_whitePoint (u_tonemapping.y)
#define u_acesC (u_tonemapping.z)
#define u_acesS (u_tonemapping.w)
// u_tonemapping2
#define u_ditherStrength (u_tonemapping2.x)
#define u_tonemappingMode (readConfigUint(u_tonemapping2.y))
#define u_colorCorrectionShadowsMax (u_tonemapping2.z)
#define u_colorCorrectionHighlightsMin (u_tonemapping2.w)
// SSAO
// u_ssao
#define u_noiseScale (u_ssao.xy)
#define u_radius (u_ssao.z)
#define u_bias (u_ssao.w)
// u_ssao_and_misc
#define u_kernelSize (readConfigUint(u_ssao_and_misc.x))
#define u_linear_depth_preview_range (u_ssao_and_misc.yz)
uint readConfigUint(float value) { return uint(abs(value) + 0.5); }
int readConfigInt (float value) { return int(abs(value) + 0.5); }
bool readConfigFlagFromSign(float value) {
return value < 0.0f;
}
float readConfigValueFromValueWithFlag(float value) {
return abs(value);
}