Untitled

From Silly Bat, 2 Years ago, written in Plain Text, viewed 609 times.
URL https://paste.bugabuse.net/view/1a326f37 Embed
Download Paste or View Raw
  1. var KERNEL_SIZE=2;
  2. var KERNEL_LOOP=KERNEL_SIZE/2-0.5;
  3. var KERNEL_CONTRIBUTIONS=KERNEL_SIZE*KERNEL_SIZE;
  4.        
  5. //#GLSLSource
  6. pub.buildShader=function(features) {
  7.         var shadowMapSampler = "\n"+
  8.         "const float shadowTexelSize=1.0/2048.0;\n"+
  9.         //When dot-producted with the packed values in the shadow map will produce a Z value in the range 0-1
  10.         "const vec4 bitShifts=vec4(1.0/(256.0*256.0*256.0),1.0/(256.0*256.0),1.0/256.0,1.0);\n"+
  11.         "float rand(vec2 co){\n"+
  12.         "    return fract(sin(dot(co.xy,vec2(12.9898,78.233)))*43758.5453);\n"+
  13.         "}\n"+
  14.         "float ShadowMapSamplerStochastic(vec4 sunShadowMapPosition, sampler2D sunShadowMap, float shadowStrength) {\n"+
  15.         "       float shadowEffect;\n"+
  16.         "       vec3 shadowMapTexel=sunShadowMapPosition.xyz/sunShadowMapPosition.w;\n"+
  17.         "       shadowMapTexel.z-=shadowMapTexel.z*0.003;\n"+
  18.         "       if (shadowMapTexel.x<0.0 || shadowMapTexel.x>1.0 || shadowMapTexel.y<0.0 || shadowMapTexel.y>1.0 || shadowMapTexel.z<0.0 || shadowMapTexel.z>0.45) shadowEffect=1.0;\n"+
  19.         "       else {\n"+
  20.         "               float shadowTotal=0.0, shadowMapDepth=0.0;\n"+
  21.         "               vec2 lookupTexel;\n";  
  22.         for (var pixelX=-KERNEL_LOOP; pixelX<=KERNEL_LOOP; pixelX+=1.0) {
  23.                 for (var pixelY=-KERNEL_LOOP; pixelY<=KERNEL_LOOP; pixelY+=1.0) {
  24.                         shadowMapSampler +=
  25.         "               lookupTexel=shadowMapTexel.xy+shadowTexelSize*( vec2(cos(rand(sunShadowMapPosition.xy))+("+pixelX+"),sin(rand(sunShadowMapPosition.yx))+("+pixelY+")) );\n"+
  26.         "               shadowMapDepth=dot(texture2D(sunShadowMap,lookupTexel),bitShifts);\n"+
  27.         "               shadowTotal+=step(shadowMapDepth,shadowMapTexel.z)*shadowStrength;\n";
  28.                 }
  29.         }
  30.         shadowMapSampler +=
  31.         "               shadowEffect=max(1.0-(shadowTotal/"+KERNEL_CONTRIBUTIONS+".0),0.0);\n"+
  32.         "       }\n"+
  33.         "       return shadowEffect;\n"+
  34.         "}\n"+
  35. };

Reply to "Untitled"

Here you can reply to the paste above