Skip to content

Commit c4a79d8

Browse files
committed
style: shader cleanup
1 parent 89493bf commit c4a79d8

File tree

9 files changed

+110
-99
lines changed

9 files changed

+110
-99
lines changed

shaders/brdf.glsl

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
#ifndef BRDF_GLSL
2+
#define BRDF_GLSL
3+
4+
const float M_PI = 3.141592653589793;
5+
6+
// Fresnel reflectance term of the specular equation (F)
7+
// Real-Time Rendering 4th Edition, Page 321, Equation 9.18 modified
8+
vec3
9+
pl_fresnel_schlick(vec3 f0, vec3 f90, float VdotH)
10+
{
11+
return f0 + (f90 - f0) * pow(clamp(1.0 - VdotH, 0.0, 1.0), 5.0);
12+
}
13+
14+
// Normal distribution function term of the specular equation (D)
15+
// Real-Time Rendering 4th Edition, Page 340, Equation 9.41
16+
float
17+
pl_distribution_ggx(float NdotH, float alphaRoughness)
18+
{
19+
float alphaRoughnessSq = alphaRoughness * alphaRoughness;
20+
float f = (NdotH * NdotH) * (alphaRoughnessSq - 1.0) + 1.0;
21+
return alphaRoughnessSq / (M_PI * f * f);
22+
}
23+
24+
// Masking-Shadowing function (G2)
25+
// Real-Time Rendering 4th Edition, Page 341, Equation 9.42
26+
float
27+
pl_masking_shadowing_ggx(float NdotL, float NdotV, float alphaRoughness)
28+
{
29+
float alphaRoughnessSq = alphaRoughness * alphaRoughness;
30+
31+
float GGXV = NdotL * sqrt(NdotV * NdotV * (1.0 - alphaRoughnessSq) + alphaRoughnessSq);
32+
float GGXL = NdotV * sqrt(NdotL * NdotL * (1.0 - alphaRoughnessSq) + alphaRoughnessSq);
33+
34+
float GGX = GGXV + GGXL;
35+
if (GGX > 0.0)
36+
{
37+
return 0.5 / GGX;
38+
}
39+
return 0.0;
40+
}
41+
42+
// Masking-Shadowing function fast (G2)
43+
// Real-Time Rendering 4th Edition, Page 341, Equation 9.42
44+
float
45+
pl_masking_shadowing_fast_ggx(float NdotL, float NdotV, float alphaRoughness)
46+
{
47+
float a2 = alphaRoughness * alphaRoughness;
48+
float GGXV = NdotL * sqrt(NdotV * NdotV * (1.0 - a2) + a2);
49+
float GGXL = NdotV * sqrt(NdotL * NdotL * (1.0 - a2) + a2);
50+
float GGX = GGXV + GGXL;
51+
if (GGX > 0.0)
52+
{
53+
return 0.5 / GGX;
54+
}
55+
return 0.0;
56+
}
57+
58+
59+
// Simple Lambertian BRDF (fd)
60+
// Real-Time Rendering 4th Edition, Page 314, Equation 9.11
61+
vec3
62+
pl_brdf_lambertian(vec3 diffuseColor)
63+
{
64+
return diffuseColor / M_PI;
65+
66+
// disney
67+
// float Fd_Burley(float NoV, float NoL, float LoH, float roughness) {
68+
// float f90 = 0.5 + 2.0 * roughness * LoH * LoH;
69+
// float lightScatter = F_Schlick(NoL, 1.0, f90);
70+
// float viewScatter = F_Schlick(NoV, 1.0, f90);
71+
// return lightScatter * viewScatter * (1.0 / PI);
72+
// }
73+
}
74+
75+
// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#acknowledgments AppendixB
76+
vec3
77+
BRDF_specularGGX(float alphaRoughness, float NdotL, float NdotV, float NdotH)
78+
{
79+
float G2 = pl_masking_shadowing_ggx(NdotL, NdotV, alphaRoughness);
80+
float D = pl_distribution_ggx(NdotH, alphaRoughness);
81+
return vec3(G2 * D);
82+
}
83+
84+
#endif // BRDF_GLSL

shaders/deferred_lighting.frag

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include "bg_scene.inc"
66
#include "bg_view.inc"
77
#include "math.glsl"
8+
#include "brdf.glsl"
89

910
//-----------------------------------------------------------------------------
1011
// [SECTION] specialication constants

shaders/forward.frag

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
#include "bg_scene.inc"
66
#include "bg_view.inc"
7+
#include "brdf.glsl"
78

