123456789101112131415161718192021222324252627282930313233 |
- /*
- All material copyright ESRI, All Rights Reserved, unless otherwise specified.
- See https://js.arcgis.com/4.25/esri/copyright.txt for details.
- */
- import{a as e,v as a}from"./mat4.js";import{c as r}from"./mat4f64.js";import{ScreenSpacePass as o}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.js";import{ReadLinearDepth as s}from"../views/3d/webgl-engine/core/shaderLibrary/output/ReadLinearDepth.glsl.js";import{ReadShadowMapBindParameters as i,ReadShadowMapPass as t}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js";import{CameraSpace as d}from"../views/3d/webgl-engine/core/shaderLibrary/util/CameraSpace.glsl.js";import{RgbaFloatEncoding as l}from"../views/3d/webgl-engine/core/shaderLibrary/util/RgbaFloatEncoding.glsl.js";import{Float2PassUniform as n}from"../views/3d/webgl-engine/core/shaderModules/Float2PassUniform.js";import{glsl as c}from"../views/3d/webgl-engine/core/shaderModules/interfaces.js";import{Matrix4PassUniform as p}from"../views/3d/webgl-engine/core/shaderModules/Matrix4PassUniform.js";import{ShaderBuilder as h}from"../views/3d/webgl-engine/core/shaderModules/ShaderBuilder.js";import{Texture2DPassUniform as m}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";class w extends i{}const u=255,g=1/u;function v(r){const i=new h,w=i.fragment;return w.include(l),w.include(s),i.include(d),i.include(o),i.include(t,r),w.uniforms.add([new m("depthMap",(e=>e.linearDepthTexture)),new p("inverseViewMatrix",((r,o)=>e(f,a(f,o.camera.viewMatrix,o.camera.center)))),new n("nearFar",((e,a)=>a.camera.nearFar))]),w.constants.add("sampleValue","float",g),w.code.add(c`void main(void) {
- float depth = rgba2float(texture2D(depthMap, uv));
- if (depth == 0.0) {
- discard;
- }
- float currentPixelDepth = linearDepthFromFloat(depth, nearFar);
- if (-currentPixelDepth > nearFar.y || -currentPixelDepth < nearFar.x) {
- discard;
- }
- vec4 currentPixelPos = vec4(reconstructPosition(gl_FragCoord.xy, currentPixelDepth), 1.0);
- vec4 worldSpacePos = inverseViewMatrix * currentPixelPos;
- mat4 shadowMatrix;
- float linearDepth = -currentPixelDepth;
- int i = chooseCascade(linearDepth, shadowMatrix);
- if (i >= numCascades) {
- discard;
- }
- vec3 lvpos = lightSpacePosition(worldSpacePos.xyz, shadowMatrix);
- if (lvpos.z >= 1.0 || lvpos.x < 0.0 || lvpos.x > 1.0 || lvpos.y < 0.0 || lvpos.y > 1.0) {
- discard;
- }
- vec2 uvShadow = cascadeCoordinates(i, lvpos);
- float depthShadow = readShadowMapDepth(uvShadow, shadowMapTex);
- bool shadow = depthShadow < lvpos.z;
- if (!shadow) {
- discard;
- }
- gl_FragColor = vec4(sampleValue);
- }`),i}const f=r(),x=Object.freeze(Object.defineProperty({__proto__:null,ShadowCastAccumulatePassParameters:w,shadowCastMaxSamples:u,build:v},Symbol.toStringTag,{value:"Module"}));export{w as S,x as a,v as b,u as s};
|