summaryrefslogtreecommitdiffstats
path: root/src/engine/shaders/fragmentShadowNoTex
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/shaders/fragmentShadowNoTex')
-rw-r--r--src/engine/shaders/fragmentShadowNoTex30
1 files changed, 29 insertions, 1 deletions
diff --git a/src/engine/shaders/fragmentShadowNoTex b/src/engine/shaders/fragmentShadowNoTex
index ff08ea51..31efbf63 100644
--- a/src/engine/shaders/fragmentShadowNoTex
+++ b/src/engine/shaders/fragmentShadowNoTex
@@ -3,6 +3,7 @@
uniform highp float lightStrength;
uniform highp float ambientStrength;
+uniform highp float shadowQuality;
uniform highp vec3 color_mdl;
uniform highp sampler2DShadow shadowMap; // use with version 2
//uniform highp sampler2D shadowMap; // use with version 1
@@ -31,6 +32,23 @@ const highp vec2 poissonDisk[16] = vec2[](vec2(-0.94201624, -0.39906216),
vec2(0.19984126, 0.78641367),
vec2(0.14383161, -0.14100790));
+/*const highp vec2 poissonDisk[16] = vec2[](vec2(-0.25, -0.25),
+ vec2(0.25, -0.25),
+ vec2(-0.25, 0.25),
+ vec2(0.25, 0.25),
+ vec2(-0.5, -0.5),
+ vec2(0.5, -0.5),
+ vec2(-0.5, 0.5),
+ vec2(0.5, 0.5),
+ vec2(-0.75, -0.75),
+ vec2(0.75, -0.75),
+ vec2(-0.75, 0.75),
+ vec2(0.75, 0.75),
+ vec2(-1.0, -1.0),
+ vec2(1.0, -1.0),
+ vec2(-1.0, 1.0),
+ vec2(1.0, 1.0));*/
+
/*float random(vec3 seed, int i) {
vec4 seed4 = vec4(seed, i);
float dot_product = dot(seed4, vec4(12.9898, 78.233, 45.164, 94.673));
@@ -108,7 +126,17 @@ void main() {
highp float visibility = 0.2;
for (int i = 0; i < 15; i++) {
vec4 shadCoordsPD = shadCoords;
- shadCoordsPD.xy += poissonDisk[i] / 100.0;
+ shadCoordsPD.x += cos(poissonDisk[i].x) / shadowQuality;
+ shadCoordsPD.y += sin(poissonDisk[i].y) / shadowQuality;
+ // good for low shadow quality
+ //shadCoordsPD.x += cos(poissonDisk[i].x) / 33.3;
+ //shadCoordsPD.y += sin(poissonDisk[i].y) / 33.3;
+ // good for medium shadow quality
+ //shadCoordsPD.x += cos(poissonDisk[i].x) / 66.7;
+ //shadCoordsPD.y += sin(poissonDisk[i].y) / 66.7;
+ // good for high shadow quality
+ //shadCoordsPD.x += cos(poissonDisk[i].x) / 100;
+ //shadCoordsPD.y += sin(poissonDisk[i].y) / 100;
visibility += 0.05 * shadow2DProj(shadowMap, shadCoordsPD).r;
}
// stratified poisson; produces noise but hides pixel edges well