89
//-----------------------------------------------------------------------------
910
// [SECTION] specialication constants

shaders/lighting.glsl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
#ifndef LIGHTING_GLSL
2+
#define LIGHTING_GLSL
13

24
vec3
35
getDiffuseLight(vec3 n, int iProbeIndex)
@@ -142,4 +144,6 @@ filterPCF2(vec4 sc, vec2 offset, int textureIndex)
142144
}
143145
}
144146
return shadowFactor / count;
145-
}
147+
}
148+
149+
#endif // LIGHTING_GLSL

shaders/lights.glsl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
#ifndef PL_LIGHTS_GLSL
32
#define PL_LIGHTS_GLSL
43

shaders/material_info.glsl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
#ifndef MATERIAL_INFO_GLSL
2+
#define MATERIAL_INFO_GLSL
13

24
struct MaterialInfo
35
{
@@ -14,3 +16,5 @@ struct MaterialInfo
1416
float specularWeight; // product of specularFactor and specularTexture.a
1517

1618
};
19+
20+
#endif // MATERIAL_INFO_GLSL

shaders/math.glsl

Lines changed: 4 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
#ifndef PL_MATH_GLSL
2-
#define PL_MATH_GLSL
1+
#ifndef MATH_GLSL
2+
#define MATH_GLSL
33

44
// math
55
#define PL_PI 3.1415926535897932384626433832795
6-
const float M_PI = 3.141592653589793;
6+
77
const float GAMMA = 2.2;
88
const float INV_GAMMA = 1.0 / GAMMA;
99

@@ -131,86 +131,4 @@ const mat4 biasMat = mat4(
131131
0.5, 0.5, 0.0, 1.0
132132
);
133133

134-
//-----------------------------------------------------------------------------
135-
// [SECTION] BRDF
136-
//-----------------------------------------------------------------------------
137-
138-
// Fresnel reflectance term of the specular equation (F)
139-
// Real-Time Rendering 4th Edition, Page 321, Equation 9.18 modified
140-
vec3
141-
pl_fresnel_schlick(vec3 f0, vec3 f90, float VdotH)
142-
{
143-
return f0 + (f90 - f0) * pow(clamp(1.0 - VdotH, 0.0, 1.0), 5.0);
144-
}
145-
146-
// Normal distribution function term of the specular equation (D)
147-
// Real-Time Rendering 4th Edition, Page 340, Equation 9.41
148-
float
149-
pl_distribution_ggx(float NdotH, float alphaRoughness)
150-
{
151-
float alphaRoughnessSq = alphaRoughness * alphaRoughness;
152-
float f = (NdotH * NdotH) * (alphaRoughnessSq - 1.0) + 1.0;
153-
return alphaRoughnessSq / (M_PI * f * f);
154-
}
155-
156-
// Masking-Shadowing function (G2)
157-
// Real-Time Rendering 4th Edition, Page 341, Equation 9.42
158-
float
159-
pl_masking_shadowing_ggx(float NdotL, float NdotV, float alphaRoughness)
160-
{
161-
float alphaRoughnessSq = alphaRoughness * alphaRoughness;
162-
163-
float GGXV = NdotL * sqrt(NdotV * NdotV * (1.0 - alphaRoughnessSq) + alphaRoughnessSq);
164-
float GGXL = NdotV * sqrt(NdotL * NdotL * (1.0 - alphaRoughnessSq) + alphaRoughnessSq);
165-
166-
float GGX = GGXV + GGXL;
167-
if (GGX > 0.0)
168-
{
169-
return 0.5 / GGX;
170-
}
171-
return 0.0;
172-
}
173-
174-
// Masking-Shadowing function fast (G2)
175-
// Real-Time Rendering 4th Edition, Page 341, Equation 9.42
176-
float
177-
pl_masking_shadowing_fast_ggx(float NdotL, float NdotV, float alphaRoughness)
178-
{
179-
float a2 = alphaRoughness * alphaRoughness;
180-
float GGXV = NdotL * sqrt(NdotV * NdotV * (1.0 - a2) + a2);
181-
float GGXL = NdotV * sqrt(NdotL * NdotL * (1.0 - a2) + a2);
182-
float GGX = GGXV + GGXL;
183-
if (GGX > 0.0)
184-
{
185-
return 0.5 / GGX;
186-
}
187-
return 0.0;
188-
}
189-
190-
191-
// Simple Lambertian BRDF (fd)
192-
// Real-Time Rendering 4th Edition, Page 314, Equation 9.11
193-
vec3
194-
pl_brdf_lambertian(vec3 diffuseColor)
195-
{
196-
return diffuseColor / M_PI;
197-
198-
// disney
199-
// float Fd_Burley(float NoV, float NoL, float LoH, float roughness) {
200-
// float f90 = 0.5 + 2.0 * roughness * LoH * LoH;
201-
// float lightScatter = F_Schlick(NoL, 1.0, f90);
202-
// float viewScatter = F_Schlick(NoV, 1.0, f90);
203-
// return lightScatter * viewScatter * (1.0 / PI);
204-
// }
205-
}
206-
207-
// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#acknowledgments AppendixB
208-
vec3
209-
BRDF_specularGGX(float alphaRoughness, float NdotL, float NdotV, float NdotH)
210-
{
211-
float G2 = pl_masking_shadowing_ggx(NdotL, NdotV, alphaRoughness);
212-
float D = pl_distribution_ggx(NdotH, alphaRoughness);
213-
return vec3(G2 * D);
214-
}
215-
216-
#endif // PL_MATH_GLSL
134+
#endif // MATH_GLSL

