|
@@ -8,12 +8,6 @@ layout (location = 3) out float worldShadow;
|
|
|
layout (binding = 0) uniform sampler2D samp;
|
|
|
layout (binding = 1) uniform sampler2D shadowSamp;
|
|
|
|
|
|
-uniform mat4 proj;
|
|
|
-uniform mat4 view;
|
|
|
-uniform mat4 model;
|
|
|
-
|
|
|
-uniform mat4 projViewShadow;
|
|
|
-
|
|
|
in vec3 varPosition;
|
|
|
in vec2 varTex;
|
|
|
in vec3 varNormal;
|
|
@@ -21,7 +15,7 @@ in vec4 varShadow;
|
|
|
|
|
|
uniform bool shadows;
|
|
|
uniform float radius;
|
|
|
-uniform float bias;
|
|
|
+uniform float zbias;
|
|
|
|
|
|
const int sampleAmount = 64;
|
|
|
const vec2 samples[64] = {
|
|
@@ -49,23 +43,18 @@ void main(void) {
|
|
|
worldPosition = varPosition;
|
|
|
worldNormal = normalize(varNormal);
|
|
|
|
|
|
- /*if(shadows) {
|
|
|
+ if(shadows) {
|
|
|
vec3 pos = varShadow.xyz / varShadow.w;
|
|
|
- float fbias = bias * (1.0 - max(dot(worldNormal, -light), 0.0));
|
|
|
- float shadow = 0.0;
|
|
|
- shadow = float(texture(shadowSamp, pos.xy).r == 1);//float(texture(shadowSamp, pos.xy).r == 1);
|
|
|
- //for(int i = 0; i < sampleAmount; i++) {
|
|
|
- // shadow += float(texture(shadowSamp, pos.xy + samples[i] * radius).r + fbias > pos.z);
|
|
|
- //}
|
|
|
- //shadow /= sampleAmount;
|
|
|
- worldShadow = 1;//shadow;
|
|
|
+ float fbias = zbias * (1.0 - max(dot(worldNormal, -light), 0.0));
|
|
|
+ float shadow = 0.0;
|
|
|
+ for(int i = 0; i < sampleAmount; i++) {
|
|
|
+ shadow += float(texture(shadowSamp, pos.xy + samples[i] * radius).r + fbias > pos.z);
|
|
|
+ }
|
|
|
+ shadow /= sampleAmount;
|
|
|
+ worldShadow = shadow;
|
|
|
} else {
|
|
|
worldShadow = 1.0;
|
|
|
- }*/
|
|
|
-
|
|
|
- vec3 pos = varShadow.xyz / varShadow.w;
|
|
|
- float test = texture(shadowSamp, pos.xy).r;
|
|
|
- worldShadow = float(test >= 0.99 && test <= 1.01);
|
|
|
+ }
|
|
|
|
|
|
worldColor = texture(samp, varTex);
|
|
|
-}
|
|
|
+}
|