@@ -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
7778vec3 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();
0 commit comments