declare const _default: "\nconst float maxCascades = 4.0;\n\n// shadow matrix for selected cascade\nmat4 cascadeShadowMat;\n\n// function which selects a shadow projection matrix based on cascade distances \nvoid getShadowCascadeMatrix(mat4 shadowMatrixPalette[4], float shadowCascadeDistances[4], float shadowCascadeCount) {\n\n // depth in 0 .. far plane range\n float depth = 1.0 / gl_FragCoord.w;\n\n // find cascade index based on the depth (loop as there is no per component vec compare operator in webgl)\n float cascadeIndex = 0.0;\n for (float i = 0.0; i < maxCascades; i++) {\n if (depth < shadowCascadeDistances[int(i)]) {\n cascadeIndex = i;\n break;\n }\n }\n\n // limit to actual number of used cascades\n cascadeIndex = min(cascadeIndex, shadowCascadeCount - 1.0);\n\n // pick shadow matrix\n #ifdef GL2\n cascadeShadowMat = shadowMatrixPalette[int(cascadeIndex)];\n #else\n // webgl 1 does not allow non-cost index array lookup\n if (cascadeIndex == 0.0) {\n cascadeShadowMat = shadowMatrixPalette[0];\n }\n else if (cascadeIndex == 1.0) {\n cascadeShadowMat = shadowMatrixPalette[1];\n }\n else if (cascadeIndex == 2.0) {\n cascadeShadowMat = shadowMatrixPalette[2];\n }\n else {\n cascadeShadowMat = shadowMatrixPalette[3];\n }\n #endif\n}\n\nvoid fadeShadow(float shadowCascadeDistances[4]) { \n\n // if the pixel is past the shadow distance, remove shadow\n // this enforces straight line instead of corner of shadow which moves when camera rotates \n float depth = 1.0 / gl_FragCoord.w;\n if (depth > shadowCascadeDistances[int(maxCascades - 1.0)]) {\n dShadowCoord.z = -9999999.0;\n }\n}\n"; export default _default;