UNPKG

casc-cesium

Version:

Vue 3.x components for CesiumJS.

46 lines (42 loc) 2.09 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); let isExtended = false; let createShadowReceiveFragmentShaderNative; class ShadowMapShaderExtend { static extend(viewer) { if (isExtended) { return; } const ShadowMapShader = Cesium["ShadowMapShader"]; createShadowReceiveFragmentShaderNative = ShadowMapShader.createShadowReceiveFragmentShader; ShadowMapShader.createShadowReceiveFragmentShader = function(fs, shadowMap, castShadows, isTerrain, hasTerrainNormal) { fs = createShadowReceiveFragmentShaderNative.bind(this)(fs, shadowMap, castShadows, isTerrain, hasTerrainNormal); const isSpotLight = shadowMap._isSpotLight; if (isSpotLight) { fs.sources[0] = ` uniform vec4 shadowMap_viewshedVisibleColor; uniform vec4 shadowMap_viewshedInvisibleColor; ${fs.sources[0]} `; fs.sources[fs.sources.length - 1] = fs.sources[fs.sources.length - 1].replace("gl_FragColor.rgb *= visibility;", ` float _depth = shadowPosition.z - shadowParameters.depthBias; float _visibility = czm_shadowDepthCompare(shadowMap_texture, shadowPosition.xy, _depth); gl_FragColor.rgb *= (_visibility < 0.999 ? shadowMap_viewshedInvisibleColor.rgb :shadowMap_viewshedVisibleColor.rgb); `); fs.sources[fs.sources.length - 1] = fs.sources[fs.sources.length - 1].replace("vec3 directionEC = normalize(positionEC.xyz - shadowMap_lightPositionEC.xyz);", "vec3 directionEC = normalize(positionEC.xyz - shadowMap_lightPositionEC.xyz);if (distance(positionEC.xyz, shadowMap_lightPositionEC.xyz) > shadowMap_lightPositionEC.w) { return; }"); } return fs; }; isExtended = true; } static revoke(viewer) { if (!isExtended) { return; } const ShadowMapShader = Cesium["ShadowMapShader"]; ShadowMapShader.createShadowReceiveFragmentShader = createShadowReceiveFragmentShaderNative; isExtended = false; } } exports["default"] = ShadowMapShaderExtend; //# sourceMappingURL=ShadowMapShaderExtend.js.map