shaders/panorama_to_cubemap.comp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#version 450
22

3-
#define PL_PI 3.1415926535897932384626433832795
3+
#include "math.glsl"
44

55
layout(std140, set = 0, binding = 0) readonly buffer _tBufferIn
66
{

shaders/pl_shader_interop_renderer.h

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ Index of this file:
5151

5252
PL_BEGIN_ENUM(plRenderingFlags)
5353
PL_ENUM_ITEM(PL_RENDERING_FLAG_USE_PUNCTUAL, 1 << 0)
54-
PL_ENUM_ITEM(PL_RENDERING_FLAG_USE_IBL, 1 << 1)
55-
PL_ENUM_ITEM(PL_RENDERING_FLAG_SHADOWS, 1 << 2)
54+
PL_ENUM_ITEM(PL_RENDERING_FLAG_USE_IBL, 1 << 1)
55+
PL_ENUM_ITEM(PL_RENDERING_FLAG_SHADOWS, 1 << 2)
5656
PL_END_ENUM
5757

5858
PL_BEGIN_ENUM(plMeshFormatFlags)
@@ -73,22 +73,22 @@ PL_BEGIN_ENUM(plMeshFormatFlags)
7373
PL_END_ENUM
7474

7575
PL_BEGIN_ENUM(plTonemapMode)
76-
PL_ENUM_ITEM(PL_TONEMAP_MODE_NONE, 0)
77-
PL_ENUM_ITEM(PL_TONEMAP_MODE_ACES, 1)
76+
PL_ENUM_ITEM(PL_TONEMAP_MODE_NONE, 0)
77+
PL_ENUM_ITEM(PL_TONEMAP_MODE_ACES, 1)
7878
PL_ENUM_ITEM(PL_TONEMAP_MODE_REINHARD, 2)
7979
PL_END_ENUM
8080

8181
PL_BEGIN_ENUM(plLightType)
8282
PL_ENUM_ITEM(PL_LIGHT_TYPE_DIRECTIONAL, 0)
83-
PL_ENUM_ITEM(PL_LIGHT_TYPE_POINT, 1)
84-
PL_ENUM_ITEM(PL_LIGHT_TYPE_SPOT, 2)
83+
PL_ENUM_ITEM(PL_LIGHT_TYPE_POINT, 1)
84+
PL_ENUM_ITEM(PL_LIGHT_TYPE_SPOT, 2)
8585
PL_END_ENUM
8686

8787
PL_BEGIN_ENUM(plTextureMappingFlags)
88-
PL_ENUM_ITEM(PL_HAS_BASE_COLOR_MAP, 1 << 0)
89-
PL_ENUM_ITEM(PL_HAS_NORMAL_MAP, 1 << 1)
90-
PL_ENUM_ITEM(PL_HAS_EMISSIVE_MAP, 1 << 2)
91-
PL_ENUM_ITEM(PL_HAS_OCCLUSION_MAP, 1 << 3)
88+
PL_ENUM_ITEM(PL_HAS_BASE_COLOR_MAP, 1 << 0)
89+
PL_ENUM_ITEM(PL_HAS_NORMAL_MAP, 1 << 1)
90+
PL_ENUM_ITEM(PL_HAS_EMISSIVE_MAP, 1 << 2)
91+
PL_ENUM_ITEM(PL_HAS_OCCLUSION_MAP, 1 << 3)
9292
PL_ENUM_ITEM(PL_HAS_METALLIC_ROUGHNESS_MAP, 1 << 4)
9393
PL_END_ENUM
9494

0 commit comments

Comments
 (0)