Skip to content

Commit 272915a

Browse files
Merge pull request #37 from knightcrawler25/dev
Cleanup
2 parents 111b7fa + 343c67e commit 272915a

File tree

2 files changed

+21
-31
lines changed

2 files changed

+21
-31
lines changed

src/shaders/common/disney.glsl

Lines changed: 20 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,9 @@
3737
vec3 EvalDielectricReflection(State state, vec3 V, vec3 N, vec3 L, vec3 H, inout float pdf)
3838
//-----------------------------------------------------------------------
3939
{
40-
if (!(dot(N, L) * dot(N, V) > 0.0))
41-
{
42-
pdf = 0;
40+
pdf = 0.0;
41+
if (dot(N, L) <= 0.0)
4342
return vec3(0.0);
44-
}
4543

4644
float F = DielectricFresnel(dot(V, H), state.eta);
4745
float D = GTR2(dot(N, H), state.mat.roughness);
@@ -56,11 +54,9 @@ vec3 EvalDielectricReflection(State state, vec3 V, vec3 N, vec3 L, vec3 H, inout
5654
vec3 EvalDielectricRefraction(State state, vec3 V, vec3 N, vec3 L, vec3 H, inout float pdf)
5755
//-----------------------------------------------------------------------
5856
{
59-
if (dot(N, L) > 0.0)
60-
{
61-
pdf = 0;
62-
return vec3(0.0);
63-
}
57+
pdf = 0.0;
58+
if (dot(N, L) >= 0.0)
59+
return vec3(0.0);
6460

6561
float F = DielectricFresnel(abs(dot(V, H)), state.eta);
6662
float D = GTR2(dot(N, H), state.mat.roughness);
@@ -76,11 +72,9 @@ vec3 EvalDielectricRefraction(State state, vec3 V, vec3 N, vec3 L, vec3 H, inout
7672
vec3 EvalSpecular(State state, vec3 Cspec0, vec3 V, vec3 N, vec3 L, vec3 H, inout float pdf)
7773
//-----------------------------------------------------------------------
7874
{
79-
if (!(dot(N, L) * dot(N, V) > 0.0))
80-
{
81-
pdf = 0;
82-
return vec3(0.0);
83-
}
75+
pdf = 0.0;
76+
if (dot(N, L) <= 0.0)
77+
return vec3(0.0);
8478

8579
float D = GTR2(dot(N, H), state.mat.roughness);
8680
pdf = D * dot(N, H) / (4.0 * dot(V, H));
@@ -95,11 +89,9 @@ vec3 EvalSpecular(State state, vec3 Cspec0, vec3 V, vec3 N, vec3 L, vec3 H, inou
9589
vec3 EvalClearcoat(State state, vec3 V, vec3 N, vec3 L, vec3 H, inout float pdf)
9690
//-----------------------------------------------------------------------
9791
{
98-
if (!(dot(N, L) * dot(N, V) > 0.0))
99-
{
100-
pdf = 0;
101-
return vec3(0.0);
102-
}
92+
pdf = 0.0;
93+
if (dot(N, L) <= 0.0)
94+
return vec3(0.0);
10395

10496
float D = GTR1(dot(N, H), mix(0.1, 0.001, state.mat.clearcoatGloss));
10597
pdf = D * dot(N, H) / (4.0 * dot(V, H));
@@ -114,11 +106,9 @@ vec3 EvalClearcoat(State state, vec3 V, vec3 N, vec3 L, vec3 H, inout float pdf)
114106
vec3 EvalDiffuse(State state, vec3 Csheen, vec3 V, vec3 N, vec3 L, vec3 H, inout float pdf)
115107
//-----------------------------------------------------------------------
116108
{
117-
if (!(dot(N, L) * dot(N, V) > 0.0))
118-
{
119-
pdf = 0;
120-
return vec3(0.0);
121-
}
109+
pdf = 0.0;
110+
if (dot(N, L) <= 0.0)
111+
return vec3(0.0);
122112

123113
pdf = dot(N, L) * (1.0 / PI);
124114

@@ -164,7 +154,7 @@ vec3 DisneySample(inout State state, vec3 V, vec3 N, inout vec3 L, inout float p
164154
vec3 H = ImportanceSampleGTR2(state.mat.roughness, r1, r2);
165155
H = state.tangent * H.x + state.bitangent * H.y + N * H.z;
166156

167-
if (dot(N, H) < 0.0)
157+
if (dot(V, H) < 0.0)
168158
H = -H;
169159

170160
vec3 R = reflect(-V, H);
@@ -208,7 +198,7 @@ vec3 DisneySample(inout State state, vec3 V, vec3 N, inout vec3 L, inout float p
208198
vec3 H = ImportanceSampleGTR2(state.mat.roughness, r1, r2);
209199
H = state.tangent * H.x + state.bitangent * H.y + N * H.z;
210200

211-
if (dot(N, H) < 0.0)
201+
if (dot(V, H) < 0.0)
212202
H = -H;
213203

214204
L = normalize(reflect(-V, H));
@@ -221,7 +211,7 @@ vec3 DisneySample(inout State state, vec3 V, vec3 N, inout vec3 L, inout float p
221211
vec3 H = ImportanceSampleGTR1(mix(0.1, 0.001, state.mat.clearcoatGloss), r1, r2);
222212
H = state.tangent * H.x + state.bitangent * H.y + N * H.z;
223213

224-
if (dot(N, H) < 0.0)
214+
if (dot(V, H) < 0.0)
225215
H = -H;
226216

227217
L = normalize(reflect(-V, H));
@@ -242,14 +232,14 @@ vec3 DisneyEval(State state, vec3 V, vec3 N, vec3 L, inout float pdf)
242232
//-----------------------------------------------------------------------
243233
{
244234
vec3 H;
245-
bool refl = dot(N, L) * dot(N, V) > 0.0;
235+
bool refl = dot(N, L) > 0.0;
246236

247237
if (refl)
248238
H = normalize(L + V);
249239
else
250-
H = normalize(L * (1.0 / state.eta) + V);
240+
H = normalize(L + V * state.eta);
251241

252-
if (dot(N, H) < 0.0)
242+
if (dot(V, H) < 0.0)
253243
H = -H;
254244

255245
float diffuseRatio = 0.5 * (1.0 - state.mat.metallic);

src/shaders/common/pathtrace.glsl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ vec3 DirectLight(in Ray r, in State state)
198198
vec3 lightDir = lightSampleRec.surfacePos - surfacePos;
199199
float lightDist = length(lightDir);
200200
float lightDistSq = lightDist * lightDist;
201-
lightDir /= sqrt(lightDistSq);
201+
lightDir /= lightDist;
202202

203203
if (dot(lightDir, lightSampleRec.normal) < 0.0)
204204
{

0 commit comments

Comments
 (0)