UNPKG

casc-cesium

Version:

Vue 3.x components for CesiumJS.

1 lines 3.91 kB
{"version":3,"file":"ShadowMapShaderExtend.mjs","sources":["../../../../../../packages/shared/extends/scene/ShadowMapShaderExtend.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-04-16 19:29:57\n * @LastEditTime: 2022-05-13 09:49:41\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\shared\\extends\\scene\\ShadowMapShaderExtend.ts\n */\n\nlet isExtended = false\nlet createShadowReceiveFragmentShaderNative\n\nexport default class ShadowMapShaderExtend {\n static extend(viewer?: Cesium.Viewer) {\n if (isExtended) {\n return\n }\n\n const ShadowMapShader = Cesium['ShadowMapShader']\n\n createShadowReceiveFragmentShaderNative = ShadowMapShader.createShadowReceiveFragmentShader\n\n ShadowMapShader.createShadowReceiveFragmentShader = function (fs, shadowMap, castShadows, isTerrain, hasTerrainNormal) {\n fs = createShadowReceiveFragmentShaderNative.bind(this)(fs, shadowMap, castShadows, isTerrain, hasTerrainNormal)\n const isSpotLight = shadowMap._isSpotLight\n\n if (isSpotLight) {\n fs.sources[0] = `\n uniform vec4 shadowMap_viewshedVisibleColor;\n uniform vec4 shadowMap_viewshedInvisibleColor;\n ${fs.sources[0]}\n `\n fs.sources[fs.sources.length - 1] = fs.sources[fs.sources.length - 1].replace(\n 'gl_FragColor.rgb *= visibility;',\n `\n float _depth = shadowPosition.z - shadowParameters.depthBias;\n float _visibility = czm_shadowDepthCompare(shadowMap_texture, shadowPosition.xy, _depth);\n gl_FragColor.rgb *= (_visibility < 0.999 ? shadowMap_viewshedInvisibleColor.rgb :shadowMap_viewshedVisibleColor.rgb);\n `\n )\n fs.sources[fs.sources.length - 1] = fs.sources[fs.sources.length - 1].replace(\n 'vec3 directionEC = normalize(positionEC.xyz - shadowMap_lightPositionEC.xyz);',\n 'vec3 directionEC = normalize(positionEC.xyz - shadowMap_lightPositionEC.xyz);if (distance(positionEC.xyz, shadowMap_lightPositionEC.xyz) > shadowMap_lightPositionEC.w) { return; }'\n )\n }\n\n return fs\n }\n\n isExtended = true\n }\n\n static revoke(viewer?: Cesium.Viewer) {\n if (!isExtended) {\n return\n }\n\n const ShadowMapShader = Cesium['ShadowMapShader']\n ShadowMapShader.createShadowReceiveFragmentShader = createShadowReceiveFragmentShaderNative\n\n isExtended = false\n }\n}\n"],"names":[],"mappings":"AAAA,IAAI,UAAU,GAAG,KAAK,CAAC;AACvB,IAAI,uCAAuC,CAAC;AAC7B,MAAM,qBAAqB,CAAC;AAC3C,EAAE,OAAO,MAAM,CAAC,MAAM,EAAE;AACxB,IAAI,IAAI,UAAU,EAAE;AACpB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACtD,IAAI,uCAAuC,GAAG,eAAe,CAAC,iCAAiC,CAAC;AAChG,IAAI,eAAe,CAAC,iCAAiC,GAAG,SAAS,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE;AAC1H,MAAM,EAAE,GAAG,uCAAuC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;AACvH,MAAM,MAAM,WAAW,GAAG,SAAS,CAAC,YAAY,CAAC;AACjD,MAAM,IAAI,WAAW,EAAE;AACvB,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AACzB;AACA;AACA,UAAU,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1B,QAAQ,CAAC,CAAC;AACV,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,iCAAiC,EAAE,CAAC;AAC1H;AACA;AACA;AACA,UAAU,CAAC,CAAC,CAAC;AACb,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,+EAA+E,EAAE,qLAAqL,CAAC,CAAC;AAC9V,OAAO;AACP,MAAM,OAAO,EAAE,CAAC;AAChB,KAAK,CAAC;AACN,IAAI,UAAU,GAAG,IAAI,CAAC;AACtB,GAAG;AACH,EAAE,OAAO,MAAM,CAAC,MAAM,EAAE;AACxB,IAAI,IAAI,CAAC,UAAU,EAAE;AACrB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACtD,IAAI,eAAe,CAAC,iCAAiC,GAAG,uCAAuC,CAAC;AAChG,IAAI,UAAU,GAAG,KAAK,CAAC;AACvB,GAAG;AACH;;;;"}