Skip to content

Commit 99df450

Browse files
committed
reenable per-triangle shadowing
1 parent 0244f27 commit 99df450

4 files changed

Lines changed: 16 additions & 27 deletions

File tree

shader/materials/main.frag

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,11 @@ float calcShadow() {
5656
// vec4 pos4 = scene.viewProjectInv * scr;
5757

5858
vec4 shadowPos[2];
59-
// shadowPos[0] = scene.viewShadow[0]*vec4(pos4);
60-
// shadowPos[1] = scene.viewShadow[1]*vec4(pos4);
61-
shadowPos[0] = shInp.shadowPos[0];
62-
shadowPos[1] = shInp.shadowPos[1];
59+
vec4 pos4 = vec4(shInp.pos,1);
60+
shadowPos[0] = scene.viewShadow[0]*vec4(pos4);
61+
shadowPos[1] = scene.viewShadow[1]*vec4(pos4);
62+
// shadowPos[0] = shInp.shadowPos[0];
63+
// shadowPos[1] = shInp.shadowPos[1];
6364

6465
vec3 shPos0 = (shadowPos[0].xyz)/shadowPos[0].w;
6566
vec3 shPos1 = (shadowPos[1].xyz)/shadowPos[1].w;
@@ -75,11 +76,12 @@ vec4 dbgLambert() {
7576
}
7677

7778
vec3 flatNormal() {
78-
const vec2 fragCoord = (gl_FragCoord.xy*scene.screenResInv)*2.0-vec2(1.0);
79-
const vec4 scr = vec4(fragCoord.x, fragCoord.y, gl_FragCoord.z, 1.0)/gl_FragCoord.w;
80-
const vec4 pos4 = scene.viewProjectInv * scr;
79+
// const vec2 fragCoord = (gl_FragCoord.xy*scene.screenResInv)*2.0-vec2(1.0);
80+
// const vec4 scr = vec4(fragCoord.x, fragCoord.y, gl_FragCoord.z, 1.0)/gl_FragCoord.w;
81+
// const vec4 pos4 = scene.viewProjectInv * scr;
82+
// vec3 pos = pos4.xyz/pos4.w;
8183

82-
vec3 pos = pos4.xyz/pos4.w;
84+
vec3 pos = shInp.pos;
8385
vec3 dx = dFdx(pos);
8486
vec3 dy = dFdy(pos);
8587
return /*normalize*/(cross(dx,dy));
@@ -91,10 +93,10 @@ vec3 calcLight() {
9193

9294
#if (MESH_TYPE==T_LANDSCAPE)
9395
// fix self-shadowed surface
94-
// float flatSh = dot(scene.sunDir,flatNormal());
95-
// if(flatSh<=0) {
96-
// lambert = 0;
97-
// }
96+
float flatSh = dot(scene.sunDir,flatNormal());
97+
if(flatSh<=0) {
98+
lambert = 0;
99+
}
98100
#endif
99101

100102
float light = lambert*calcShadow();

shader/materials/main.tese

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,6 @@ vec3 multiWave(vec2 at) {
3939
void main() {
4040
shOut.uv = interpolate(shInp[0].uv, shInp[1].uv, shInp[2].uv);
4141
#if !defined(DEPTH_ONLY)
42-
shOut.shadowPos[0] = interpolate(shInp[0].shadowPos[0], shInp[1].shadowPos[0], shInp[2].shadowPos[0]);
43-
shOut.shadowPos[1] = interpolate(shInp[0].shadowPos[1], shInp[1].shadowPos[1], shInp[2].shadowPos[1]);
4442
shOut.normal = interpolate(shInp[0].normal, shInp[1].normal, shInp[2].normal);
4543
shOut.pos = interpolate(shInp[0].pos, shInp[1].pos, shInp[2].pos);
4644
#endif
@@ -54,8 +52,6 @@ void main() {
5452

5553
pos += scene.viewProject*vec4(dPos,0);
5654
shOut.pos += dPos;
57-
shOut.shadowPos[0] += scene.viewShadow[0] * vec4(dPos,0);
58-
shOut.shadowPos[1] += scene.viewShadow[1] * vec4(dPos,0);
5955

6056
//shOut.normal += dPos;
6157
//shOut.normal = normalize(shOut.normal);

shader/materials/materials_common.glsl

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,11 +79,7 @@ struct Varyings {
7979
#endif
8080

8181
#if !defined(DEPTH_ONLY)
82-
vec4 shadowPos[2];
8382
vec3 normal;
84-
#endif
85-
86-
#if defined(WATER)
8783
vec3 pos;
8884
#endif
8985

shader/materials/vertex_process.glsl

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -126,13 +126,8 @@ Varyings processVertex(out vec4 position, uint objId, uint vboOffset) {
126126
#endif
127127

128128
#if !defined(DEPTH_ONLY)
129-
shOut.shadowPos[0] = scene.viewShadow[0]*vec4(pos,1.0);
130-
shOut.shadowPos[1] = scene.viewShadow[1]*vec4(pos,1.0);
131-
shOut.normal = normal;
132-
#endif
133-
134-
#if defined(WATER)
135-
shOut.pos = pos;
129+
shOut.normal = normal;
130+
shOut.pos = pos;
136131
#endif
137132

138133
#if defined(MAT_COLOR)

0 commit comments

Comments
 (0)