diff options
Diffstat (limited to 'src/engine/shaders/fragmentShadowNoTex')
-rw-r--r-- | src/engine/shaders/fragmentShadowNoTex | 30 |
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 |