@itwin/core-frontend 5.0.0-dev.90 → 5.0.0-dev.92
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/ContextRealityModelState.d.ts.map +1 -1
- package/lib/cjs/ContextRealityModelState.js +2 -0
- package/lib/cjs/ContextRealityModelState.js.map +1 -1
- package/lib/cjs/ModelState.d.ts.map +1 -1
- package/lib/cjs/ModelState.js +4 -0
- package/lib/cjs/ModelState.js.map +1 -1
- package/lib/cjs/NoRenderApp.d.ts +1 -1
- package/lib/cjs/NoRenderApp.d.ts.map +1 -1
- package/lib/cjs/NoRenderApp.js +1 -1
- package/lib/cjs/NoRenderApp.js.map +1 -1
- package/lib/cjs/Viewport.d.ts +1 -0
- package/lib/cjs/Viewport.d.ts.map +1 -1
- package/lib/cjs/Viewport.js +4 -1
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/common/internal/render/MeshParams.d.ts +2 -0
- package/lib/cjs/common/internal/render/MeshParams.d.ts.map +1 -1
- package/lib/cjs/common/internal/render/MeshParams.js.map +1 -1
- package/lib/cjs/internal/render/{RealityMeshGraphicParams.d.ts → MeshMapLayerGraphicParams.d.ts} +4 -4
- package/lib/cjs/internal/render/MeshMapLayerGraphicParams.d.ts.map +1 -0
- package/lib/cjs/internal/render/{RealityMeshGraphicParams.js → MeshMapLayerGraphicParams.js} +1 -1
- package/lib/cjs/internal/render/MeshMapLayerGraphicParams.js.map +1 -0
- package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js +1 -1
- package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/cjs/internal/render/webgl/MapLayerParams.d.ts +54 -0
- package/lib/cjs/internal/render/webgl/MapLayerParams.d.ts.map +1 -0
- package/lib/cjs/internal/render/webgl/MapLayerParams.js +198 -0
- package/lib/cjs/internal/render/webgl/MapLayerParams.js.map +1 -0
- package/lib/cjs/internal/render/webgl/Mesh.js +1 -1
- package/lib/cjs/internal/render/webgl/Mesh.js.map +1 -1
- package/lib/cjs/internal/render/webgl/PlanarClassifier.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/cjs/internal/render/webgl/RealityMesh.d.ts +6 -35
- package/lib/cjs/internal/render/webgl/RealityMesh.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/RealityMesh.js +41 -154
- package/lib/cjs/internal/render/webgl/RealityMesh.js.map +1 -1
- package/lib/cjs/internal/render/webgl/RenderFlags.d.ts +7 -1
- package/lib/cjs/internal/render/webgl/RenderFlags.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/RenderFlags.js +7 -0
- package/lib/cjs/internal/render/webgl/RenderFlags.js.map +1 -1
- package/lib/cjs/internal/render/webgl/ShaderBuilder.d.ts +12 -11
- package/lib/cjs/internal/render/webgl/ShaderBuilder.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/ShaderBuilder.js +13 -8
- package/lib/cjs/internal/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/cjs/internal/render/webgl/SurfaceGeometry.d.ts +5 -2
- package/lib/cjs/internal/render/webgl/SurfaceGeometry.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/SurfaceGeometry.js +49 -3
- package/lib/cjs/internal/render/webgl/SurfaceGeometry.js.map +1 -1
- package/lib/cjs/internal/render/webgl/System.d.ts +2 -2
- package/lib/cjs/internal/render/webgl/System.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/System.js.map +1 -1
- package/lib/cjs/internal/render/webgl/Target.d.ts +1 -1
- package/lib/cjs/internal/render/webgl/Target.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/Target.js +11 -2
- package/lib/cjs/internal/render/webgl/Target.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/AmbientOcclusion.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Atmosphere.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Blur.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/ClearPickAndColor.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/ClearTranslucent.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Clipping.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Combine3Textures.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/CombineTextures.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Composite.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/CopyColor.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/CopyPickBuffers.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/CopyStencil.js +5 -5
- package/lib/cjs/internal/render/webgl/glsl/EDL.js +4 -4
- package/lib/cjs/internal/render/webgl/glsl/EVSMFromDepth.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Edge.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/FeatureSymbology.js +2 -2
- package/lib/cjs/internal/render/webgl/glsl/Fragment.js +9 -9
- package/lib/cjs/internal/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/MaplayerDraping.d.ts +12 -0
- package/lib/cjs/internal/render/webgl/glsl/MaplayerDraping.d.ts.map +1 -0
- package/lib/cjs/internal/render/webgl/glsl/MaplayerDraping.js +116 -0
- package/lib/cjs/internal/render/webgl/glsl/MaplayerDraping.js.map +1 -0
- package/lib/cjs/internal/render/webgl/glsl/PlanarClassification.js +3 -3
- package/lib/cjs/internal/render/webgl/glsl/PointCloud.js +2 -2
- package/lib/cjs/internal/render/webgl/glsl/PointCloud.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js +6 -91
- package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/ScreenSpaceEffect.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/SkyBox.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/SkySphere.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/SolarShadowMapping.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Surface.d.ts +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Surface.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Surface.js +73 -7
- package/lib/cjs/internal/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Translucency.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Wiremesh.js +1 -1
- package/lib/cjs/internal/tile/B3dmReader.d.ts +2 -1
- package/lib/cjs/internal/tile/B3dmReader.d.ts.map +1 -1
- package/lib/cjs/internal/tile/B3dmReader.js +5 -5
- package/lib/cjs/internal/tile/B3dmReader.js.map +1 -1
- package/lib/cjs/internal/tile/I3dmReader.d.ts +2 -1
- package/lib/cjs/internal/tile/I3dmReader.d.ts.map +1 -1
- package/lib/cjs/internal/tile/I3dmReader.js +4 -4
- package/lib/cjs/internal/tile/I3dmReader.js.map +1 -1
- package/lib/cjs/internal/tile/IModelTileTree.d.ts.map +1 -1
- package/lib/cjs/internal/tile/IModelTileTree.js.map +1 -1
- package/lib/cjs/internal/tile/ImdlGraphicsCreator.d.ts +2 -0
- package/lib/cjs/internal/tile/ImdlGraphicsCreator.d.ts.map +1 -1
- package/lib/cjs/internal/tile/ImdlGraphicsCreator.js +1 -0
- package/lib/cjs/internal/tile/ImdlGraphicsCreator.js.map +1 -1
- package/lib/cjs/internal/tile/PrimaryTileTree.js.map +1 -1
- package/lib/cjs/internal/tile/RealityModelTileTree.d.ts +14 -3
- package/lib/cjs/internal/tile/RealityModelTileTree.d.ts.map +1 -1
- package/lib/cjs/internal/tile/RealityModelTileTree.js +51 -11
- package/lib/cjs/internal/tile/RealityModelTileTree.js.map +1 -1
- package/lib/cjs/internal/tile/RealityTileLoader.d.ts.map +1 -1
- package/lib/cjs/internal/tile/RealityTileLoader.js +8 -2
- package/lib/cjs/internal/tile/RealityTileLoader.js.map +1 -1
- package/lib/cjs/render/RealityMeshParams.d.ts +3 -0
- package/lib/cjs/render/RealityMeshParams.d.ts.map +1 -1
- package/lib/cjs/render/RealityMeshParams.js.map +1 -1
- package/lib/cjs/render/RenderSystem.d.ts +4 -3
- package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
- package/lib/cjs/render/RenderSystem.js +2 -1
- package/lib/cjs/render/RenderSystem.js.map +1 -1
- package/lib/cjs/render/RenderTarget.d.ts +1 -1
- package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
- package/lib/cjs/render/RenderTarget.js +1 -1
- package/lib/cjs/render/RenderTarget.js.map +1 -1
- package/lib/cjs/tile/GltfReader.d.ts +8 -2
- package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
- package/lib/cjs/tile/GltfReader.js +11 -2
- package/lib/cjs/tile/GltfReader.js.map +1 -1
- package/lib/cjs/tile/ImdlReader.d.ts +2 -1
- package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
- package/lib/cjs/tile/ImdlReader.js.map +1 -1
- package/lib/cjs/tile/LayerTileTreeHandler.d.ts +47 -0
- package/lib/cjs/tile/LayerTileTreeHandler.d.ts.map +1 -0
- package/lib/cjs/tile/LayerTileTreeHandler.js +54 -0
- package/lib/cjs/tile/LayerTileTreeHandler.js.map +1 -0
- package/lib/cjs/tile/LayerTileTreeReferenceHandler.d.ts +36 -0
- package/lib/cjs/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -0
- package/lib/cjs/tile/LayerTileTreeReferenceHandler.js +150 -0
- package/lib/cjs/tile/LayerTileTreeReferenceHandler.js.map +1 -0
- package/lib/cjs/tile/Tile.d.ts +2 -0
- package/lib/cjs/tile/Tile.d.ts.map +1 -1
- package/lib/cjs/tile/Tile.js +7 -0
- package/lib/cjs/tile/Tile.js.map +1 -1
- package/lib/cjs/tile/TileTree.d.ts +3 -1
- package/lib/cjs/tile/TileTree.d.ts.map +1 -1
- package/lib/cjs/tile/TileTree.js +2 -0
- package/lib/cjs/tile/TileTree.js.map +1 -1
- package/lib/cjs/tile/internal.d.ts +2 -0
- package/lib/cjs/tile/internal.d.ts.map +1 -1
- package/lib/cjs/tile/internal.js +2 -0
- package/lib/cjs/tile/internal.js.map +1 -1
- package/lib/cjs/tile/map/MapTile.d.ts +8 -2
- package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTile.js +10 -16
- package/lib/cjs/tile/map/MapTile.js.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.d.ts +8 -36
- package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.js +47 -176
- package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapTiledGraphicsProvider.js +9 -9
- package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
- package/lib/esm/ContextRealityModelState.d.ts.map +1 -1
- package/lib/esm/ContextRealityModelState.js +2 -0
- package/lib/esm/ContextRealityModelState.js.map +1 -1
- package/lib/esm/ModelState.d.ts.map +1 -1
- package/lib/esm/ModelState.js +4 -0
- package/lib/esm/ModelState.js.map +1 -1
- package/lib/esm/NoRenderApp.d.ts +1 -1
- package/lib/esm/NoRenderApp.d.ts.map +1 -1
- package/lib/esm/NoRenderApp.js +1 -1
- package/lib/esm/NoRenderApp.js.map +1 -1
- package/lib/esm/Viewport.d.ts +1 -0
- package/lib/esm/Viewport.d.ts.map +1 -1
- package/lib/esm/Viewport.js +4 -1
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/common/internal/render/MeshParams.d.ts +2 -0
- package/lib/esm/common/internal/render/MeshParams.d.ts.map +1 -1
- package/lib/esm/common/internal/render/MeshParams.js.map +1 -1
- package/lib/esm/internal/render/{RealityMeshGraphicParams.d.ts → MeshMapLayerGraphicParams.d.ts} +4 -4
- package/lib/esm/internal/render/MeshMapLayerGraphicParams.d.ts.map +1 -0
- package/lib/esm/internal/render/{RealityMeshGraphicParams.js → MeshMapLayerGraphicParams.js} +1 -1
- package/lib/esm/internal/render/MeshMapLayerGraphicParams.js.map +1 -0
- package/lib/esm/internal/render/webgl/BackgroundMapDrape.js +1 -1
- package/lib/esm/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/esm/internal/render/webgl/MapLayerParams.d.ts +54 -0
- package/lib/esm/internal/render/webgl/MapLayerParams.d.ts.map +1 -0
- package/lib/esm/internal/render/webgl/MapLayerParams.js +192 -0
- package/lib/esm/internal/render/webgl/MapLayerParams.js.map +1 -0
- package/lib/esm/internal/render/webgl/Mesh.js +1 -1
- package/lib/esm/internal/render/webgl/Mesh.js.map +1 -1
- package/lib/esm/internal/render/webgl/PlanarClassifier.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/esm/internal/render/webgl/RealityMesh.d.ts +6 -35
- package/lib/esm/internal/render/webgl/RealityMesh.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/RealityMesh.js +41 -153
- package/lib/esm/internal/render/webgl/RealityMesh.js.map +1 -1
- package/lib/esm/internal/render/webgl/RenderFlags.d.ts +7 -1
- package/lib/esm/internal/render/webgl/RenderFlags.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/RenderFlags.js +7 -0
- package/lib/esm/internal/render/webgl/RenderFlags.js.map +1 -1
- package/lib/esm/internal/render/webgl/ShaderBuilder.d.ts +12 -11
- package/lib/esm/internal/render/webgl/ShaderBuilder.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/ShaderBuilder.js +13 -8
- package/lib/esm/internal/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/esm/internal/render/webgl/SurfaceGeometry.d.ts +5 -2
- package/lib/esm/internal/render/webgl/SurfaceGeometry.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/SurfaceGeometry.js +50 -4
- package/lib/esm/internal/render/webgl/SurfaceGeometry.js.map +1 -1
- package/lib/esm/internal/render/webgl/System.d.ts +2 -2
- package/lib/esm/internal/render/webgl/System.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/System.js.map +1 -1
- package/lib/esm/internal/render/webgl/Target.d.ts +1 -1
- package/lib/esm/internal/render/webgl/Target.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/Target.js +11 -2
- package/lib/esm/internal/render/webgl/Target.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/AmbientOcclusion.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/Atmosphere.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/Blur.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/ClearPickAndColor.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/ClearTranslucent.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/Clipping.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/Combine3Textures.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/CombineTextures.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/Composite.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/CopyColor.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/CopyPickBuffers.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/CopyStencil.js +5 -5
- package/lib/esm/internal/render/webgl/glsl/EDL.js +4 -4
- package/lib/esm/internal/render/webgl/glsl/EVSMFromDepth.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/Edge.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/FeatureSymbology.js +2 -2
- package/lib/esm/internal/render/webgl/glsl/Fragment.js +9 -9
- package/lib/esm/internal/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/MaplayerDraping.d.ts +12 -0
- package/lib/esm/internal/render/webgl/glsl/MaplayerDraping.d.ts.map +1 -0
- package/lib/esm/internal/render/webgl/glsl/MaplayerDraping.js +111 -0
- package/lib/esm/internal/render/webgl/glsl/MaplayerDraping.js.map +1 -0
- package/lib/esm/internal/render/webgl/glsl/PlanarClassification.js +3 -3
- package/lib/esm/internal/render/webgl/glsl/PointCloud.js +2 -2
- package/lib/esm/internal/render/webgl/glsl/PointCloud.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/RealityMesh.js +5 -90
- package/lib/esm/internal/render/webgl/glsl/RealityMesh.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/ScreenSpaceEffect.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/SkyBox.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/SkySphere.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/SolarShadowMapping.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/Surface.d.ts +1 -1
- package/lib/esm/internal/render/webgl/glsl/Surface.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Surface.js +73 -7
- package/lib/esm/internal/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Translucency.js +1 -1
- package/lib/esm/internal/render/webgl/glsl/Wiremesh.js +1 -1
- package/lib/esm/internal/tile/B3dmReader.d.ts +2 -1
- package/lib/esm/internal/tile/B3dmReader.d.ts.map +1 -1
- package/lib/esm/internal/tile/B3dmReader.js +5 -5
- package/lib/esm/internal/tile/B3dmReader.js.map +1 -1
- package/lib/esm/internal/tile/I3dmReader.d.ts +2 -1
- package/lib/esm/internal/tile/I3dmReader.d.ts.map +1 -1
- package/lib/esm/internal/tile/I3dmReader.js +4 -4
- package/lib/esm/internal/tile/I3dmReader.js.map +1 -1
- package/lib/esm/internal/tile/IModelTileTree.d.ts.map +1 -1
- package/lib/esm/internal/tile/IModelTileTree.js +2 -2
- package/lib/esm/internal/tile/IModelTileTree.js.map +1 -1
- package/lib/esm/internal/tile/ImdlGraphicsCreator.d.ts +2 -0
- package/lib/esm/internal/tile/ImdlGraphicsCreator.d.ts.map +1 -1
- package/lib/esm/internal/tile/ImdlGraphicsCreator.js +1 -0
- package/lib/esm/internal/tile/ImdlGraphicsCreator.js.map +1 -1
- package/lib/esm/internal/tile/PrimaryTileTree.js.map +1 -1
- package/lib/esm/internal/tile/RealityModelTileTree.d.ts +14 -3
- package/lib/esm/internal/tile/RealityModelTileTree.d.ts.map +1 -1
- package/lib/esm/internal/tile/RealityModelTileTree.js +53 -13
- package/lib/esm/internal/tile/RealityModelTileTree.js.map +1 -1
- package/lib/esm/internal/tile/RealityTileLoader.d.ts.map +1 -1
- package/lib/esm/internal/tile/RealityTileLoader.js +8 -2
- package/lib/esm/internal/tile/RealityTileLoader.js.map +1 -1
- package/lib/esm/render/RealityMeshParams.d.ts +3 -0
- package/lib/esm/render/RealityMeshParams.d.ts.map +1 -1
- package/lib/esm/render/RealityMeshParams.js.map +1 -1
- package/lib/esm/render/RenderSystem.d.ts +4 -3
- package/lib/esm/render/RenderSystem.d.ts.map +1 -1
- package/lib/esm/render/RenderSystem.js +2 -1
- package/lib/esm/render/RenderSystem.js.map +1 -1
- package/lib/esm/render/RenderTarget.d.ts +1 -1
- package/lib/esm/render/RenderTarget.d.ts.map +1 -1
- package/lib/esm/render/RenderTarget.js +1 -1
- package/lib/esm/render/RenderTarget.js.map +1 -1
- package/lib/esm/tile/GltfReader.d.ts +8 -2
- package/lib/esm/tile/GltfReader.d.ts.map +1 -1
- package/lib/esm/tile/GltfReader.js +11 -2
- package/lib/esm/tile/GltfReader.js.map +1 -1
- package/lib/esm/tile/ImdlReader.d.ts +2 -1
- package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
- package/lib/esm/tile/ImdlReader.js.map +1 -1
- package/lib/esm/tile/LayerTileTreeHandler.d.ts +47 -0
- package/lib/esm/tile/LayerTileTreeHandler.d.ts.map +1 -0
- package/lib/esm/tile/LayerTileTreeHandler.js +50 -0
- package/lib/esm/tile/LayerTileTreeHandler.js.map +1 -0
- package/lib/esm/tile/LayerTileTreeReferenceHandler.d.ts +36 -0
- package/lib/esm/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -0
- package/lib/esm/tile/LayerTileTreeReferenceHandler.js +146 -0
- package/lib/esm/tile/LayerTileTreeReferenceHandler.js.map +1 -0
- package/lib/esm/tile/Tile.d.ts +2 -0
- package/lib/esm/tile/Tile.d.ts.map +1 -1
- package/lib/esm/tile/Tile.js +7 -0
- package/lib/esm/tile/Tile.js.map +1 -1
- package/lib/esm/tile/TileTree.d.ts +3 -1
- package/lib/esm/tile/TileTree.d.ts.map +1 -1
- package/lib/esm/tile/TileTree.js +2 -0
- package/lib/esm/tile/TileTree.js.map +1 -1
- package/lib/esm/tile/internal.d.ts +2 -0
- package/lib/esm/tile/internal.d.ts.map +1 -1
- package/lib/esm/tile/internal.js +2 -0
- package/lib/esm/tile/internal.js.map +1 -1
- package/lib/esm/tile/map/MapTile.d.ts +8 -2
- package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTile.js +9 -16
- package/lib/esm/tile/map/MapTile.js.map +1 -1
- package/lib/esm/tile/map/MapTileTree.d.ts +8 -36
- package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTileTree.js +49 -178
- package/lib/esm/tile/map/MapTileTree.js.map +1 -1
- package/lib/esm/tile/map/MapTiledGraphicsProvider.js +9 -9
- package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
- package/package.json +16 -16
- package/lib/cjs/internal/render/RealityMeshGraphicParams.d.ts.map +0 -1
- package/lib/cjs/internal/render/RealityMeshGraphicParams.js.map +0 -1
- package/lib/esm/internal/render/RealityMeshGraphicParams.d.ts.map +0 -1
- package/lib/esm/internal/render/RealityMeshGraphicParams.js.map +0 -1
|
@@ -32,6 +32,7 @@ const Surface_1 = require("./Surface");
|
|
|
32
32
|
const Thematic_1 = require("./Thematic");
|
|
33
33
|
const Vertex_1 = require("./Vertex");
|
|
34
34
|
const Wiremesh_1 = require("./Wiremesh");
|
|
35
|
+
const MaplayerDraping_1 = require("./MaplayerDraping");
|
|
35
36
|
const computePosition = "gl_PointSize = 1.0; return MAT_MVP * rawPos;";
|
|
36
37
|
const computeNormal = `
|
|
37
38
|
vec3 normal = octDecodeNormal(a_norm); // normal coming in for is already in world space
|
|
@@ -41,95 +42,10 @@ const computeNormal = `
|
|
|
41
42
|
exports.finalizeNormal = `
|
|
42
43
|
return normalize(v_n) * (2.0 * float(gl_FrontFacing) - 1.0);
|
|
43
44
|
`;
|
|
44
|
-
const testInside = `
|
|
45
|
-
bool testInside(float x0, float y0, float x1, float y1, float x, float y) {
|
|
46
|
-
vec2 perp = vec2(y0 - y1, x1 - x0), test = vec2(x - x0, y - y0);
|
|
47
|
-
float dot = (test.x * perp.x + test.y * perp.y) / sqrt(perp.x * perp.x + perp.y * perp.y);
|
|
48
|
-
return dot >= -0.001;
|
|
49
|
-
}
|
|
50
|
-
`;
|
|
51
|
-
/* There are two methods of applying a texture to a reality mesh. the first member of "params" denotes which
|
|
52
|
-
method is to be used. A value of zero indicates a standard texture and one represents a projected texture.
|
|
53
|
-
|
|
54
|
-
A standard (nonprojected) texture is generated by multiplying v_textCoord by the scaling and translation packed into the first row
|
|
55
|
-
of "matrix". A clip rectangle is packed into second row of "matrix".
|
|
56
|
-
|
|
57
|
-
A "projected" reality mesh texture is used for map layers. It does not uses v_texCoord, the texture coordinates
|
|
58
|
-
are instead generated by a projection of the model position onto the X-Y plane. We only have eye position, not model position
|
|
59
|
-
so the matrix in this case is a real transform matrix that contains a mapping from eye to model position
|
|
60
|
-
followed by the model to texture projection.
|
|
61
|
-
*/
|
|
62
|
-
const applyTexture = `
|
|
63
|
-
bool applyTexture(inout vec4 col, sampler2D sampler, mat4 params, mat4 matrix) {
|
|
64
|
-
vec2 uv;
|
|
65
|
-
float layerAlpha;
|
|
66
|
-
bool isProjected = params[0][0] != 0.0;
|
|
67
|
-
float imageCount = params[0][1];
|
|
68
|
-
vec2 classPos;
|
|
69
|
-
|
|
70
|
-
if (isProjected) {
|
|
71
|
-
vec4 eye4 = vec4(v_eyeSpace, 1.0);
|
|
72
|
-
vec4 classPos4 = matrix * eye4;
|
|
73
|
-
classPos = classPos4.xy / classPos4.w;
|
|
74
|
-
|
|
75
|
-
if (!testInside(params[2].x, params[2].y, params[2].z, params[2].w, classPos.x, classPos.y) ||
|
|
76
|
-
!testInside(params[2].z, params[2].w, params[3].x, params[3].y, classPos.x, classPos.y) ||
|
|
77
|
-
!testInside(params[3].x, params[3].y, params[3].z, params[3].w, classPos.x, classPos.y) ||
|
|
78
|
-
!testInside(params[3].z, params[3].w, params[2].x, params[2].y, classPos.x, classPos.y))
|
|
79
|
-
return false;
|
|
80
|
-
|
|
81
|
-
uv.x = classPos.x;
|
|
82
|
-
uv.y = classPos.y / imageCount;
|
|
83
|
-
layerAlpha = params[0][2];
|
|
84
|
-
|
|
85
|
-
if (uv.x < 0.0 || uv.x > 1.0 || uv.y < 0.0 || uv.y > 1.0)
|
|
86
|
-
return false;
|
|
87
|
-
|
|
88
|
-
} else {
|
|
89
|
-
vec4 texTransform = matrix[0].xyzw;
|
|
90
|
-
vec4 texClip = matrix[1].xyzw;
|
|
91
|
-
layerAlpha = matrix[2].x;
|
|
92
|
-
uv = vec2(texTransform[0] + texTransform[2] * v_texCoord.x, texTransform[1] + texTransform[3] * v_texCoord.y);
|
|
93
|
-
|
|
94
|
-
if (uv.x < texClip[0] || uv.x > texClip[2] || uv.y < texClip[1] || uv.y > texClip[3])
|
|
95
|
-
return false;
|
|
96
|
-
|
|
97
|
-
uv.y = 1.0 - uv.y;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
vec4 texCol = TEXTURE(sampler, uv);
|
|
101
|
-
float alpha = layerAlpha * texCol.a;
|
|
102
|
-
|
|
103
|
-
if (alpha > 0.05) {
|
|
104
|
-
vec3 texRgb = isProjected ? (texCol.rgb / texCol.a) : texCol.rgb; // If projected, undo premultiplication
|
|
105
|
-
// Texture color is premultiplied earlier by alpha only if projected (from classification).
|
|
106
|
-
|
|
107
|
-
col.rgb = (1.0 - alpha) * col.rgb + alpha * texRgb;
|
|
108
|
-
|
|
109
|
-
if (isProjected) {
|
|
110
|
-
vec4 featureTexel = TEXTURE(sampler, vec2(uv.x, (1.0 + classPos.y) / imageCount));
|
|
111
|
-
classifierId = addUInt32s(params[1], featureTexel * 255.0) / 255.0;
|
|
112
|
-
} else {
|
|
113
|
-
featureIncrement = matrix[2].y;
|
|
114
|
-
classifierId = vec4(0);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
if (alpha > col.a)
|
|
118
|
-
col.a = alpha;
|
|
119
|
-
|
|
120
|
-
return true;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
// If texture color is transparent but base color is not, return true (don't discard)
|
|
124
|
-
// Else return false (discard) if both the texture and base color are transparent
|
|
125
|
-
return (col.a > 0.05);
|
|
126
|
-
}
|
|
127
|
-
`;
|
|
128
45
|
const computeTexCoord = "return unquantize2d(a_uvParam, u_qTexCoordParams);";
|
|
129
46
|
const scratchMatrix4d1 = core_geometry_1.Matrix4d.createIdentity();
|
|
130
47
|
const scratchMatrix4d2 = core_geometry_1.Matrix4d.createIdentity();
|
|
131
48
|
const scratchMatrix = new Matrix_1.Matrix4();
|
|
132
|
-
const overrideFeatureId = `return (classifierId == vec4(0)) ? (addUInt32s(feature_id * 255.0, vec4(featureIncrement, 0.0, 0.0, 0.0)) / 255.0) : classifierId;`;
|
|
133
49
|
function addTextures(builder, maxTexturesPerMesh) {
|
|
134
50
|
builder.vert.addFunction(Decode_1.unquantize2d);
|
|
135
51
|
builder.addFunctionComputedVarying("v_texCoord", 3 /* VariableType.Vec2 */, "computeTexCoord", computeTexCoord);
|
|
@@ -158,7 +74,6 @@ function addTextures(builder, maxTexturesPerMesh) {
|
|
|
158
74
|
texture.texture.bindSampler(uniform, textureUnits[i]);
|
|
159
75
|
}
|
|
160
76
|
else {
|
|
161
|
-
// assert(false, "Terrain Mesh texture not defined when beginning texture.");
|
|
162
77
|
System_1.System.instance.ensureSamplerBound(uniform, textureUnits[i]);
|
|
163
78
|
}
|
|
164
79
|
});
|
|
@@ -227,7 +142,7 @@ function addThematicToRealityMesh(builder, gradientTextureUnit) {
|
|
|
227
142
|
builder.vert.addGlobal("g_hillshadeIndex", 2 /* VariableType.Float */);
|
|
228
143
|
builder.addFunctionComputedVarying("v_n", 4 /* VariableType.Vec3 */, "computeLightingNormal", computeNormal);
|
|
229
144
|
builder.frag.addGlobal("g_normal", 4 /* VariableType.Vec3 */);
|
|
230
|
-
builder.frag.set(
|
|
145
|
+
builder.frag.set(24 /* FragmentShaderComponent.FinalizeNormal */, exports.finalizeNormal);
|
|
231
146
|
(0, Thematic_1.addThematicDisplay)(builder, false, true);
|
|
232
147
|
builder.addInlineComputedVarying("v_thematicIndex", 2 /* VariableType.Float */, (0, Thematic_1.getComputeThematicIndex)(builder.vert.usesInstancedGeometry, false, false));
|
|
233
148
|
builder.vert.addUniform("u_worldToViewN", 6 /* VariableType.Mat3 */, (prog) => {
|
|
@@ -254,7 +169,7 @@ function createRealityMeshHiliterBuilder() {
|
|
|
254
169
|
const vert = builder.vert;
|
|
255
170
|
vert.set(10 /* VertexShaderComponent.ComputePosition */, computePosition);
|
|
256
171
|
(0, Vertex_1.addModelViewProjectionMatrix)(vert);
|
|
257
|
-
builder.frag.set(
|
|
172
|
+
builder.frag.set(18 /* FragmentShaderComponent.AssignFragData */, Fragment_1.assignFragColor);
|
|
258
173
|
return builder;
|
|
259
174
|
}
|
|
260
175
|
/** @internal */
|
|
@@ -280,7 +195,7 @@ function createRealityMeshBuilder(flags) {
|
|
|
280
195
|
const frag = builder.frag;
|
|
281
196
|
frag.addGlobal("featureIncrement", 2 /* VariableType.Float */, "0.0");
|
|
282
197
|
frag.addGlobal("classifierId", 5 /* VariableType.Vec4 */);
|
|
283
|
-
frag.set(
|
|
198
|
+
frag.set(19 /* FragmentShaderComponent.OverrideFeatureId */, MaplayerDraping_1.overrideFeatureId);
|
|
284
199
|
const textureCount = System_1.System.instance.maxRealityImageryLayers;
|
|
285
200
|
const gradientTextureUnit = RenderFlags_1.TextureUnit.RealityMeshThematicGradient;
|
|
286
201
|
const feat = flags.featureMode;
|
|
@@ -300,9 +215,9 @@ function createRealityMeshBuilder(flags) {
|
|
|
300
215
|
}
|
|
301
216
|
const computeFragmentBaseColor = baseColorFromTextures(textureCount, applyFragmentFeatureColor);
|
|
302
217
|
frag.addFunction(Common_1.addUInt32s);
|
|
303
|
-
frag.addFunction(testInside);
|
|
218
|
+
frag.addFunction(MaplayerDraping_1.testInside);
|
|
304
219
|
(0, Common_1.addEyeSpace)(builder);
|
|
305
|
-
frag.addFunction(applyTexture);
|
|
220
|
+
frag.addFunction((0, MaplayerDraping_1.applyTexture)(true));
|
|
306
221
|
frag.set(1 /* FragmentShaderComponent.ComputeBaseColor */, computeFragmentBaseColor);
|
|
307
222
|
builder.frag.addUniform("u_baseColor", 5 /* VariableType.Vec4 */, (prog) => {
|
|
308
223
|
prog.addGraphicUniform("u_baseColor", (uniform, params) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RealityMesh.js","sourceRoot":"","sources":["../../../../../../src/internal/render/webgl/glsl/RealityMesh.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert } from \"@itwin/core-bentley\";\nimport { ColorDef } from \"@itwin/core-common\";\nimport { Matrix4d } from \"@itwin/core-geometry\";\nimport { AttributeMap } from \"../AttributeMap\";\nimport { Matrix4 } from \"../Matrix\";\nimport { TextureUnit } from \"../RenderFlags\";\nimport { FragmentShaderComponent, ProgramBuilder, ShaderBuilder, VariableType, VertexShaderComponent } from \"../ShaderBuilder\";\nimport { System } from \"../System\";\nimport { FeatureMode, IsShadowable, IsThematic, TechniqueFlags } from \"../TechniqueFlags\";\nimport { TechniqueId } from \"../TechniqueId\";\nimport { Texture } from \"../Texture\";\nimport { addAtmosphericScatteringEffect } from \"./Atmosphere\";\nimport { addVaryingColor } from \"./Color\";\nimport { addEyeSpace, addShaderFlags, addUInt32s } from \"./Common\";\nimport { decodeDepthRgb, unquantize2d } from \"./Decode\";\nimport { addFeatureSymbology, addHiliter, FeatureSymbologyOptions } from \"./FeatureSymbology\";\nimport { addAltPickBufferOutputs, addPickBufferOutputs, assignFragColor } from \"./Fragment\";\nimport { addColorPlanarClassifier, addFeaturePlanarClassifier, addHilitePlanarClassifier } from \"./PlanarClassification\";\nimport { addSolarShadowMap } from \"./SolarShadowMapping\";\nimport { addClassificationTranslucencyDiscard, octDecodeNormal } from \"./Surface\";\nimport { addThematicDisplay, getComputeThematicIndex } from \"./Thematic\";\nimport { addModelViewProjectionMatrix, addNormalMatrix } from \"./Vertex\";\nimport { addWiremesh } from \"./Wiremesh\";\n\nconst computePosition = \"gl_PointSize = 1.0; return MAT_MVP * rawPos;\";\nconst computeNormal = `\n vec3 normal = octDecodeNormal(a_norm); // normal coming in for is already in world space\n g_hillshadeIndex = normal.z; // save off world Z for thematic hill shade mode index\n return normalize(u_worldToViewN * normal);\n`;\n\nexport const finalizeNormal = `\n return normalize(v_n) * (2.0 * float(gl_FrontFacing) - 1.0);\n`;\n\nconst testInside = `\nbool testInside(float x0, float y0, float x1, float y1, float x, float y) {\n vec2 perp = vec2(y0 - y1, x1 - x0), test = vec2(x - x0, y - y0);\n float dot = (test.x * perp.x + test.y * perp.y) / sqrt(perp.x * perp.x + perp.y * perp.y);\n return dot >= -0.001;\n}\n`;\n\n/* There are two methods of applying a texture to a reality mesh. the first member of \"params\" denotes which\n method is to be used. A value of zero indicates a standard texture and one represents a projected texture.\n\n A standard (nonprojected) texture is generated by multiplying v_textCoord by the scaling and translation packed into the first row\n of \"matrix\". A clip rectangle is packed into second row of \"matrix\".\n\n A \"projected\" reality mesh texture is used for map layers. It does not uses v_texCoord, the texture coordinates\n are instead generated by a projection of the model position onto the X-Y plane. We only have eye position, not model position\n so the matrix in this case is a real transform matrix that contains a mapping from eye to model position\n followed by the model to texture projection.\n*/\nconst applyTexture = `\nbool applyTexture(inout vec4 col, sampler2D sampler, mat4 params, mat4 matrix) {\n vec2 uv;\n float layerAlpha;\n bool isProjected = params[0][0] != 0.0;\n float imageCount = params[0][1];\n vec2 classPos;\n\n if (isProjected) {\n vec4 eye4 = vec4(v_eyeSpace, 1.0);\n vec4 classPos4 = matrix * eye4;\n classPos = classPos4.xy / classPos4.w;\n\n if (!testInside(params[2].x, params[2].y, params[2].z, params[2].w, classPos.x, classPos.y) ||\n !testInside(params[2].z, params[2].w, params[3].x, params[3].y, classPos.x, classPos.y) ||\n !testInside(params[3].x, params[3].y, params[3].z, params[3].w, classPos.x, classPos.y) ||\n !testInside(params[3].z, params[3].w, params[2].x, params[2].y, classPos.x, classPos.y))\n return false;\n\n uv.x = classPos.x;\n uv.y = classPos.y / imageCount;\n layerAlpha = params[0][2];\n\n if (uv.x < 0.0 || uv.x > 1.0 || uv.y < 0.0 || uv.y > 1.0)\n return false;\n\n } else {\n vec4 texTransform = matrix[0].xyzw;\n vec4 texClip = matrix[1].xyzw;\n layerAlpha = matrix[2].x;\n uv = vec2(texTransform[0] + texTransform[2] * v_texCoord.x, texTransform[1] + texTransform[3] * v_texCoord.y);\n\n if (uv.x < texClip[0] || uv.x > texClip[2] || uv.y < texClip[1] || uv.y > texClip[3])\n return false;\n\n uv.y = 1.0 - uv.y;\n }\n\n vec4 texCol = TEXTURE(sampler, uv);\n float alpha = layerAlpha * texCol.a;\n\n if (alpha > 0.05) {\n vec3 texRgb = isProjected ? (texCol.rgb / texCol.a) : texCol.rgb; // If projected, undo premultiplication\n // Texture color is premultiplied earlier by alpha only if projected (from classification).\n\n col.rgb = (1.0 - alpha) * col.rgb + alpha * texRgb;\n\n if (isProjected) {\n vec4 featureTexel = TEXTURE(sampler, vec2(uv.x, (1.0 + classPos.y) / imageCount));\n classifierId = addUInt32s(params[1], featureTexel * 255.0) / 255.0;\n } else {\n featureIncrement = matrix[2].y;\n classifierId = vec4(0);\n }\n\n if (alpha > col.a)\n col.a = alpha;\n\n return true;\n }\n\n // If texture color is transparent but base color is not, return true (don't discard)\n // Else return false (discard) if both the texture and base color are transparent\n return (col.a > 0.05);\n}\n`;\n\nconst computeTexCoord = \"return unquantize2d(a_uvParam, u_qTexCoordParams);\";\nconst scratchMatrix4d1 = Matrix4d.createIdentity();\nconst scratchMatrix4d2 = Matrix4d.createIdentity();\nconst scratchMatrix = new Matrix4();\n\nconst overrideFeatureId = `return (classifierId == vec4(0)) ? (addUInt32s(feature_id * 255.0, vec4(featureIncrement, 0.0, 0.0, 0.0)) / 255.0) : classifierId;`;\n\nfunction addTextures(builder: ProgramBuilder, maxTexturesPerMesh: number) {\n builder.vert.addFunction(unquantize2d);\n builder.addFunctionComputedVarying(\"v_texCoord\", VariableType.Vec2, \"computeTexCoord\", computeTexCoord);\n builder.vert.addUniform(\"u_qTexCoordParams\", VariableType.Vec4, (prog) => {\n prog.addGraphicUniform(\"u_qTexCoordParams\", (uniform, params) => {\n const realityMesh = params.geometry.asRealityMesh!;\n if (undefined !== realityMesh.uvQParams) {\n uniform.setUniform4fv(realityMesh.uvQParams);\n }\n });\n });\n\n builder.frag.addUniform(\"u_texturesPresent\", VariableType.Boolean, (program) => {\n program.addGraphicUniform(\"u_texturesPresent\", (uniform, params) => {\n uniform.setUniform1i(params.geometry.asRealityMesh!.hasTextures ? 1 : 0);\n });\n });\n\n for (let i = 0; i < maxTexturesPerMesh; i++) {\n const textureLabel = `s_texture${i}`;\n builder.frag.addUniform(textureLabel, VariableType.Sampler2D, (prog) => {\n prog.addGraphicUniform(textureLabel, (uniform, params) => {\n const textureUnits = [TextureUnit.RealityMesh0, TextureUnit.RealityMesh1, params.target.drawForReadPixels ? TextureUnit.ShadowMap : TextureUnit.PickDepthAndOrder, TextureUnit.RealityMesh3, TextureUnit.RealityMesh4, TextureUnit.RealityMesh5];\n const realityMesh = params.geometry.asRealityMesh!;\n const realityTexture = realityMesh.textureParams ? realityMesh.textureParams.params[i].texture : undefined;\n if (realityTexture !== undefined) {\n const texture = realityTexture as Texture;\n texture.texture.bindSampler(uniform, textureUnits[i]);\n } else {\n // assert(false, \"Terrain Mesh texture not defined when beginning texture.\");\n System.instance.ensureSamplerBound(uniform, textureUnits[i]);\n }\n });\n });\n const paramsLabel = `u_texParams${i}`, matrixLabel = `u_texMatrix${i}`;\n builder.frag.addUniform(matrixLabel, VariableType.Mat4, (prog) => {\n prog.addGraphicUniform(matrixLabel, (uniform, params) => {\n const realityMesh = params.geometry.asRealityMesh!;\n const textureParam = realityMesh.textureParams?.params[i];\n assert(undefined !== textureParam);\n if (undefined !== textureParam) {\n const projectionMatrix = textureParam.getProjectionMatrix();\n if (projectionMatrix) {\n const eyeToModel = Matrix4d.createTransform(params.target.uniforms.frustum.viewMatrix.inverse()!, scratchMatrix4d1);\n const eyeToTexture = projectionMatrix.multiplyMatrixMatrix(eyeToModel, scratchMatrix4d2);\n uniform.setMatrix4(Matrix4.fromMatrix4d(eyeToTexture, scratchMatrix));\n } else\n uniform.setMatrix4(textureParam.getTerrainMatrix()!);\n }\n });\n });\n builder.frag.addUniform(paramsLabel, VariableType.Mat4, (prog) => {\n prog.addGraphicUniform(paramsLabel, (uniform, params) => {\n const realityMesh = params.geometry.asRealityMesh!;\n const textureParam = realityMesh.textureParams?.params[i];\n assert(undefined !== textureParam);\n if (undefined !== textureParam) {\n uniform.setMatrix4(textureParam.getParams(scratchMatrix));\n }\n });\n });\n }\n}\nfunction baseColorFromTextures(textureCount: number, applyFeatureColor: string) {\n const applyTextureStrings = [];\n\n for (let i = 0; i < textureCount; i++)\n applyTextureStrings.push(`if (applyTexture(col, s_texture${i}, u_texParams${i}, u_texMatrix${i})) doDiscard = false; `);\n\n return `\n if (!u_texturesPresent) {\n vec4 col = u_baseColor;\n ${applyFeatureColor}\n return col;\n }\n\n bool doDiscard = true;\n vec4 col = u_baseColor;\n ${applyTextureStrings.join(\"\\n \")}\n if (doDiscard)\n discard;\n\n ${applyFeatureColor}\n\n return col;\n`;\n}\n\n// feature_rgb.r = -1.0 if rgb color not overridden for feature.\n// feature_alpha = -1.0 if alpha not overridden for feature.\nconst mixFeatureColor = `\n col.rgb = mix(col.rgb, mix(col.rgb, v_color.rgb, u_overrideColorMix), step(0.0, v_color.r));\n col.a = mix(col.a, v_color.a, step(0.0, v_color.a));\n `;\n\nfunction addThematicToRealityMesh(builder: ProgramBuilder, gradientTextureUnit: TextureUnit) {\n addNormalMatrix(builder.vert);\n builder.vert.addFunction(octDecodeNormal);\n builder.vert.addGlobal(\"g_hillshadeIndex\", VariableType.Float);\n builder.addFunctionComputedVarying(\"v_n\", VariableType.Vec3, \"computeLightingNormal\", computeNormal);\n builder.frag.addGlobal(\"g_normal\", VariableType.Vec3);\n builder.frag.set(FragmentShaderComponent.FinalizeNormal, finalizeNormal);\n addThematicDisplay(builder, false, true);\n builder.addInlineComputedVarying(\"v_thematicIndex\", VariableType.Float, getComputeThematicIndex(builder.vert.usesInstancedGeometry, false, false));\n builder.vert.addUniform(\"u_worldToViewN\", VariableType.Mat3, (prog) => {\n prog.addGraphicUniform(\"u_worldToViewN\", (uniform, params) => {\n params.target.uniforms.branch.bindWorldToViewNTransform(uniform, params.geometry, false);\n });\n });\n builder.frag.addUniform(\"s_texture\", VariableType.Sampler2D, (prog) => {\n prog.addGraphicUniform(\"s_texture\", (uniform, params) => {\n params.target.uniforms.thematic.bindTexture(uniform, gradientTextureUnit >= 0 ? gradientTextureUnit : (params.target.drawForReadPixels ? TextureUnit.ShadowMap : TextureUnit.PickDepthAndOrder));\n });\n });\n}\n\n/** @internal */\nexport function addColorOverrideMix(frag: ShaderBuilder) {\n frag.addUniform(\"u_overrideColorMix\", VariableType.Float, (prog) => {\n prog.addGraphicUniform(\"u_overrideColorMix\", (uniform, params) => {\n params.target.uniforms.realityModel.bindOverrideColorMix(uniform);\n });\n });\n}\n\nfunction createRealityMeshHiliterBuilder(): ProgramBuilder {\n const builder = new ProgramBuilder(AttributeMap.findAttributeMap(TechniqueId.RealityMesh, false));\n const vert = builder.vert;\n vert.set(VertexShaderComponent.ComputePosition, computePosition);\n addModelViewProjectionMatrix(vert);\n builder.frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\n return builder;\n\n}\n\n/** @internal */\nexport function createClassifierRealityMeshHiliter(): ProgramBuilder {\n const builder = createRealityMeshHiliterBuilder();\n addHilitePlanarClassifier(builder, false);\n return builder;\n}\n\n/** @internal */\nexport function createRealityMeshHiliter(): ProgramBuilder {\n const builder = createRealityMeshHiliterBuilder();\n addHiliter(builder, false);\n return builder;\n}\n\n/** @internal */\nexport function createRealityMeshBuilder(flags: TechniqueFlags): ProgramBuilder {\n const builder = new ProgramBuilder(AttributeMap.findAttributeMap(TechniqueId.RealityMesh, false));\n const vert = builder.vert;\n vert.set(VertexShaderComponent.ComputePosition, computePosition);\n addModelViewProjectionMatrix(vert);\n\n if (flags.isShadowable === IsShadowable.Yes)\n addSolarShadowMap(builder, true);\n\n const frag = builder.frag;\n frag.addGlobal(\"featureIncrement\", VariableType.Float, \"0.0\");\n frag.addGlobal(\"classifierId\", VariableType.Vec4);\n frag.set(FragmentShaderComponent.OverrideFeatureId, overrideFeatureId);\n const textureCount = System.instance.maxRealityImageryLayers;\n const gradientTextureUnit = TextureUnit.RealityMeshThematicGradient;\n\n const feat = flags.featureMode;\n let opts = FeatureMode.Overrides === feat ? FeatureSymbologyOptions.Surface : FeatureSymbologyOptions.None;\n let applyFragmentFeatureColor = \"\";\n\n if (flags.isClassified) {\n opts &= ~FeatureSymbologyOptions.Alpha;\n addColorPlanarClassifier(builder, flags.isTranslucent, flags.isThematic);\n addClassificationTranslucencyDiscard(builder);\n }\n\n addFeatureSymbology(builder, feat, opts);\n if (feat === FeatureMode.Overrides) {\n addShaderFlags(builder);\n addVaryingColor(builder, \"return vec4(-1.0, -1.0, -1.0, -1.0);\");\n applyFragmentFeatureColor = mixFeatureColor;\n addColorOverrideMix(builder.frag);\n }\n const computeFragmentBaseColor = baseColorFromTextures(textureCount, applyFragmentFeatureColor);\n\n frag.addFunction(addUInt32s);\n frag.addFunction(testInside);\n addEyeSpace(builder);\n frag.addFunction(applyTexture);\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeFragmentBaseColor);\n builder.frag.addUniform(\"u_baseColor\", VariableType.Vec4, (prog) => {\n prog.addGraphicUniform(\"u_baseColor\", (uniform, params) => {\n const realityMesh = params.geometry.asRealityMesh!;\n const baseColor = (realityMesh.baseColor ? realityMesh.baseColor : ColorDef.create(0xff000000)).colors;\n uniform.setUniform4fv([baseColor.r / 255, baseColor.g / 255, baseColor.b / 255, 1 - baseColor.t / 255]);\n });\n });\n builder.frag.set(FragmentShaderComponent.ComputeBaseColor, computeFragmentBaseColor);\n if (!flags.isTranslucent) {\n if (FeatureMode.None !== feat) {\n if (flags.isClassified)\n addFeaturePlanarClassifier(builder);\n\n builder.frag.addFunction(decodeDepthRgb);\n if (flags.isClassified)\n addPickBufferOutputs(builder.frag);\n else\n addAltPickBufferOutputs(builder.frag);\n }\n }\n\n addTextures(builder, textureCount);\n\n if (IsThematic.Yes === flags.isThematic)\n addThematicToRealityMesh(builder, gradientTextureUnit);\n\n if (flags.isWiremesh)\n addWiremesh(builder);\n\n if (flags.enableAtmosphere)\n addAtmosphericScatteringEffect(builder, false, false);\n\n return builder;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"RealityMesh.js","sourceRoot":"","sources":["../../../../../../src/internal/render/webgl/glsl/RealityMesh.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert } from \"@itwin/core-bentley\";\nimport { ColorDef } from \"@itwin/core-common\";\nimport { Matrix4d } from \"@itwin/core-geometry\";\nimport { AttributeMap } from \"../AttributeMap\";\nimport { Matrix4 } from \"../Matrix\";\nimport { TextureUnit } from \"../RenderFlags\";\nimport { FragmentShaderComponent, ProgramBuilder, ShaderBuilder, VariableType, VertexShaderComponent } from \"../ShaderBuilder\";\nimport { System } from \"../System\";\nimport { FeatureMode, IsShadowable, IsThematic, TechniqueFlags } from \"../TechniqueFlags\";\nimport { TechniqueId } from \"../TechniqueId\";\nimport { Texture } from \"../Texture\";\nimport { addAtmosphericScatteringEffect } from \"./Atmosphere\";\nimport { addVaryingColor } from \"./Color\";\nimport { addEyeSpace, addShaderFlags, addUInt32s } from \"./Common\";\nimport { decodeDepthRgb, unquantize2d } from \"./Decode\";\nimport { addFeatureSymbology, addHiliter, FeatureSymbologyOptions } from \"./FeatureSymbology\";\nimport { addAltPickBufferOutputs, addPickBufferOutputs, assignFragColor } from \"./Fragment\";\nimport { addColorPlanarClassifier, addFeaturePlanarClassifier, addHilitePlanarClassifier } from \"./PlanarClassification\";\nimport { addSolarShadowMap } from \"./SolarShadowMapping\";\nimport { addClassificationTranslucencyDiscard, octDecodeNormal } from \"./Surface\";\nimport { addThematicDisplay, getComputeThematicIndex } from \"./Thematic\";\nimport { addModelViewProjectionMatrix, addNormalMatrix } from \"./Vertex\";\nimport { addWiremesh } from \"./Wiremesh\";\nimport { applyTexture, overrideFeatureId, testInside } from \"./MaplayerDraping\";\n\nconst computePosition = \"gl_PointSize = 1.0; return MAT_MVP * rawPos;\";\nconst computeNormal = `\n vec3 normal = octDecodeNormal(a_norm); // normal coming in for is already in world space\n g_hillshadeIndex = normal.z; // save off world Z for thematic hill shade mode index\n return normalize(u_worldToViewN * normal);\n`;\n\nexport const finalizeNormal = `\n return normalize(v_n) * (2.0 * float(gl_FrontFacing) - 1.0);\n`;\n\nconst computeTexCoord = \"return unquantize2d(a_uvParam, u_qTexCoordParams);\";\nconst scratchMatrix4d1 = Matrix4d.createIdentity();\nconst scratchMatrix4d2 = Matrix4d.createIdentity();\nconst scratchMatrix = new Matrix4();\n\nfunction addTextures(builder: ProgramBuilder, maxTexturesPerMesh: number) {\n builder.vert.addFunction(unquantize2d);\n builder.addFunctionComputedVarying(\"v_texCoord\", VariableType.Vec2, \"computeTexCoord\", computeTexCoord);\n builder.vert.addUniform(\"u_qTexCoordParams\", VariableType.Vec4, (prog) => {\n prog.addGraphicUniform(\"u_qTexCoordParams\", (uniform, params) => {\n const realityMesh = params.geometry.asRealityMesh!;\n if (undefined !== realityMesh.uvQParams) {\n uniform.setUniform4fv(realityMesh.uvQParams);\n }\n });\n });\n\n builder.frag.addUniform(\"u_texturesPresent\", VariableType.Boolean, (program) => {\n program.addGraphicUniform(\"u_texturesPresent\", (uniform, params) => {\n uniform.setUniform1i(params.geometry.asRealityMesh!.hasTextures ? 1 : 0);\n });\n });\n\n for (let i = 0; i < maxTexturesPerMesh; i++) {\n const textureLabel = `s_texture${i}`;\n builder.frag.addUniform(textureLabel, VariableType.Sampler2D, (prog) => {\n prog.addGraphicUniform(textureLabel, (uniform, params) => {\n const textureUnits = [TextureUnit.RealityMesh0, TextureUnit.RealityMesh1, params.target.drawForReadPixels ? TextureUnit.ShadowMap : TextureUnit.PickDepthAndOrder, TextureUnit.RealityMesh3, TextureUnit.RealityMesh4, TextureUnit.RealityMesh5];\n const realityMesh = params.geometry.asRealityMesh!;\n const realityTexture = realityMesh.textureParams ? realityMesh.textureParams.params[i].texture : undefined;\n if (realityTexture !== undefined) {\n const texture = realityTexture as Texture;\n texture.texture.bindSampler(uniform, textureUnits[i]);\n } else {\n System.instance.ensureSamplerBound(uniform, textureUnits[i]);\n }\n });\n });\n const paramsLabel = `u_texParams${i}`, matrixLabel = `u_texMatrix${i}`;\n builder.frag.addUniform(matrixLabel, VariableType.Mat4, (prog) => {\n prog.addGraphicUniform(matrixLabel, (uniform, params) => {\n const realityMesh = params.geometry.asRealityMesh!;\n const textureParam = realityMesh.textureParams?.params[i];\n assert(undefined !== textureParam);\n if (undefined !== textureParam) {\n const projectionMatrix = textureParam.getProjectionMatrix();\n if (projectionMatrix) {\n const eyeToModel = Matrix4d.createTransform(params.target.uniforms.frustum.viewMatrix.inverse()!, scratchMatrix4d1);\n const eyeToTexture = projectionMatrix.multiplyMatrixMatrix(eyeToModel, scratchMatrix4d2);\n uniform.setMatrix4(Matrix4.fromMatrix4d(eyeToTexture, scratchMatrix));\n } else\n uniform.setMatrix4(textureParam.getTerrainMatrix()!);\n }\n });\n });\n builder.frag.addUniform(paramsLabel, VariableType.Mat4, (prog) => {\n prog.addGraphicUniform(paramsLabel, (uniform, params) => {\n const realityMesh = params.geometry.asRealityMesh!;\n const textureParam = realityMesh.textureParams?.params[i];\n assert(undefined !== textureParam);\n if (undefined !== textureParam) {\n uniform.setMatrix4(textureParam.getParams(scratchMatrix));\n }\n });\n });\n }\n}\nfunction baseColorFromTextures(textureCount: number, applyFeatureColor: string) {\n const applyTextureStrings = [];\n\n for (let i = 0; i < textureCount; i++)\n applyTextureStrings.push(`if (applyTexture(col, s_texture${i}, u_texParams${i}, u_texMatrix${i})) doDiscard = false; `);\n\n return `\n if (!u_texturesPresent) {\n vec4 col = u_baseColor;\n ${applyFeatureColor}\n return col;\n }\n\n bool doDiscard = true;\n vec4 col = u_baseColor;\n ${applyTextureStrings.join(\"\\n \")}\n if (doDiscard)\n discard;\n\n ${applyFeatureColor}\n\n return col;\n`;\n}\n\n// feature_rgb.r = -1.0 if rgb color not overridden for feature.\n// feature_alpha = -1.0 if alpha not overridden for feature.\nconst mixFeatureColor = `\n col.rgb = mix(col.rgb, mix(col.rgb, v_color.rgb, u_overrideColorMix), step(0.0, v_color.r));\n col.a = mix(col.a, v_color.a, step(0.0, v_color.a));\n `;\n\nfunction addThematicToRealityMesh(builder: ProgramBuilder, gradientTextureUnit: TextureUnit) {\n addNormalMatrix(builder.vert);\n builder.vert.addFunction(octDecodeNormal);\n builder.vert.addGlobal(\"g_hillshadeIndex\", VariableType.Float);\n builder.addFunctionComputedVarying(\"v_n\", VariableType.Vec3, \"computeLightingNormal\", computeNormal);\n builder.frag.addGlobal(\"g_normal\", VariableType.Vec3);\n builder.frag.set(FragmentShaderComponent.FinalizeNormal, finalizeNormal);\n addThematicDisplay(builder, false, true);\n builder.addInlineComputedVarying(\"v_thematicIndex\", VariableType.Float, getComputeThematicIndex(builder.vert.usesInstancedGeometry, false, false));\n builder.vert.addUniform(\"u_worldToViewN\", VariableType.Mat3, (prog) => {\n prog.addGraphicUniform(\"u_worldToViewN\", (uniform, params) => {\n params.target.uniforms.branch.bindWorldToViewNTransform(uniform, params.geometry, false);\n });\n });\n builder.frag.addUniform(\"s_texture\", VariableType.Sampler2D, (prog) => {\n prog.addGraphicUniform(\"s_texture\", (uniform, params) => {\n params.target.uniforms.thematic.bindTexture(uniform, gradientTextureUnit >= 0 ? gradientTextureUnit : (params.target.drawForReadPixels ? TextureUnit.ShadowMap : TextureUnit.PickDepthAndOrder));\n });\n });\n}\n\n/** @internal */\nexport function addColorOverrideMix(frag: ShaderBuilder) {\n frag.addUniform(\"u_overrideColorMix\", VariableType.Float, (prog) => {\n prog.addGraphicUniform(\"u_overrideColorMix\", (uniform, params) => {\n params.target.uniforms.realityModel.bindOverrideColorMix(uniform);\n });\n });\n}\n\nfunction createRealityMeshHiliterBuilder(): ProgramBuilder {\n const builder = new ProgramBuilder(AttributeMap.findAttributeMap(TechniqueId.RealityMesh, false));\n const vert = builder.vert;\n vert.set(VertexShaderComponent.ComputePosition, computePosition);\n addModelViewProjectionMatrix(vert);\n builder.frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\n return builder;\n\n}\n\n/** @internal */\nexport function createClassifierRealityMeshHiliter(): ProgramBuilder {\n const builder = createRealityMeshHiliterBuilder();\n addHilitePlanarClassifier(builder, false);\n return builder;\n}\n\n/** @internal */\nexport function createRealityMeshHiliter(): ProgramBuilder {\n const builder = createRealityMeshHiliterBuilder();\n addHiliter(builder, false);\n return builder;\n}\n\n/** @internal */\nexport function createRealityMeshBuilder(flags: TechniqueFlags): ProgramBuilder {\n const builder = new ProgramBuilder(AttributeMap.findAttributeMap(TechniqueId.RealityMesh, false));\n const vert = builder.vert;\n vert.set(VertexShaderComponent.ComputePosition, computePosition);\n addModelViewProjectionMatrix(vert);\n\n if (flags.isShadowable === IsShadowable.Yes)\n addSolarShadowMap(builder, true);\n\n const frag = builder.frag;\n frag.addGlobal(\"featureIncrement\", VariableType.Float, \"0.0\");\n frag.addGlobal(\"classifierId\", VariableType.Vec4);\n frag.set(FragmentShaderComponent.OverrideFeatureId, overrideFeatureId);\n const textureCount = System.instance.maxRealityImageryLayers;\n const gradientTextureUnit = TextureUnit.RealityMeshThematicGradient;\n\n const feat = flags.featureMode;\n let opts = FeatureMode.Overrides === feat ? FeatureSymbologyOptions.Surface : FeatureSymbologyOptions.None;\n let applyFragmentFeatureColor = \"\";\n\n if (flags.isClassified) {\n opts &= ~FeatureSymbologyOptions.Alpha;\n addColorPlanarClassifier(builder, flags.isTranslucent, flags.isThematic);\n addClassificationTranslucencyDiscard(builder);\n }\n\n addFeatureSymbology(builder, feat, opts);\n if (feat === FeatureMode.Overrides) {\n addShaderFlags(builder);\n addVaryingColor(builder, \"return vec4(-1.0, -1.0, -1.0, -1.0);\");\n applyFragmentFeatureColor = mixFeatureColor;\n addColorOverrideMix(builder.frag);\n }\n const computeFragmentBaseColor = baseColorFromTextures(textureCount, applyFragmentFeatureColor);\n\n frag.addFunction(addUInt32s);\n frag.addFunction(testInside);\n addEyeSpace(builder);\n frag.addFunction(applyTexture(true));\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeFragmentBaseColor);\n builder.frag.addUniform(\"u_baseColor\", VariableType.Vec4, (prog) => {\n prog.addGraphicUniform(\"u_baseColor\", (uniform, params) => {\n const realityMesh = params.geometry.asRealityMesh!;\n const baseColor = (realityMesh.baseColor ? realityMesh.baseColor : ColorDef.create(0xff000000)).colors;\n uniform.setUniform4fv([baseColor.r / 255, baseColor.g / 255, baseColor.b / 255, 1 - baseColor.t / 255]);\n });\n });\n builder.frag.set(FragmentShaderComponent.ComputeBaseColor, computeFragmentBaseColor);\n if (!flags.isTranslucent) {\n if (FeatureMode.None !== feat) {\n if (flags.isClassified)\n addFeaturePlanarClassifier(builder);\n\n builder.frag.addFunction(decodeDepthRgb);\n if (flags.isClassified)\n addPickBufferOutputs(builder.frag);\n else\n addAltPickBufferOutputs(builder.frag);\n }\n }\n\n addTextures(builder, textureCount);\n\n if (IsThematic.Yes === flags.isThematic)\n addThematicToRealityMesh(builder, gradientTextureUnit);\n\n if (flags.isWiremesh)\n addWiremesh(builder);\n\n if (flags.enableAtmosphere)\n addAtmosphericScatteringEffect(builder, false, false);\n\n return builder;\n}\n"]}
|
|
@@ -41,7 +41,7 @@ function createScreenSpaceEffectProgramBuilder(params) {
|
|
|
41
41
|
texture.bindSampler(uniform, RenderFlags_1.TextureUnit.Zero);
|
|
42
42
|
});
|
|
43
43
|
});
|
|
44
|
-
builder.frag.set(
|
|
44
|
+
builder.frag.set(18 /* FragmentShaderComponent.AssignFragData */, Fragment_1.assignFragColor);
|
|
45
45
|
if (!params.source.sampleSourcePixel) {
|
|
46
46
|
builder.frag.set(1 /* FragmentShaderComponent.ComputeBaseColor */, computeBaseColor);
|
|
47
47
|
}
|
|
@@ -21,7 +21,7 @@ const scratchRotMatrix = new Matrix_1.Matrix3();
|
|
|
21
21
|
function createSkyBoxProgram(context) {
|
|
22
22
|
const prog = new ShaderBuilder_1.ProgramBuilder(AttributeMap_1.AttributeMap.findAttributeMap(undefined, false));
|
|
23
23
|
prog.frag.set(1 /* FragmentShaderComponent.ComputeBaseColor */, computeBaseColor);
|
|
24
|
-
prog.frag.set(
|
|
24
|
+
prog.frag.set(18 /* FragmentShaderComponent.AssignFragData */, assignFragData);
|
|
25
25
|
prog.vert.set(10 /* VertexShaderComponent.ComputePosition */, computePosition);
|
|
26
26
|
prog.vert.addUniform("u_rot", 6 /* VariableType.Mat3 */, (prg) => {
|
|
27
27
|
prg.addGraphicUniform("u_rot", (uniform, params) => {
|
|
@@ -214,7 +214,7 @@ function createSkySphereBuilder(isGradient, flags) {
|
|
|
214
214
|
uniform.setUniform3fv(params.target.uniforms.frustum.frustum); // { near, far, type }
|
|
215
215
|
});
|
|
216
216
|
});
|
|
217
|
-
frag.set(
|
|
217
|
+
frag.set(18 /* FragmentShaderComponent.AssignFragData */, Fragment_1.assignFragColor);
|
|
218
218
|
if (flags.enableAtmosphere) {
|
|
219
219
|
frag.set(1 /* FragmentShaderComponent.ComputeBaseColor */, computeSkySphereColorAtmosphere);
|
|
220
220
|
(0, Atmosphere_1.addAtmosphericScatteringEffect)(builder, true, true);
|
|
@@ -125,6 +125,6 @@ function addSolarShadowMap(builder, toTerrain = false) {
|
|
|
125
125
|
frag.addFunction(exports.warpDepth);
|
|
126
126
|
frag.addFunction(chebyshevUpperBound);
|
|
127
127
|
frag.addFunction(shadowMapEVSM);
|
|
128
|
-
frag.set(
|
|
128
|
+
frag.set(15 /* FragmentShaderComponent.ApplySolarShadowMap */, toTerrain ? applySolarShadowMapTerrain : applySolarShadowMap);
|
|
129
129
|
}
|
|
130
130
|
//# sourceMappingURL=SolarShadowMapping.js.map
|
|
@@ -10,7 +10,7 @@ export declare const octDecodeNormal = "\nvec3 octDecodeNormal(vec2 e) {\n e =
|
|
|
10
10
|
/** @internal */
|
|
11
11
|
export declare function addSurfaceFlags(builder: ProgramBuilder, withFeatureOverrides: boolean, withFeatureColor: boolean): void;
|
|
12
12
|
/** @internal */
|
|
13
|
-
export declare function addTexture(builder: ProgramBuilder, animated: IsAnimated, isThematic: IsThematic, isPointCloud: boolean, isHilite: boolean): void;
|
|
13
|
+
export declare function addTexture(builder: ProgramBuilder, animated: IsAnimated, isThematic: IsThematic, isPointCloud: boolean, isHilite: boolean, isMaplayer: boolean): void;
|
|
14
14
|
export declare const discardClassifiedByAlpha = "\n if (u_no_classifier_discard)\n return false;\n\n bool hasAlpha = alpha <= s_maxAlpha;\n bool isOpaquePass = (kRenderPass_OpaqueLinear <= u_renderPass && kRenderPass_OpaqueGeneral >= u_renderPass);\n bool isTranslucentPass = kRenderPass_Translucent == u_renderPass;\n return (isOpaquePass && hasAlpha) || (isTranslucentPass && !hasAlpha);\n";
|
|
15
15
|
/** @internal */
|
|
16
16
|
export declare function createSurfaceBuilder(flags: TechniqueFlags): ProgramBuilder;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Surface.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/render/webgl/glsl/Surface.ts"],"names":[],"mappings":"AAIA;;GAEG;AAMH,OAAO,EAC2C,cAAc,EAC/D,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACQ,UAAU,EAAE,YAAY,EAAE,WAAW,EAAgB,UAAU,EAAE,YAAY,EAAE,cAAc,EAC3G,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"Surface.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/render/webgl/glsl/Surface.ts"],"names":[],"mappings":"AAIA;;GAEG;AAMH,OAAO,EAC2C,cAAc,EAC/D,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACQ,UAAU,EAAE,YAAY,EAAE,WAAW,EAAgB,UAAU,EAAE,YAAY,EAAE,cAAc,EAC3G,MAAM,mBAAmB,CAAC;AAsR3B,gBAAgB;AAChB,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,GAAG,cAAc,CAc5H;AAsED,gBAAgB;AAChB,eAAO,MAAM,eAAe,+SAW3B,CAAC;AAgHF,gBAAgB;AAChB,wBAAgB,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO,QAoBhH;AA2CD,gBAAgB;AAChB,wBAAgB,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAC,OAAO,QAoH7J;AAED,eAAO,MAAM,wBAAwB,mWAQpC,CAAC;AA2BF,gBAAgB;AAChB,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CA8G1E;AAED,wBAAgB,oCAAoC,CAAC,OAAO,EAAE,cAAc,QAgB3E"}
|
|
@@ -38,6 +38,9 @@ const SurfaceGeometry_1 = require("../SurfaceGeometry");
|
|
|
38
38
|
const Wiremesh_1 = require("./Wiremesh");
|
|
39
39
|
const core_common_1 = require("@itwin/core-common");
|
|
40
40
|
const Contours_1 = require("./Contours");
|
|
41
|
+
const core_geometry_1 = require("@itwin/core-geometry");
|
|
42
|
+
const Matrix_1 = require("../Matrix");
|
|
43
|
+
const MaplayerDraping_1 = require("./MaplayerDraping");
|
|
41
44
|
const constantLodTextureLookup = `
|
|
42
45
|
vec4 constantLodTextureLookup(sampler2D textureSampler) {
|
|
43
46
|
float logDepth = log2(v_uvCustom.z);
|
|
@@ -261,11 +264,11 @@ function createCommon(isInstanced, animated, shadowable, isHiliter, positionType
|
|
|
261
264
|
function createSurfaceHiliter(instanced, classified, posType) {
|
|
262
265
|
const builder = createCommon(instanced, 0 /* IsAnimated.No */, 0 /* IsShadowable.No */, true, posType);
|
|
263
266
|
addSurfaceFlags(builder, true, false);
|
|
264
|
-
addTexture(builder, 0 /* IsAnimated.No */, 0 /* IsThematic.No */, false, true);
|
|
267
|
+
addTexture(builder, 0 /* IsAnimated.No */, 0 /* IsThematic.No */, false, true, false);
|
|
265
268
|
if (classified) {
|
|
266
269
|
(0, PlanarClassification_1.addHilitePlanarClassifier)(builder);
|
|
267
270
|
builder.vert.addGlobal("feature_ignore_material", 0 /* VariableType.Boolean */, "false");
|
|
268
|
-
builder.frag.set(
|
|
271
|
+
builder.frag.set(18 /* FragmentShaderComponent.AssignFragData */, Fragment_1.assignFragColor);
|
|
269
272
|
}
|
|
270
273
|
else {
|
|
271
274
|
(0, FeatureSymbology_1.addSurfaceHiliter)(builder);
|
|
@@ -434,7 +437,7 @@ const computeBaseColor = `
|
|
|
434
437
|
// Compute color for raster glyph.
|
|
435
438
|
const vec3 white = vec3(1.0);
|
|
436
439
|
const vec3 epsilon = vec3(0.0001);
|
|
437
|
-
|
|
440
|
+
vec3 almostWhite = white - epsilon;
|
|
438
441
|
|
|
439
442
|
// set to black if almost white and reverse white-on-white is on
|
|
440
443
|
bvec3 isAlmostWhite = greaterThan(surfaceColor.rgb, almostWhite);
|
|
@@ -486,17 +489,20 @@ function addNormal(builder, animated) {
|
|
|
486
489
|
});
|
|
487
490
|
});
|
|
488
491
|
finalizeNormal += finalizeNormalPostlude;
|
|
489
|
-
builder.frag.set(
|
|
492
|
+
builder.frag.set(24 /* FragmentShaderComponent.FinalizeNormal */, finalizeNormal);
|
|
490
493
|
// Set to true to colorize surfaces based on normals (in world space).
|
|
491
494
|
// You must also set checkMaxVarying to false in ProgramBuilder.buildProgram to avoid assertions, if using a non-optimized build.
|
|
492
495
|
const debugNormals = false;
|
|
493
496
|
if (debugNormals) {
|
|
494
|
-
builder.frag.set(
|
|
497
|
+
builder.frag.set(17 /* FragmentShaderComponent.ApplyDebugColor */, "return vec4(vec3(v_normal / 2.0 + 0.5), baseColor.a);");
|
|
495
498
|
builder.addInlineComputedVarying("v_normal", 4 /* VariableType.Vec3 */, "v_normal = computeSurfaceNormal();");
|
|
496
499
|
}
|
|
497
500
|
}
|
|
501
|
+
const scratchMatrix4d1 = core_geometry_1.Matrix4d.createIdentity();
|
|
502
|
+
const scratchMatrix4d2 = core_geometry_1.Matrix4d.createIdentity();
|
|
503
|
+
const scratchMatrix = new Matrix_1.Matrix4();
|
|
498
504
|
/** @internal */
|
|
499
|
-
function addTexture(builder, animated, isThematic, isPointCloud, isHilite) {
|
|
505
|
+
function addTexture(builder, animated, isThematic, isPointCloud, isHilite, isMaplayer) {
|
|
500
506
|
if (isThematic) {
|
|
501
507
|
builder.addInlineComputedVarying("v_thematicIndex", 2 /* VariableType.Float */, (0, Thematic_1.getComputeThematicIndex)(builder.vert.usesInstancedGeometry, isPointCloud, true));
|
|
502
508
|
}
|
|
@@ -550,6 +556,65 @@ function addTexture(builder, animated, isThematic, isPointCloud, isHilite) {
|
|
|
550
556
|
});
|
|
551
557
|
});
|
|
552
558
|
}
|
|
559
|
+
if (isMaplayer) {
|
|
560
|
+
builder.frag.addUniform("u_texturesPresent", 0 /* VariableType.Boolean */, (program) => {
|
|
561
|
+
program.addGraphicUniform("u_texturesPresent", (uniform, params) => {
|
|
562
|
+
uniform.setUniform1i(params.geometry.asSurface.hasTextures ? 1 : 0);
|
|
563
|
+
});
|
|
564
|
+
});
|
|
565
|
+
const textureUnits = [
|
|
566
|
+
RenderFlags_1.TextureUnit.SurfaceDraping0,
|
|
567
|
+
RenderFlags_1.TextureUnit.SurfaceDraping1,
|
|
568
|
+
RenderFlags_1.TextureUnit.SurfaceDraping2,
|
|
569
|
+
RenderFlags_1.TextureUnit.SurfaceDraping3,
|
|
570
|
+
RenderFlags_1.TextureUnit.SurfaceDraping4,
|
|
571
|
+
RenderFlags_1.TextureUnit.SurfaceDraping5,
|
|
572
|
+
];
|
|
573
|
+
for (let i = 0; i < textureUnits.length; i++) {
|
|
574
|
+
const textureLabel = `s_texture${i}`;
|
|
575
|
+
builder.frag.addUniform(textureLabel, 8 /* VariableType.Sampler2D */, (prog) => {
|
|
576
|
+
prog.addGraphicUniform(textureLabel, (uniform, params) => {
|
|
577
|
+
const textureUnit = textureUnits[i];
|
|
578
|
+
const mesh = params.geometry.asSurface;
|
|
579
|
+
const drapeTexture = mesh.textureParams ? mesh.textureParams.params[i].texture : undefined;
|
|
580
|
+
if (drapeTexture !== undefined) {
|
|
581
|
+
const texture = drapeTexture;
|
|
582
|
+
texture.texture.bindSampler(uniform, textureUnit);
|
|
583
|
+
params.context;
|
|
584
|
+
}
|
|
585
|
+
else {
|
|
586
|
+
System_1.System.instance.ensureSamplerBound(uniform, textureUnit);
|
|
587
|
+
}
|
|
588
|
+
});
|
|
589
|
+
});
|
|
590
|
+
const paramsLabel = `u_texParams${i}`, matrixLabel = `u_texMatrix${i}`;
|
|
591
|
+
builder.frag.addUniform(matrixLabel, 7 /* VariableType.Mat4 */, (prog) => {
|
|
592
|
+
prog.addGraphicUniform(matrixLabel, (uniform, params) => {
|
|
593
|
+
const mesh = params.geometry.asSurface;
|
|
594
|
+
const textureParam = mesh.textureParams?.params[i];
|
|
595
|
+
if (undefined !== textureParam) {
|
|
596
|
+
const projectionMatrix = textureParam.getProjectionMatrix();
|
|
597
|
+
if (projectionMatrix) {
|
|
598
|
+
const eyeToModel = core_geometry_1.Matrix4d.createTransform(params.target.uniforms.frustum.viewMatrix.inverse(), scratchMatrix4d1);
|
|
599
|
+
const eyeToTexture = projectionMatrix.multiplyMatrixMatrix(eyeToModel, scratchMatrix4d2);
|
|
600
|
+
uniform.setMatrix4(Matrix_1.Matrix4.fromMatrix4d(eyeToTexture, scratchMatrix));
|
|
601
|
+
}
|
|
602
|
+
else
|
|
603
|
+
uniform.setMatrix4(textureParam.getTerrainMatrix());
|
|
604
|
+
}
|
|
605
|
+
});
|
|
606
|
+
});
|
|
607
|
+
builder.frag.addUniform(paramsLabel, 7 /* VariableType.Mat4 */, (prog) => {
|
|
608
|
+
prog.addGraphicUniform(paramsLabel, (uniform, params) => {
|
|
609
|
+
const mesh = params.geometry.asSurface;
|
|
610
|
+
const textureParam = mesh.textureParams?.params[i];
|
|
611
|
+
if (undefined !== textureParam) {
|
|
612
|
+
uniform.setMatrix4(textureParam.getParams(scratchMatrix));
|
|
613
|
+
}
|
|
614
|
+
});
|
|
615
|
+
});
|
|
616
|
+
}
|
|
617
|
+
}
|
|
553
618
|
}
|
|
554
619
|
exports.discardClassifiedByAlpha = `
|
|
555
620
|
if (u_no_classifier_discard)
|
|
@@ -614,7 +679,7 @@ function createSurfaceBuilder(flags) {
|
|
|
614
679
|
params.target.uniforms.style.bindBackgroundRgb(uniform);
|
|
615
680
|
});
|
|
616
681
|
});
|
|
617
|
-
addTexture(builder, flags.isAnimated, flags.isThematic, false, false);
|
|
682
|
+
addTexture(builder, flags.isAnimated, flags.isThematic, false, false, true);
|
|
618
683
|
builder.frag.addUniform("u_applyGlyphTex", 0 /* VariableType.Boolean */, (prog) => {
|
|
619
684
|
prog.addGraphicUniform("u_applyGlyphTex", (uniform, params) => {
|
|
620
685
|
const surfGeom = params.geometry.asSurface;
|
|
@@ -628,6 +693,7 @@ function createSurfaceBuilder(flags) {
|
|
|
628
693
|
(0, Lighting_1.addLighting)(builder);
|
|
629
694
|
(0, Fragment_1.addWhiteOnWhiteReversal)(builder.frag);
|
|
630
695
|
(0, Contours_1.addApplyContours)(builder);
|
|
696
|
+
(0, MaplayerDraping_1.addApplySurfaceDraping)(builder.frag);
|
|
631
697
|
if (flags.isTranslucent) {
|
|
632
698
|
(0, Translucency_1.addTranslucency)(builder);
|
|
633
699
|
}
|