@itwin/core-frontend 4.0.0-dev.2 → 4.0.0-dev.21
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/CHANGELOG.md +24 -1
- package/lib/cjs/IModelApp.d.ts +2 -3
- package/lib/cjs/IModelApp.d.ts.map +1 -1
- package/lib/cjs/IModelApp.js +3 -7
- package/lib/cjs/IModelApp.js.map +1 -1
- package/lib/cjs/IModelConnection.d.ts +1 -1
- package/lib/cjs/IModelConnection.js +1 -1
- package/lib/cjs/IModelConnection.js.map +1 -1
- package/lib/cjs/NoRenderApp.d.ts +11 -4
- package/lib/cjs/NoRenderApp.d.ts.map +1 -1
- package/lib/cjs/NoRenderApp.js +13 -6
- package/lib/cjs/NoRenderApp.js.map +1 -1
- package/lib/cjs/SelectionSet.d.ts +0 -1
- package/lib/cjs/SelectionSet.d.ts.map +1 -1
- package/lib/cjs/SelectionSet.js +0 -1
- package/lib/cjs/SelectionSet.js.map +1 -1
- package/lib/cjs/SubCategoriesCache.d.ts.map +1 -1
- package/lib/cjs/SubCategoriesCache.js +0 -1
- package/lib/cjs/SubCategoriesCache.js.map +1 -1
- package/lib/cjs/render/RealityMeshParams.d.ts +6 -3
- package/lib/cjs/render/RealityMeshParams.d.ts.map +1 -1
- package/lib/cjs/render/RealityMeshParams.js +15 -5
- package/lib/cjs/render/RealityMeshParams.js.map +1 -1
- package/lib/cjs/render/RenderSystem.d.ts +5 -16
- package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
- package/lib/cjs/render/RenderSystem.js +0 -6
- package/lib/cjs/render/RenderSystem.js.map +1 -1
- package/lib/cjs/render/ScreenSpaceEffectBuilder.d.ts +3 -4
- package/lib/cjs/render/ScreenSpaceEffectBuilder.d.ts.map +1 -1
- package/lib/cjs/render/ScreenSpaceEffectBuilder.js.map +1 -1
- package/lib/cjs/render/webgl/AttributeBuffers.d.ts +9 -79
- package/lib/cjs/render/webgl/AttributeBuffers.d.ts.map +1 -1
- package/lib/cjs/render/webgl/AttributeBuffers.js +19 -152
- package/lib/cjs/render/webgl/AttributeBuffers.js.map +1 -1
- package/lib/cjs/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
- package/lib/cjs/render/webgl/BackgroundMapDrape.js +0 -3
- package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/cjs/render/webgl/BranchUniforms.d.ts.map +1 -1
- package/lib/cjs/render/webgl/BranchUniforms.js +0 -8
- package/lib/cjs/render/webgl/BranchUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/ClipStack.d.ts +0 -1
- package/lib/cjs/render/webgl/ClipStack.d.ts.map +1 -1
- package/lib/cjs/render/webgl/ClipStack.js +2 -6
- package/lib/cjs/render/webgl/ClipStack.js.map +1 -1
- package/lib/cjs/render/webgl/ClipVolume.d.ts.map +1 -1
- package/lib/cjs/render/webgl/ClipVolume.js +1 -5
- package/lib/cjs/render/webgl/ClipVolume.js.map +1 -1
- package/lib/cjs/render/webgl/ClippingProgram.d.ts +3 -2
- package/lib/cjs/render/webgl/ClippingProgram.d.ts.map +1 -1
- package/lib/cjs/render/webgl/ClippingProgram.js +10 -37
- package/lib/cjs/render/webgl/ClippingProgram.js.map +1 -1
- package/lib/cjs/render/webgl/DrawCommand.d.ts +2 -2
- package/lib/cjs/render/webgl/DrawCommand.d.ts.map +1 -1
- package/lib/cjs/render/webgl/DrawCommand.js +1 -1
- package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
- package/lib/cjs/render/webgl/FeatureOverrides.js +1 -1
- package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/cjs/render/webgl/FloatRGBA.d.ts.map +1 -1
- package/lib/cjs/render/webgl/FloatRGBA.js +0 -4
- package/lib/cjs/render/webgl/FloatRGBA.js.map +1 -1
- package/lib/cjs/render/webgl/FrameBuffer.js.map +1 -1
- package/lib/cjs/render/webgl/GLTimer.d.ts.map +1 -1
- package/lib/cjs/render/webgl/GLTimer.js +2 -35
- package/lib/cjs/render/webgl/GLTimer.js.map +1 -1
- package/lib/cjs/render/webgl/PlanarClassifier.d.ts.map +1 -1
- package/lib/cjs/render/webgl/PlanarClassifier.js +13 -71
- package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/cjs/render/webgl/PointCloud.d.ts.map +1 -1
- package/lib/cjs/render/webgl/PointCloud.js +1 -3
- package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
- package/lib/cjs/render/webgl/RenderBuffer.d.ts +1 -1
- package/lib/cjs/render/webgl/RenderBuffer.d.ts.map +1 -1
- package/lib/cjs/render/webgl/RenderBuffer.js +2 -3
- package/lib/cjs/render/webgl/RenderBuffer.js.map +1 -1
- package/lib/cjs/render/webgl/RenderFlags.d.ts +1 -2
- package/lib/cjs/render/webgl/RenderFlags.d.ts.map +1 -1
- package/lib/cjs/render/webgl/RenderFlags.js +4 -6
- package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
- package/lib/cjs/render/webgl/SceneCompositor.d.ts +0 -2
- package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
- package/lib/cjs/render/webgl/SceneCompositor.js +754 -1135
- package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/cjs/render/webgl/ScreenSpaceEffect.js +1 -1
- package/lib/cjs/render/webgl/ScreenSpaceEffect.js.map +1 -1
- package/lib/cjs/render/webgl/ShaderBuilder.d.ts +1 -2
- package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
- package/lib/cjs/render/webgl/ShaderBuilder.js +13 -48
- package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/cjs/render/webgl/ShaderProgram.d.ts +1 -2
- package/lib/cjs/render/webgl/ShaderProgram.d.ts.map +1 -1
- package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
- package/lib/cjs/render/webgl/SolarShadowMap.d.ts.map +1 -1
- package/lib/cjs/render/webgl/SolarShadowMap.js +5 -26
- package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
- package/lib/cjs/render/webgl/System.d.ts +10 -10
- package/lib/cjs/render/webgl/System.d.ts.map +1 -1
- package/lib/cjs/render/webgl/System.js +39 -122
- package/lib/cjs/render/webgl/System.js.map +1 -1
- package/lib/cjs/render/webgl/Technique.d.ts +4 -5
- package/lib/cjs/render/webgl/Technique.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Technique.js +4 -28
- package/lib/cjs/render/webgl/Technique.js.map +1 -1
- package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Texture.js +14 -18
- package/lib/cjs/render/webgl/Texture.js.map +1 -1
- package/lib/cjs/render/webgl/ThematicSensors.d.ts +4 -3
- package/lib/cjs/render/webgl/ThematicSensors.d.ts.map +1 -1
- package/lib/cjs/render/webgl/ThematicSensors.js +9 -50
- package/lib/cjs/render/webgl/ThematicSensors.js.map +1 -1
- package/lib/cjs/render/webgl/ThematicUniforms.js +1 -1
- package/lib/cjs/render/webgl/ThematicUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/UniformHandle.d.ts.map +1 -1
- package/lib/cjs/render/webgl/UniformHandle.js +1 -4
- package/lib/cjs/render/webgl/UniformHandle.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/AmbientOcclusion.d.ts +1 -2
- package/lib/cjs/render/webgl/glsl/AmbientOcclusion.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +1 -1
- package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Animation.d.ts +1 -2
- package/lib/cjs/render/webgl/glsl/Animation.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Animation.js +23 -26
- package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Blur.d.ts +1 -2
- package/lib/cjs/render/webgl/glsl/Blur.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Blur.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/ClearPickAndColor.d.ts +1 -2
- package/lib/cjs/render/webgl/glsl/ClearPickAndColor.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js +2 -9
- package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/ClearTranslucent.d.ts +1 -2
- package/lib/cjs/render/webgl/glsl/ClearTranslucent.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/ClearTranslucent.js +2 -10
- package/lib/cjs/render/webgl/glsl/ClearTranslucent.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Clipping.d.ts +1 -1
- package/lib/cjs/render/webgl/glsl/Clipping.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Clipping.js +5 -36
- package/lib/cjs/render/webgl/glsl/Clipping.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Combine3Textures.d.ts +1 -2
- package/lib/cjs/render/webgl/glsl/Combine3Textures.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Combine3Textures.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/CombineTextures.d.ts +1 -2
- package/lib/cjs/render/webgl/glsl/CombineTextures.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/CombineTextures.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Common.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Common.js +9 -55
- package/lib/cjs/render/webgl/glsl/Common.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Composite.d.ts +1 -2
- package/lib/cjs/render/webgl/glsl/Composite.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Composite.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/CopyColor.d.ts +1 -2
- package/lib/cjs/render/webgl/glsl/CopyColor.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/CopyColor.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/CopyPickBuffers.d.ts +1 -2
- package/lib/cjs/render/webgl/glsl/CopyPickBuffers.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js +12 -19
- package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/CopyStencil.d.ts +4 -7
- package/lib/cjs/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/CopyStencil.js +2 -39
- package/lib/cjs/render/webgl/glsl/CopyStencil.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/EDL.d.ts +4 -5
- package/lib/cjs/render/webgl/glsl/EDL.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/EDL.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/EVSMFromDepth.d.ts +1 -2
- package/lib/cjs/render/webgl/glsl/EVSMFromDepth.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Edge.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Edge.js +2 -2
- package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +3 -24
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Fragment.d.ts +0 -7
- package/lib/cjs/render/webgl/glsl/Fragment.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Fragment.js +5 -40
- package/lib/cjs/render/webgl/glsl/Fragment.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Instancing.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Instancing.js +1 -5
- package/lib/cjs/render/webgl/glsl/Instancing.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js +0 -2
- package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/PlanarGrid.d.ts +1 -2
- package/lib/cjs/render/webgl/glsl/PlanarGrid.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/PlanarGrid.js +2 -12
- package/lib/cjs/render/webgl/glsl/PlanarGrid.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/RealityMesh.js +3 -8
- package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/SkyBox.d.ts +1 -2
- package/lib/cjs/render/webgl/glsl/SkyBox.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/SkyBox.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/SkySphere.d.ts +1 -2
- package/lib/cjs/render/webgl/glsl/SkySphere.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/SkySphere.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js +1 -1
- package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Surface.js +33 -57
- package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Thematic.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Thematic.js +3 -36
- package/lib/cjs/render/webgl/glsl/Thematic.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Translucency.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Translucency.js +2 -12
- package/lib/cjs/render/webgl/glsl/Translucency.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Vertex.d.ts +1 -2
- package/lib/cjs/render/webgl/glsl/Vertex.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Vertex.js +15 -78
- package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Wiremesh.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Wiremesh.js +2 -5
- package/lib/cjs/render/webgl/glsl/Wiremesh.js.map +1 -1
- package/lib/cjs/tile/PrimaryTileTree.d.ts +0 -3
- package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/PrimaryTileTree.js +6 -28
- package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
- package/lib/cjs/tile/RealityTile.d.ts +1 -1
- package/lib/cjs/tile/RealityTile.js +1 -1
- package/lib/cjs/tile/RealityTile.js.map +1 -1
- package/lib/cjs/tile/RealityTileTree.d.ts +1 -1
- package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/RealityTileTree.js +2 -3
- package/lib/cjs/tile/RealityTileTree.js.map +1 -1
- package/lib/cjs/tile/TileAdmin.d.ts +5 -1
- package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
- package/lib/cjs/tile/TileAdmin.js +2 -2
- package/lib/cjs/tile/TileAdmin.js.map +1 -1
- package/lib/cjs/tile/TileRequest.d.ts.map +1 -1
- package/lib/cjs/tile/TileRequest.js +2 -1
- package/lib/cjs/tile/TileRequest.js.map +1 -1
- package/lib/cjs/tile/TileRequestChannel.d.ts +23 -1
- package/lib/cjs/tile/TileRequestChannel.d.ts.map +1 -1
- package/lib/cjs/tile/TileRequestChannel.js +28 -7
- package/lib/cjs/tile/TileRequestChannel.js.map +1 -1
- package/lib/cjs/tile/map/EllipsoidTerrainProvider.d.ts +11 -3
- package/lib/cjs/tile/map/EllipsoidTerrainProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/EllipsoidTerrainProvider.js +17 -5
- package/lib/cjs/tile/map/EllipsoidTerrainProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryTileTree.d.ts +2 -2
- package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryTileTree.js +10 -5
- package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapCartoRectangle.d.ts +1 -1
- package/lib/cjs/tile/map/MapCartoRectangle.js +1 -1
- package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
- package/lib/cjs/tile/map/MapTile.d.ts +10 -2
- package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTile.js +28 -4
- package/lib/cjs/tile/map/MapTile.js.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.d.ts +3 -2
- package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.js +12 -9
- package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapTilingScheme.d.ts +1 -1
- package/lib/cjs/tile/map/MapTilingScheme.js +1 -1
- package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
- package/lib/cjs/tile/map/QuadId.d.ts +1 -1
- package/lib/cjs/tile/map/QuadId.js +1 -1
- package/lib/cjs/tile/map/QuadId.js.map +1 -1
- package/lib/cjs/tile/map/TerrainMeshProvider.d.ts +9 -4
- package/lib/cjs/tile/map/TerrainMeshProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/TerrainMeshProvider.js +6 -1
- package/lib/cjs/tile/map/TerrainMeshProvider.js.map +1 -1
- package/lib/cjs/tile/map/TerrainProvider.d.ts +2 -2
- package/lib/cjs/tile/map/TerrainProvider.js +1 -1
- package/lib/cjs/tile/map/TerrainProvider.js.map +1 -1
- package/lib/esm/IModelApp.d.ts +2 -3
- package/lib/esm/IModelApp.d.ts.map +1 -1
- package/lib/esm/IModelApp.js +3 -7
- package/lib/esm/IModelApp.js.map +1 -1
- package/lib/esm/IModelConnection.d.ts +1 -1
- package/lib/esm/IModelConnection.js +1 -1
- package/lib/esm/IModelConnection.js.map +1 -1
- package/lib/esm/NoRenderApp.d.ts +11 -4
- package/lib/esm/NoRenderApp.d.ts.map +1 -1
- package/lib/esm/NoRenderApp.js +11 -4
- package/lib/esm/NoRenderApp.js.map +1 -1
- package/lib/esm/SelectionSet.d.ts +0 -1
- package/lib/esm/SelectionSet.d.ts.map +1 -1
- package/lib/esm/SelectionSet.js +0 -1
- package/lib/esm/SelectionSet.js.map +1 -1
- package/lib/esm/SubCategoriesCache.d.ts.map +1 -1
- package/lib/esm/SubCategoriesCache.js +0 -1
- package/lib/esm/SubCategoriesCache.js.map +1 -1
- package/lib/esm/render/RealityMeshParams.d.ts +6 -3
- package/lib/esm/render/RealityMeshParams.d.ts.map +1 -1
- package/lib/esm/render/RealityMeshParams.js +15 -5
- package/lib/esm/render/RealityMeshParams.js.map +1 -1
- package/lib/esm/render/RenderSystem.d.ts +5 -16
- package/lib/esm/render/RenderSystem.d.ts.map +1 -1
- package/lib/esm/render/RenderSystem.js +0 -6
- package/lib/esm/render/RenderSystem.js.map +1 -1
- package/lib/esm/render/ScreenSpaceEffectBuilder.d.ts +3 -4
- package/lib/esm/render/ScreenSpaceEffectBuilder.d.ts.map +1 -1
- package/lib/esm/render/ScreenSpaceEffectBuilder.js.map +1 -1
- package/lib/esm/render/webgl/AttributeBuffers.d.ts +9 -79
- package/lib/esm/render/webgl/AttributeBuffers.d.ts.map +1 -1
- package/lib/esm/render/webgl/AttributeBuffers.js +16 -144
- package/lib/esm/render/webgl/AttributeBuffers.js.map +1 -1
- package/lib/esm/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
- package/lib/esm/render/webgl/BackgroundMapDrape.js +0 -3
- package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/esm/render/webgl/BranchUniforms.d.ts.map +1 -1
- package/lib/esm/render/webgl/BranchUniforms.js +0 -8
- package/lib/esm/render/webgl/BranchUniforms.js.map +1 -1
- package/lib/esm/render/webgl/ClipStack.d.ts +0 -1
- package/lib/esm/render/webgl/ClipStack.d.ts.map +1 -1
- package/lib/esm/render/webgl/ClipStack.js +2 -6
- package/lib/esm/render/webgl/ClipStack.js.map +1 -1
- package/lib/esm/render/webgl/ClipVolume.d.ts.map +1 -1
- package/lib/esm/render/webgl/ClipVolume.js +1 -5
- package/lib/esm/render/webgl/ClipVolume.js.map +1 -1
- package/lib/esm/render/webgl/ClippingProgram.d.ts +3 -2
- package/lib/esm/render/webgl/ClippingProgram.d.ts.map +1 -1
- package/lib/esm/render/webgl/ClippingProgram.js +10 -37
- package/lib/esm/render/webgl/ClippingProgram.js.map +1 -1
- package/lib/esm/render/webgl/DrawCommand.d.ts +2 -2
- package/lib/esm/render/webgl/DrawCommand.d.ts.map +1 -1
- package/lib/esm/render/webgl/DrawCommand.js +1 -1
- package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
- package/lib/esm/render/webgl/FeatureOverrides.js +1 -1
- package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/esm/render/webgl/FloatRGBA.d.ts.map +1 -1
- package/lib/esm/render/webgl/FloatRGBA.js +0 -4
- package/lib/esm/render/webgl/FloatRGBA.js.map +1 -1
- package/lib/esm/render/webgl/FrameBuffer.js.map +1 -1
- package/lib/esm/render/webgl/GLTimer.d.ts.map +1 -1
- package/lib/esm/render/webgl/GLTimer.js +2 -35
- package/lib/esm/render/webgl/GLTimer.js.map +1 -1
- package/lib/esm/render/webgl/PlanarClassifier.d.ts.map +1 -1
- package/lib/esm/render/webgl/PlanarClassifier.js +13 -71
- package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/esm/render/webgl/PointCloud.d.ts.map +1 -1
- package/lib/esm/render/webgl/PointCloud.js +1 -3
- package/lib/esm/render/webgl/PointCloud.js.map +1 -1
- package/lib/esm/render/webgl/RenderBuffer.d.ts +1 -1
- package/lib/esm/render/webgl/RenderBuffer.d.ts.map +1 -1
- package/lib/esm/render/webgl/RenderBuffer.js +2 -3
- package/lib/esm/render/webgl/RenderBuffer.js.map +1 -1
- package/lib/esm/render/webgl/RenderFlags.d.ts +1 -2
- package/lib/esm/render/webgl/RenderFlags.d.ts.map +1 -1
- package/lib/esm/render/webgl/RenderFlags.js +4 -6
- package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
- package/lib/esm/render/webgl/SceneCompositor.d.ts +0 -2
- package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
- package/lib/esm/render/webgl/SceneCompositor.js +756 -1137
- package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/esm/render/webgl/ScreenSpaceEffect.js +1 -1
- package/lib/esm/render/webgl/ScreenSpaceEffect.js.map +1 -1
- package/lib/esm/render/webgl/ShaderBuilder.d.ts +1 -2
- package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
- package/lib/esm/render/webgl/ShaderBuilder.js +13 -48
- package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/esm/render/webgl/ShaderProgram.d.ts +1 -2
- package/lib/esm/render/webgl/ShaderProgram.d.ts.map +1 -1
- package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
- package/lib/esm/render/webgl/SolarShadowMap.d.ts.map +1 -1
- package/lib/esm/render/webgl/SolarShadowMap.js +5 -26
- package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
- package/lib/esm/render/webgl/System.d.ts +10 -10
- package/lib/esm/render/webgl/System.d.ts.map +1 -1
- package/lib/esm/render/webgl/System.js +41 -124
- package/lib/esm/render/webgl/System.js.map +1 -1
- package/lib/esm/render/webgl/Technique.d.ts +4 -5
- package/lib/esm/render/webgl/Technique.d.ts.map +1 -1
- package/lib/esm/render/webgl/Technique.js +5 -29
- package/lib/esm/render/webgl/Technique.js.map +1 -1
- package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
- package/lib/esm/render/webgl/Texture.js +14 -18
- package/lib/esm/render/webgl/Texture.js.map +1 -1
- package/lib/esm/render/webgl/ThematicSensors.d.ts +4 -3
- package/lib/esm/render/webgl/ThematicSensors.d.ts.map +1 -1
- package/lib/esm/render/webgl/ThematicSensors.js +9 -50
- package/lib/esm/render/webgl/ThematicSensors.js.map +1 -1
- package/lib/esm/render/webgl/ThematicUniforms.js +1 -1
- package/lib/esm/render/webgl/ThematicUniforms.js.map +1 -1
- package/lib/esm/render/webgl/UniformHandle.d.ts.map +1 -1
- package/lib/esm/render/webgl/UniformHandle.js +1 -4
- package/lib/esm/render/webgl/UniformHandle.js.map +1 -1
- package/lib/esm/render/webgl/glsl/AmbientOcclusion.d.ts +1 -2
- package/lib/esm/render/webgl/glsl/AmbientOcclusion.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +1 -1
- package/lib/esm/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Animation.d.ts +1 -2
- package/lib/esm/render/webgl/glsl/Animation.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Animation.js +23 -26
- package/lib/esm/render/webgl/glsl/Animation.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Blur.d.ts +1 -2
- package/lib/esm/render/webgl/glsl/Blur.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Blur.js.map +1 -1
- package/lib/esm/render/webgl/glsl/ClearPickAndColor.d.ts +1 -2
- package/lib/esm/render/webgl/glsl/ClearPickAndColor.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/ClearPickAndColor.js +2 -9
- package/lib/esm/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
- package/lib/esm/render/webgl/glsl/ClearTranslucent.d.ts +1 -2
- package/lib/esm/render/webgl/glsl/ClearTranslucent.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/ClearTranslucent.js +2 -10
- package/lib/esm/render/webgl/glsl/ClearTranslucent.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Clipping.d.ts +1 -1
- package/lib/esm/render/webgl/glsl/Clipping.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Clipping.js +5 -36
- package/lib/esm/render/webgl/glsl/Clipping.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Combine3Textures.d.ts +1 -2
- package/lib/esm/render/webgl/glsl/Combine3Textures.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Combine3Textures.js.map +1 -1
- package/lib/esm/render/webgl/glsl/CombineTextures.d.ts +1 -2
- package/lib/esm/render/webgl/glsl/CombineTextures.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/CombineTextures.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Common.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Common.js +9 -55
- package/lib/esm/render/webgl/glsl/Common.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Composite.d.ts +1 -2
- package/lib/esm/render/webgl/glsl/Composite.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Composite.js.map +1 -1
- package/lib/esm/render/webgl/glsl/CopyColor.d.ts +1 -2
- package/lib/esm/render/webgl/glsl/CopyColor.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/CopyColor.js.map +1 -1
- package/lib/esm/render/webgl/glsl/CopyPickBuffers.d.ts +1 -2
- package/lib/esm/render/webgl/glsl/CopyPickBuffers.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/CopyPickBuffers.js +12 -19
- package/lib/esm/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
- package/lib/esm/render/webgl/glsl/CopyStencil.d.ts +4 -7
- package/lib/esm/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/CopyStencil.js +1 -37
- package/lib/esm/render/webgl/glsl/CopyStencil.js.map +1 -1
- package/lib/esm/render/webgl/glsl/EDL.d.ts +4 -5
- package/lib/esm/render/webgl/glsl/EDL.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/EDL.js.map +1 -1
- package/lib/esm/render/webgl/glsl/EVSMFromDepth.d.ts +1 -2
- package/lib/esm/render/webgl/glsl/EVSMFromDepth.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Edge.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Edge.js +2 -2
- package/lib/esm/render/webgl/glsl/Edge.js.map +1 -1
- package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/FeatureSymbology.js +3 -24
- package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Fragment.d.ts +0 -7
- package/lib/esm/render/webgl/glsl/Fragment.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Fragment.js +4 -38
- package/lib/esm/render/webgl/glsl/Fragment.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Instancing.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Instancing.js +1 -5
- package/lib/esm/render/webgl/glsl/Instancing.js.map +1 -1
- package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js +0 -2
- package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
- package/lib/esm/render/webgl/glsl/PlanarGrid.d.ts +1 -2
- package/lib/esm/render/webgl/glsl/PlanarGrid.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/PlanarGrid.js +2 -12
- package/lib/esm/render/webgl/glsl/PlanarGrid.js.map +1 -1
- package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/RealityMesh.js +3 -8
- package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
- package/lib/esm/render/webgl/glsl/SkyBox.d.ts +1 -2
- package/lib/esm/render/webgl/glsl/SkyBox.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/SkyBox.js.map +1 -1
- package/lib/esm/render/webgl/glsl/SkySphere.d.ts +1 -2
- package/lib/esm/render/webgl/glsl/SkySphere.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/SkySphere.js.map +1 -1
- package/lib/esm/render/webgl/glsl/SolarShadowMapping.js +1 -1
- package/lib/esm/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Surface.js +33 -57
- package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Thematic.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Thematic.js +3 -36
- package/lib/esm/render/webgl/glsl/Thematic.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Translucency.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Translucency.js +3 -13
- package/lib/esm/render/webgl/glsl/Translucency.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Vertex.d.ts +1 -2
- package/lib/esm/render/webgl/glsl/Vertex.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Vertex.js +16 -79
- package/lib/esm/render/webgl/glsl/Vertex.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Wiremesh.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Wiremesh.js +2 -5
- package/lib/esm/render/webgl/glsl/Wiremesh.js.map +1 -1
- package/lib/esm/tile/PrimaryTileTree.d.ts +0 -3
- package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
- package/lib/esm/tile/PrimaryTileTree.js +8 -30
- package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
- package/lib/esm/tile/RealityTile.d.ts +1 -1
- package/lib/esm/tile/RealityTile.js +1 -1
- package/lib/esm/tile/RealityTile.js.map +1 -1
- package/lib/esm/tile/RealityTileTree.d.ts +1 -1
- package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
- package/lib/esm/tile/RealityTileTree.js +2 -3
- package/lib/esm/tile/RealityTileTree.js.map +1 -1
- package/lib/esm/tile/TileAdmin.d.ts +5 -1
- package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
- package/lib/esm/tile/TileAdmin.js +2 -2
- package/lib/esm/tile/TileAdmin.js.map +1 -1
- package/lib/esm/tile/TileRequest.d.ts.map +1 -1
- package/lib/esm/tile/TileRequest.js +2 -1
- package/lib/esm/tile/TileRequest.js.map +1 -1
- package/lib/esm/tile/TileRequestChannel.d.ts +23 -1
- package/lib/esm/tile/TileRequestChannel.d.ts.map +1 -1
- package/lib/esm/tile/TileRequestChannel.js +28 -7
- package/lib/esm/tile/TileRequestChannel.js.map +1 -1
- package/lib/esm/tile/map/EllipsoidTerrainProvider.d.ts +11 -3
- package/lib/esm/tile/map/EllipsoidTerrainProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/EllipsoidTerrainProvider.js +17 -5
- package/lib/esm/tile/map/EllipsoidTerrainProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryTileTree.d.ts +2 -2
- package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryTileTree.js +10 -5
- package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/esm/tile/map/MapCartoRectangle.d.ts +1 -1
- package/lib/esm/tile/map/MapCartoRectangle.js +1 -1
- package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
- package/lib/esm/tile/map/MapTile.d.ts +10 -2
- package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTile.js +28 -4
- package/lib/esm/tile/map/MapTile.js.map +1 -1
- package/lib/esm/tile/map/MapTileTree.d.ts +3 -2
- package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTileTree.js +12 -9
- package/lib/esm/tile/map/MapTileTree.js.map +1 -1
- package/lib/esm/tile/map/MapTilingScheme.d.ts +1 -1
- package/lib/esm/tile/map/MapTilingScheme.js +1 -1
- package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
- package/lib/esm/tile/map/QuadId.d.ts +1 -1
- package/lib/esm/tile/map/QuadId.js +1 -1
- package/lib/esm/tile/map/QuadId.js.map +1 -1
- package/lib/esm/tile/map/TerrainMeshProvider.d.ts +9 -4
- package/lib/esm/tile/map/TerrainMeshProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/TerrainMeshProvider.js +6 -1
- package/lib/esm/tile/map/TerrainMeshProvider.js.map +1 -1
- package/lib/esm/tile/map/TerrainProvider.d.ts +2 -2
- package/lib/esm/tile/map/TerrainProvider.js +1 -1
- package/lib/esm/tile/map/TerrainProvider.js.map +1 -1
- package/package.json +24 -24
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClipStack.js","sourceRoot":"","sources":["../../../../src/render/webgl/ClipStack.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { ClipPlaneContainment, ClipVector, Point3d, Range3d, Transform } from \"@itwin/core-geometry\";\r\nimport { RgbColor } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { RenderClipVolume } from \"../RenderClipVolume\";\r\nimport { FloatRgba } from \"./FloatRGBA\";\r\nimport { Texture2DData, Texture2DHandle, TextureHandle } from \"./Texture\";\r\nimport { ClipVolume } from \"./ClipVolume\";\r\nimport { GL } from \"./GL\";\r\nimport { System } from \"./System\";\r\n\r\ninterface Clip {\r\n readonly numRows: number;\r\n readonly getData: (transform: Transform) => Uint8Array;\r\n}\r\n\r\nconst emptyClipData = new Uint8Array(0);\r\nconst emptyClip = {\r\n numRows: 0,\r\n getData: () => emptyClipData,\r\n};\r\n\r\nconst scratchRangeCorners = [\r\n new Point3d(), new Point3d(), new Point3d(), new Point3d(),\r\n new Point3d(), new Point3d(), new Point3d(), new Point3d(),\r\n];\r\n\r\nfunction getRangeCorners(r: Range3d): Point3d[] {\r\n return r.corners(scratchRangeCorners);\r\n}\r\n\r\n/** Maintains a stack of ClipVolumes. The volumes nest such that the stack represents the intersection of all the volumes.\r\n * The bottom of the stack represents the view's clip volume and is always present even if the view has no clip.\r\n * It also maintains the inside/outside clip colors, where the alpha component is 1 if the color should be applied and 0 if not.\r\n * @internal\r\n */\r\nexport class ClipStack {\r\n /** Encoded data for all clips on the stack, update when the stack or the transform changes. */\r\n protected _cpuBuffer: Uint8Array;\r\n /** A view of the encoded buffer in the format expected by the GPU. */\r\n protected _gpuBuffer: Texture2DData;\r\n protected _texture?: Texture2DHandle;\r\n protected readonly _isFloatTexture: boolean;\r\n /** The maximum number of rows we have ever required. Determines the texture height. Grows as needed, reallocating a larger texture, but never shrinks. */\r\n protected _numTotalRows: number;\r\n /** The number of rows in the texture actually required to encode the current contents of the stack. */\r\n protected _numRowsInUse: number;\r\n /** The first entry always represents the view clip. The rest are pushed and popped with GraphicBranches. */\r\n protected readonly _stack: Clip[] = [emptyClip];\r\n /** True if we need to recompute the texture. */\r\n protected _isStackDirty = false;\r\n /** Obtain the transform to be applied to the clips - i.e., the view matrix. */\r\n protected readonly _getTransform: () => Transform;\r\n /** If this returns false, the clip at the bottom of the stack is ignored. */\r\n protected readonly _wantViewClip: () => boolean;\r\n /** If alpha is 1 then geometry inside the clip will be drawn in this color. */\r\n protected readonly _insideColor = FloatRgba.from(0, 0, 0, 0);\r\n /** If alpha is 1 then geometry outside the clip will be drawn in this color. */\r\n protected readonly _outsideColor = FloatRgba.from(0, 0, 0, 0);\r\n /** For detecting whether the transform changed from one invocation of setViewClip to the next. */\r\n protected readonly _prevTransform = Transform.createZero();\r\n\r\n public constructor(getTransform: () => Transform, wantViewClip: () => boolean) {\r\n this._getTransform = getTransform;\r\n this._wantViewClip = wantViewClip;\r\n\r\n this._isFloatTexture = System.instance.capabilities.supportsTextureFloat;\r\n this._numTotalRows = this._numRowsInUse = 0;\r\n this._cpuBuffer = new Uint8Array(this._numTotalRows);\r\n this._gpuBuffer = this.allocateGpuBuffer();\r\n }\r\n\r\n public get insideColor(): FloatRgba {\r\n return this._insideColor;\r\n }\r\n\r\n public get outsideColor(): FloatRgba {\r\n return this._outsideColor;\r\n }\r\n\r\n public get hasOutsideColor(): boolean {\r\n return this.outsideColor.alpha !== 0;\r\n }\r\n\r\n public get bytesUsed(): number {\r\n return this._texture ? this._texture.bytesUsed : 0;\r\n }\r\n\r\n public setViewClip(clip: ClipVector | undefined, style: { insideColor?: RgbColor, outsideColor?: RgbColor }): void {\r\n assert(this._stack.length === 1);\r\n\r\n this.updateColor(style.insideColor, this._insideColor);\r\n this.updateColor(style.outsideColor, this._outsideColor);\r\n\r\n const transform = this._getTransform();\r\n if (!transform.isAlmostEqual(this._prevTransform)) {\r\n transform.clone(this._prevTransform);\r\n this._isStackDirty = true;\r\n }\r\n\r\n const cur = this._stack[0];\r\n if (cur === emptyClip) {\r\n if (!clip)\r\n return; // no change.\r\n } else if (!clip) {\r\n this._stack[0] = emptyClip;\r\n this._numRowsInUse = 0;\r\n this._isStackDirty = true;\r\n return;\r\n } else {\r\n assert(cur instanceof ClipVolume);\r\n if (cur.clipVector === clip) {\r\n // We assume that the active view's ClipVector is never mutated in place, so if we are given the same ClipVector, we expect our RenderClipVolume to match it.\r\n return;\r\n }\r\n }\r\n\r\n // ClipVector has changed.\r\n const newClip = IModelApp.renderSystem.createClipVolume(clip);\r\n if (!newClip) {\r\n this._isStackDirty = this._stack[0] !== emptyClip;\r\n this._stack[0] = emptyClip;\r\n this._numRowsInUse = 0;\r\n } else {\r\n this.pop();\r\n this.push(newClip);\r\n }\r\n }\r\n\r\n public push(clip: RenderClipVolume): void {\r\n assert(clip instanceof ClipVolume);\r\n\r\n this._stack.push(clip);\r\n this._numRowsInUse += clip.numRows;\r\n this._numTotalRows = Math.max(this._numRowsInUse, this._numTotalRows);\r\n this._isStackDirty = true;\r\n }\r\n\r\n public pop(): void {\r\n assert(this._stack.length > 0);\r\n const clip = this._stack.pop();\r\n this._numRowsInUse -= (clip ? clip.numRows : 0);\r\n }\r\n\r\n public get hasClip(): boolean {\r\n return this.startIndex < this.endIndex;\r\n }\r\n\r\n public get hasViewClip(): boolean {\r\n return emptyClip !== this._stack[0] && this._wantViewClip();\r\n }\r\n\r\n public get startIndex(): number {\r\n assert(this._stack.length > 0);\r\n return this._wantViewClip() ? 0 : this._stack[0].numRows;\r\n }\r\n\r\n public get endIndex(): number {\r\n return this._numRowsInUse;\r\n }\r\n\r\n public get textureHeight(): number {\r\n return this._numTotalRows;\r\n }\r\n\r\n public get texture(): TextureHandle | undefined {\r\n this.updateTexture();\r\n return this._texture;\r\n }\r\n\r\n public isRangeClipped(range: Range3d, transform: Transform): boolean {\r\n if (this.hasOutsideColor || !this.hasClip)\r\n return false;\r\n\r\n range = transform.multiplyRange(range, range);\r\n const corners = getRangeCorners(range);\r\n const startIndex = this._wantViewClip() && emptyClip !== this._stack[0] ? 0 : 1;\r\n for (let i = startIndex; i < this._stack.length; i++) {\r\n const clip = this._stack[i];\r\n assert(clip instanceof ClipVolume);\r\n if (ClipPlaneContainment.StronglyOutside === clip.clipVector.classifyPointContainment(corners))\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /** Exposed strictly for tests. */\r\n public get clips(): ReadonlyArray<{ numRows: number }> {\r\n return this._stack;\r\n }\r\n\r\n /** Exposed strictly for tests. */\r\n public static get emptyViewClip() {\r\n return emptyClip;\r\n }\r\n\r\n protected updateTexture(): void {\r\n if (this._numTotalRows > 0 && (!this._texture || this._texture.height < this._numTotalRows)) {\r\n // We need to resize the texture.\r\n assert(this._isStackDirty);\r\n this._isStackDirty = true;\r\n this._texture = dispose(this._texture);\r\n this._cpuBuffer = new Uint8Array(this._numTotalRows * 4 * 4);\r\n this._gpuBuffer = this.allocateGpuBuffer();\r\n }\r\n\r\n if (this._isStackDirty) {\r\n this._isStackDirty = false;\r\n this.recomputeTexture();\r\n }\r\n }\r\n\r\n protected recomputeTexture(): void {\r\n // Copy each clip's data to the buffer, recording whether the buffer's contents actually changed.\r\n let bufferDirty = false;\r\n const transform = this._getTransform();\r\n let bufferIndex = 0;\r\n for (const clip of this._stack) {\r\n const data = clip.getData(transform);\r\n for (let i = 0; i < data.byteLength; i++) {\r\n const byte = data[i];\r\n bufferDirty = bufferDirty || byte !== this._cpuBuffer[bufferIndex];\r\n this._cpuBuffer[bufferIndex++] = byte;\r\n }\r\n }\r\n\r\n // If the contents have changed, upload the new texture data to the GPU.\r\n if (bufferDirty) {\r\n this.uploadTexture();\r\n }\r\n }\r\n\r\n protected uploadTexture(): void {\r\n if (this._texture)\r\n this._texture.replaceTextureData(this._gpuBuffer);\r\n else\r\n this._texture = Texture2DHandle.createForData(this._isFloatTexture ? 1 : 4, this._numTotalRows, this._gpuBuffer, false, GL.Texture.WrapMode.ClampToEdge, GL.Texture.Format.Rgba);\r\n\r\n assert(this._texture!.height === this._numTotalRows);\r\n }\r\n\r\n protected allocateGpuBuffer(): Texture2DData {\r\n if (this._isFloatTexture)\r\n return new Float32Array(this._cpuBuffer.buffer);\r\n\r\n return this._cpuBuffer;\r\n }\r\n\r\n protected updateColor(rgb: RgbColor | undefined, rgba: FloatRgba): void {\r\n rgba.alpha = undefined !== rgb ? 1 : 0;\r\n if (rgb)\r\n rgba.setRgbColor(rgb);\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ClipStack.js","sourceRoot":"","sources":["../../../../src/render/webgl/ClipStack.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { ClipPlaneContainment, ClipVector, Point3d, Range3d, Transform } from \"@itwin/core-geometry\";\r\nimport { RgbColor } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { RenderClipVolume } from \"../RenderClipVolume\";\r\nimport { FloatRgba } from \"./FloatRGBA\";\r\nimport { Texture2DData, Texture2DHandle, TextureHandle } from \"./Texture\";\r\nimport { ClipVolume } from \"./ClipVolume\";\r\nimport { GL } from \"./GL\";\r\n\r\ninterface Clip {\r\n readonly numRows: number;\r\n readonly getData: (transform: Transform) => Uint8Array;\r\n}\r\n\r\nconst emptyClipData = new Uint8Array(0);\r\nconst emptyClip = {\r\n numRows: 0,\r\n getData: () => emptyClipData,\r\n};\r\n\r\nconst scratchRangeCorners = [\r\n new Point3d(), new Point3d(), new Point3d(), new Point3d(),\r\n new Point3d(), new Point3d(), new Point3d(), new Point3d(),\r\n];\r\n\r\nfunction getRangeCorners(r: Range3d): Point3d[] {\r\n return r.corners(scratchRangeCorners);\r\n}\r\n\r\n/** Maintains a stack of ClipVolumes. The volumes nest such that the stack represents the intersection of all the volumes.\r\n * The bottom of the stack represents the view's clip volume and is always present even if the view has no clip.\r\n * It also maintains the inside/outside clip colors, where the alpha component is 1 if the color should be applied and 0 if not.\r\n * @internal\r\n */\r\nexport class ClipStack {\r\n /** Encoded data for all clips on the stack, update when the stack or the transform changes. */\r\n protected _cpuBuffer: Uint8Array;\r\n /** A view of the encoded buffer in the format expected by the GPU. */\r\n protected _gpuBuffer: Texture2DData;\r\n protected _texture?: Texture2DHandle;\r\n /** The maximum number of rows we have ever required. Determines the texture height. Grows as needed, reallocating a larger texture, but never shrinks. */\r\n protected _numTotalRows: number;\r\n /** The number of rows in the texture actually required to encode the current contents of the stack. */\r\n protected _numRowsInUse: number;\r\n /** The first entry always represents the view clip. The rest are pushed and popped with GraphicBranches. */\r\n protected readonly _stack: Clip[] = [emptyClip];\r\n /** True if we need to recompute the texture. */\r\n protected _isStackDirty = false;\r\n /** Obtain the transform to be applied to the clips - i.e., the view matrix. */\r\n protected readonly _getTransform: () => Transform;\r\n /** If this returns false, the clip at the bottom of the stack is ignored. */\r\n protected readonly _wantViewClip: () => boolean;\r\n /** If alpha is 1 then geometry inside the clip will be drawn in this color. */\r\n protected readonly _insideColor = FloatRgba.from(0, 0, 0, 0);\r\n /** If alpha is 1 then geometry outside the clip will be drawn in this color. */\r\n protected readonly _outsideColor = FloatRgba.from(0, 0, 0, 0);\r\n /** For detecting whether the transform changed from one invocation of setViewClip to the next. */\r\n protected readonly _prevTransform = Transform.createZero();\r\n\r\n public constructor(getTransform: () => Transform, wantViewClip: () => boolean) {\r\n this._getTransform = getTransform;\r\n this._wantViewClip = wantViewClip;\r\n\r\n this._numTotalRows = this._numRowsInUse = 0;\r\n this._cpuBuffer = new Uint8Array(this._numTotalRows);\r\n this._gpuBuffer = this.allocateGpuBuffer();\r\n }\r\n\r\n public get insideColor(): FloatRgba {\r\n return this._insideColor;\r\n }\r\n\r\n public get outsideColor(): FloatRgba {\r\n return this._outsideColor;\r\n }\r\n\r\n public get hasOutsideColor(): boolean {\r\n return this.outsideColor.alpha !== 0;\r\n }\r\n\r\n public get bytesUsed(): number {\r\n return this._texture ? this._texture.bytesUsed : 0;\r\n }\r\n\r\n public setViewClip(clip: ClipVector | undefined, style: { insideColor?: RgbColor, outsideColor?: RgbColor }): void {\r\n assert(this._stack.length === 1);\r\n\r\n this.updateColor(style.insideColor, this._insideColor);\r\n this.updateColor(style.outsideColor, this._outsideColor);\r\n\r\n const transform = this._getTransform();\r\n if (!transform.isAlmostEqual(this._prevTransform)) {\r\n transform.clone(this._prevTransform);\r\n this._isStackDirty = true;\r\n }\r\n\r\n const cur = this._stack[0];\r\n if (cur === emptyClip) {\r\n if (!clip)\r\n return; // no change.\r\n } else if (!clip) {\r\n this._stack[0] = emptyClip;\r\n this._numRowsInUse = 0;\r\n this._isStackDirty = true;\r\n return;\r\n } else {\r\n assert(cur instanceof ClipVolume);\r\n if (cur.clipVector === clip) {\r\n // We assume that the active view's ClipVector is never mutated in place, so if we are given the same ClipVector, we expect our RenderClipVolume to match it.\r\n return;\r\n }\r\n }\r\n\r\n // ClipVector has changed.\r\n const newClip = IModelApp.renderSystem.createClipVolume(clip);\r\n if (!newClip) {\r\n this._isStackDirty = this._stack[0] !== emptyClip;\r\n this._stack[0] = emptyClip;\r\n this._numRowsInUse = 0;\r\n } else {\r\n this.pop();\r\n this.push(newClip);\r\n }\r\n }\r\n\r\n public push(clip: RenderClipVolume): void {\r\n assert(clip instanceof ClipVolume);\r\n\r\n this._stack.push(clip);\r\n this._numRowsInUse += clip.numRows;\r\n this._numTotalRows = Math.max(this._numRowsInUse, this._numTotalRows);\r\n this._isStackDirty = true;\r\n }\r\n\r\n public pop(): void {\r\n assert(this._stack.length > 0);\r\n const clip = this._stack.pop();\r\n this._numRowsInUse -= (clip ? clip.numRows : 0);\r\n }\r\n\r\n public get hasClip(): boolean {\r\n return this.startIndex < this.endIndex;\r\n }\r\n\r\n public get hasViewClip(): boolean {\r\n return emptyClip !== this._stack[0] && this._wantViewClip();\r\n }\r\n\r\n public get startIndex(): number {\r\n assert(this._stack.length > 0);\r\n return this._wantViewClip() ? 0 : this._stack[0].numRows;\r\n }\r\n\r\n public get endIndex(): number {\r\n return this._numRowsInUse;\r\n }\r\n\r\n public get textureHeight(): number {\r\n return this._numTotalRows;\r\n }\r\n\r\n public get texture(): TextureHandle | undefined {\r\n this.updateTexture();\r\n return this._texture;\r\n }\r\n\r\n public isRangeClipped(range: Range3d, transform: Transform): boolean {\r\n if (this.hasOutsideColor || !this.hasClip)\r\n return false;\r\n\r\n range = transform.multiplyRange(range, range);\r\n const corners = getRangeCorners(range);\r\n const startIndex = this._wantViewClip() && emptyClip !== this._stack[0] ? 0 : 1;\r\n for (let i = startIndex; i < this._stack.length; i++) {\r\n const clip = this._stack[i];\r\n assert(clip instanceof ClipVolume);\r\n if (ClipPlaneContainment.StronglyOutside === clip.clipVector.classifyPointContainment(corners))\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /** Exposed strictly for tests. */\r\n public get clips(): ReadonlyArray<{ numRows: number }> {\r\n return this._stack;\r\n }\r\n\r\n /** Exposed strictly for tests. */\r\n public static get emptyViewClip() {\r\n return emptyClip;\r\n }\r\n\r\n protected updateTexture(): void {\r\n if (this._numTotalRows > 0 && (!this._texture || this._texture.height < this._numTotalRows)) {\r\n // We need to resize the texture.\r\n assert(this._isStackDirty);\r\n this._isStackDirty = true;\r\n this._texture = dispose(this._texture);\r\n this._cpuBuffer = new Uint8Array(this._numTotalRows * 4 * 4);\r\n this._gpuBuffer = this.allocateGpuBuffer();\r\n }\r\n\r\n if (this._isStackDirty) {\r\n this._isStackDirty = false;\r\n this.recomputeTexture();\r\n }\r\n }\r\n\r\n protected recomputeTexture(): void {\r\n // Copy each clip's data to the buffer, recording whether the buffer's contents actually changed.\r\n let bufferDirty = false;\r\n const transform = this._getTransform();\r\n let bufferIndex = 0;\r\n for (const clip of this._stack) {\r\n const data = clip.getData(transform);\r\n for (let i = 0; i < data.byteLength; i++) {\r\n const byte = data[i];\r\n bufferDirty = bufferDirty || byte !== this._cpuBuffer[bufferIndex];\r\n this._cpuBuffer[bufferIndex++] = byte;\r\n }\r\n }\r\n\r\n // If the contents have changed, upload the new texture data to the GPU.\r\n if (bufferDirty) {\r\n this.uploadTexture();\r\n }\r\n }\r\n\r\n protected uploadTexture(): void {\r\n if (this._texture)\r\n this._texture.replaceTextureData(this._gpuBuffer);\r\n else\r\n this._texture = Texture2DHandle.createForData(1, this._numTotalRows, this._gpuBuffer, false, GL.Texture.WrapMode.ClampToEdge, GL.Texture.Format.Rgba);\r\n\r\n assert(this._texture!.height === this._numTotalRows);\r\n }\r\n\r\n protected allocateGpuBuffer(): Texture2DData {\r\n return new Float32Array(this._cpuBuffer.buffer);\r\n }\r\n\r\n protected updateColor(rgb: RgbColor | undefined, rgba: FloatRgba): void {\r\n rgba.alpha = undefined !== rgb ? 1 : 0;\r\n if (rgb)\r\n rgba.setRgbColor(rgb);\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClipVolume.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/ClipVolume.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EACL,UAAU,EAAW,SAAS,EAC/B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"ClipVolume.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/ClipVolume.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EACL,UAAU,EAAW,SAAS,EAC/B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAoJvD;;GAEG;AACH,qBAAa,UAAW,SAAQ,gBAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAE3C,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED,IAAW,UAAU,IAAI,MAAM,CAE9B;IAEM,OAAO,CAAC,UAAU,EAAE,SAAS,GAAG,UAAU;WAInC,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS;IAmC9D,OAAO;CAIR"}
|
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
import { assert } from "@itwin/core-bentley";
|
|
9
9
|
import { Point3d, Transform, Vector3d, } from "@itwin/core-geometry";
|
|
10
10
|
import { RenderClipVolume } from "../RenderClipVolume";
|
|
11
|
-
import { System } from "./System";
|
|
12
11
|
const scratch = {
|
|
13
12
|
normal: new Vector3d(),
|
|
14
13
|
dir: new Vector3d(),
|
|
@@ -29,10 +28,7 @@ class ClipPlanesBuffer {
|
|
|
29
28
|
this._view = new DataView(this._data.buffer);
|
|
30
29
|
this._clips = clips;
|
|
31
30
|
this.numRows = numRows;
|
|
32
|
-
|
|
33
|
-
this._append = (value) => this.appendFloat(value);
|
|
34
|
-
else
|
|
35
|
-
this._append = (value) => this.appendEncodedFloat(value);
|
|
31
|
+
this._append = (value) => this.appendFloat(value);
|
|
36
32
|
}
|
|
37
33
|
getData(viewMatrix) {
|
|
38
34
|
if (!viewMatrix.isAlmostEqual(this._viewMatrix))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClipVolume.js","sourceRoot":"","sources":["../../../../src/render/webgl/ClipVolume.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport {\r\n ClipVector, Point3d, Transform, UnionOfConvexClipPlaneSets, Vector3d,\r\n} from \"@itwin/core-geometry\";\r\nimport { RenderClipVolume } from \"../RenderClipVolume\";\r\nimport { System } from \"./System\";\r\n\r\nconst scratch = {\r\n normal: new Vector3d(),\r\n dir: new Vector3d(),\r\n pos: new Point3d(),\r\n v0: new Vector3d(),\r\n};\r\n\r\n/** Maintains an ArrayBuffer to serve as texture data for a ClipVector.\r\n * The clip planes are in view coordinates, so the data must be updated whenever the view\r\n * matrix changes.\r\n */\r\nclass ClipPlanesBuffer {\r\n /** Most recently-applied view matrix. */\r\n private readonly _viewMatrix = Transform.createZero();\r\n /** For writing to the ArrayBuffer. */\r\n private readonly _view: DataView;\r\n /** For inspecting the data in the ArrayBuffer. */\r\n private readonly _data: Uint8Array;\r\n /** The current write position. */\r\n private _curPos = 0;\r\n private readonly _clips: UnionOfConvexClipPlaneSets[];\r\n private readonly _append: (value: number) => void;\r\n /** The number of rows of data. Each row corresponds to a clipping plane, or to mark a boundary between two ClipPlaneSets or UnionOfConvexClipPlaneSets.\r\n * The final row is *always* a union boundary, to enable multiple clips to be concatenated - this is how nested clip volumes work.\r\n */\r\n public readonly numRows: number;\r\n\r\n public getData(viewMatrix: Transform): Uint8Array {\r\n if (!viewMatrix.isAlmostEqual(this._viewMatrix))\r\n this.updateData(viewMatrix);\r\n\r\n return this._data;\r\n }\r\n\r\n public get byteLength(): number {\r\n return this._view.buffer.byteLength;\r\n }\r\n\r\n public static create(clips: UnionOfConvexClipPlaneSets[], numRows: number): ClipPlanesBuffer {\r\n assert(numRows > 1); // at least one plane, plus a union boundary.\r\n return new ClipPlanesBuffer(clips, numRows);\r\n }\r\n\r\n private constructor(clips: UnionOfConvexClipPlaneSets[], numRows: number) {\r\n this._data = new Uint8Array(numRows * 4 * 4);\r\n this._view = new DataView(this._data.buffer);\r\n this._clips = clips;\r\n this.numRows = numRows;\r\n\r\n if (System.instance.capabilities.supportsTextureFloat)\r\n this._append = (value: number) => this.appendFloat(value);\r\n else\r\n this._append = (value: number) => this.appendEncodedFloat(value);\r\n }\r\n\r\n private appendFloat(value: number): void {\r\n this._view.setFloat32(this._curPos, value, true);\r\n this.advance(4);\r\n }\r\n\r\n private appendUint8(value: number): void {\r\n this._view.setUint8(this._curPos, value);\r\n this.advance(1);\r\n }\r\n\r\n private appendValues(a: number, b: number, c: number, d: number): void {\r\n this._append(a);\r\n this._append(b);\r\n this._append(c);\r\n this._append(d);\r\n }\r\n\r\n private appendPlane(normal: Vector3d, distance: number): void {\r\n this.appendValues(normal.x, normal.y, normal.z, distance);\r\n }\r\n\r\n private appendSetBoundary(): void {\r\n this.appendValues(0, 0, 0, 0);\r\n }\r\n\r\n private appendUnionBoundary(): void {\r\n this.appendValues(2, 2, 2, 0);\r\n }\r\n\r\n private appendEncodedFloat(value: number) {\r\n const sign = value < 0 ? 1 : 0;\r\n value = Math.abs(value);\r\n const exponent = Math.floor(Math.log10(value)) + 1;\r\n value = value / Math.pow(10, exponent);\r\n\r\n const bias = 38;\r\n let temp = value * 256;\r\n const b0 = Math.floor(temp);\r\n temp = (temp - b0) * 256;\r\n const b1 = Math.floor(temp);\r\n temp = (temp - b1) * 256;\r\n const b2 = Math.floor(temp);\r\n const b3 = (exponent + bias) * 2 + sign;\r\n\r\n this.appendUint8(b0);\r\n this.appendUint8(b1);\r\n this.appendUint8(b2);\r\n this.appendUint8(b3);\r\n }\r\n\r\n private advance(numBytes: number): void {\r\n this._curPos += numBytes;\r\n }\r\n\r\n private reset(): void {\r\n this._curPos = 0;\r\n }\r\n\r\n private updateData(transform: Transform): void {\r\n this.reset();\r\n transform.clone(this._viewMatrix);\r\n\r\n const { normal, dir, pos, v0 } = { ...scratch };\r\n for (const clip of this._clips) {\r\n for (let j = 0; j < clip.convexSets.length; j++) {\r\n const set = clip.convexSets[j];\r\n if (0 === set.planes.length)\r\n continue;\r\n\r\n if (j > 0)\r\n this.appendSetBoundary();\r\n\r\n for (const plane of set.planes) {\r\n plane.inwardNormalRef.clone(normal);\r\n let distance = plane.distance;\r\n\r\n const norm = normal;\r\n transform.matrix.multiplyVector(norm, dir);\r\n dir.normalizeInPlace();\r\n\r\n transform.multiplyPoint3d(norm.scale(distance, v0), pos);\r\n v0.setFromPoint3d(pos);\r\n\r\n normal.set(dir.x, dir.y, dir.z);\r\n distance = -v0.dotProduct(dir);\r\n this.appendPlane(normal, distance);\r\n }\r\n }\r\n\r\n this.appendUnionBoundary();\r\n }\r\n }\r\n}\r\n\r\n/** A ClipVector encoded for transmission to the GPU as a texture.\r\n * @internal\r\n */\r\nexport class ClipVolume extends RenderClipVolume {\r\n private readonly _buffer: ClipPlanesBuffer;\r\n\r\n public get numRows(): number {\r\n return this._buffer.numRows;\r\n }\r\n\r\n public get byteLength(): number {\r\n return this._buffer.byteLength;\r\n }\r\n\r\n public getData(viewMatrix: Transform): Uint8Array {\r\n return this._buffer.getData(viewMatrix);\r\n }\r\n\r\n public static create(clip: ClipVector): ClipVolume | undefined {\r\n if (!clip.isValid)\r\n return undefined;\r\n\r\n // Compute how many rows of data we need.\r\n const unions = [];\r\n let numRows = 0;\r\n for (const primitive of clip.clips) {\r\n const union = primitive.fetchClipPlanesRef();\r\n if (!union)\r\n continue;\r\n\r\n let numSets = 0;\r\n for (const set of union.convexSets) {\r\n const setLength = set.planes.length;\r\n if (setLength > 0) {\r\n ++numSets;\r\n numRows += setLength;\r\n }\r\n }\r\n\r\n if (numSets > 0) {\r\n unions.push(union);\r\n numRows += numSets - 1; // Additional boundary rows between sets.\r\n }\r\n }\r\n\r\n if (unions.length === 0)\r\n return undefined;\r\n\r\n numRows += unions.length; // Additional boundary row after each union - *including* the last union.\r\n const buffer = ClipPlanesBuffer.create(unions, numRows);\r\n return new ClipVolume(clip, buffer);\r\n }\r\n\r\n private constructor(clip: ClipVector, buffer: ClipPlanesBuffer) {\r\n super(clip);\r\n this._buffer = buffer;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ClipVolume.js","sourceRoot":"","sources":["../../../../src/render/webgl/ClipVolume.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport {\r\n ClipVector, Point3d, Transform, UnionOfConvexClipPlaneSets, Vector3d,\r\n} from \"@itwin/core-geometry\";\r\nimport { RenderClipVolume } from \"../RenderClipVolume\";\r\n\r\nconst scratch = {\r\n normal: new Vector3d(),\r\n dir: new Vector3d(),\r\n pos: new Point3d(),\r\n v0: new Vector3d(),\r\n};\r\n\r\n/** Maintains an ArrayBuffer to serve as texture data for a ClipVector.\r\n * The clip planes are in view coordinates, so the data must be updated whenever the view\r\n * matrix changes.\r\n */\r\nclass ClipPlanesBuffer {\r\n /** Most recently-applied view matrix. */\r\n private readonly _viewMatrix = Transform.createZero();\r\n /** For writing to the ArrayBuffer. */\r\n private readonly _view: DataView;\r\n /** For inspecting the data in the ArrayBuffer. */\r\n private readonly _data: Uint8Array;\r\n /** The current write position. */\r\n private _curPos = 0;\r\n private readonly _clips: UnionOfConvexClipPlaneSets[];\r\n private readonly _append: (value: number) => void;\r\n /** The number of rows of data. Each row corresponds to a clipping plane, or to mark a boundary between two ClipPlaneSets or UnionOfConvexClipPlaneSets.\r\n * The final row is *always* a union boundary, to enable multiple clips to be concatenated - this is how nested clip volumes work.\r\n */\r\n public readonly numRows: number;\r\n\r\n public getData(viewMatrix: Transform): Uint8Array {\r\n if (!viewMatrix.isAlmostEqual(this._viewMatrix))\r\n this.updateData(viewMatrix);\r\n\r\n return this._data;\r\n }\r\n\r\n public get byteLength(): number {\r\n return this._view.buffer.byteLength;\r\n }\r\n\r\n public static create(clips: UnionOfConvexClipPlaneSets[], numRows: number): ClipPlanesBuffer {\r\n assert(numRows > 1); // at least one plane, plus a union boundary.\r\n return new ClipPlanesBuffer(clips, numRows);\r\n }\r\n\r\n private constructor(clips: UnionOfConvexClipPlaneSets[], numRows: number) {\r\n this._data = new Uint8Array(numRows * 4 * 4);\r\n this._view = new DataView(this._data.buffer);\r\n this._clips = clips;\r\n this.numRows = numRows;\r\n\r\n this._append = (value: number) => this.appendFloat(value);\r\n }\r\n\r\n private appendFloat(value: number): void {\r\n this._view.setFloat32(this._curPos, value, true);\r\n this.advance(4);\r\n }\r\n\r\n private appendUint8(value: number): void {\r\n this._view.setUint8(this._curPos, value);\r\n this.advance(1);\r\n }\r\n\r\n private appendValues(a: number, b: number, c: number, d: number): void {\r\n this._append(a);\r\n this._append(b);\r\n this._append(c);\r\n this._append(d);\r\n }\r\n\r\n private appendPlane(normal: Vector3d, distance: number): void {\r\n this.appendValues(normal.x, normal.y, normal.z, distance);\r\n }\r\n\r\n private appendSetBoundary(): void {\r\n this.appendValues(0, 0, 0, 0);\r\n }\r\n\r\n private appendUnionBoundary(): void {\r\n this.appendValues(2, 2, 2, 0);\r\n }\r\n\r\n private appendEncodedFloat(value: number) {\r\n const sign = value < 0 ? 1 : 0;\r\n value = Math.abs(value);\r\n const exponent = Math.floor(Math.log10(value)) + 1;\r\n value = value / Math.pow(10, exponent);\r\n\r\n const bias = 38;\r\n let temp = value * 256;\r\n const b0 = Math.floor(temp);\r\n temp = (temp - b0) * 256;\r\n const b1 = Math.floor(temp);\r\n temp = (temp - b1) * 256;\r\n const b2 = Math.floor(temp);\r\n const b3 = (exponent + bias) * 2 + sign;\r\n\r\n this.appendUint8(b0);\r\n this.appendUint8(b1);\r\n this.appendUint8(b2);\r\n this.appendUint8(b3);\r\n }\r\n\r\n private advance(numBytes: number): void {\r\n this._curPos += numBytes;\r\n }\r\n\r\n private reset(): void {\r\n this._curPos = 0;\r\n }\r\n\r\n private updateData(transform: Transform): void {\r\n this.reset();\r\n transform.clone(this._viewMatrix);\r\n\r\n const { normal, dir, pos, v0 } = { ...scratch };\r\n for (const clip of this._clips) {\r\n for (let j = 0; j < clip.convexSets.length; j++) {\r\n const set = clip.convexSets[j];\r\n if (0 === set.planes.length)\r\n continue;\r\n\r\n if (j > 0)\r\n this.appendSetBoundary();\r\n\r\n for (const plane of set.planes) {\r\n plane.inwardNormalRef.clone(normal);\r\n let distance = plane.distance;\r\n\r\n const norm = normal;\r\n transform.matrix.multiplyVector(norm, dir);\r\n dir.normalizeInPlace();\r\n\r\n transform.multiplyPoint3d(norm.scale(distance, v0), pos);\r\n v0.setFromPoint3d(pos);\r\n\r\n normal.set(dir.x, dir.y, dir.z);\r\n distance = -v0.dotProduct(dir);\r\n this.appendPlane(normal, distance);\r\n }\r\n }\r\n\r\n this.appendUnionBoundary();\r\n }\r\n }\r\n}\r\n\r\n/** A ClipVector encoded for transmission to the GPU as a texture.\r\n * @internal\r\n */\r\nexport class ClipVolume extends RenderClipVolume {\r\n private readonly _buffer: ClipPlanesBuffer;\r\n\r\n public get numRows(): number {\r\n return this._buffer.numRows;\r\n }\r\n\r\n public get byteLength(): number {\r\n return this._buffer.byteLength;\r\n }\r\n\r\n public getData(viewMatrix: Transform): Uint8Array {\r\n return this._buffer.getData(viewMatrix);\r\n }\r\n\r\n public static create(clip: ClipVector): ClipVolume | undefined {\r\n if (!clip.isValid)\r\n return undefined;\r\n\r\n // Compute how many rows of data we need.\r\n const unions = [];\r\n let numRows = 0;\r\n for (const primitive of clip.clips) {\r\n const union = primitive.fetchClipPlanesRef();\r\n if (!union)\r\n continue;\r\n\r\n let numSets = 0;\r\n for (const set of union.convexSets) {\r\n const setLength = set.planes.length;\r\n if (setLength > 0) {\r\n ++numSets;\r\n numRows += setLength;\r\n }\r\n }\r\n\r\n if (numSets > 0) {\r\n unions.push(union);\r\n numRows += numSets - 1; // Additional boundary rows between sets.\r\n }\r\n }\r\n\r\n if (unions.length === 0)\r\n return undefined;\r\n\r\n numRows += unions.length; // Additional boundary row after each union - *including* the last union.\r\n const buffer = ClipPlanesBuffer.create(unions, numRows);\r\n return new ClipVolume(clip, buffer);\r\n }\r\n\r\n private constructor(clip: ClipVector, buffer: ClipPlanesBuffer) {\r\n super(clip);\r\n this._buffer = buffer;\r\n }\r\n}\r\n"]}
|
|
@@ -4,10 +4,11 @@
|
|
|
4
4
|
import { ProgramBuilder } from "./ShaderBuilder";
|
|
5
5
|
import { ShaderProgram } from "./ShaderProgram";
|
|
6
6
|
/** @internal */
|
|
7
|
-
export declare
|
|
7
|
+
export declare class ClippingProgram {
|
|
8
8
|
protected _program?: ShaderProgram;
|
|
9
|
-
abstract getProgram(numPlanes: number): ShaderProgram | undefined;
|
|
10
9
|
compile(): boolean;
|
|
10
|
+
constructor(src: ProgramBuilder);
|
|
11
|
+
getProgram(numPlanes: number): ShaderProgram | undefined;
|
|
11
12
|
dispose(): void;
|
|
12
13
|
}
|
|
13
14
|
/** @internal */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClippingProgram.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/ClippingProgram.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAiB,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAY/D,gBAAgB;AAChB,
|
|
1
|
+
{"version":3,"file":"ClippingProgram.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/ClippingProgram.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAiB,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAY/D,gBAAgB;AAChB,qBAAa,eAAe;IAC1B,SAAS,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAE5B,OAAO,IAAI,OAAO;gBAIN,GAAG,EAAE,cAAc;IAK/B,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIxD,OAAO,IAAI,IAAI;CAGvB;AAED,gBAAgB;AAChB,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc,GAAG,eAAe,CAE9E"}
|
|
@@ -8,58 +8,31 @@
|
|
|
8
8
|
import { dispose } from "@itwin/core-bentley";
|
|
9
9
|
import { System } from "./System";
|
|
10
10
|
import { addClipping } from "./glsl/Clipping";
|
|
11
|
-
function createClippingBuilder(src
|
|
11
|
+
function createClippingBuilder(src) {
|
|
12
12
|
const builder = src.clone();
|
|
13
13
|
builder.vert.headerComment += "-Clip";
|
|
14
14
|
builder.frag.headerComment += "-Clip";
|
|
15
|
-
addClipping(builder
|
|
15
|
+
addClipping(builder);
|
|
16
16
|
return builder;
|
|
17
17
|
}
|
|
18
18
|
/** @internal */
|
|
19
19
|
export class ClippingProgram {
|
|
20
|
-
compile() {
|
|
21
|
-
return undefined === this._program || 0 /* Success */ === this._program.compile();
|
|
22
|
-
}
|
|
23
|
-
dispose() {
|
|
24
|
-
this._program = dispose(this._program);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
/** WebGL 1 requires that the loop variable be a compile-time constant. If caller requests a number of planes greater than the maximum our current program
|
|
28
|
-
* supports, recompile the program with sufficient maximum number of planes.
|
|
29
|
-
*/
|
|
30
|
-
class WebGL1ClippingProgram extends ClippingProgram {
|
|
31
20
|
constructor(src) {
|
|
32
|
-
|
|
33
|
-
this._maxClippingPlanes = 0;
|
|
34
|
-
this._builder = createClippingBuilder(src, false);
|
|
35
|
-
}
|
|
36
|
-
getProgram(numPlanes) {
|
|
37
|
-
var _a;
|
|
38
|
-
if (numPlanes <= 0)
|
|
39
|
-
return undefined;
|
|
40
|
-
if (!this._program || this._maxClippingPlanes < numPlanes) {
|
|
41
|
-
(_a = this._program) === null || _a === void 0 ? void 0 : _a.endUse();
|
|
42
|
-
this.dispose();
|
|
43
|
-
this._builder.frag.addDefine("MAX_CLIPPING_PLANES", numPlanes.toString());
|
|
44
|
-
this._program = this._builder.buildProgram(System.instance.context);
|
|
45
|
-
this._maxClippingPlanes = numPlanes;
|
|
46
|
-
}
|
|
47
|
-
return this._program;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
/** WebGL 2 permits looping on a uniform. */
|
|
51
|
-
class WebGL2ClippingProgram extends ClippingProgram {
|
|
52
|
-
constructor(src) {
|
|
53
|
-
super();
|
|
54
|
-
const builder = createClippingBuilder(src, true);
|
|
21
|
+
const builder = createClippingBuilder(src);
|
|
55
22
|
this._program = builder.buildProgram(System.instance.context);
|
|
56
23
|
}
|
|
24
|
+
compile() {
|
|
25
|
+
return undefined === this._program || 0 /* Success */ === this._program.compile();
|
|
26
|
+
}
|
|
57
27
|
getProgram(numPlanes) {
|
|
58
28
|
return numPlanes > 0 ? this._program : undefined;
|
|
59
29
|
}
|
|
30
|
+
dispose() {
|
|
31
|
+
this._program = dispose(this._program);
|
|
32
|
+
}
|
|
60
33
|
}
|
|
61
34
|
/** @internal */
|
|
62
35
|
export function createClippingProgram(builder) {
|
|
63
|
-
return
|
|
36
|
+
return new ClippingProgram(builder);
|
|
64
37
|
}
|
|
65
38
|
//# sourceMappingURL=ClippingProgram.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClippingProgram.js","sourceRoot":"","sources":["../../../../src/render/webgl/ClippingProgram.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAG9C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,SAAS,qBAAqB,CAAC,GAAmB
|
|
1
|
+
{"version":3,"file":"ClippingProgram.js","sourceRoot":"","sources":["../../../../src/render/webgl/ClippingProgram.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAG9C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,SAAS,qBAAqB,CAAC,GAAmB;IAChD,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;IAC5B,OAAO,CAAC,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC;IACtC,WAAW,CAAC,OAAO,CAAC,CAAC;IACrB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gBAAgB;AAChB,MAAM,OAAO,eAAe;IAO1B,YAAmB,GAAmB;QACpC,MAAM,OAAO,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChE,CAAC;IAPM,OAAO;QACZ,OAAO,SAAS,KAAK,IAAI,CAAC,QAAQ,IAAI,oBAA0B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC1F,CAAC;IAOM,UAAU,CAAC,SAAiB;QACjC,OAAO,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IACnD,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;CACF;AAED,gBAAgB;AAChB,MAAM,UAAU,qBAAqB,CAAC,OAAuB;IAC3D,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { dispose } from \"@itwin/core-bentley\";\r\nimport { ProgramBuilder } from \"./ShaderBuilder\";\r\nimport { CompileStatus, ShaderProgram } from \"./ShaderProgram\";\r\nimport { System } from \"./System\";\r\nimport { addClipping } from \"./glsl/Clipping\";\r\n\r\nfunction createClippingBuilder(src: ProgramBuilder): ProgramBuilder {\r\n const builder = src.clone();\r\n builder.vert.headerComment += \"-Clip\";\r\n builder.frag.headerComment += \"-Clip\";\r\n addClipping(builder);\r\n return builder;\r\n}\r\n\r\n/** @internal */\r\nexport class ClippingProgram {\r\n protected _program?: ShaderProgram;\r\n\r\n public compile(): boolean {\r\n return undefined === this._program || CompileStatus.Success === this._program.compile();\r\n }\r\n\r\n public constructor(src: ProgramBuilder) {\r\n const builder = createClippingBuilder(src);\r\n this._program = builder.buildProgram(System.instance.context);\r\n }\r\n\r\n public getProgram(numPlanes: number): ShaderProgram | undefined {\r\n return numPlanes > 0 ? this._program : undefined;\r\n }\r\n\r\n public dispose(): void {\r\n this._program = dispose(this._program);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function createClippingProgram(builder: ProgramBuilder): ClippingProgram {\r\n return new ClippingProgram(builder);\r\n}\r\n"]}
|
|
@@ -21,7 +21,7 @@ export declare class ShaderProgramParams {
|
|
|
21
21
|
bindProjectionMatrix(uniform: UniformHandle): void;
|
|
22
22
|
get isViewCoords(): boolean;
|
|
23
23
|
get isOverlayPass(): boolean;
|
|
24
|
-
get context():
|
|
24
|
+
get context(): WebGL2RenderingContext;
|
|
25
25
|
init(target: Target, pass?: RenderPass): void;
|
|
26
26
|
}
|
|
27
27
|
/** @internal */
|
|
@@ -35,7 +35,7 @@ export declare class DrawParams {
|
|
|
35
35
|
get projectionMatrix(): import("./Matrix").Matrix4;
|
|
36
36
|
get isViewCoords(): boolean;
|
|
37
37
|
get isOverlayPass(): boolean;
|
|
38
|
-
get context():
|
|
38
|
+
get context(): WebGL2RenderingContext;
|
|
39
39
|
init(programParams: ShaderProgramParams, geometry: CachedGeometry): void;
|
|
40
40
|
}
|
|
41
41
|
/** Defines operation associated with pushing or popping a branch
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DrawCommand.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/DrawCommand.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAM3C,gBAAgB;AAChB,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,WAAW,CAA+B;IAElD,IAAW,MAAM,IAAI,MAAM,CAG1B;IAED,IAAW,UAAU,eAA+B;IAEpD,IAAW,gBAAgB,+BAA4E;IAChG,oBAAoB,CAAC,OAAO,EAAE,aAAa;IAElD,IAAW,YAAY,YAAsG;IAC7H,IAAW,aAAa,YAAwG;IAChI,IAAW,OAAO,
|
|
1
|
+
{"version":3,"file":"DrawCommand.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/DrawCommand.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAM3C,gBAAgB;AAChB,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,WAAW,CAA+B;IAElD,IAAW,MAAM,IAAI,MAAM,CAG1B;IAED,IAAW,UAAU,eAA+B;IAEpD,IAAW,gBAAgB,+BAA4E;IAChG,oBAAoB,CAAC,OAAO,EAAE,aAAa;IAElD,IAAW,YAAY,YAAsG;IAC7H,IAAW,aAAa,YAAwG;IAChI,IAAW,OAAO,2BAAsC;IAEjD,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,UAAqC;CAIxE;AAED,gBAAgB;AAChB,qBAAa,UAAU;IACrB,OAAO,CAAC,cAAc,CAAC,CAAsB;IAC7C,OAAO,CAAC,SAAS,CAAC,CAAiB;IAEnC,IAAW,QAAQ,IAAI,cAAc,CAGpC;IAED,IAAW,aAAa,IAAI,mBAAmB,CAG9C;IAED,IAAW,MAAM,WAAwC;IACzD,IAAW,UAAU,eAA4C;IACjE,IAAW,gBAAgB,+BAAkD;IAC7E,IAAW,YAAY,YAEtB;IACD,IAAW,aAAa,YAA+C;IACvE,IAAW,OAAO,2BAAyC;IAEpD,IAAI,CAAC,aAAa,EAAE,mBAAmB,EAAE,QAAQ,EAAE,cAAc;CAIzE;AAED;;GAEG;AACH,0BAAkB,SAAS;IACzB,IAAI,IAAA;IACJ,GAAG,IAAA;CACJ;AAED;;;;GAIG;AACH,oBAAY,UAAU;IACpB,SAAS,kBAAkB;IAC3B,UAAU,eAAe;IACzB,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,OAAO,YAAY;CACpB;AAED,gBAAgB;AAChB,qBAAa,eAAe;IAC1B,SAAgB,MAAM,cAAc;IAEpC,OAAO;IAEP,OAAc,QAAQ,kBAAyB;IAExC,OAAO,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI;CAGlD;AAED,gBAAgB;AAChB,qBAAa,gBAAgB;aAGQ,KAAK,EAAE,KAAK;IAF/C,SAAgB,MAAM,eAAe;gBAEF,KAAK,EAAE,KAAK;IAExC,OAAO,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI;CAGlD;AAED,gBAAgB;AAChB,qBAAa,gBAAgB;aAGQ,KAAK,EAAE,WAAW;IAFrD,SAAgB,MAAM,eAAe;gBAEF,KAAK,EAAE,WAAW;IAE9C,OAAO,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI;CAGlD;AAED,gBAAgB;AAChB,qBAAa,iBAAiB;aAGO,MAAM,EAAE,MAAM;IAFjD,SAAgB,MAAM,gBAAgB;gBAEH,MAAM,EAAE,MAAM;IAE1C,OAAO,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI;CAGlD;AAED,gBAAgB;AAChB,qBAAa,gBAAgB;IAC3B,SAAgB,MAAM,eAAe;IAErC,OAAO;IAEP,OAAc,QAAQ,mBAA0B;IAEzC,OAAO,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI;CAGlD;AAED,gBAAgB;AAChB,qBAAa,eAAe;aAGS,IAAI,EAAE,UAAU;IAFnD,SAAgB,MAAM,cAAc;gBAED,IAAI,EAAE,UAAU;IAE5C,OAAO,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI;CAGlD;AAED,gBAAgB;AAChB,qBAAa,cAAc;IACzB,SAAgB,MAAM,aAAa;IAEnC,OAAO;IAEP,OAAc,QAAQ,iBAAwB;IAEvC,OAAO,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI;CAGlD;AAED,gBAAgB;AAChB,qBAAa,gBAAgB;aAGQ,SAAS,EAAE,SAAS;IAFvD,SAAgB,MAAM,mBAAmB;gBAEN,SAAS,EAAE,SAAS;IAEvD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAwB;IAE/D,OAAO,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI;IAkCjD,IAAW,WAAW,IAAI,OAAO,CAAuC;IACxE,IAAW,WAAW,IAAI,WAAW,CAAuC;IAErE,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAGrC;AAED,gBAAgB;AAChB,oBAAY,WAAW,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,eAAe,CAAC;AACpG,gBAAgB;AAChB,oBAAY,UAAU,GAAG,gBAAgB,GAAG,eAAe,GAAG,cAAc,CAAC;AAC7E,gBAAgB;AAChB,oBAAY,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,gBAAgB,CAAC;AAEtE;;GAEG;AACH,oBAAY,YAAY,GAAG,WAAW,EAAE,CAAC;AAEzC;;;;GAIG;AACH,wBAAgB,sCAAsC,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAyBxJ;AAED,gBAAgB;AAChB,wBAAgB,sCAAsC,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,GAAG,YAAY,CA2CzG"}
|
|
@@ -162,7 +162,7 @@ export class PrimitiveCommand {
|
|
|
162
162
|
// Point clouds do not support hillshade or slope mode for thematic display.
|
|
163
163
|
if (isThematic && (undefined !== this.primitive.cachedGeometry.asPointCloud) && (target.uniforms.thematic.wantSlopeMode || target.uniforms.thematic.wantHillShadeMode))
|
|
164
164
|
isThematic = 0 /* No */;
|
|
165
|
-
const wiremesh = target.currentViewFlags.wiremesh &&
|
|
165
|
+
const wiremesh = target.currentViewFlags.wiremesh && (techniqueId === 0 /* Surface */ || techniqueId === 7 /* RealityMesh */);
|
|
166
166
|
const isWiremesh = wiremesh ? 1 /* Yes */ : 0 /* No */;
|
|
167
167
|
const flags = PrimitiveCommand._scratchTechniqueFlags;
|
|
168
168
|
const posType = this.primitive.cachedGeometry.usesQuantizedPositions ? "quantized" : "unquantized";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DrawCommand.js","sourceRoot":"","sources":["../../../../src/render/webgl/DrawCommand.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport { BranchState } from \"./BranchState\";\r\nimport { CachedGeometry } from \"./CachedGeometry\";\r\nimport { ClipVolume } from \"./ClipVolume\";\r\nimport { isFeatureHilited } from \"./FeatureOverrides\";\r\nimport { Batch, Branch } from \"./Graphic\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { Primitive } from \"./Primitive\";\r\nimport { Pass, RenderOrder, RenderPass } from \"./RenderFlags\";\r\nimport { ShaderProgramExecutor } from \"./ShaderProgram\";\r\nimport { System } from \"./System\";\r\nimport { Hilites, Target } from \"./Target\";\r\nimport { IsAnimated, IsClassified, IsInstanced, IsShadowable, IsThematic, IsWiremesh, TechniqueFlags } from \"./TechniqueFlags\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\n\r\n/* eslint-disable no-restricted-syntax */\r\n\r\n/** @internal */\r\nexport class ShaderProgramParams {\r\n private _target?: Target;\r\n private _renderPass: RenderPass = RenderPass.None;\r\n\r\n public get target(): Target {\r\n assert(undefined !== this._target);\r\n return this._target;\r\n }\r\n\r\n public get renderPass() { return this._renderPass; }\r\n\r\n public get projectionMatrix() { return this.target.uniforms.getProjectionMatrix32(this.isViewCoords); }\r\n public bindProjectionMatrix(uniform: UniformHandle) { this.target.uniforms.bindProjectionMatrix(uniform, this.isViewCoords); }\r\n\r\n public get isViewCoords() { return RenderPass.ViewOverlay === this.renderPass || RenderPass.Background === this.renderPass; }\r\n public get isOverlayPass() { return RenderPass.WorldOverlay === this.renderPass || RenderPass.ViewOverlay === this.renderPass; }\r\n public get context() { return System.instance.context; }\r\n\r\n public init(target: Target, pass: RenderPass = RenderPass.OpaqueGeneral) {\r\n this._renderPass = pass;\r\n this._target = target;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class DrawParams {\r\n private _programParams?: ShaderProgramParams;\r\n private _geometry?: CachedGeometry;\r\n\r\n public get geometry(): CachedGeometry {\r\n assert(undefined !== this._geometry);\r\n return this._geometry;\r\n }\r\n\r\n public get programParams(): ShaderProgramParams {\r\n assert(undefined !== this._programParams);\r\n return this._programParams;\r\n }\r\n\r\n public get target() { return this.programParams.target; }\r\n public get renderPass() { return this.programParams.renderPass; }\r\n public get projectionMatrix() { return this.programParams.projectionMatrix; }\r\n public get isViewCoords() {\r\n return this.programParams.isViewCoords || this.target.currentBranch.forceViewCoords;\r\n }\r\n public get isOverlayPass() { return this.programParams.isOverlayPass; }\r\n public get context() { return this.programParams.context; }\r\n\r\n public init(programParams: ShaderProgramParams, geometry: CachedGeometry) {\r\n this._programParams = programParams;\r\n this._geometry = geometry;\r\n }\r\n}\r\n\r\n/** Defines operation associated with pushing or popping a branch\r\n * @internal\r\n */\r\nexport const enum PushOrPop {\r\n Push,\r\n Pop,\r\n}\r\n\r\n/** Represents a command to be executed within a RenderPass. The most common command is\r\n * to draw a primitive; others involve state changes such as pushing/popping transforms\r\n * and symbology overrides, which require that commands be executed in order.\r\n * @internal\r\n */\r\nexport enum DrawOpCode {\r\n Primitive = \"drawPrimitive\", // eslint-disable-line @typescript-eslint/no-shadow\r\n PushBranch = \"pushBranch\",\r\n PopBranch = \"popBranch\",\r\n PushBatch = \"pushBatch\",\r\n PopBatch = \"popBatch\",\r\n PushState = \"pushState\",\r\n PushClip = \"pushClip\",\r\n PopClip = \"popClip\",\r\n}\r\n\r\n/** @internal */\r\nexport class PopBatchCommand {\r\n public readonly opcode = \"popBatch\";\r\n\r\n private constructor() { }\r\n\r\n public static instance = new PopBatchCommand();\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.popBatch();\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PushBatchCommand {\r\n public readonly opcode = \"pushBatch\";\r\n\r\n public constructor(public readonly batch: Batch) { }\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.pushBatch(this.batch);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PushStateCommand {\r\n public readonly opcode = \"pushState\";\r\n\r\n public constructor(public readonly state: BranchState) { }\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.pushState(this.state);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PushBranchCommand {\r\n public readonly opcode = \"pushBranch\";\r\n\r\n public constructor(public readonly branch: Branch) { }\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.pushBranch(this.branch);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PopBranchCommand {\r\n public readonly opcode = \"popBranch\";\r\n\r\n private constructor() { }\r\n\r\n public static instance = new PopBranchCommand();\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.popBranch();\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PushClipCommand {\r\n public readonly opcode = \"pushClip\";\r\n\r\n public constructor(public readonly clip: ClipVolume) { }\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.uniforms.branch.clipStack.push(this.clip);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PopClipCommand {\r\n public readonly opcode = \"popClip\";\r\n\r\n private constructor() { }\r\n\r\n public static instance = new PopClipCommand();\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.uniforms.branch.clipStack.pop();\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PrimitiveCommand {\r\n public readonly opcode = \"drawPrimitive\";\r\n\r\n public constructor(public readonly primitive: Primitive) { }\r\n\r\n private static readonly _scratchTechniqueFlags = new TechniqueFlags();\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n if (exec.target.isGeometryOutsideActiveVolume(this.primitive.cachedGeometry))\r\n return;\r\n\r\n const techniqueId = this.primitive.techniqueId;\r\n if (TechniqueId.Invalid === techniqueId)\r\n return;\r\n\r\n const target = exec.target;\r\n const thematic = this.primitive.cachedGeometry.supportsThematicDisplay && target.wantThematicDisplay;\r\n const shadowable = (techniqueId === TechniqueId.Surface || techniqueId === TechniqueId.RealityMesh) && target.solarShadowMap.isReady && target.currentViewFlags.shadows && !thematic;\r\n const isShadowable = shadowable ? IsShadowable.Yes : IsShadowable.No;\r\n let isThematic = thematic ? IsThematic.Yes : IsThematic.No;\r\n const isClassified = (undefined !== target.currentPlanarClassifierOrDrape || undefined !== target.activeVolumeClassifierTexture) ? IsClassified.Yes : IsClassified.No;\r\n const isInstanced = this.primitive.isInstanced ? IsInstanced.Yes : IsInstanced.No;\r\n const isAnimated = this.primitive.hasAnimation ? IsAnimated.Yes : IsAnimated.No;\r\n\r\n // Point clouds do not support hillshade or slope mode for thematic display.\r\n if (isThematic && (undefined !== this.primitive.cachedGeometry.asPointCloud) && (target.uniforms.thematic.wantSlopeMode || target.uniforms.thematic.wantHillShadeMode))\r\n isThematic = IsThematic.No;\r\n\r\n const wiremesh = target.currentViewFlags.wiremesh && System.instance.isWebGL2 && (techniqueId === TechniqueId.Surface || techniqueId === TechniqueId.RealityMesh);\r\n const isWiremesh = wiremesh ? IsWiremesh.Yes : IsWiremesh.No;\r\n const flags = PrimitiveCommand._scratchTechniqueFlags;\r\n const posType = this.primitive.cachedGeometry.usesQuantizedPositions ? \"quantized\" : \"unquantized\";\r\n flags.init(target, exec.renderPass, isInstanced, isAnimated, isClassified, isShadowable, isThematic, isWiremesh, posType);\r\n\r\n const technique = target.techniques.getTechnique(techniqueId);\r\n const program = technique.getShader(flags);\r\n\r\n if (exec.setProgram(program))\r\n exec.target.compositor.drawPrimitive(this.primitive, exec, program.outputsToPick);\r\n }\r\n\r\n public get hasFeatures(): boolean { return this.primitive.hasFeatures; }\r\n public get renderOrder(): RenderOrder { return this.primitive.renderOrder; }\r\n\r\n public getPass(target: Target): Pass {\r\n return this.primitive.getPass(target);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport type PushCommand = PushBranchCommand | PushBatchCommand | PushStateCommand | PushClipCommand;\r\n/** @internal */\r\nexport type PopCommand = PopBranchCommand | PopBatchCommand | PopClipCommand;\r\n/** @internal */\r\nexport type DrawCommand = PushCommand | PopCommand | PrimitiveCommand;\r\n\r\n/** For a single RenderPass, an ordered list of commands to be executed during that pass.\r\n * @internal\r\n */\r\nexport type DrawCommands = DrawCommand[];\r\n\r\n/** Extracts the commands for rendering the flashed classifier (if any) from the by-index set of volume classifier commands.\r\n * NB: Cmds will be sets of some pushes, a primitive, and then some pops (equal to number of pushes).\r\n * The primitive should be right in the middle of a set. We need to find the set which matches the flashID.\r\n * @internal\r\n */\r\nexport function extractFlashedVolumeClassifierCommands(flashedId: Id64String, cmds: DrawCommands, numCmdsPerClassifier: number): DrawCommands | undefined {\r\n if (!Id64.isValid(flashedId) || 0 === numCmdsPerClassifier)\r\n return undefined;\r\n\r\n const firstPrim = (numCmdsPerClassifier - 1) / 2;\r\n for (let i = firstPrim; i < cmds.length; i += numCmdsPerClassifier) {\r\n assert(\"drawPrimitive\" === cmds[i].opcode, \"Command list not configured as expected.\");\r\n const pc: PrimitiveCommand = cmds[i] as PrimitiveCommand;\r\n const surface = pc.primitive.cachedGeometry.asSurface;\r\n if (undefined !== surface && undefined !== surface.mesh.uniformFeatureId) {\r\n let j = i - 1;\r\n while (j >= 0 && \"pushBatch\" !== cmds[j].opcode) // Find batch for this primitive\r\n j--;\r\n if (j < 0)\r\n continue;\r\n\r\n const pushBatch = cmds[j] as PushBatchCommand;\r\n const elemId = pushBatch.batch.featureTable.findElementId(surface.mesh.uniformFeatureId);\r\n if (undefined !== elemId && elemId === flashedId) {\r\n return cmds.slice(i - firstPrim, i + firstPrim + 1);\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\n/** @internal */\r\nexport function extractHilitedVolumeClassifierCommands(hilites: Hilites, cmds: DrawCommands): DrawCommands {\r\n // TODO: This could really be done at the time the HiliteClassification render pass commands are being generated\r\n // by just not putting the ones which are not hilited into the ClassificationHilite command list.\r\n const result: DrawCommand[] = [];\r\n\r\n let batch;\r\n for (const cmd of cmds) {\r\n switch (cmd.opcode) {\r\n case \"popBranch\":\r\n if (result.length > 0 && \"pushBranch\" === result[result.length - 1].opcode) {\r\n result.pop(); // remove empty push/pop pairs\r\n continue;\r\n }\r\n break;\r\n case \"popBatch\":\r\n batch = undefined;\r\n if (result.length > 0 && \"pushBatch\" === result[result.length - 1].opcode) {\r\n result.pop(); // remove empty push/pop pairs\r\n continue;\r\n }\r\n break;\r\n case \"pushBatch\":\r\n batch = cmd.batch;\r\n break;\r\n case \"drawPrimitive\":\r\n if (undefined !== batch) {\r\n // Skip any primitives that are not hilited.\r\n const surface = cmd.primitive.cachedGeometry.asSurface;\r\n if (undefined === surface || undefined === surface.mesh.uniformFeatureId)\r\n continue;\r\n\r\n const feature = batch.featureTable.getPackedFeature(surface.mesh.uniformFeatureId);\r\n if (undefined === feature || !isFeatureHilited(feature, hilites, hilites.models.hasId(batch.featureTable.modelId)))\r\n continue;\r\n\r\n break;\r\n }\r\n }\r\n\r\n result.push(cmd);\r\n }\r\n\r\n return result;\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"DrawCommand.js","sourceRoot":"","sources":["../../../../src/render/webgl/DrawCommand.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport { BranchState } from \"./BranchState\";\r\nimport { CachedGeometry } from \"./CachedGeometry\";\r\nimport { ClipVolume } from \"./ClipVolume\";\r\nimport { isFeatureHilited } from \"./FeatureOverrides\";\r\nimport { Batch, Branch } from \"./Graphic\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { Primitive } from \"./Primitive\";\r\nimport { Pass, RenderOrder, RenderPass } from \"./RenderFlags\";\r\nimport { ShaderProgramExecutor } from \"./ShaderProgram\";\r\nimport { System } from \"./System\";\r\nimport { Hilites, Target } from \"./Target\";\r\nimport { IsAnimated, IsClassified, IsInstanced, IsShadowable, IsThematic, IsWiremesh, TechniqueFlags } from \"./TechniqueFlags\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\n\r\n/* eslint-disable no-restricted-syntax */\r\n\r\n/** @internal */\r\nexport class ShaderProgramParams {\r\n private _target?: Target;\r\n private _renderPass: RenderPass = RenderPass.None;\r\n\r\n public get target(): Target {\r\n assert(undefined !== this._target);\r\n return this._target;\r\n }\r\n\r\n public get renderPass() { return this._renderPass; }\r\n\r\n public get projectionMatrix() { return this.target.uniforms.getProjectionMatrix32(this.isViewCoords); }\r\n public bindProjectionMatrix(uniform: UniformHandle) { this.target.uniforms.bindProjectionMatrix(uniform, this.isViewCoords); }\r\n\r\n public get isViewCoords() { return RenderPass.ViewOverlay === this.renderPass || RenderPass.Background === this.renderPass; }\r\n public get isOverlayPass() { return RenderPass.WorldOverlay === this.renderPass || RenderPass.ViewOverlay === this.renderPass; }\r\n public get context() { return System.instance.context; }\r\n\r\n public init(target: Target, pass: RenderPass = RenderPass.OpaqueGeneral) {\r\n this._renderPass = pass;\r\n this._target = target;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class DrawParams {\r\n private _programParams?: ShaderProgramParams;\r\n private _geometry?: CachedGeometry;\r\n\r\n public get geometry(): CachedGeometry {\r\n assert(undefined !== this._geometry);\r\n return this._geometry;\r\n }\r\n\r\n public get programParams(): ShaderProgramParams {\r\n assert(undefined !== this._programParams);\r\n return this._programParams;\r\n }\r\n\r\n public get target() { return this.programParams.target; }\r\n public get renderPass() { return this.programParams.renderPass; }\r\n public get projectionMatrix() { return this.programParams.projectionMatrix; }\r\n public get isViewCoords() {\r\n return this.programParams.isViewCoords || this.target.currentBranch.forceViewCoords;\r\n }\r\n public get isOverlayPass() { return this.programParams.isOverlayPass; }\r\n public get context() { return this.programParams.context; }\r\n\r\n public init(programParams: ShaderProgramParams, geometry: CachedGeometry) {\r\n this._programParams = programParams;\r\n this._geometry = geometry;\r\n }\r\n}\r\n\r\n/** Defines operation associated with pushing or popping a branch\r\n * @internal\r\n */\r\nexport const enum PushOrPop {\r\n Push,\r\n Pop,\r\n}\r\n\r\n/** Represents a command to be executed within a RenderPass. The most common command is\r\n * to draw a primitive; others involve state changes such as pushing/popping transforms\r\n * and symbology overrides, which require that commands be executed in order.\r\n * @internal\r\n */\r\nexport enum DrawOpCode {\r\n Primitive = \"drawPrimitive\", // eslint-disable-line @typescript-eslint/no-shadow\r\n PushBranch = \"pushBranch\",\r\n PopBranch = \"popBranch\",\r\n PushBatch = \"pushBatch\",\r\n PopBatch = \"popBatch\",\r\n PushState = \"pushState\",\r\n PushClip = \"pushClip\",\r\n PopClip = \"popClip\",\r\n}\r\n\r\n/** @internal */\r\nexport class PopBatchCommand {\r\n public readonly opcode = \"popBatch\";\r\n\r\n private constructor() { }\r\n\r\n public static instance = new PopBatchCommand();\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.popBatch();\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PushBatchCommand {\r\n public readonly opcode = \"pushBatch\";\r\n\r\n public constructor(public readonly batch: Batch) { }\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.pushBatch(this.batch);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PushStateCommand {\r\n public readonly opcode = \"pushState\";\r\n\r\n public constructor(public readonly state: BranchState) { }\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.pushState(this.state);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PushBranchCommand {\r\n public readonly opcode = \"pushBranch\";\r\n\r\n public constructor(public readonly branch: Branch) { }\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.pushBranch(this.branch);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PopBranchCommand {\r\n public readonly opcode = \"popBranch\";\r\n\r\n private constructor() { }\r\n\r\n public static instance = new PopBranchCommand();\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.popBranch();\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PushClipCommand {\r\n public readonly opcode = \"pushClip\";\r\n\r\n public constructor(public readonly clip: ClipVolume) { }\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.uniforms.branch.clipStack.push(this.clip);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PopClipCommand {\r\n public readonly opcode = \"popClip\";\r\n\r\n private constructor() { }\r\n\r\n public static instance = new PopClipCommand();\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.uniforms.branch.clipStack.pop();\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PrimitiveCommand {\r\n public readonly opcode = \"drawPrimitive\";\r\n\r\n public constructor(public readonly primitive: Primitive) { }\r\n\r\n private static readonly _scratchTechniqueFlags = new TechniqueFlags();\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n if (exec.target.isGeometryOutsideActiveVolume(this.primitive.cachedGeometry))\r\n return;\r\n\r\n const techniqueId = this.primitive.techniqueId;\r\n if (TechniqueId.Invalid === techniqueId)\r\n return;\r\n\r\n const target = exec.target;\r\n const thematic = this.primitive.cachedGeometry.supportsThematicDisplay && target.wantThematicDisplay;\r\n const shadowable = (techniqueId === TechniqueId.Surface || techniqueId === TechniqueId.RealityMesh) && target.solarShadowMap.isReady && target.currentViewFlags.shadows && !thematic;\r\n const isShadowable = shadowable ? IsShadowable.Yes : IsShadowable.No;\r\n let isThematic = thematic ? IsThematic.Yes : IsThematic.No;\r\n const isClassified = (undefined !== target.currentPlanarClassifierOrDrape || undefined !== target.activeVolumeClassifierTexture) ? IsClassified.Yes : IsClassified.No;\r\n const isInstanced = this.primitive.isInstanced ? IsInstanced.Yes : IsInstanced.No;\r\n const isAnimated = this.primitive.hasAnimation ? IsAnimated.Yes : IsAnimated.No;\r\n\r\n // Point clouds do not support hillshade or slope mode for thematic display.\r\n if (isThematic && (undefined !== this.primitive.cachedGeometry.asPointCloud) && (target.uniforms.thematic.wantSlopeMode || target.uniforms.thematic.wantHillShadeMode))\r\n isThematic = IsThematic.No;\r\n\r\n const wiremesh = target.currentViewFlags.wiremesh && (techniqueId === TechniqueId.Surface || techniqueId === TechniqueId.RealityMesh);\r\n const isWiremesh = wiremesh ? IsWiremesh.Yes : IsWiremesh.No;\r\n const flags = PrimitiveCommand._scratchTechniqueFlags;\r\n const posType = this.primitive.cachedGeometry.usesQuantizedPositions ? \"quantized\" : \"unquantized\";\r\n flags.init(target, exec.renderPass, isInstanced, isAnimated, isClassified, isShadowable, isThematic, isWiremesh, posType);\r\n\r\n const technique = target.techniques.getTechnique(techniqueId);\r\n const program = technique.getShader(flags);\r\n\r\n if (exec.setProgram(program))\r\n exec.target.compositor.drawPrimitive(this.primitive, exec, program.outputsToPick);\r\n }\r\n\r\n public get hasFeatures(): boolean { return this.primitive.hasFeatures; }\r\n public get renderOrder(): RenderOrder { return this.primitive.renderOrder; }\r\n\r\n public getPass(target: Target): Pass {\r\n return this.primitive.getPass(target);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport type PushCommand = PushBranchCommand | PushBatchCommand | PushStateCommand | PushClipCommand;\r\n/** @internal */\r\nexport type PopCommand = PopBranchCommand | PopBatchCommand | PopClipCommand;\r\n/** @internal */\r\nexport type DrawCommand = PushCommand | PopCommand | PrimitiveCommand;\r\n\r\n/** For a single RenderPass, an ordered list of commands to be executed during that pass.\r\n * @internal\r\n */\r\nexport type DrawCommands = DrawCommand[];\r\n\r\n/** Extracts the commands for rendering the flashed classifier (if any) from the by-index set of volume classifier commands.\r\n * NB: Cmds will be sets of some pushes, a primitive, and then some pops (equal to number of pushes).\r\n * The primitive should be right in the middle of a set. We need to find the set which matches the flashID.\r\n * @internal\r\n */\r\nexport function extractFlashedVolumeClassifierCommands(flashedId: Id64String, cmds: DrawCommands, numCmdsPerClassifier: number): DrawCommands | undefined {\r\n if (!Id64.isValid(flashedId) || 0 === numCmdsPerClassifier)\r\n return undefined;\r\n\r\n const firstPrim = (numCmdsPerClassifier - 1) / 2;\r\n for (let i = firstPrim; i < cmds.length; i += numCmdsPerClassifier) {\r\n assert(\"drawPrimitive\" === cmds[i].opcode, \"Command list not configured as expected.\");\r\n const pc: PrimitiveCommand = cmds[i] as PrimitiveCommand;\r\n const surface = pc.primitive.cachedGeometry.asSurface;\r\n if (undefined !== surface && undefined !== surface.mesh.uniformFeatureId) {\r\n let j = i - 1;\r\n while (j >= 0 && \"pushBatch\" !== cmds[j].opcode) // Find batch for this primitive\r\n j--;\r\n if (j < 0)\r\n continue;\r\n\r\n const pushBatch = cmds[j] as PushBatchCommand;\r\n const elemId = pushBatch.batch.featureTable.findElementId(surface.mesh.uniformFeatureId);\r\n if (undefined !== elemId && elemId === flashedId) {\r\n return cmds.slice(i - firstPrim, i + firstPrim + 1);\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\n/** @internal */\r\nexport function extractHilitedVolumeClassifierCommands(hilites: Hilites, cmds: DrawCommands): DrawCommands {\r\n // TODO: This could really be done at the time the HiliteClassification render pass commands are being generated\r\n // by just not putting the ones which are not hilited into the ClassificationHilite command list.\r\n const result: DrawCommand[] = [];\r\n\r\n let batch;\r\n for (const cmd of cmds) {\r\n switch (cmd.opcode) {\r\n case \"popBranch\":\r\n if (result.length > 0 && \"pushBranch\" === result[result.length - 1].opcode) {\r\n result.pop(); // remove empty push/pop pairs\r\n continue;\r\n }\r\n break;\r\n case \"popBatch\":\r\n batch = undefined;\r\n if (result.length > 0 && \"pushBatch\" === result[result.length - 1].opcode) {\r\n result.pop(); // remove empty push/pop pairs\r\n continue;\r\n }\r\n break;\r\n case \"pushBatch\":\r\n batch = cmd.batch;\r\n break;\r\n case \"drawPrimitive\":\r\n if (undefined !== batch) {\r\n // Skip any primitives that are not hilited.\r\n const surface = cmd.primitive.cachedGeometry.asSurface;\r\n if (undefined === surface || undefined === surface.mesh.uniformFeatureId)\r\n continue;\r\n\r\n const feature = batch.featureTable.getPackedFeature(surface.mesh.uniformFeatureId);\r\n if (undefined === feature || !isFeatureHilited(feature, hilites, hilites.models.hasId(batch.featureTable.modelId)))\r\n continue;\r\n\r\n break;\r\n }\r\n }\r\n\r\n result.push(cmd);\r\n }\r\n\r\n return result;\r\n}\r\n"]}
|
|
@@ -14,7 +14,7 @@ import { sync } from "./Sync";
|
|
|
14
14
|
import { System } from "./System";
|
|
15
15
|
import { Texture2DDataUpdater, TextureHandle } from "./Texture";
|
|
16
16
|
function computeWidthAndHeight(nEntries, nRgbaPerEntry, nExtraRgba = 0, nTables = 1) {
|
|
17
|
-
const maxSize = System.instance.
|
|
17
|
+
const maxSize = System.instance.maxTextureSize;
|
|
18
18
|
const nRgba = nEntries * nRgbaPerEntry * nTables + nExtraRgba;
|
|
19
19
|
if (nRgba < maxSize)
|
|
20
20
|
return { width: nRgba, height: 1 };
|