@itwin/core-frontend 4.0.0-dev.2 → 4.0.0-dev.22
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
|
@@ -5,27 +5,19 @@
|
|
|
5
5
|
/** @packageDocumentation
|
|
6
6
|
* @module WebGL
|
|
7
7
|
*/
|
|
8
|
-
import { System } from "../System";
|
|
9
8
|
import { createViewportQuadBuilder } from "./ViewportQuad";
|
|
10
9
|
const computeBaseColor = "return vec4(0.0);";
|
|
11
10
|
const assignFragData = `
|
|
12
11
|
FragColor0 = vec4(0.0, 0.0, 0.0, 1.0);
|
|
13
12
|
FragColor1 = vec4(1.0, 0.0, 0.0, 1.0);
|
|
14
13
|
`;
|
|
15
|
-
const assignFragColor = `FragColor = vec4(0.0, 0.0, 0.0, 1.0);`;
|
|
16
14
|
/** @internal */
|
|
17
15
|
export function createClearTranslucentProgram(context) {
|
|
18
16
|
const builder = createViewportQuadBuilder(false);
|
|
19
17
|
const frag = builder.frag;
|
|
20
18
|
frag.set(1 /* ComputeBaseColor */, computeBaseColor);
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
frag.set(16 /* AssignFragData */, assignFragData);
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
26
|
-
// NB: This shader is never used - we just gl.clear() directly
|
|
27
|
-
frag.set(16 /* AssignFragData */, assignFragColor);
|
|
28
|
-
}
|
|
19
|
+
frag.addDrawBuffersExtension(2);
|
|
20
|
+
frag.set(16 /* AssignFragData */, assignFragData);
|
|
29
21
|
builder.vert.headerComment = "//!V! ClearTranslucent";
|
|
30
22
|
builder.frag.headerComment = "//!F! ClearTranslucent";
|
|
31
23
|
return builder.buildProgram(context);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClearTranslucent.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/ClearTranslucent.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;
|
|
1
|
+
{"version":3,"file":"ClearTranslucent.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/ClearTranslucent.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAIH,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAC7C,MAAM,cAAc,GAAG;;;CAGtB,CAAC;AAEF,gBAAgB;AAChB,MAAM,UAAU,6BAA6B,CAAC,OAA+B;IAC3E,MAAM,OAAO,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,IAAI,CAAC,GAAG,2BAA2C,gBAAgB,CAAC,CAAC;IACrE,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,CAAC,GAAG,0BAAyC,cAAc,CAAC,CAAC;IAEjE,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,wBAAwB,CAAC;IACtD,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,wBAAwB,CAAC;IAEtD,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACvC,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 { FragmentShaderComponent } from \"../ShaderBuilder\";\r\nimport { ShaderProgram } from \"../ShaderProgram\";\r\nimport { createViewportQuadBuilder } from \"./ViewportQuad\";\r\n\r\nconst computeBaseColor = \"return vec4(0.0);\";\r\nconst assignFragData = `\r\n FragColor0 = vec4(0.0, 0.0, 0.0, 1.0);\r\n FragColor1 = vec4(1.0, 0.0, 0.0, 1.0);\r\n`;\r\n\r\n/** @internal */\r\nexport function createClearTranslucentProgram(context: WebGL2RenderingContext): ShaderProgram {\r\n const builder = createViewportQuadBuilder(false);\r\n const frag = builder.frag;\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeBaseColor);\r\n frag.addDrawBuffersExtension(2);\r\n frag.set(FragmentShaderComponent.AssignFragData, assignFragData);\r\n\r\n builder.vert.headerComment = \"//!V! ClearTranslucent\";\r\n builder.frag.headerComment = \"//!F! ClearTranslucent\";\r\n\r\n return builder.buildProgram(context);\r\n}\r\n"]}
|
|
@@ -4,5 +4,5 @@
|
|
|
4
4
|
import { ProgramBuilder } from "../ShaderBuilder";
|
|
5
5
|
export declare const unpackFloat = "\nfloat unpackFloat(vec4 v) {\n const float bias = 38.0;\n v = floor(v * 255.0 + 0.5);\n float temp = v.w / 2.0;\n float exponent = floor(temp);\n float sign = (temp - exponent) * 2.0;\n exponent = exponent - bias;\n sign = -(sign * 2.0 - 1.0);\n float unpacked = dot(sign * v.xyz, vec3(1.0 / 256.0, 1.0 / 65536.0, 1.0 / 16777216.0)); // shift x right 8, y right 16 and z right 24\n return unpacked * pow(10.0, exponent);\n}\n";
|
|
6
6
|
/** @internal */
|
|
7
|
-
export declare function addClipping(prog: ProgramBuilder
|
|
7
|
+
export declare function addClipping(prog: ProgramBuilder): void;
|
|
8
8
|
//# sourceMappingURL=Clipping.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Clipping.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Clipping.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EAA2B,cAAc,EAAmC,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"Clipping.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Clipping.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EAA2B,cAAc,EAAmC,MAAM,kBAAkB,CAAC;AAY5G,eAAO,MAAM,WAAW,wbAYvB,CAAC;AAwDF,gBAAgB;AAChB,wBAAgB,WAAW,CAAC,IAAI,EAAE,cAAc,QAkD/C"}
|
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { assert } from "@itwin/core-bentley";
|
|
9
9
|
import { TextureUnit } from "../RenderFlags";
|
|
10
|
-
import { System } from "../System";
|
|
11
10
|
import { addEyeSpace } from "./Common";
|
|
12
11
|
import { addModelViewMatrix } from "./Vertex";
|
|
13
12
|
const getClipPlaneFloat = `
|
|
@@ -30,22 +29,6 @@ float unpackFloat(vec4 v) {
|
|
|
30
29
|
return unpacked * pow(10.0, exponent);
|
|
31
30
|
}
|
|
32
31
|
`;
|
|
33
|
-
// ###TODO: oct-encode the normal to reduce # of samples from 4 to 2
|
|
34
|
-
const unpackClipPlane = `
|
|
35
|
-
vec4 getClipPlane(int index) {
|
|
36
|
-
float y = (float(index) + 0.5) / float(u_clipParams[2]);
|
|
37
|
-
float sx = 0.25;
|
|
38
|
-
vec2 tc = vec2(0.125, y);
|
|
39
|
-
float nx = unpackFloat(TEXTURE(s_clipSampler, tc));
|
|
40
|
-
tc.x += sx;
|
|
41
|
-
float ny = unpackFloat(TEXTURE(s_clipSampler, tc));
|
|
42
|
-
tc.x += sx;
|
|
43
|
-
float nz = unpackFloat(TEXTURE(s_clipSampler, tc));
|
|
44
|
-
tc.x += sx;
|
|
45
|
-
float dist = unpackFloat(TEXTURE(s_clipSampler, tc));
|
|
46
|
-
return vec4(nx, ny, nz, dist);
|
|
47
|
-
}
|
|
48
|
-
`;
|
|
49
32
|
const calcClipPlaneDist = `
|
|
50
33
|
float calcClipPlaneDist(vec3 camPos, vec4 plane) {
|
|
51
34
|
return dot(vec4(camPos, 1.0), plane);
|
|
@@ -56,14 +39,7 @@ const applyClipPlanesPrelude = `
|
|
|
56
39
|
int numSetsClippedBy = 0;
|
|
57
40
|
bool clippedByCurrentPlaneSet = false;
|
|
58
41
|
`;
|
|
59
|
-
const
|
|
60
|
-
for (int i = 0; i < MAX_CLIPPING_PLANES; i++) {
|
|
61
|
-
if (i < u_clipParams[0])
|
|
62
|
-
continue;
|
|
63
|
-
else if (i >= u_clipParams[1])
|
|
64
|
-
break;
|
|
65
|
-
`;
|
|
66
|
-
const applyClipPlanesLoopWebGL2 = `
|
|
42
|
+
const applyClipPlanesLoop = `
|
|
67
43
|
for (int i = u_clipParams[0]; i < u_clipParams[1]; i++) {
|
|
68
44
|
`;
|
|
69
45
|
const applyClipPlanesPostlude = `
|
|
@@ -99,11 +75,10 @@ const applyClipPlanesPostlude = `
|
|
|
99
75
|
|
|
100
76
|
return false;
|
|
101
77
|
`;
|
|
102
|
-
const
|
|
103
|
-
const applyClipPlanesWebGL2 = applyClipPlanesPrelude + applyClipPlanesLoopWebGL2 + applyClipPlanesPostlude;
|
|
78
|
+
const applyClipPlanes = applyClipPlanesPrelude + applyClipPlanesLoop + applyClipPlanesPostlude;
|
|
104
79
|
const clipParams = new Int32Array(3);
|
|
105
80
|
/** @internal */
|
|
106
|
-
export function addClipping(prog
|
|
81
|
+
export function addClipping(prog) {
|
|
107
82
|
const frag = prog.frag;
|
|
108
83
|
const vert = prog.vert;
|
|
109
84
|
addEyeSpace(prog);
|
|
@@ -133,13 +108,7 @@ export function addClipping(prog, isWebGL2) {
|
|
|
133
108
|
});
|
|
134
109
|
});
|
|
135
110
|
addModelViewMatrix(vert);
|
|
136
|
-
|
|
137
|
-
frag.addFunction(getClipPlaneFloat);
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
frag.addFunction(unpackFloat);
|
|
141
|
-
frag.addFunction(unpackClipPlane);
|
|
142
|
-
}
|
|
111
|
+
frag.addFunction(getClipPlaneFloat);
|
|
143
112
|
frag.addFunction(calcClipPlaneDist);
|
|
144
113
|
frag.addUniform("s_clipSampler", 8 /* Sampler2D */, (program) => {
|
|
145
114
|
program.addGraphicUniform("s_clipSampler", (uniform, params) => {
|
|
@@ -149,6 +118,6 @@ export function addClipping(prog, isWebGL2) {
|
|
|
149
118
|
texture.bindSampler(uniform, TextureUnit.ClipVolume);
|
|
150
119
|
});
|
|
151
120
|
}, 3 /* High */);
|
|
152
|
-
frag.set(10 /* ApplyClipping */,
|
|
121
|
+
frag.set(10 /* ApplyClipping */, applyClipPlanes);
|
|
153
122
|
}
|
|
154
123
|
//# sourceMappingURL=Clipping.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Clipping.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Clipping.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Clipping.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Clipping.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 { TextureUnit } from \"../RenderFlags\";\r\nimport { FragmentShaderComponent, ProgramBuilder, VariablePrecision, VariableType } from \"../ShaderBuilder\";\r\nimport { addEyeSpace } from \"./Common\";\r\nimport { addModelViewMatrix } from \"./Vertex\";\r\n\r\nconst getClipPlaneFloat = `\r\nvec4 getClipPlane(int index) {\r\n float x = 0.5;\r\n float y = (float(index) + 0.5) / float(u_clipParams[2]);\r\n return TEXTURE(s_clipSampler, vec2(x, y));\r\n}\r\n`;\r\n\r\nexport const unpackFloat = `\r\nfloat unpackFloat(vec4 v) {\r\n const float bias = 38.0;\r\n v = floor(v * 255.0 + 0.5);\r\n float temp = v.w / 2.0;\r\n float exponent = floor(temp);\r\n float sign = (temp - exponent) * 2.0;\r\n exponent = exponent - bias;\r\n sign = -(sign * 2.0 - 1.0);\r\n float unpacked = dot(sign * v.xyz, vec3(1.0 / 256.0, 1.0 / 65536.0, 1.0 / 16777216.0)); // shift x right 8, y right 16 and z right 24\r\n return unpacked * pow(10.0, exponent);\r\n}\r\n`;\r\n\r\nconst calcClipPlaneDist = `\r\nfloat calcClipPlaneDist(vec3 camPos, vec4 plane) {\r\n return dot(vec4(camPos, 1.0), plane);\r\n}\r\n`;\r\n\r\nconst applyClipPlanesPrelude = `\r\n int numPlaneSets = 1;\r\n int numSetsClippedBy = 0;\r\n bool clippedByCurrentPlaneSet = false;\r\n`;\r\n\r\nconst applyClipPlanesLoop = `\r\n for (int i = u_clipParams[0]; i < u_clipParams[1]; i++) {\r\n`;\r\n\r\nconst applyClipPlanesPostlude = `\r\n vec4 plane = getClipPlane(i);\r\n if (plane.x == 2.0) { // indicates start of new UnionOfConvexClipPlaneSets\r\n if (numSetsClippedBy + int(clippedByCurrentPlaneSet) == numPlaneSets)\r\n break;\r\n\r\n numPlaneSets = 1;\r\n numSetsClippedBy = 0;\r\n clippedByCurrentPlaneSet = false;\r\n } else if (plane.xyz == vec3(0.0)) { // indicates start of new clip plane set\r\n numPlaneSets = numPlaneSets + 1;\r\n numSetsClippedBy += int(clippedByCurrentPlaneSet);\r\n clippedByCurrentPlaneSet = false;\r\n } else if (!clippedByCurrentPlaneSet && calcClipPlaneDist(v_eyeSpace, plane) < 0.0) {\r\n clippedByCurrentPlaneSet = true;\r\n }\r\n }\r\n\r\n numSetsClippedBy += int(clippedByCurrentPlaneSet);\r\n if (numSetsClippedBy == numPlaneSets) {\r\n if (u_outsideRgba.a > 0.0) {\r\n g_clipColor = u_outsideRgba.rgb;\r\n return true;\r\n } else {\r\n discard;\r\n }\r\n } else if (u_insideRgba.a > 0.0) {\r\n g_clipColor = u_insideRgba.rgb;\r\n return true;\r\n }\r\n\r\n return false;\r\n`;\r\n\r\nconst applyClipPlanes = applyClipPlanesPrelude + applyClipPlanesLoop + applyClipPlanesPostlude;\r\n\r\nconst clipParams = new Int32Array(3);\r\n\r\n/** @internal */\r\nexport function addClipping(prog: ProgramBuilder) {\r\n const frag = prog.frag;\r\n const vert = prog.vert;\r\n\r\n addEyeSpace(prog);\r\n\r\n // [0] = index of first plane\r\n // [1] = index of last plane (one past the end)\r\n // [2] = texture height\r\n prog.addUniformArray(\"u_clipParams\", VariableType.Int, 3, (program) => {\r\n program.addGraphicUniform(\"u_clipParams\", (uniform, params) => {\r\n // Set this to false to visualize pre-shader culling of geometry.\r\n const doClipping = true;\r\n\r\n const stack = params.target.uniforms.branch.clipStack;\r\n clipParams[0] = stack.startIndex;\r\n clipParams[1] = stack.endIndex;\r\n clipParams[2] = doClipping ? stack.textureHeight : 0;\r\n assert(clipParams[2] > 0 || !doClipping);\r\n uniform.setUniform1iv(clipParams);\r\n });\r\n });\r\n\r\n prog.addUniform(\"u_outsideRgba\", VariableType.Vec4, (program) => {\r\n program.addGraphicUniform(\"u_outsideRgba\", (uniform, params) => {\r\n params.target.uniforms.branch.clipStack.outsideColor.bind(uniform);\r\n });\r\n });\r\n\r\n prog.addUniform(\"u_insideRgba\", VariableType.Vec4, (program) => {\r\n program.addGraphicUniform(\"u_insideRgba\", (uniform, params) => {\r\n params.target.uniforms.branch.clipStack.insideColor.bind(uniform);\r\n });\r\n });\r\n\r\n addModelViewMatrix(vert);\r\n\r\n frag.addFunction(getClipPlaneFloat);\r\n\r\n frag.addFunction(calcClipPlaneDist);\r\n frag.addUniform(\"s_clipSampler\", VariableType.Sampler2D, (program) => {\r\n program.addGraphicUniform(\"s_clipSampler\", (uniform, params) => {\r\n const texture = params.target.uniforms.branch.clipStack.texture;\r\n assert(texture !== undefined);\r\n if (texture !== undefined)\r\n texture.bindSampler(uniform, TextureUnit.ClipVolume);\r\n });\r\n }, VariablePrecision.High);\r\n\r\n frag.set(FragmentShaderComponent.ApplyClipping, applyClipPlanes);\r\n}\r\n"]}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
/** @packageDocumentation
|
|
2
2
|
* @module WebGL
|
|
3
3
|
*/
|
|
4
|
-
import { WebGLContext } from "@itwin/webgl-compatibility";
|
|
5
4
|
import { ShaderProgram } from "../ShaderProgram";
|
|
6
5
|
/** @internal */
|
|
7
|
-
export declare function createCombine3TexturesProgram(context:
|
|
6
|
+
export declare function createCombine3TexturesProgram(context: WebGL2RenderingContext): ShaderProgram;
|
|
8
7
|
//# sourceMappingURL=Combine3Textures.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Combine3Textures.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Combine3Textures.ts"],"names":[],"mappings":"AAIA;;GAEG;
|
|
1
|
+
{"version":3,"file":"Combine3Textures.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Combine3Textures.ts"],"names":[],"mappings":"AAIA;;GAEG;AAKH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAejD,gBAAgB;AAChB,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,sBAAsB,GAAG,aAAa,CA8B5F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Combine3Textures.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Combine3Textures.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;
|
|
1
|
+
{"version":3,"file":"Combine3Textures.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Combine3Textures.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAE7C,MAAM,cAAc,GAAG;;;;;;;CAOtB,CAAC;AAEF,gBAAgB;AAChB,MAAM,UAAU,6BAA6B,CAAC,OAA+B;IAC3E,MAAM,OAAO,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,IAAI,CAAC,GAAG,2BAA2C,gBAAgB,CAAC,CAAC;IAErE,IAAI,CAAC,UAAU,CAAC,YAAY,qBAA0B,CAAC,IAAI,EAAE,EAAE;QAC7D,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACvD,eAAe,CAAC,WAAW,CAAC,OAAO,EAAG,MAAM,CAAC,QAAqC,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QACjH,CAAC,CAAC,CAAC;IACL,CAAC,eAAyB,CAAC;IAE3B,IAAI,CAAC,UAAU,CAAC,YAAY,qBAA0B,CAAC,IAAI,EAAE,EAAE;QAC7D,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACvD,eAAe,CAAC,WAAW,CAAC,OAAO,EAAG,MAAM,CAAC,QAAqC,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;QAChH,CAAC,CAAC,CAAC;IACL,CAAC,eAAyB,CAAC;IAE3B,IAAI,CAAC,UAAU,CAAC,YAAY,qBAA0B,CAAC,IAAI,EAAE,EAAE;QAC7D,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACvD,eAAe,CAAC,WAAW,CAAC,OAAO,EAAG,MAAM,CAAC,QAAqC,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;QAChH,CAAC,CAAC,CAAC;IACL,CAAC,eAAyB,CAAC;IAE3B,IAAI,CAAC,GAAG,0BAAyC,cAAc,CAAC,CAAC;IAEjE,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,wBAAwB,CAAC;IACtD,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,wBAAwB,CAAC;IAEtD,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACvC,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 { Combine3TexturesGeometry } from \"../CachedGeometry\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport { FragmentShaderComponent, VariablePrecision, VariableType } from \"../ShaderBuilder\";\r\nimport { ShaderProgram } from \"../ShaderProgram\";\r\nimport { Texture2DHandle } from \"../Texture\";\r\nimport { createViewportQuadBuilder } from \"./ViewportQuad\";\r\n\r\nconst computeBaseColor = \"return vec4(1.0);\";\r\n\r\nconst assignFragData = `\r\n if (v_texCoord.y < (1.0 / 3.0))\r\n FragColor = TEXTURE(u_texture0, vec2(v_texCoord.x, v_texCoord.y * 3.0));\r\n else if (v_texCoord.y < (2.0 / 3.0))\r\n FragColor = TEXTURE(u_texture1, vec2(v_texCoord.x, v_texCoord.y * 3.0 - 1.0));\r\n else\r\n FragColor = TEXTURE(u_texture2, vec2(v_texCoord.x, v_texCoord.y * 3.0 - 2.0));\r\n`;\r\n\r\n/** @internal */\r\nexport function createCombine3TexturesProgram(context: WebGL2RenderingContext): ShaderProgram {\r\n const builder = createViewportQuadBuilder(true);\r\n const frag = builder.frag;\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeBaseColor);\r\n\r\n frag.addUniform(\"u_texture0\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_texture0\", (uniform, params) => {\r\n Texture2DHandle.bindSampler(uniform, (params.geometry as Combine3TexturesGeometry).texture0, TextureUnit.Zero);\r\n });\r\n }, VariablePrecision.High);\r\n\r\n frag.addUniform(\"u_texture1\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_texture1\", (uniform, params) => {\r\n Texture2DHandle.bindSampler(uniform, (params.geometry as Combine3TexturesGeometry).texture1, TextureUnit.One);\r\n });\r\n }, VariablePrecision.High);\r\n\r\n frag.addUniform(\"u_texture2\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_texture2\", (uniform, params) => {\r\n Texture2DHandle.bindSampler(uniform, (params.geometry as Combine3TexturesGeometry).texture2, TextureUnit.Two);\r\n });\r\n }, VariablePrecision.High);\r\n\r\n frag.set(FragmentShaderComponent.AssignFragData, assignFragData);\r\n\r\n builder.vert.headerComment = \"//!V! Combine3Textures\";\r\n builder.frag.headerComment = \"//!F! Combine3Textures\";\r\n\r\n return builder.buildProgram(context);\r\n}\r\n"]}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
/** @packageDocumentation
|
|
2
2
|
* @module WebGL
|
|
3
3
|
*/
|
|
4
|
-
import { WebGLContext } from "@itwin/webgl-compatibility";
|
|
5
4
|
import { ShaderProgram } from "../ShaderProgram";
|
|
6
5
|
/** @internal */
|
|
7
|
-
export declare function createCombineTexturesProgram(context:
|
|
6
|
+
export declare function createCombineTexturesProgram(context: WebGL2RenderingContext): ShaderProgram;
|
|
8
7
|
//# sourceMappingURL=CombineTextures.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CombineTextures.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/CombineTextures.ts"],"names":[],"mappings":"AAIA;;GAEG;
|
|
1
|
+
{"version":3,"file":"CombineTextures.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/CombineTextures.ts"],"names":[],"mappings":"AAIA;;GAEG;AAKH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAajD,gBAAgB;AAChB,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,sBAAsB,GAAG,aAAa,CAwB3F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CombineTextures.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/CombineTextures.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;
|
|
1
|
+
{"version":3,"file":"CombineTextures.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/CombineTextures.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAE7C,MAAM,cAAc,GAAG;;;;;CAKtB,CAAC;AAEF,gBAAgB;AAChB,MAAM,UAAU,4BAA4B,CAAC,OAA+B;IAC1E,MAAM,OAAO,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,IAAI,CAAC,GAAG,2BAA2C,gBAAgB,CAAC,CAAC;IAErE,IAAI,CAAC,UAAU,CAAC,YAAY,qBAA0B,CAAC,IAAI,EAAE,EAAE;QAC7D,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACvD,eAAe,CAAC,WAAW,CAAC,OAAO,EAAG,MAAM,CAAC,QAAoC,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QAChH,CAAC,CAAC,CAAC;IACL,CAAC,eAAyB,CAAC;IAE3B,IAAI,CAAC,UAAU,CAAC,YAAY,qBAA0B,CAAC,IAAI,EAAE,EAAE;QAC7D,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACvD,eAAe,CAAC,WAAW,CAAC,OAAO,EAAG,MAAM,CAAC,QAAoC,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;QAC/G,CAAC,CAAC,CAAC;IACL,CAAC,eAAyB,CAAC;IAE3B,IAAI,CAAC,GAAG,0BAAyC,cAAc,CAAC,CAAC;IAEjE,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,uBAAuB,CAAC;IACrD,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,uBAAuB,CAAC;IAErD,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACvC,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 { CombineTexturesGeometry } from \"../CachedGeometry\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport { FragmentShaderComponent, VariablePrecision, VariableType } from \"../ShaderBuilder\";\r\nimport { ShaderProgram } from \"../ShaderProgram\";\r\nimport { Texture2DHandle } from \"../Texture\";\r\nimport { createViewportQuadBuilder } from \"./ViewportQuad\";\r\n\r\nconst computeBaseColor = \"return vec4(1.0);\";\r\n\r\nconst assignFragData = `\r\n if (v_texCoord.y < .5)\r\n FragColor = TEXTURE(u_texture0, vec2(v_texCoord.x, v_texCoord.y * 2.0));\r\n else\r\n FragColor = TEXTURE(u_texture1, vec2(v_texCoord.x, v_texCoord.y * 2.0 - 1.0));\r\n`;\r\n\r\n/** @internal */\r\nexport function createCombineTexturesProgram(context: WebGL2RenderingContext): ShaderProgram {\r\n const builder = createViewportQuadBuilder(true);\r\n const frag = builder.frag;\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeBaseColor);\r\n\r\n frag.addUniform(\"u_texture0\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_texture0\", (uniform, params) => {\r\n Texture2DHandle.bindSampler(uniform, (params.geometry as CombineTexturesGeometry).texture0, TextureUnit.Zero);\r\n });\r\n }, VariablePrecision.High);\r\n\r\n frag.addUniform(\"u_texture1\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_texture1\", (uniform, params) => {\r\n Texture2DHandle.bindSampler(uniform, (params.geometry as CombineTexturesGeometry).texture1, TextureUnit.One);\r\n });\r\n }, VariablePrecision.High);\r\n\r\n frag.set(FragmentShaderComponent.AssignFragData, assignFragData);\r\n\r\n builder.vert.headerComment = \"//!V! CombineTextures\";\r\n builder.frag.headerComment = \"//!F! CombineTextures\";\r\n\r\n return builder.buildProgram(context);\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Common.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Common.ts"],"names":[],"mappings":"AAIA;;GAEG;AAKH,OAAO,EAAE,cAAc,EAAE,aAAa,EAA4B,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"Common.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Common.ts"],"names":[],"mappings":"AAIA;;GAEG;AAKH,OAAO,EAAE,cAAc,EAAE,aAAa,EAA4B,MAAM,kBAAkB,CAAC;AAiB3F,gBAAgB;AAChB,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,aAAa,QAGtE;AAED,gBAAgB;AAChB,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,aAAa,QAGrE;AAiED,gBAAgB;AAChB,wBAAgB,cAAc,CAAC,OAAO,EAAE,cAAc,QAOrD;AAED,gBAAgB;AAChB,wBAAgB,UAAU,CAAC,OAAO,EAAE,cAAc,QAUjD;AAID,gBAAgB;AAChB,wBAAgB,WAAW,CAAC,OAAO,EAAE,cAAc,QAGlD;AAED,gBAAgB;AAChB,eAAO,MAAM,UAAU,mOAQtB,CAAC;AAcF,gBAAgB;AAChB,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAG5D"}
|
|
@@ -9,45 +9,24 @@ import { RenderType } from "@itwin/webgl-compatibility";
|
|
|
9
9
|
import { System } from "../System";
|
|
10
10
|
import { addModelViewMatrix } from "./Vertex";
|
|
11
11
|
// These are not used anywhere currently, but will leave them here commented out in case we want them later.
|
|
12
|
-
// const chooseFloatWithBitFlag = `
|
|
13
|
-
// float chooseFloatWithBitFlag(float f1, float f2, float flags, float n) { return nthBitSet(flags, n) ? f2 : f1; }
|
|
14
|
-
// `;
|
|
15
12
|
// const chooseFloatWithBitFlag2 = `
|
|
16
13
|
// float chooseFloatWithBitFlag(float f1, float f2, uint flags, uint n) { return 0u != (flags & n) ? f2 : f1; }
|
|
17
14
|
// `;
|
|
18
15
|
const chooseVec2With2BitFlags = `
|
|
19
|
-
vec2 chooseVec2With2BitFlags(vec2 v1, vec2 v2, float flags, float n1, float n2) { return (nthBitSet(flags, n1) || nthBitSet(flags, n2)) ? v2 : v1; }
|
|
20
|
-
`;
|
|
21
|
-
const chooseVec2With2BitFlags2 = `
|
|
22
16
|
vec2 chooseVec2With2BitFlags(vec2 v1, vec2 v2, uint flags, uint n1, uint n2) { return 0u != (flags & (n1 | n2)) ? v2 : v1; }
|
|
23
17
|
`;
|
|
24
18
|
const chooseVec3WithBitFlag = `
|
|
25
|
-
vec3 chooseVec3WithBitFlag(vec3 v1, vec3 v2, float flags, float n) { return nthBitSet(flags, n) ? v2 : v1; }
|
|
26
|
-
`;
|
|
27
|
-
const chooseVec3WithBitFlag2 = `
|
|
28
19
|
vec3 chooseVec3WithBitFlag(vec3 v1, vec3 v2, uint flags, uint n) { return 0u != (flags & n) ? v2 : v1; }
|
|
29
20
|
`;
|
|
30
21
|
/** @internal */
|
|
31
22
|
export function addChooseVec2WithBitFlagsFunction(shader) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
shader.addFunction(chooseVec2With2BitFlags2);
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
shader.addFunction(nthBitSet);
|
|
38
|
-
shader.addFunction(chooseVec2With2BitFlags);
|
|
39
|
-
}
|
|
23
|
+
shader.addFunction(extractNthBit);
|
|
24
|
+
shader.addFunction(chooseVec2With2BitFlags);
|
|
40
25
|
}
|
|
41
26
|
/** @internal */
|
|
42
27
|
export function addChooseVec3WithBitFlagFunction(shader) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
shader.addFunction(chooseVec3WithBitFlag2);
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
shader.addFunction(nthBitSet);
|
|
49
|
-
shader.addFunction(chooseVec3WithBitFlag);
|
|
50
|
-
}
|
|
28
|
+
shader.addFunction(extractNthBit);
|
|
29
|
+
shader.addFunction(chooseVec3WithBitFlag);
|
|
51
30
|
}
|
|
52
31
|
function addShaderFlagsConstants(shader) {
|
|
53
32
|
shader.addConstant("kShaderBit_Monochrome", 1 /* Int */, "0");
|
|
@@ -84,7 +63,7 @@ function setShaderFlags(uniform, params) {
|
|
|
84
63
|
// in calculating the color, so it means that transparency is less accurate based on Z-ordering, but it is the best we can do with
|
|
85
64
|
// this algorithm on low-end hardware.
|
|
86
65
|
// Finally, the application can put the viewport into "fadeout mode", which explicitly enables flat alpha weight in order to de-emphasize transparent geometry.
|
|
87
|
-
const maxRenderType = System.instance.
|
|
66
|
+
const maxRenderType = System.instance.maxRenderType;
|
|
88
67
|
let flatAlphaWeight = RenderType.TextureUnsignedByte === maxRenderType || params.target.isFadeOutActive;
|
|
89
68
|
if (!flatAlphaWeight) {
|
|
90
69
|
const surface = params.geometry.asSurface;
|
|
@@ -136,43 +115,18 @@ vec4 addUInt32s(vec4 a, vec4 b) {
|
|
|
136
115
|
}
|
|
137
116
|
`;
|
|
138
117
|
/** Expects flags in range [0...256] with no fraction; and bit is [0..31] with no fraction.
|
|
139
|
-
*
|
|
140
|
-
* Returns 1.0 if the nth bit is set, 0.0 otherwise.
|
|
141
|
-
* dividing flags by 2^(n+1) yields #.5##... if the nth bit is set, #.0##... otherwise
|
|
142
|
-
* Taking the fractional part yields 0.5##... or 0.0##...
|
|
143
|
-
* Multiplying by 2.0 and taking the floor yields 1.0 or 0.0
|
|
144
|
-
* but we'll take a shortcut and just test for >= 0.5 since most often we just want a bool answer.
|
|
145
|
-
* For WebGL1 we'll also pre-compute the 1/(2^(n+1)) and just do a single multiply here.
|
|
146
|
-
* @internal
|
|
118
|
+
* Return true if bit `n` is set in `flags`.
|
|
147
119
|
*/
|
|
148
120
|
const nthBitSet = `
|
|
149
|
-
bool nthBitSet(float flags, float n) { return fract(flags*n) >= 0.5; }
|
|
150
|
-
`;
|
|
151
|
-
/** Version for WebGL2 can just convert flags to a uint and bitwise-test a 0-31 uint bit.
|
|
152
|
-
* @internal
|
|
153
|
-
*/
|
|
154
|
-
const nthBitSet2 = `
|
|
155
121
|
bool nthBitSet(float flags, uint n) { return 0u != (uint(flags) & n); }
|
|
156
122
|
`;
|
|
157
|
-
/** For when we want a 1.0 or 0.0 answer the choose operator should be a single instruction.
|
|
158
|
-
* @internal
|
|
159
|
-
*/
|
|
160
|
-
const extractNthBit = `
|
|
161
|
-
float extractNthBit(float flags, float n) { return nthBitSet(flags, n) ? 1.0 : 0.0; }
|
|
162
|
-
`;
|
|
163
123
|
/** @internal */
|
|
164
|
-
const
|
|
124
|
+
const extractNthBit = `
|
|
165
125
|
float extractNthBit(float flags, uint n) { return 0u != (uint(flags) & n) ? 1.0 : 0.0; }
|
|
166
126
|
`;
|
|
167
127
|
/** @internal */
|
|
168
128
|
export function addExtractNthBit(shader) {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
shader.addFunction(extractNthBit2);
|
|
172
|
-
}
|
|
173
|
-
else {
|
|
174
|
-
shader.addFunction(nthBitSet);
|
|
175
|
-
shader.addFunction(extractNthBit);
|
|
176
|
-
}
|
|
129
|
+
shader.addFunction(nthBitSet);
|
|
130
|
+
shader.addFunction(extractNthBit);
|
|
177
131
|
}
|
|
178
132
|
//# sourceMappingURL=Common.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Common.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Common.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAIxD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE9C,4GAA4G;AAC5G,mCAAmC;AACnC,mHAAmH;AACnH,KAAK;AACL,oCAAoC;AACpC,+GAA+G;AAC/G,KAAK;AAEL,MAAM,uBAAuB,GAAG;;CAE/B,CAAC;AACF,MAAM,wBAAwB,GAAG;;CAEhC,CAAC;AAEF,MAAM,qBAAqB,GAAG;;CAE7B,CAAC;AACF,MAAM,sBAAsB,GAAG;;CAE9B,CAAC;AAEF,gBAAgB;AAChB,MAAM,UAAU,iCAAiC,CAAC,MAAqB;IACrE,IAAI,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE;QACzC,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QACnC,MAAM,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;KAC9C;SAAM;QACL,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC9B,MAAM,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;KAC7C;AACH,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,gCAAgC,CAAC,MAAqB;IACpE,IAAI,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE;QACzC,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QACnC,MAAM,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;KAC5C;SAAM;QACL,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC9B,MAAM,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;KAC3C;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,MAAqB;IACpD,MAAM,CAAC,WAAW,CAAC,uBAAuB,eAAoB,GAAG,CAAC,CAAC;IACnE,MAAM,CAAC,WAAW,CAAC,4BAA4B,eAAoB,GAAG,CAAC,CAAC;IACxE,MAAM,CAAC,WAAW,CAAC,+BAA+B,eAAoB,GAAG,CAAC,CAAC;IAC3E,MAAM,CAAC,WAAW,CAAC,2BAA2B,eAAoB,GAAG,CAAC,CAAC;IACvE,MAAM,CAAC,WAAW,CAAC,+BAA+B,eAAoB,GAAG,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,eAAe,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;AAC1C,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B,MAAM,yBAAyB,GAAG,CAAC,CAAC;AACpC,MAAM,4BAA4B,GAAG,CAAC,CAAC;AACvC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AACnC,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAEvC,SAAS,cAAc,CAAC,OAAsB,EAAE,MAAkB;IAChE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,IAAI,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9G,eAAe,CAAC,oBAAoB,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3D,eAAe,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC;IAC/C,eAAe,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;IAClD,eAAe,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;IAC9C,eAAe,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;IAElD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;IACnC,IAAI,SAAS,KAAK,IAAI,EAAE;QACtB,iGAAiG;QACjG,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,KAAK,CAAC,YAAY;YACpB,eAAe,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC;KAClD;IAED,mHAAmH;IACnH,kIAAkI;IAClI,gFAAgF;IAEhF,0HAA0H;IAC1H,mIAAmI;IACnI,kIAAkI;IAClI,sCAAsC;IAEtC,+JAA+J;IAC/J,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC;IACjE,IAAI,eAAe,GAAG,UAAU,CAAC,mBAAmB,KAAK,aAAa,IAAI,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;IACxG,IAAI,CAAC,eAAe,EAAE;QACpB,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC1C,eAAe,GAAG,SAAS,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;KACvF;IAED,IAAI,eAAe;QACjB,eAAe,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;IAEpD,mIAAmI;IACnI,sIAAsI;IACtI,IAAI,aAAa,GAAG,UAAU,CAAC,gBAAgB;QAC7C,eAAe,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;IAEhD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB;QACjC,eAAe,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;IAEpD,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;AACzC,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,cAAc,CAAC,OAAuB;IACpD,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtC,OAAO,CAAC,eAAe,CAAC,eAAe,mBAAwB,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE;QACzE,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IAChG,CAAC,CAAC,CAAC;AACL,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,UAAU,CAAC,OAAuB;IAChD,OAAO,CAAC,UAAU,CAAC,WAAW,gBAAqB,CAAC,IAAI,EAAE,EAAE;QAC1D,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtD,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,SAAS,CAAC,sBAAsB,+BAAuC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC5F,OAAO,CAAC,SAAS,CAAC,sBAAsB,+BAAuC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC5F,OAAO,CAAC,SAAS,CAAC,0BAA0B,+BAAuC,KAAK,EAAE,IAAI,CAAC,CAAC;AAClG,CAAC;AAED,MAAM,eAAe,GAAG,0CAA0C,CAAC;AAEnE,gBAAgB;AAChB,MAAM,UAAU,WAAW,CAAC,OAAuB;IACjD,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,CAAC,wBAAwB,CAAC,YAAY,gBAAqB,eAAe,CAAC,CAAC;AACrF,CAAC;AAED,gBAAgB;AAChB,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;CAQzB,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,SAAS,GAAG;;CAEjB,CAAC;AACF;;GAEG;AACH,MAAM,UAAU,GAAG;;CAElB,CAAC;AAEF;;GAEG;AACH,MAAM,aAAa,GAAG;;CAErB,CAAC;AACF,gBAAgB;AAChB,MAAM,cAAc,GAAG;;CAEtB,CAAC;AAEF,gBAAgB;AAChB,MAAM,UAAU,gBAAgB,CAAC,MAAqB;IACpD,IAAI,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE;QACzC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC/B,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;KACpC;SAAM;QACL,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC9B,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;KACnC;AACH,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 { RenderType } from \"@itwin/webgl-compatibility\";\r\nimport { DrawParams } from \"../DrawCommand\";\r\nimport { UniformHandle } from \"../UniformHandle\";\r\nimport { ProgramBuilder, ShaderBuilder, ShaderType, VariableType } from \"../ShaderBuilder\";\r\nimport { System } from \"../System\";\r\nimport { addModelViewMatrix } from \"./Vertex\";\r\n\r\n// These are not used anywhere currently, but will leave them here commented out in case we want them later.\r\n// const chooseFloatWithBitFlag = `\r\n// float chooseFloatWithBitFlag(float f1, float f2, float flags, float n) { return nthBitSet(flags, n) ? f2 : f1; }\r\n// `;\r\n// const chooseFloatWithBitFlag2 = `\r\n// float chooseFloatWithBitFlag(float f1, float f2, uint flags, uint n) { return 0u != (flags & n) ? f2 : f1; }\r\n// `;\r\n\r\nconst chooseVec2With2BitFlags = `\r\nvec2 chooseVec2With2BitFlags(vec2 v1, vec2 v2, float flags, float n1, float n2) { return (nthBitSet(flags, n1) || nthBitSet(flags, n2)) ? v2 : v1; }\r\n`;\r\nconst chooseVec2With2BitFlags2 = `\r\nvec2 chooseVec2With2BitFlags(vec2 v1, vec2 v2, uint flags, uint n1, uint n2) { return 0u != (flags & (n1 | n2)) ? v2 : v1; }\r\n`;\r\n\r\nconst chooseVec3WithBitFlag = `\r\nvec3 chooseVec3WithBitFlag(vec3 v1, vec3 v2, float flags, float n) { return nthBitSet(flags, n) ? v2 : v1; }\r\n`;\r\nconst chooseVec3WithBitFlag2 = `\r\nvec3 chooseVec3WithBitFlag(vec3 v1, vec3 v2, uint flags, uint n) { return 0u != (flags & n) ? v2 : v1; }\r\n`;\r\n\r\n/** @internal */\r\nexport function addChooseVec2WithBitFlagsFunction(shader: ShaderBuilder) {\r\n if (System.instance.capabilities.isWebGL2) {\r\n shader.addFunction(extractNthBit2);\r\n shader.addFunction(chooseVec2With2BitFlags2);\r\n } else {\r\n shader.addFunction(nthBitSet);\r\n shader.addFunction(chooseVec2With2BitFlags);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function addChooseVec3WithBitFlagFunction(shader: ShaderBuilder) {\r\n if (System.instance.capabilities.isWebGL2) {\r\n shader.addFunction(extractNthBit2);\r\n shader.addFunction(chooseVec3WithBitFlag2);\r\n } else {\r\n shader.addFunction(nthBitSet);\r\n shader.addFunction(chooseVec3WithBitFlag);\r\n }\r\n}\r\n\r\nfunction addShaderFlagsConstants(shader: ShaderBuilder) {\r\n shader.addConstant(\"kShaderBit_Monochrome\", VariableType.Int, \"0\");\r\n shader.addConstant(\"kShaderBit_NonUniformColor\", VariableType.Int, \"1\");\r\n shader.addConstant(\"kShaderBit_OITFlatAlphaWeight\", VariableType.Int, \"2\");\r\n shader.addConstant(\"kShaderBit_OITScaleOutput\", VariableType.Int, \"3\");\r\n shader.addConstant(\"kShaderBit_IgnoreNonLocatable\", VariableType.Int, \"4\");\r\n}\r\n\r\nconst shaderFlagArray = new Int32Array(5);\r\nconst kShaderBitMonochrome = 0;\r\nconst kShaderBitNonUniformColor = 1;\r\nconst kShaderBitOITFlatAlphaWeight = 2;\r\nconst kShaderBitOITScaleOutput = 3;\r\nconst kShaderBitIgnoreNonLocatable = 4;\r\n\r\nfunction setShaderFlags(uniform: UniformHandle, params: DrawParams) {\r\n const monochrome = params.target.currentViewFlags.monochrome && params.geometry.wantMonochrome(params.target);\r\n shaderFlagArray[kShaderBitMonochrome] = monochrome ? 1 : 0;\r\n\r\n shaderFlagArray[kShaderBitNonUniformColor] = 0;\r\n shaderFlagArray[kShaderBitOITFlatAlphaWeight] = 0;\r\n shaderFlagArray[kShaderBitOITScaleOutput] = 0;\r\n shaderFlagArray[kShaderBitIgnoreNonLocatable] = 0;\r\n\r\n const geom = params.geometry.asLUT;\r\n if (undefined !== geom) {\r\n // Could also be RealityMeshGeometry, so only detect non-uniform color if explicitly LUTGeometry.\r\n const color = geom.getColor(params.target);\r\n if (color.isNonUniform)\r\n shaderFlagArray[kShaderBitNonUniformColor] = 1;\r\n }\r\n\r\n // Certain textures render in the translucent pass but we actually want to maintain true opacity for opaque pixels.\r\n // For these, use a constant Z to calculate alpha weight. Otherwise, the opaque things in the texture are weighted by their Z due\r\n // to the nature of the OIT algorithm. In this case, we set OITFlatAlphaWeight.\r\n\r\n // Since RGBA8 rendering is very low precision, if we are using that kind of output, we also want to flatten alpha weight.\r\n // Otherwise, the very tiny Z range makes things fade to black as the precision limit is encountered. This workaround disregards Z\r\n // in calculating the color, so it means that transparency is less accurate based on Z-ordering, but it is the best we can do with\r\n // this algorithm on low-end hardware.\r\n\r\n // Finally, the application can put the viewport into \"fadeout mode\", which explicitly enables flat alpha weight in order to de-emphasize transparent geometry.\r\n const maxRenderType = System.instance.capabilities.maxRenderType;\r\n let flatAlphaWeight = RenderType.TextureUnsignedByte === maxRenderType || params.target.isFadeOutActive;\r\n if (!flatAlphaWeight) {\r\n const surface = params.geometry.asSurface;\r\n flatAlphaWeight = undefined !== surface && (surface.isGlyph || surface.isTileSection);\r\n }\r\n\r\n if (flatAlphaWeight)\r\n shaderFlagArray[kShaderBitOITFlatAlphaWeight] = 1;\r\n\r\n // If Cesium-style transparency is being used with non-float texture targets, we must scale the output in the shaders to 0-1 range.\r\n // Otherwise, it will get implicitly clamped to that range and we'll lose any semblance our desired precision (even though it is low).\r\n if (maxRenderType < RenderType.TextureHalfFloat)\r\n shaderFlagArray[kShaderBitOITScaleOutput] = 1;\r\n\r\n if (!params.target.drawNonLocatable)\r\n shaderFlagArray[kShaderBitIgnoreNonLocatable] = 1;\r\n\r\n uniform.setUniform1iv(shaderFlagArray);\r\n}\r\n\r\n/** @internal */\r\nexport function addShaderFlags(builder: ProgramBuilder) {\r\n addShaderFlagsConstants(builder.vert);\r\n addShaderFlagsConstants(builder.frag);\r\n\r\n builder.addUniformArray(\"u_shaderFlags\", VariableType.Boolean, 5, (prog) => {\r\n prog.addGraphicUniform(\"u_shaderFlags\", (uniform, params) => setShaderFlags(uniform, params));\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function addFrustum(builder: ProgramBuilder) {\r\n builder.addUniform(\"u_frustum\", VariableType.Vec3, (prog) => {\r\n prog.addProgramUniform(\"u_frustum\", (uniform, params) => {\r\n uniform.setUniform3fv(params.target.uniforms.frustum.frustum);\r\n });\r\n });\r\n\r\n builder.addGlobal(\"kFrustumType_Ortho2d\", VariableType.Float, ShaderType.Both, \"0.0\", true);\r\n builder.addGlobal(\"kFrustumType_Ortho3d\", VariableType.Float, ShaderType.Both, \"1.0\", true);\r\n builder.addGlobal(\"kFrustumType_Perspective\", VariableType.Float, ShaderType.Both, \"2.0\", true);\r\n}\r\n\r\nconst computeEyeSpace = \"v_eyeSpace = (MAT_MV * rawPosition).rgb;\";\r\n\r\n/** @internal */\r\nexport function addEyeSpace(builder: ProgramBuilder) {\r\n addModelViewMatrix(builder.vert);\r\n builder.addInlineComputedVarying(\"v_eyeSpace\", VariableType.Vec3, computeEyeSpace);\r\n}\r\n\r\n/** @internal */\r\nexport const addUInt32s = `\r\nvec4 addUInt32s(vec4 a, vec4 b) {\r\n vec4 c = a + b;\r\n if (c.x > 255.0) { c.x -= 256.0; c.y += 1.0; }\r\n if (c.y > 255.0) { c.y -= 256.0; c.z += 1.0; }\r\n if (c.z > 255.0) { c.z -= 256.0; c.w += 1.0; }\r\n return c;\r\n}\r\n`;\r\n\r\n/** Expects flags in range [0...256] with no fraction; and bit is [0..31] with no fraction.\r\n * (Note that this really won't work for more than [0-22] since a float doesn't have the precision.)\r\n * Returns 1.0 if the nth bit is set, 0.0 otherwise.\r\n * dividing flags by 2^(n+1) yields #.5##... if the nth bit is set, #.0##... otherwise\r\n * Taking the fractional part yields 0.5##... or 0.0##...\r\n * Multiplying by 2.0 and taking the floor yields 1.0 or 0.0\r\n * but we'll take a shortcut and just test for >= 0.5 since most often we just want a bool answer.\r\n * For WebGL1 we'll also pre-compute the 1/(2^(n+1)) and just do a single multiply here.\r\n * @internal\r\n */\r\nconst nthBitSet = `\r\nbool nthBitSet(float flags, float n) { return fract(flags*n) >= 0.5; }\r\n`;\r\n/** Version for WebGL2 can just convert flags to a uint and bitwise-test a 0-31 uint bit.\r\n * @internal\r\n */\r\nconst nthBitSet2 = `\r\nbool nthBitSet(float flags, uint n) { return 0u != (uint(flags) & n); }\r\n`;\r\n\r\n/** For when we want a 1.0 or 0.0 answer the choose operator should be a single instruction.\r\n * @internal\r\n */\r\nconst extractNthBit = `\r\nfloat extractNthBit(float flags, float n) { return nthBitSet(flags, n) ? 1.0 : 0.0; }\r\n`;\r\n/** @internal */\r\nconst extractNthBit2 = `\r\nfloat extractNthBit(float flags, uint n) { return 0u != (uint(flags) & n) ? 1.0 : 0.0; }\r\n`;\r\n\r\n/** @internal */\r\nexport function addExtractNthBit(shader: ShaderBuilder): void {\r\n if (System.instance.capabilities.isWebGL2) {\r\n shader.addFunction(nthBitSet2);\r\n shader.addFunction(extractNthBit2);\r\n } else {\r\n shader.addFunction(nthBitSet);\r\n shader.addFunction(extractNthBit);\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"Common.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Common.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 { RenderType } from \"@itwin/webgl-compatibility\";\r\nimport { DrawParams } from \"../DrawCommand\";\r\nimport { UniformHandle } from \"../UniformHandle\";\r\nimport { ProgramBuilder, ShaderBuilder, ShaderType, VariableType } from \"../ShaderBuilder\";\r\nimport { System } from \"../System\";\r\nimport { addModelViewMatrix } from \"./Vertex\";\r\n\r\n// These are not used anywhere currently, but will leave them here commented out in case we want them later.\r\n// const chooseFloatWithBitFlag2 = `\r\n// float chooseFloatWithBitFlag(float f1, float f2, uint flags, uint n) { return 0u != (flags & n) ? f2 : f1; }\r\n// `;\r\n\r\nconst chooseVec2With2BitFlags = `\r\nvec2 chooseVec2With2BitFlags(vec2 v1, vec2 v2, uint flags, uint n1, uint n2) { return 0u != (flags & (n1 | n2)) ? v2 : v1; }\r\n`;\r\n\r\nconst chooseVec3WithBitFlag = `\r\nvec3 chooseVec3WithBitFlag(vec3 v1, vec3 v2, uint flags, uint n) { return 0u != (flags & n) ? v2 : v1; }\r\n`;\r\n\r\n/** @internal */\r\nexport function addChooseVec2WithBitFlagsFunction(shader: ShaderBuilder) {\r\n shader.addFunction(extractNthBit);\r\n shader.addFunction(chooseVec2With2BitFlags);\r\n}\r\n\r\n/** @internal */\r\nexport function addChooseVec3WithBitFlagFunction(shader: ShaderBuilder) {\r\n shader.addFunction(extractNthBit);\r\n shader.addFunction(chooseVec3WithBitFlag);\r\n}\r\n\r\nfunction addShaderFlagsConstants(shader: ShaderBuilder) {\r\n shader.addConstant(\"kShaderBit_Monochrome\", VariableType.Int, \"0\");\r\n shader.addConstant(\"kShaderBit_NonUniformColor\", VariableType.Int, \"1\");\r\n shader.addConstant(\"kShaderBit_OITFlatAlphaWeight\", VariableType.Int, \"2\");\r\n shader.addConstant(\"kShaderBit_OITScaleOutput\", VariableType.Int, \"3\");\r\n shader.addConstant(\"kShaderBit_IgnoreNonLocatable\", VariableType.Int, \"4\");\r\n}\r\n\r\nconst shaderFlagArray = new Int32Array(5);\r\nconst kShaderBitMonochrome = 0;\r\nconst kShaderBitNonUniformColor = 1;\r\nconst kShaderBitOITFlatAlphaWeight = 2;\r\nconst kShaderBitOITScaleOutput = 3;\r\nconst kShaderBitIgnoreNonLocatable = 4;\r\n\r\nfunction setShaderFlags(uniform: UniformHandle, params: DrawParams) {\r\n const monochrome = params.target.currentViewFlags.monochrome && params.geometry.wantMonochrome(params.target);\r\n shaderFlagArray[kShaderBitMonochrome] = monochrome ? 1 : 0;\r\n\r\n shaderFlagArray[kShaderBitNonUniformColor] = 0;\r\n shaderFlagArray[kShaderBitOITFlatAlphaWeight] = 0;\r\n shaderFlagArray[kShaderBitOITScaleOutput] = 0;\r\n shaderFlagArray[kShaderBitIgnoreNonLocatable] = 0;\r\n\r\n const geom = params.geometry.asLUT;\r\n if (undefined !== geom) {\r\n // Could also be RealityMeshGeometry, so only detect non-uniform color if explicitly LUTGeometry.\r\n const color = geom.getColor(params.target);\r\n if (color.isNonUniform)\r\n shaderFlagArray[kShaderBitNonUniformColor] = 1;\r\n }\r\n\r\n // Certain textures render in the translucent pass but we actually want to maintain true opacity for opaque pixels.\r\n // For these, use a constant Z to calculate alpha weight. Otherwise, the opaque things in the texture are weighted by their Z due\r\n // to the nature of the OIT algorithm. In this case, we set OITFlatAlphaWeight.\r\n\r\n // Since RGBA8 rendering is very low precision, if we are using that kind of output, we also want to flatten alpha weight.\r\n // Otherwise, the very tiny Z range makes things fade to black as the precision limit is encountered. This workaround disregards Z\r\n // in calculating the color, so it means that transparency is less accurate based on Z-ordering, but it is the best we can do with\r\n // this algorithm on low-end hardware.\r\n\r\n // Finally, the application can put the viewport into \"fadeout mode\", which explicitly enables flat alpha weight in order to de-emphasize transparent geometry.\r\n const maxRenderType = System.instance.maxRenderType;\r\n let flatAlphaWeight = RenderType.TextureUnsignedByte === maxRenderType || params.target.isFadeOutActive;\r\n if (!flatAlphaWeight) {\r\n const surface = params.geometry.asSurface;\r\n flatAlphaWeight = undefined !== surface && (surface.isGlyph || surface.isTileSection);\r\n }\r\n\r\n if (flatAlphaWeight)\r\n shaderFlagArray[kShaderBitOITFlatAlphaWeight] = 1;\r\n\r\n // If Cesium-style transparency is being used with non-float texture targets, we must scale the output in the shaders to 0-1 range.\r\n // Otherwise, it will get implicitly clamped to that range and we'll lose any semblance our desired precision (even though it is low).\r\n if (maxRenderType < RenderType.TextureHalfFloat)\r\n shaderFlagArray[kShaderBitOITScaleOutput] = 1;\r\n\r\n if (!params.target.drawNonLocatable)\r\n shaderFlagArray[kShaderBitIgnoreNonLocatable] = 1;\r\n\r\n uniform.setUniform1iv(shaderFlagArray);\r\n}\r\n\r\n/** @internal */\r\nexport function addShaderFlags(builder: ProgramBuilder) {\r\n addShaderFlagsConstants(builder.vert);\r\n addShaderFlagsConstants(builder.frag);\r\n\r\n builder.addUniformArray(\"u_shaderFlags\", VariableType.Boolean, 5, (prog) => {\r\n prog.addGraphicUniform(\"u_shaderFlags\", (uniform, params) => setShaderFlags(uniform, params));\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function addFrustum(builder: ProgramBuilder) {\r\n builder.addUniform(\"u_frustum\", VariableType.Vec3, (prog) => {\r\n prog.addProgramUniform(\"u_frustum\", (uniform, params) => {\r\n uniform.setUniform3fv(params.target.uniforms.frustum.frustum);\r\n });\r\n });\r\n\r\n builder.addGlobal(\"kFrustumType_Ortho2d\", VariableType.Float, ShaderType.Both, \"0.0\", true);\r\n builder.addGlobal(\"kFrustumType_Ortho3d\", VariableType.Float, ShaderType.Both, \"1.0\", true);\r\n builder.addGlobal(\"kFrustumType_Perspective\", VariableType.Float, ShaderType.Both, \"2.0\", true);\r\n}\r\n\r\nconst computeEyeSpace = \"v_eyeSpace = (MAT_MV * rawPosition).rgb;\";\r\n\r\n/** @internal */\r\nexport function addEyeSpace(builder: ProgramBuilder) {\r\n addModelViewMatrix(builder.vert);\r\n builder.addInlineComputedVarying(\"v_eyeSpace\", VariableType.Vec3, computeEyeSpace);\r\n}\r\n\r\n/** @internal */\r\nexport const addUInt32s = `\r\nvec4 addUInt32s(vec4 a, vec4 b) {\r\n vec4 c = a + b;\r\n if (c.x > 255.0) { c.x -= 256.0; c.y += 1.0; }\r\n if (c.y > 255.0) { c.y -= 256.0; c.z += 1.0; }\r\n if (c.z > 255.0) { c.z -= 256.0; c.w += 1.0; }\r\n return c;\r\n}\r\n`;\r\n\r\n/** Expects flags in range [0...256] with no fraction; and bit is [0..31] with no fraction.\r\n * Return true if bit `n` is set in `flags`.\r\n */\r\nconst nthBitSet = `\r\nbool nthBitSet(float flags, uint n) { return 0u != (uint(flags) & n); }\r\n`;\r\n\r\n/** @internal */\r\nconst extractNthBit = `\r\nfloat extractNthBit(float flags, uint n) { return 0u != (uint(flags) & n) ? 1.0 : 0.0; }\r\n`;\r\n\r\n/** @internal */\r\nexport function addExtractNthBit(shader: ShaderBuilder): void {\r\n shader.addFunction(nthBitSet);\r\n shader.addFunction(extractNthBit);\r\n}\r\n"]}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
/** @packageDocumentation
|
|
2
2
|
* @module WebGL
|
|
3
3
|
*/
|
|
4
|
-
import { WebGLContext } from "@itwin/webgl-compatibility";
|
|
5
4
|
import { CompositeFlags } from "../RenderFlags";
|
|
6
5
|
import { ShaderProgram } from "../ShaderProgram";
|
|
7
6
|
/** @internal */
|
|
8
|
-
export declare function createCompositeProgram(flags: CompositeFlags, context:
|
|
7
|
+
export declare function createCompositeProgram(flags: CompositeFlags, context: WebGL2RenderingContext): ShaderProgram;
|
|
9
8
|
//# sourceMappingURL=Composite.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Composite.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Composite.ts"],"names":[],"mappings":"AAIA;;GAEG;
|
|
1
|
+
{"version":3,"file":"Composite.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Composite.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EAAE,cAAc,EAAe,MAAM,gBAAgB,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AA4GjD,gBAAgB;AAChB,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,sBAAsB,GAAG,aAAa,CAyE5G"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Composite.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Composite.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 { WebGLContext } from \"@itwin/webgl-compatibility\";\r\nimport { CompositeGeometry } from \"../CachedGeometry\";\r\nimport { CompositeFlags, TextureUnit } from \"../RenderFlags\";\r\nimport { FragmentShaderBuilder, FragmentShaderComponent, VariableType } from \"../ShaderBuilder\";\r\nimport { ShaderProgram } from \"../ShaderProgram\";\r\nimport { Texture2DHandle } from \"../Texture\";\r\nimport { addWindowToTexCoords, assignFragColor } from \"./Fragment\";\r\nimport { createViewportQuadBuilder } from \"./ViewportQuad\";\r\n\r\nfunction addHiliteSettings(frag: FragmentShaderBuilder): void {\r\n frag.addUniform(\"u_hilite_settings\", VariableType.Mat3, (prog) => {\r\n prog.addProgramUniform(\"u_hilite_settings\", (uniform, params) => {\r\n params.target.uniforms.hilite.bindCompositeSettings(uniform);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_hilite_width\", VariableType.Vec2, (prog) => {\r\n prog.addProgramUniform(\"u_hilite_width\", (uniform, params) => {\r\n params.target.uniforms.hilite.bindCompositeWidths(uniform);\r\n });\r\n });\r\n}\r\n\r\nconst readEdgePixel = `\r\nvec2 readEdgePixel(float xOffset, float yOffset) {\r\n vec2 t = windowCoordsToTexCoords(gl_FragCoord.xy + vec2(xOffset, yOffset));\r\n return TEXTURE(u_hilite, t).xy;\r\n}\r\n`;\r\n\r\nconst computeNearbyHilites = `\r\nvec2 computeNearbyHilites() {\r\n float hiliteWidth = u_hilite_width.x;\r\n float emphWidth = u_hilite_width.y;\r\n float maxWidth = max(hiliteWidth, emphWidth);\r\n if (0.0 == maxWidth)\r\n return vec2(0.0);\r\n\r\n vec2 nearest = vec2(0.0, 0.0);\r\n for (int x = -1; x <= 1; x++)\r\n for (int y = -1; y <= 1; y++)\r\n if (0 != x || 0 != y)\r\n nearest = nearest + readEdgePixel(float(x), float(y));\r\n\r\n nearest = nearest * vec2(float(hiliteWidth > 0.0), float(emphWidth > 0.0));\r\n\r\n if ((0.0 == nearest.x && hiliteWidth > 1.0) || (0.0 == nearest.y && emphWidth > 1.0)) {\r\n vec2 farthest = vec2(0.0, 0.0);\r\n for (int i = -2; i <= 2; i++) {\r\n float f = float(i);\r\n farthest = farthest + readEdgePixel(f, -2.0) + readEdgePixel(-2.0, f) + readEdgePixel(f, 2.0) + readEdgePixel(2.0, f);\r\n }\r\n\r\n farthest = farthest * vec2(float(hiliteWidth > 1.0), float(emphWidth > 1.0));\r\n nearest = nearest + farthest;\r\n }\r\n\r\n return nearest;\r\n}\r\n`;\r\n\r\nconst computeOpaqueColor = `\r\nvec4 computeOpaqueColor() {\r\n vec4 opaque = TEXTURE(u_opaque, v_texCoord);\r\n opaque.rgb *= computeAmbientOcclusion();\r\n return opaque;\r\n}\r\n`;\r\n\r\nconst computeDefaultAmbientOcclusion = `\\nfloat computeAmbientOcclusion() { return 1.0; }\\n`;\r\nconst computeAmbientOcclusion = `\\nfloat computeAmbientOcclusion() { return TEXTURE(u_occlusion, v_texCoord).r; }\\n`;\r\n\r\nconst computeHiliteColor = \"\\nvec4 computeColor() { return computeOpaqueColor(); }\\n\";\r\n\r\nconst computeHiliteBaseColor = `\r\n vec4 baseColor = computeColor();\r\n vec2 flags = TEXTURE(u_hilite, v_texCoord).rg;\r\n vec2 outline = computeNearbyHilites();\r\n if (u_hilite_width.y < u_hilite_width.x) { // check for emphasis outline first if it is thinner\r\n if (outline.y > 0.0 && flags.y == 0.0)\r\n return vec4(u_hilite_settings[1], 1.0);\r\n if (outline.x > 0.0 && flags.x == 0.0)\r\n return vec4(u_hilite_settings[0], 1.0);\r\n } else {\r\n if (outline.x > 0.0 && flags.x == 0.0)\r\n return vec4(u_hilite_settings[0], 1.0);\r\n if (outline.y > 0.0 && flags.y == 0.0)\r\n return vec4(u_hilite_settings[1], 1.0);\r\n }\r\n float hiliteMix = flags.x * u_hilite_settings[2][0];\r\n float emphasisMix = flags.y * u_hilite_settings[2][1];\r\n baseColor.rgb *= (1.0 - (hiliteMix + emphasisMix));\r\n baseColor.rgb += u_hilite_settings[0] * hiliteMix;\r\n baseColor.rgb += u_hilite_settings[1] * emphasisMix;\r\n return baseColor;\r\n`;\r\n\r\nconst computeTranslucentColor = `\r\nvec4 computeColor() {\r\n vec4 opaque = computeOpaqueColor();\r\n vec4 accum = TEXTURE(u_accumulation, v_texCoord);\r\n float r = TEXTURE(u_revealage, v_texCoord).r;\r\n\r\n vec4 transparent = vec4(accum.rgb / clamp(r, 1e-4, 5e4), accum.a);\r\n vec4 col = (1.0 - transparent.a) * transparent + transparent.a * opaque;\r\n return col;\r\n}\r\n`;\r\n\r\nconst computeTranslucentBaseColor = \"return computeColor();\";\r\nconst computeAmbientOcclusionBaseColor = \"return computeOpaqueColor();\";\r\n\r\n/** @internal */\r\nexport function createCompositeProgram(flags: CompositeFlags, context: WebGLContext): ShaderProgram {\r\n assert(CompositeFlags.None !== flags);\r\n\r\n const wantHilite = CompositeFlags.None !== (flags & CompositeFlags.Hilite);\r\n const wantTranslucent = CompositeFlags.None !== (flags & CompositeFlags.Translucent);\r\n const wantOcclusion = CompositeFlags.None !== (flags & CompositeFlags.AmbientOcclusion);\r\n\r\n const builder = createViewportQuadBuilder(true);\r\n const frag = builder.frag;\r\n\r\n frag.addFunction(wantOcclusion ? computeAmbientOcclusion : computeDefaultAmbientOcclusion);\r\n frag.addFunction(computeOpaqueColor);\r\n\r\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\r\n frag.addUniform(\"u_opaque\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_opaque\", (uniform, params) => {\r\n Texture2DHandle.bindSampler(uniform, (params.geometry as CompositeGeometry).opaque, TextureUnit.Zero);\r\n });\r\n });\r\n\r\n if (wantHilite) {\r\n addHiliteSettings(frag);\r\n addWindowToTexCoords(frag);\r\n frag.addFunction(readEdgePixel);\r\n frag.addFunction(computeNearbyHilites);\r\n\r\n frag.addUniform(\"u_hilite\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_hilite\", (uniform, params) => {\r\n Texture2DHandle.bindSampler(uniform, (params.geometry as CompositeGeometry).hilite, TextureUnit.Three);\r\n });\r\n });\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeHiliteBaseColor);\r\n if (!wantTranslucent) {\r\n frag.addFunction(computeHiliteColor);\r\n }\r\n }\r\n\r\n if (wantTranslucent) {\r\n frag.addUniform(\"u_accumulation\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_accumulation\", (uniform, params) => {\r\n Texture2DHandle.bindSampler(uniform, (params.geometry as CompositeGeometry).accum, TextureUnit.One);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_revealage\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_revealage\", (uniform, params) => {\r\n Texture2DHandle.bindSampler(uniform, (params.geometry as CompositeGeometry).reveal, TextureUnit.Two);\r\n });\r\n });\r\n\r\n frag.addFunction(computeTranslucentColor);\r\n if (!wantHilite) {\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeTranslucentBaseColor);\r\n }\r\n }\r\n\r\n if (wantOcclusion) {\r\n frag.addUniform(\"u_occlusion\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_occlusion\", (uniform, params) => {\r\n Texture2DHandle.bindSampler(uniform, (params.geometry as CompositeGeometry).occlusion!, TextureUnit.Four);\r\n });\r\n });\r\n\r\n if (!wantHilite && !wantTranslucent)\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeAmbientOcclusionBaseColor);\r\n }\r\n\r\n const flagString = (wantHilite ? \"-Hilite\" : \"\") + (wantTranslucent ? \"-Translucent\" : \"\") + (wantOcclusion ? \"-Occlusion\" : \"\");\r\n builder.vert.headerComment = `//!V! CombineTextures${flagString}`;\r\n builder.frag.headerComment = `//!F! CombineTextures${flagString}`;\r\n\r\n return builder.buildProgram(context);\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"Composite.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Composite.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 { CompositeGeometry } from \"../CachedGeometry\";\r\nimport { CompositeFlags, TextureUnit } from \"../RenderFlags\";\r\nimport { FragmentShaderBuilder, FragmentShaderComponent, VariableType } from \"../ShaderBuilder\";\r\nimport { ShaderProgram } from \"../ShaderProgram\";\r\nimport { Texture2DHandle } from \"../Texture\";\r\nimport { addWindowToTexCoords, assignFragColor } from \"./Fragment\";\r\nimport { createViewportQuadBuilder } from \"./ViewportQuad\";\r\n\r\nfunction addHiliteSettings(frag: FragmentShaderBuilder): void {\r\n frag.addUniform(\"u_hilite_settings\", VariableType.Mat3, (prog) => {\r\n prog.addProgramUniform(\"u_hilite_settings\", (uniform, params) => {\r\n params.target.uniforms.hilite.bindCompositeSettings(uniform);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_hilite_width\", VariableType.Vec2, (prog) => {\r\n prog.addProgramUniform(\"u_hilite_width\", (uniform, params) => {\r\n params.target.uniforms.hilite.bindCompositeWidths(uniform);\r\n });\r\n });\r\n}\r\n\r\nconst readEdgePixel = `\r\nvec2 readEdgePixel(float xOffset, float yOffset) {\r\n vec2 t = windowCoordsToTexCoords(gl_FragCoord.xy + vec2(xOffset, yOffset));\r\n return TEXTURE(u_hilite, t).xy;\r\n}\r\n`;\r\n\r\nconst computeNearbyHilites = `\r\nvec2 computeNearbyHilites() {\r\n float hiliteWidth = u_hilite_width.x;\r\n float emphWidth = u_hilite_width.y;\r\n float maxWidth = max(hiliteWidth, emphWidth);\r\n if (0.0 == maxWidth)\r\n return vec2(0.0);\r\n\r\n vec2 nearest = vec2(0.0, 0.0);\r\n for (int x = -1; x <= 1; x++)\r\n for (int y = -1; y <= 1; y++)\r\n if (0 != x || 0 != y)\r\n nearest = nearest + readEdgePixel(float(x), float(y));\r\n\r\n nearest = nearest * vec2(float(hiliteWidth > 0.0), float(emphWidth > 0.0));\r\n\r\n if ((0.0 == nearest.x && hiliteWidth > 1.0) || (0.0 == nearest.y && emphWidth > 1.0)) {\r\n vec2 farthest = vec2(0.0, 0.0);\r\n for (int i = -2; i <= 2; i++) {\r\n float f = float(i);\r\n farthest = farthest + readEdgePixel(f, -2.0) + readEdgePixel(-2.0, f) + readEdgePixel(f, 2.0) + readEdgePixel(2.0, f);\r\n }\r\n\r\n farthest = farthest * vec2(float(hiliteWidth > 1.0), float(emphWidth > 1.0));\r\n nearest = nearest + farthest;\r\n }\r\n\r\n return nearest;\r\n}\r\n`;\r\n\r\nconst computeOpaqueColor = `\r\nvec4 computeOpaqueColor() {\r\n vec4 opaque = TEXTURE(u_opaque, v_texCoord);\r\n opaque.rgb *= computeAmbientOcclusion();\r\n return opaque;\r\n}\r\n`;\r\n\r\nconst computeDefaultAmbientOcclusion = `\\nfloat computeAmbientOcclusion() { return 1.0; }\\n`;\r\nconst computeAmbientOcclusion = `\\nfloat computeAmbientOcclusion() { return TEXTURE(u_occlusion, v_texCoord).r; }\\n`;\r\n\r\nconst computeHiliteColor = \"\\nvec4 computeColor() { return computeOpaqueColor(); }\\n\";\r\n\r\nconst computeHiliteBaseColor = `\r\n vec4 baseColor = computeColor();\r\n vec2 flags = TEXTURE(u_hilite, v_texCoord).rg;\r\n vec2 outline = computeNearbyHilites();\r\n if (u_hilite_width.y < u_hilite_width.x) { // check for emphasis outline first if it is thinner\r\n if (outline.y > 0.0 && flags.y == 0.0)\r\n return vec4(u_hilite_settings[1], 1.0);\r\n if (outline.x > 0.0 && flags.x == 0.0)\r\n return vec4(u_hilite_settings[0], 1.0);\r\n } else {\r\n if (outline.x > 0.0 && flags.x == 0.0)\r\n return vec4(u_hilite_settings[0], 1.0);\r\n if (outline.y > 0.0 && flags.y == 0.0)\r\n return vec4(u_hilite_settings[1], 1.0);\r\n }\r\n float hiliteMix = flags.x * u_hilite_settings[2][0];\r\n float emphasisMix = flags.y * u_hilite_settings[2][1];\r\n baseColor.rgb *= (1.0 - (hiliteMix + emphasisMix));\r\n baseColor.rgb += u_hilite_settings[0] * hiliteMix;\r\n baseColor.rgb += u_hilite_settings[1] * emphasisMix;\r\n return baseColor;\r\n`;\r\n\r\nconst computeTranslucentColor = `\r\nvec4 computeColor() {\r\n vec4 opaque = computeOpaqueColor();\r\n vec4 accum = TEXTURE(u_accumulation, v_texCoord);\r\n float r = TEXTURE(u_revealage, v_texCoord).r;\r\n\r\n vec4 transparent = vec4(accum.rgb / clamp(r, 1e-4, 5e4), accum.a);\r\n vec4 col = (1.0 - transparent.a) * transparent + transparent.a * opaque;\r\n return col;\r\n}\r\n`;\r\n\r\nconst computeTranslucentBaseColor = \"return computeColor();\";\r\nconst computeAmbientOcclusionBaseColor = \"return computeOpaqueColor();\";\r\n\r\n/** @internal */\r\nexport function createCompositeProgram(flags: CompositeFlags, context: WebGL2RenderingContext): ShaderProgram {\r\n assert(CompositeFlags.None !== flags);\r\n\r\n const wantHilite = CompositeFlags.None !== (flags & CompositeFlags.Hilite);\r\n const wantTranslucent = CompositeFlags.None !== (flags & CompositeFlags.Translucent);\r\n const wantOcclusion = CompositeFlags.None !== (flags & CompositeFlags.AmbientOcclusion);\r\n\r\n const builder = createViewportQuadBuilder(true);\r\n const frag = builder.frag;\r\n\r\n frag.addFunction(wantOcclusion ? computeAmbientOcclusion : computeDefaultAmbientOcclusion);\r\n frag.addFunction(computeOpaqueColor);\r\n\r\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\r\n frag.addUniform(\"u_opaque\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_opaque\", (uniform, params) => {\r\n Texture2DHandle.bindSampler(uniform, (params.geometry as CompositeGeometry).opaque, TextureUnit.Zero);\r\n });\r\n });\r\n\r\n if (wantHilite) {\r\n addHiliteSettings(frag);\r\n addWindowToTexCoords(frag);\r\n frag.addFunction(readEdgePixel);\r\n frag.addFunction(computeNearbyHilites);\r\n\r\n frag.addUniform(\"u_hilite\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_hilite\", (uniform, params) => {\r\n Texture2DHandle.bindSampler(uniform, (params.geometry as CompositeGeometry).hilite, TextureUnit.Three);\r\n });\r\n });\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeHiliteBaseColor);\r\n if (!wantTranslucent) {\r\n frag.addFunction(computeHiliteColor);\r\n }\r\n }\r\n\r\n if (wantTranslucent) {\r\n frag.addUniform(\"u_accumulation\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_accumulation\", (uniform, params) => {\r\n Texture2DHandle.bindSampler(uniform, (params.geometry as CompositeGeometry).accum, TextureUnit.One);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_revealage\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_revealage\", (uniform, params) => {\r\n Texture2DHandle.bindSampler(uniform, (params.geometry as CompositeGeometry).reveal, TextureUnit.Two);\r\n });\r\n });\r\n\r\n frag.addFunction(computeTranslucentColor);\r\n if (!wantHilite) {\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeTranslucentBaseColor);\r\n }\r\n }\r\n\r\n if (wantOcclusion) {\r\n frag.addUniform(\"u_occlusion\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_occlusion\", (uniform, params) => {\r\n Texture2DHandle.bindSampler(uniform, (params.geometry as CompositeGeometry).occlusion!, TextureUnit.Four);\r\n });\r\n });\r\n\r\n if (!wantHilite && !wantTranslucent)\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeAmbientOcclusionBaseColor);\r\n }\r\n\r\n const flagString = (wantHilite ? \"-Hilite\" : \"\") + (wantTranslucent ? \"-Translucent\" : \"\") + (wantOcclusion ? \"-Occlusion\" : \"\");\r\n builder.vert.headerComment = `//!V! CombineTextures${flagString}`;\r\n builder.frag.headerComment = `//!F! CombineTextures${flagString}`;\r\n\r\n return builder.buildProgram(context);\r\n}\r\n"]}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
/** @packageDocumentation
|
|
2
2
|
* @module WebGL
|
|
3
3
|
*/
|
|
4
|
-
import { WebGLContext } from "@itwin/webgl-compatibility";
|
|
5
4
|
import { ShaderProgram } from "../ShaderProgram";
|
|
6
5
|
/** @internal */
|
|
7
|
-
export declare function createCopyColorProgram(context:
|
|
6
|
+
export declare function createCopyColorProgram(context: WebGL2RenderingContext, copyAlpha?: boolean): ShaderProgram;
|
|
8
7
|
//# sourceMappingURL=CopyColor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CopyColor.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/CopyColor.ts"],"names":[],"mappings":"AAIA;;GAEG;
|
|
1
|
+
{"version":3,"file":"CopyColor.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/CopyColor.ts"],"names":[],"mappings":"AAIA;;GAEG;AAKH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAiBjD,gBAAgB;AAChB,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,EAAE,SAAS,GAAE,OAAc,GAAG,aAAa,CA0BhH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CopyColor.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/CopyColor.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;
|
|
1
|
+
{"version":3,"file":"CopyColor.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/CopyColor.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,MAAM,YAAY,GAAG,sCAAsC,CAAC;AAE5D,6FAA6F;AAC7F,+BAA+B;AAC/B,MAAM,mBAAmB,GAAG;;;;;;CAM3B,CAAC;AAEF,gBAAgB;AAChB,MAAM,UAAU,sBAAsB,CAAC,OAA+B,EAAE,YAAqB,IAAI;IAC/F,MAAM,OAAO,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,IAAI,CAAC,GAAG,2BAA2C,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IACnG,IAAI,CAAC,GAAG,0BAAyC,eAAe,CAAC,CAAC;IAClE,IAAI,CAAC,UAAU,CAAC,SAAS,qBAA0B,CAAC,IAAI,EAAE,EAAE;QAC1D,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACpD,MAAM,IAAI,GAAG,MAAM,CAAC,QAA8C,CAAC;YACnE,eAAe,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,SAAS,EAAE;QACd,IAAI,CAAC,UAAU,CAAC,WAAW,gBAAqB,CAAC,IAAI,EAAE,EAAE;YACvD,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACtD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;KACJ;IAED,MAAM,UAAU,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC3D,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,kBAAkB,UAAU,EAAE,CAAC;IAC5D,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,kBAAkB,UAAU,EAAE,CAAC;IAE5D,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACvC,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 { SingleTexturedViewportQuadGeometry } from \"../CachedGeometry\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport { FragmentShaderComponent, VariableType } from \"../ShaderBuilder\";\r\nimport { ShaderProgram } from \"../ShaderProgram\";\r\nimport { Texture2DHandle } from \"../Texture\";\r\nimport { assignFragColor } from \"./Fragment\";\r\nimport { createViewportQuadBuilder } from \"./ViewportQuad\";\r\n\r\nconst computeColor = \"return TEXTURE(u_color, v_texCoord);\";\r\n\r\n// Transparent background color will not have premultiplied alpha - multiply it when copying.\r\n// Set all other pixels opaque.\r\nconst computeColorNoAlpha = `\r\n vec4 color = TEXTURE(u_color, v_texCoord);\r\n if (color == u_bgColor)\r\n return vec4(color.rgb * color.a, color.a);\r\n else\r\n return vec4(color.rgb, 1.0);\r\n`;\r\n\r\n/** @internal */\r\nexport function createCopyColorProgram(context: WebGL2RenderingContext, copyAlpha: boolean = true): ShaderProgram {\r\n const builder = createViewportQuadBuilder(true);\r\n const frag = builder.frag;\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, copyAlpha ? computeColor : computeColorNoAlpha);\r\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\r\n frag.addUniform(\"u_color\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_color\", (uniform, params) => {\r\n const geom = params.geometry as SingleTexturedViewportQuadGeometry;\r\n Texture2DHandle.bindSampler(uniform, geom.texture, TextureUnit.Zero);\r\n });\r\n });\r\n\r\n if (!copyAlpha) {\r\n frag.addUniform(\"u_bgColor\", VariableType.Vec4, (prog) => {\r\n prog.addProgramUniform(\"u_bgColor\", (uniform, params) => {\r\n params.target.uniforms.style.bindBackgroundRgba(uniform);\r\n });\r\n });\r\n }\r\n\r\n const flagString = (copyAlpha ? \"-CopyAlpha\" : \"-NoAlpha\");\r\n builder.vert.headerComment = `//!V! CopyColor${flagString}`;\r\n builder.frag.headerComment = `//!F! CopyColor${flagString}`;\r\n\r\n return builder.buildProgram(context);\r\n}\r\n"]}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
/** @packageDocumentation
|
|
2
2
|
* @module WebGL
|
|
3
3
|
*/
|
|
4
|
-
import { WebGLContext } from "@itwin/webgl-compatibility";
|
|
5
4
|
import { ShaderProgram } from "../ShaderProgram";
|
|
6
5
|
/** @internal */
|
|
7
|
-
export declare function createCopyPickBuffersProgram(context:
|
|
6
|
+
export declare function createCopyPickBuffersProgram(context: WebGL2RenderingContext): ShaderProgram;
|
|
8
7
|
//# sourceMappingURL=CopyPickBuffers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CopyPickBuffers.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/CopyPickBuffers.ts"],"names":[],"mappings":"AAIA;;GAEG;
|
|
1
|
+
{"version":3,"file":"CopyPickBuffers.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/CopyPickBuffers.ts"],"names":[],"mappings":"AAIA;;GAEG;AAKH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAWjD,gBAAgB;AAChB,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,sBAAsB,GAAG,aAAa,CAyB3F"}
|