vue-cesium
Version:
Vue 3.x components for CesiumJS.
1 lines • 4.27 kB
Source Map (JSON)
{"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: 2023-03-03 17:49:19\n * @LastEditors: zouyaoji 370681295@qq.com\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 const webgl2 = viewer.scene.context?.webgl2\n fs.sources[fs.sources.length - 1] = fs.sources[fs.sources.length - 1].replace(\n `${webgl2 ? 'out_FragColor' : 'gl_FragColor'}.rgb *= visibility;`,\n `\n float _depth = shadowPosition.z - shadowParameters.depthBias;\n float _visibility = czm_shadowDepthCompare(shadowMap_texture, shadowPosition.xy, _depth);\n ${\n webgl2 ? 'out_FragColor' : 'gl_FragColor'\n }.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":";AASA,IAAI,UAAa,GAAA,KAAA,CAAA;AACjB,IAAI,uCAAA,CAAA;AAEJ,MAAqB,qBAAsB,CAAA;AAAA,EACzC,OAAO,OAAO,MAAwB,EAAA;AACpC,IAAA,IAAI,UAAY,EAAA;AACd,MAAA,OAAA;AAAA,KACF;AAEA,IAAM,MAAA,eAAA,GAAkB,OAAO,iBAAiB,CAAA,CAAA;AAEhD,IAAA,uCAAA,GAA0C,eAAgB,CAAA,iCAAA,CAAA;AAE1D,IAAA,eAAA,CAAgB,oCAAoC,SAAU,EAAA,EAAI,SAAW,EAAA,WAAA,EAAa,WAAW,gBAAkB,EAAA;AAtB3H,MAAA,IAAA,EAAA,CAAA;AAuBM,MAAK,EAAA,GAAA,uCAAA,CAAwC,KAAK,IAAI,CAAA,CAAE,IAAI,SAAW,EAAA,WAAA,EAAa,WAAW,gBAAgB,CAAA,CAAA;AAC/G,MAAA,MAAM,cAAc,SAAU,CAAA,YAAA,CAAA;AAE9B,MAAA,IAAI,WAAa,EAAA;AACf,QAAG,EAAA,CAAA,OAAA,CAAQ,CAAC,CAAI,GAAA,CAAA;AAAA;AAAA;AAAA,UAGZ,EAAA,EAAA,CAAG,OAAQ,CAAA,CAAC,CAAC,CAAA;AAAA,QAAA,CAAA,CAAA;AAEjB,QAAA,MAAM,MAAS,GAAA,CAAA,EAAA,GAAA,MAAA,CAAO,KAAM,CAAA,OAAA,KAAb,IAAsB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,CAAA;AACrC,QAAA,EAAA,CAAG,OAAQ,CAAA,EAAA,CAAG,OAAQ,CAAA,MAAA,GAAS,CAAC,CAAA,GAAI,EAAG,CAAA,OAAA,CAAQ,EAAG,CAAA,OAAA,CAAQ,MAAS,GAAA,CAAC,CAAE,CAAA,OAAA;AAAA,UACpE,CAAA,EAAG,MAAS,GAAA,eAAA,GAAkB,cAAc,CAAA,mBAAA,CAAA;AAAA,UAC5C,CAAA;AAAA;AAAA;AAAA,UAIE,EAAA,MAAA,GAAS,kBAAkB,cAC7B,CAAA;AAAA,UAAA,CAAA;AAAA,SAEF,CAAA;AACA,QAAA,EAAA,CAAG,OAAQ,CAAA,EAAA,CAAG,OAAQ,CAAA,MAAA,GAAS,CAAC,CAAA,GAAI,EAAG,CAAA,OAAA,CAAQ,EAAG,CAAA,OAAA,CAAQ,MAAS,GAAA,CAAC,CAAE,CAAA,OAAA;AAAA,UACpE,+EAAA;AAAA,UACA,qLAAA;AAAA,SACF,CAAA;AAAA,OACF;AAEA,MAAO,OAAA,EAAA,CAAA;AAAA,KACT,CAAA;AAEA,IAAa,UAAA,GAAA,IAAA,CAAA;AAAA,GACf;AAAA,EAEA,OAAO,OAAO,MAAwB,EAAA;AACpC,IAAA,IAAI,CAAC,UAAY,EAAA;AACf,MAAA,OAAA;AAAA,KACF;AAEA,IAAM,MAAA,eAAA,GAAkB,OAAO,iBAAiB,CAAA,CAAA;AAChD,IAAA,eAAA,CAAgB,iCAAoC,GAAA,uCAAA,CAAA;AAEpD,IAAa,UAAA,GAAA,KAAA,CAAA;AAAA,GACf;AACF;;;;"}