@itwin/core-frontend 4.10.0-dev.2 → 4.10.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 +33 -1
- package/lib/cjs/AccuSnap.d.ts.map +1 -1
- package/lib/cjs/AccuSnap.js +9 -5
- package/lib/cjs/AccuSnap.js.map +1 -1
- package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
- package/lib/cjs/DisplayStyleState.js +5 -1
- package/lib/cjs/DisplayStyleState.js.map +1 -1
- package/lib/cjs/ElementLocateManager.d.ts +7 -1
- package/lib/cjs/ElementLocateManager.d.ts.map +1 -1
- package/lib/cjs/ElementLocateManager.js +34 -10
- package/lib/cjs/ElementLocateManager.js.map +1 -1
- package/lib/cjs/HitDetail.d.ts +4 -0
- package/lib/cjs/HitDetail.d.ts.map +1 -1
- package/lib/cjs/HitDetail.js +3 -0
- package/lib/cjs/HitDetail.js.map +1 -1
- package/lib/cjs/IModelConnection.d.ts +1 -0
- package/lib/cjs/IModelConnection.d.ts.map +1 -1
- package/lib/cjs/IModelConnection.js +2 -1
- package/lib/cjs/IModelConnection.js.map +1 -1
- package/lib/cjs/NoRenderApp.d.ts +1 -0
- package/lib/cjs/NoRenderApp.d.ts.map +1 -1
- package/lib/cjs/NoRenderApp.js +1 -0
- package/lib/cjs/NoRenderApp.js.map +1 -1
- package/lib/cjs/SheetViewState.d.ts +0 -1
- package/lib/cjs/SheetViewState.d.ts.map +1 -1
- package/lib/cjs/SheetViewState.js +0 -1
- package/lib/cjs/SheetViewState.js.map +1 -1
- package/lib/cjs/Viewport.d.ts +25 -1
- package/lib/cjs/Viewport.d.ts.map +1 -1
- package/lib/cjs/Viewport.js +20 -12
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/common/WorkerProxy.d.ts +8 -4
- package/lib/cjs/common/WorkerProxy.d.ts.map +1 -1
- package/lib/cjs/common/WorkerProxy.js.map +1 -1
- package/lib/cjs/common/imdl/ImdlModel.d.ts +3 -8
- package/lib/cjs/common/imdl/ImdlModel.d.ts.map +1 -1
- package/lib/cjs/common/imdl/ImdlModel.js.map +1 -1
- package/lib/cjs/common/internal/Symbols.d.ts +7 -0
- package/lib/cjs/common/internal/Symbols.d.ts.map +1 -1
- package/lib/cjs/common/internal/Symbols.js +8 -1
- package/lib/cjs/common/internal/Symbols.js.map +1 -1
- package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.d.ts +15 -0
- package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -0
- package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js +95 -0
- package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -0
- package/lib/cjs/common/internal/render/LineCode.d.ts +9 -0
- package/lib/cjs/common/internal/render/LineCode.d.ts.map +1 -0
- package/lib/cjs/common/internal/render/LineCode.js +31 -0
- package/lib/cjs/common/internal/render/LineCode.js.map +1 -0
- package/lib/cjs/common/internal/render/OvrFlags.d.ts +27 -0
- package/lib/cjs/common/internal/render/OvrFlags.d.ts.map +1 -0
- package/lib/cjs/common/internal/render/OvrFlags.js +10 -0
- package/lib/cjs/common/internal/render/OvrFlags.js.map +1 -0
- package/lib/cjs/common/internal/render/VertexTable.d.ts.map +1 -1
- package/lib/cjs/common/internal/render/VertexTable.js +3 -5
- package/lib/cjs/common/internal/render/VertexTable.js.map +1 -1
- package/lib/cjs/common/render/InstancedGraphicParams.d.ts +25 -1
- package/lib/cjs/common/render/InstancedGraphicParams.d.ts.map +1 -1
- package/lib/cjs/common/render/InstancedGraphicParams.js +59 -0
- package/lib/cjs/common/render/InstancedGraphicParams.js.map +1 -1
- package/lib/cjs/common/render/RenderInstancesParams.d.ts +76 -0
- package/lib/cjs/common/render/RenderInstancesParams.d.ts.map +1 -0
- package/lib/cjs/common/render/RenderInstancesParams.js +33 -0
- package/lib/cjs/common/render/RenderInstancesParams.js.map +1 -0
- package/lib/cjs/common.d.ts +1 -0
- package/lib/cjs/common.d.ts.map +1 -1
- package/lib/cjs/common.js +1 -0
- package/lib/cjs/common.js.map +1 -1
- package/lib/cjs/core-frontend.d.ts +1 -0
- package/lib/cjs/core-frontend.d.ts.map +1 -1
- package/lib/cjs/core-frontend.js +1 -0
- package/lib/cjs/core-frontend.js.map +1 -1
- package/lib/cjs/internal/render/PrimitiveBuilder.d.ts +4 -1
- package/lib/cjs/internal/render/PrimitiveBuilder.d.ts.map +1 -1
- package/lib/cjs/internal/render/PrimitiveBuilder.js +82 -35
- package/lib/cjs/internal/render/PrimitiveBuilder.js.map +1 -1
- package/lib/cjs/internal/render/RenderGeometry.d.ts +20 -0
- package/lib/cjs/internal/render/RenderGeometry.d.ts.map +1 -0
- package/lib/cjs/internal/render/RenderGeometry.js +10 -0
- package/lib/cjs/internal/render/RenderGeometry.js.map +1 -0
- package/lib/cjs/internal/render/RenderInstancesParamsImpl.d.ts +24 -0
- package/lib/cjs/internal/render/RenderInstancesParamsImpl.d.ts.map +1 -0
- package/lib/cjs/internal/render/RenderInstancesParamsImpl.js +69 -0
- package/lib/cjs/internal/render/RenderInstancesParamsImpl.js.map +1 -0
- package/lib/cjs/render/GraphicBranch.d.ts +10 -1
- package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
- package/lib/cjs/render/GraphicBranch.js.map +1 -1
- package/lib/cjs/render/GraphicBuilder.d.ts +17 -3
- package/lib/cjs/render/GraphicBuilder.d.ts.map +1 -1
- package/lib/cjs/render/GraphicBuilder.js +7 -1
- package/lib/cjs/render/GraphicBuilder.js.map +1 -1
- package/lib/cjs/render/GraphicTemplate.d.ts +76 -0
- package/lib/cjs/render/GraphicTemplate.d.ts.map +1 -0
- package/lib/cjs/render/GraphicTemplate.js +41 -0
- package/lib/cjs/render/GraphicTemplate.js.map +1 -0
- package/lib/cjs/render/MockRender.d.ts +12 -2
- package/lib/cjs/render/MockRender.d.ts.map +1 -1
- package/lib/cjs/render/MockRender.js +19 -5
- package/lib/cjs/render/MockRender.js.map +1 -1
- package/lib/cjs/render/Pixel.d.ts +6 -0
- package/lib/cjs/render/Pixel.d.ts.map +1 -1
- package/lib/cjs/render/Pixel.js +2 -0
- package/lib/cjs/render/Pixel.js.map +1 -1
- package/lib/cjs/render/RealityMeshGraphicParams.d.ts +1 -0
- package/lib/cjs/render/RealityMeshGraphicParams.d.ts.map +1 -1
- package/lib/cjs/render/RealityMeshGraphicParams.js.map +1 -1
- package/lib/cjs/render/RenderMemory.d.ts +2 -0
- package/lib/cjs/render/RenderMemory.d.ts.map +1 -1
- package/lib/cjs/render/RenderMemory.js +2 -0
- package/lib/cjs/render/RenderMemory.js.map +1 -1
- package/lib/cjs/render/RenderPlan.d.ts +2 -1
- package/lib/cjs/render/RenderPlan.d.ts.map +1 -1
- package/lib/cjs/render/RenderPlan.js +2 -0
- package/lib/cjs/render/RenderPlan.js.map +1 -1
- package/lib/cjs/render/RenderSystem.d.ts +59 -11
- package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
- package/lib/cjs/render/RenderSystem.js +44 -6
- package/lib/cjs/render/RenderSystem.js.map +1 -1
- package/lib/cjs/render/RenderTarget.d.ts +1 -1
- package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
- package/lib/cjs/render/RenderTarget.js.map +1 -1
- package/lib/cjs/render/webgl/BatchUniforms.d.ts +4 -0
- package/lib/cjs/render/webgl/BatchUniforms.d.ts.map +1 -1
- package/lib/cjs/render/webgl/BatchUniforms.js +18 -0
- package/lib/cjs/render/webgl/BatchUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/BranchState.d.ts +7 -0
- package/lib/cjs/render/webgl/BranchState.d.ts.map +1 -1
- package/lib/cjs/render/webgl/BranchState.js +4 -0
- package/lib/cjs/render/webgl/BranchState.js.map +1 -1
- package/lib/cjs/render/webgl/BranchUniforms.d.ts +1 -0
- package/lib/cjs/render/webgl/BranchUniforms.d.ts.map +1 -1
- package/lib/cjs/render/webgl/BranchUniforms.js +14 -1
- package/lib/cjs/render/webgl/BranchUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/ContourUniforms.d.ts +22 -0
- package/lib/cjs/render/webgl/ContourUniforms.d.ts.map +1 -0
- package/lib/cjs/render/webgl/ContourUniforms.js +98 -0
- package/lib/cjs/render/webgl/ContourUniforms.js.map +1 -0
- package/lib/cjs/render/webgl/Contours.d.ts +34 -0
- package/lib/cjs/render/webgl/Contours.d.ts.map +1 -0
- package/lib/cjs/render/webgl/Contours.js +127 -0
- package/lib/cjs/render/webgl/Contours.js.map +1 -0
- package/lib/cjs/render/webgl/EdgeSettings.d.ts +2 -1
- package/lib/cjs/render/webgl/EdgeSettings.d.ts.map +1 -1
- package/lib/cjs/render/webgl/EdgeSettings.js +1 -1
- package/lib/cjs/render/webgl/EdgeSettings.js.map +1 -1
- package/lib/cjs/render/webgl/FeatureOverrides.d.ts +2 -0
- package/lib/cjs/render/webgl/FeatureOverrides.d.ts.map +1 -1
- package/lib/cjs/render/webgl/FeatureOverrides.js +83 -69
- package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/cjs/render/webgl/GL.d.ts +2 -1
- package/lib/cjs/render/webgl/GL.d.ts.map +1 -1
- package/lib/cjs/render/webgl/GL.js +1 -0
- package/lib/cjs/render/webgl/GL.js.map +1 -1
- package/lib/cjs/render/webgl/Graphic.d.ts +9 -0
- package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Graphic.js +27 -0
- package/lib/cjs/render/webgl/Graphic.js.map +1 -1
- package/lib/cjs/render/webgl/InstancedGeometry.d.ts +40 -10
- package/lib/cjs/render/webgl/InstancedGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/InstancedGeometry.js +99 -31
- package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/LineCode.d.ts.map +1 -1
- package/lib/cjs/render/webgl/LineCode.js +2 -14
- package/lib/cjs/render/webgl/LineCode.js.map +1 -1
- package/lib/cjs/render/webgl/Mesh.d.ts +9 -4
- package/lib/cjs/render/webgl/Mesh.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Mesh.js +18 -16
- package/lib/cjs/render/webgl/Mesh.js.map +1 -1
- package/lib/cjs/render/webgl/PointCloud.d.ts +5 -1
- package/lib/cjs/render/webgl/PointCloud.d.ts.map +1 -1
- package/lib/cjs/render/webgl/PointCloud.js +7 -2
- package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
- package/lib/cjs/render/webgl/PointString.d.ts +5 -1
- package/lib/cjs/render/webgl/PointString.d.ts.map +1 -1
- package/lib/cjs/render/webgl/PointString.js +8 -3
- package/lib/cjs/render/webgl/PointString.js.map +1 -1
- package/lib/cjs/render/webgl/Polyline.d.ts +5 -1
- package/lib/cjs/render/webgl/Polyline.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Polyline.js +7 -2
- package/lib/cjs/render/webgl/Polyline.js.map +1 -1
- package/lib/cjs/render/webgl/Primitive.d.ts +1 -3
- package/lib/cjs/render/webgl/Primitive.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Primitive.js +1 -6
- package/lib/cjs/render/webgl/Primitive.js.map +1 -1
- package/lib/cjs/render/webgl/RealityMesh.d.ts +5 -1
- package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
- package/lib/cjs/render/webgl/RealityMesh.js +7 -1
- package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
- package/lib/cjs/render/webgl/RenderFlags.d.ts +2 -19
- package/lib/cjs/render/webgl/RenderFlags.d.ts.map +1 -1
- package/lib/cjs/render/webgl/RenderFlags.js +2 -0
- package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
- package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
- package/lib/cjs/render/webgl/SceneCompositor.js +12 -3
- package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/cjs/render/webgl/ShaderBuilder.d.ts +15 -13
- package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
- package/lib/cjs/render/webgl/ShaderBuilder.js +18 -10
- package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/cjs/render/webgl/ShaderProgram.d.ts.map +1 -1
- package/lib/cjs/render/webgl/ShaderProgram.js +26 -0
- package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
- package/lib/cjs/render/webgl/System.d.ts +11 -5
- package/lib/cjs/render/webgl/System.d.ts.map +1 -1
- package/lib/cjs/render/webgl/System.js +81 -13
- package/lib/cjs/render/webgl/System.js.map +1 -1
- package/lib/cjs/render/webgl/Target.d.ts +6 -2
- package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Target.js +24 -1
- package/lib/cjs/render/webgl/Target.js.map +1 -1
- package/lib/cjs/render/webgl/TargetUniforms.d.ts +2 -0
- package/lib/cjs/render/webgl/TargetUniforms.d.ts.map +1 -1
- package/lib/cjs/render/webgl/TargetUniforms.js +2 -0
- package/lib/cjs/render/webgl/TargetUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/Texture.d.ts +2 -1
- package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Texture.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +1 -1
- package/lib/cjs/render/webgl/glsl/Atmosphere.js +1 -1
- package/lib/cjs/render/webgl/glsl/Blur.js +1 -1
- package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js +1 -1
- package/lib/cjs/render/webgl/glsl/ClearTranslucent.js +1 -1
- package/lib/cjs/render/webgl/glsl/Clipping.js +1 -1
- package/lib/cjs/render/webgl/glsl/Combine3Textures.js +1 -1
- package/lib/cjs/render/webgl/glsl/CombineTextures.js +1 -1
- package/lib/cjs/render/webgl/glsl/Composite.js +1 -1
- package/lib/cjs/render/webgl/glsl/Contours.d.ts +4 -0
- package/lib/cjs/render/webgl/glsl/Contours.d.ts.map +1 -0
- package/lib/cjs/render/webgl/glsl/Contours.js +138 -0
- package/lib/cjs/render/webgl/glsl/Contours.js.map +1 -0
- package/lib/cjs/render/webgl/glsl/CopyColor.js +1 -1
- package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js +1 -1
- package/lib/cjs/render/webgl/glsl/CopyStencil.js +5 -5
- package/lib/cjs/render/webgl/glsl/EDL.js +4 -4
- package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js +1 -1
- package/lib/cjs/render/webgl/glsl/Edge.js +1 -1
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts +2 -1
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +28 -15
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Fragment.js +9 -9
- package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
- package/lib/cjs/render/webgl/glsl/PlanarClassification.js +4 -4
- package/lib/cjs/render/webgl/glsl/PointCloud.js +1 -1
- package/lib/cjs/render/webgl/glsl/RealityMesh.js +3 -3
- package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js +1 -1
- package/lib/cjs/render/webgl/glsl/SkyBox.js +1 -1
- package/lib/cjs/render/webgl/glsl/SkySphere.js +1 -1
- package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js +1 -1
- package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Surface.js +5 -3
- package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Translucency.js +1 -1
- package/lib/cjs/render/webgl/glsl/Wiremesh.js +1 -1
- package/lib/cjs/tile/GltfReader.d.ts +27 -7
- package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
- package/lib/cjs/tile/GltfReader.js +84 -68
- package/lib/cjs/tile/GltfReader.js.map +1 -1
- package/lib/cjs/tile/ImdlGraphicsCreator.d.ts +4 -1
- package/lib/cjs/tile/ImdlGraphicsCreator.d.ts.map +1 -1
- package/lib/cjs/tile/ImdlGraphicsCreator.js +32 -22
- package/lib/cjs/tile/ImdlGraphicsCreator.js.map +1 -1
- package/lib/cjs/tile/TileDrawArgs.d.ts +4 -0
- package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
- package/lib/cjs/tile/TileDrawArgs.js +2 -0
- package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
- package/lib/cjs/tile/TileTreeReference.d.ts +2 -0
- package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
- package/lib/cjs/tile/TileTreeReference.js +3 -0
- package/lib/cjs/tile/TileTreeReference.js.map +1 -1
- package/lib/cjs/tile/map/MapTile.js +1 -1
- package/lib/cjs/tile/map/MapTile.js.map +1 -1
- package/lib/esm/AccuSnap.d.ts.map +1 -1
- package/lib/esm/AccuSnap.js +9 -5
- package/lib/esm/AccuSnap.js.map +1 -1
- package/lib/esm/DisplayStyleState.d.ts.map +1 -1
- package/lib/esm/DisplayStyleState.js +5 -1
- package/lib/esm/DisplayStyleState.js.map +1 -1
- package/lib/esm/ElementLocateManager.d.ts +7 -1
- package/lib/esm/ElementLocateManager.d.ts.map +1 -1
- package/lib/esm/ElementLocateManager.js +34 -10
- package/lib/esm/ElementLocateManager.js.map +1 -1
- package/lib/esm/HitDetail.d.ts +4 -0
- package/lib/esm/HitDetail.d.ts.map +1 -1
- package/lib/esm/HitDetail.js +3 -0
- package/lib/esm/HitDetail.js.map +1 -1
- package/lib/esm/IModelConnection.d.ts +1 -0
- package/lib/esm/IModelConnection.d.ts.map +1 -1
- package/lib/esm/IModelConnection.js +2 -1
- package/lib/esm/IModelConnection.js.map +1 -1
- package/lib/esm/NoRenderApp.d.ts +1 -0
- package/lib/esm/NoRenderApp.d.ts.map +1 -1
- package/lib/esm/NoRenderApp.js +1 -0
- package/lib/esm/NoRenderApp.js.map +1 -1
- package/lib/esm/SheetViewState.d.ts +0 -1
- package/lib/esm/SheetViewState.d.ts.map +1 -1
- package/lib/esm/SheetViewState.js +0 -1
- package/lib/esm/SheetViewState.js.map +1 -1
- package/lib/esm/Viewport.d.ts +25 -1
- package/lib/esm/Viewport.d.ts.map +1 -1
- package/lib/esm/Viewport.js +20 -12
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/common/WorkerProxy.d.ts +8 -4
- package/lib/esm/common/WorkerProxy.d.ts.map +1 -1
- package/lib/esm/common/WorkerProxy.js.map +1 -1
- package/lib/esm/common/imdl/ImdlModel.d.ts +3 -8
- package/lib/esm/common/imdl/ImdlModel.d.ts.map +1 -1
- package/lib/esm/common/imdl/ImdlModel.js.map +1 -1
- package/lib/esm/common/internal/Symbols.d.ts +7 -0
- package/lib/esm/common/internal/Symbols.d.ts.map +1 -1
- package/lib/esm/common/internal/Symbols.js +7 -0
- package/lib/esm/common/internal/Symbols.js.map +1 -1
- package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.d.ts +15 -0
- package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -0
- package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js +91 -0
- package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -0
- package/lib/esm/common/internal/render/LineCode.d.ts +9 -0
- package/lib/esm/common/internal/render/LineCode.d.ts.map +1 -0
- package/lib/esm/common/internal/render/LineCode.js +27 -0
- package/lib/esm/common/internal/render/LineCode.js.map +1 -0
- package/lib/esm/common/internal/render/OvrFlags.d.ts +27 -0
- package/lib/esm/common/internal/render/OvrFlags.d.ts.map +1 -0
- package/lib/esm/common/internal/render/OvrFlags.js +9 -0
- package/lib/esm/common/internal/render/OvrFlags.js.map +1 -0
- package/lib/esm/common/internal/render/VertexTable.d.ts.map +1 -1
- package/lib/esm/common/internal/render/VertexTable.js +3 -5
- package/lib/esm/common/internal/render/VertexTable.js.map +1 -1
- package/lib/esm/common/render/InstancedGraphicParams.d.ts +25 -1
- package/lib/esm/common/render/InstancedGraphicParams.d.ts.map +1 -1
- package/lib/esm/common/render/InstancedGraphicParams.js +58 -1
- package/lib/esm/common/render/InstancedGraphicParams.js.map +1 -1
- package/lib/esm/common/render/RenderInstancesParams.d.ts +76 -0
- package/lib/esm/common/render/RenderInstancesParams.d.ts.map +1 -0
- package/lib/esm/common/render/RenderInstancesParams.js +30 -0
- package/lib/esm/common/render/RenderInstancesParams.js.map +1 -0
- package/lib/esm/common.d.ts +1 -0
- package/lib/esm/common.d.ts.map +1 -1
- package/lib/esm/common.js +1 -0
- package/lib/esm/common.js.map +1 -1
- package/lib/esm/core-frontend.d.ts +1 -0
- package/lib/esm/core-frontend.d.ts.map +1 -1
- package/lib/esm/core-frontend.js +1 -0
- package/lib/esm/core-frontend.js.map +1 -1
- package/lib/esm/internal/render/PrimitiveBuilder.d.ts +4 -1
- package/lib/esm/internal/render/PrimitiveBuilder.d.ts.map +1 -1
- package/lib/esm/internal/render/PrimitiveBuilder.js +82 -35
- package/lib/esm/internal/render/PrimitiveBuilder.js.map +1 -1
- package/lib/esm/internal/render/RenderGeometry.d.ts +20 -0
- package/lib/esm/internal/render/RenderGeometry.d.ts.map +1 -0
- package/lib/esm/internal/render/RenderGeometry.js +9 -0
- package/lib/esm/internal/render/RenderGeometry.js.map +1 -0
- package/lib/esm/internal/render/RenderInstancesParamsImpl.d.ts +24 -0
- package/lib/esm/internal/render/RenderInstancesParamsImpl.d.ts.map +1 -0
- package/lib/esm/internal/render/RenderInstancesParamsImpl.js +64 -0
- package/lib/esm/internal/render/RenderInstancesParamsImpl.js.map +1 -0
- package/lib/esm/render/GraphicBranch.d.ts +10 -1
- package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
- package/lib/esm/render/GraphicBranch.js.map +1 -1
- package/lib/esm/render/GraphicBuilder.d.ts +17 -3
- package/lib/esm/render/GraphicBuilder.d.ts.map +1 -1
- package/lib/esm/render/GraphicBuilder.js +7 -1
- package/lib/esm/render/GraphicBuilder.js.map +1 -1
- package/lib/esm/render/GraphicTemplate.d.ts +76 -0
- package/lib/esm/render/GraphicTemplate.d.ts.map +1 -0
- package/lib/esm/render/GraphicTemplate.js +37 -0
- package/lib/esm/render/GraphicTemplate.js.map +1 -0
- package/lib/esm/render/MockRender.d.ts +12 -2
- package/lib/esm/render/MockRender.d.ts.map +1 -1
- package/lib/esm/render/MockRender.js +19 -5
- package/lib/esm/render/MockRender.js.map +1 -1
- package/lib/esm/render/Pixel.d.ts +6 -0
- package/lib/esm/render/Pixel.d.ts.map +1 -1
- package/lib/esm/render/Pixel.js +2 -0
- package/lib/esm/render/Pixel.js.map +1 -1
- package/lib/esm/render/RealityMeshGraphicParams.d.ts +1 -0
- package/lib/esm/render/RealityMeshGraphicParams.d.ts.map +1 -1
- package/lib/esm/render/RealityMeshGraphicParams.js.map +1 -1
- package/lib/esm/render/RenderMemory.d.ts +2 -0
- package/lib/esm/render/RenderMemory.d.ts.map +1 -1
- package/lib/esm/render/RenderMemory.js +2 -0
- package/lib/esm/render/RenderMemory.js.map +1 -1
- package/lib/esm/render/RenderPlan.d.ts +2 -1
- package/lib/esm/render/RenderPlan.d.ts.map +1 -1
- package/lib/esm/render/RenderPlan.js +2 -0
- package/lib/esm/render/RenderPlan.js.map +1 -1
- package/lib/esm/render/RenderSystem.d.ts +59 -11
- package/lib/esm/render/RenderSystem.d.ts.map +1 -1
- package/lib/esm/render/RenderSystem.js +46 -8
- package/lib/esm/render/RenderSystem.js.map +1 -1
- package/lib/esm/render/RenderTarget.d.ts +1 -1
- package/lib/esm/render/RenderTarget.d.ts.map +1 -1
- package/lib/esm/render/RenderTarget.js.map +1 -1
- package/lib/esm/render/webgl/BatchUniforms.d.ts +4 -0
- package/lib/esm/render/webgl/BatchUniforms.d.ts.map +1 -1
- package/lib/esm/render/webgl/BatchUniforms.js +18 -0
- package/lib/esm/render/webgl/BatchUniforms.js.map +1 -1
- package/lib/esm/render/webgl/BranchState.d.ts +7 -0
- package/lib/esm/render/webgl/BranchState.d.ts.map +1 -1
- package/lib/esm/render/webgl/BranchState.js +4 -0
- package/lib/esm/render/webgl/BranchState.js.map +1 -1
- package/lib/esm/render/webgl/BranchUniforms.d.ts +1 -0
- package/lib/esm/render/webgl/BranchUniforms.d.ts.map +1 -1
- package/lib/esm/render/webgl/BranchUniforms.js +14 -1
- package/lib/esm/render/webgl/BranchUniforms.js.map +1 -1
- package/lib/esm/render/webgl/ContourUniforms.d.ts +22 -0
- package/lib/esm/render/webgl/ContourUniforms.d.ts.map +1 -0
- package/lib/esm/render/webgl/ContourUniforms.js +94 -0
- package/lib/esm/render/webgl/ContourUniforms.js.map +1 -0
- package/lib/esm/render/webgl/Contours.d.ts +34 -0
- package/lib/esm/render/webgl/Contours.d.ts.map +1 -0
- package/lib/esm/render/webgl/Contours.js +123 -0
- package/lib/esm/render/webgl/Contours.js.map +1 -0
- package/lib/esm/render/webgl/EdgeSettings.d.ts +2 -1
- package/lib/esm/render/webgl/EdgeSettings.d.ts.map +1 -1
- package/lib/esm/render/webgl/EdgeSettings.js +1 -1
- package/lib/esm/render/webgl/EdgeSettings.js.map +1 -1
- package/lib/esm/render/webgl/FeatureOverrides.d.ts +2 -0
- package/lib/esm/render/webgl/FeatureOverrides.d.ts.map +1 -1
- package/lib/esm/render/webgl/FeatureOverrides.js +83 -69
- package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/esm/render/webgl/GL.d.ts +2 -1
- package/lib/esm/render/webgl/GL.d.ts.map +1 -1
- package/lib/esm/render/webgl/GL.js +1 -0
- package/lib/esm/render/webgl/GL.js.map +1 -1
- package/lib/esm/render/webgl/Graphic.d.ts +9 -0
- package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
- package/lib/esm/render/webgl/Graphic.js +27 -0
- package/lib/esm/render/webgl/Graphic.js.map +1 -1
- package/lib/esm/render/webgl/InstancedGeometry.d.ts +40 -10
- package/lib/esm/render/webgl/InstancedGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/InstancedGeometry.js +97 -30
- package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/esm/render/webgl/LineCode.d.ts.map +1 -1
- package/lib/esm/render/webgl/LineCode.js +2 -14
- package/lib/esm/render/webgl/LineCode.js.map +1 -1
- package/lib/esm/render/webgl/Mesh.d.ts +9 -4
- package/lib/esm/render/webgl/Mesh.d.ts.map +1 -1
- package/lib/esm/render/webgl/Mesh.js +19 -17
- package/lib/esm/render/webgl/Mesh.js.map +1 -1
- package/lib/esm/render/webgl/PointCloud.d.ts +5 -1
- package/lib/esm/render/webgl/PointCloud.d.ts.map +1 -1
- package/lib/esm/render/webgl/PointCloud.js +7 -2
- package/lib/esm/render/webgl/PointCloud.js.map +1 -1
- package/lib/esm/render/webgl/PointString.d.ts +5 -1
- package/lib/esm/render/webgl/PointString.d.ts.map +1 -1
- package/lib/esm/render/webgl/PointString.js +8 -3
- package/lib/esm/render/webgl/PointString.js.map +1 -1
- package/lib/esm/render/webgl/Polyline.d.ts +5 -1
- package/lib/esm/render/webgl/Polyline.d.ts.map +1 -1
- package/lib/esm/render/webgl/Polyline.js +7 -2
- package/lib/esm/render/webgl/Polyline.js.map +1 -1
- package/lib/esm/render/webgl/Primitive.d.ts +1 -3
- package/lib/esm/render/webgl/Primitive.d.ts.map +1 -1
- package/lib/esm/render/webgl/Primitive.js +2 -7
- package/lib/esm/render/webgl/Primitive.js.map +1 -1
- package/lib/esm/render/webgl/RealityMesh.d.ts +5 -1
- package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
- package/lib/esm/render/webgl/RealityMesh.js +7 -1
- package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
- package/lib/esm/render/webgl/RenderFlags.d.ts +2 -19
- package/lib/esm/render/webgl/RenderFlags.d.ts.map +1 -1
- package/lib/esm/render/webgl/RenderFlags.js +2 -0
- package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
- package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
- package/lib/esm/render/webgl/SceneCompositor.js +12 -3
- package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/esm/render/webgl/ShaderBuilder.d.ts +15 -13
- package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
- package/lib/esm/render/webgl/ShaderBuilder.js +18 -10
- package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/esm/render/webgl/ShaderProgram.d.ts.map +1 -1
- package/lib/esm/render/webgl/ShaderProgram.js +26 -0
- package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
- package/lib/esm/render/webgl/System.d.ts +11 -5
- package/lib/esm/render/webgl/System.d.ts.map +1 -1
- package/lib/esm/render/webgl/System.js +82 -14
- package/lib/esm/render/webgl/System.js.map +1 -1
- package/lib/esm/render/webgl/Target.d.ts +6 -2
- package/lib/esm/render/webgl/Target.d.ts.map +1 -1
- package/lib/esm/render/webgl/Target.js +24 -1
- package/lib/esm/render/webgl/Target.js.map +1 -1
- package/lib/esm/render/webgl/TargetUniforms.d.ts +2 -0
- package/lib/esm/render/webgl/TargetUniforms.d.ts.map +1 -1
- package/lib/esm/render/webgl/TargetUniforms.js +2 -0
- package/lib/esm/render/webgl/TargetUniforms.js.map +1 -1
- package/lib/esm/render/webgl/Texture.d.ts +2 -1
- package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
- package/lib/esm/render/webgl/Texture.js.map +1 -1
- package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +1 -1
- package/lib/esm/render/webgl/glsl/Atmosphere.js +1 -1
- package/lib/esm/render/webgl/glsl/Blur.js +1 -1
- package/lib/esm/render/webgl/glsl/ClearPickAndColor.js +1 -1
- package/lib/esm/render/webgl/glsl/ClearTranslucent.js +1 -1
- package/lib/esm/render/webgl/glsl/Clipping.js +1 -1
- package/lib/esm/render/webgl/glsl/Combine3Textures.js +1 -1
- package/lib/esm/render/webgl/glsl/CombineTextures.js +1 -1
- package/lib/esm/render/webgl/glsl/Composite.js +1 -1
- package/lib/esm/render/webgl/glsl/Contours.d.ts +4 -0
- package/lib/esm/render/webgl/glsl/Contours.d.ts.map +1 -0
- package/lib/esm/render/webgl/glsl/Contours.js +134 -0
- package/lib/esm/render/webgl/glsl/Contours.js.map +1 -0
- package/lib/esm/render/webgl/glsl/CopyColor.js +1 -1
- package/lib/esm/render/webgl/glsl/CopyPickBuffers.js +1 -1
- package/lib/esm/render/webgl/glsl/CopyStencil.js +5 -5
- package/lib/esm/render/webgl/glsl/EDL.js +4 -4
- package/lib/esm/render/webgl/glsl/EVSMFromDepth.js +1 -1
- package/lib/esm/render/webgl/glsl/Edge.js +1 -1
- package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts +2 -1
- package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/FeatureSymbology.js +27 -15
- package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Fragment.js +9 -9
- package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
- package/lib/esm/render/webgl/glsl/PlanarClassification.js +4 -4
- package/lib/esm/render/webgl/glsl/PointCloud.js +1 -1
- package/lib/esm/render/webgl/glsl/RealityMesh.js +3 -3
- package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js +1 -1
- package/lib/esm/render/webgl/glsl/SkyBox.js +1 -1
- package/lib/esm/render/webgl/glsl/SkySphere.js +1 -1
- package/lib/esm/render/webgl/glsl/SolarShadowMapping.js +1 -1
- package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Surface.js +5 -3
- package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Translucency.js +1 -1
- package/lib/esm/render/webgl/glsl/Wiremesh.js +1 -1
- package/lib/esm/tile/GltfReader.d.ts +27 -7
- package/lib/esm/tile/GltfReader.d.ts.map +1 -1
- package/lib/esm/tile/GltfReader.js +82 -67
- package/lib/esm/tile/GltfReader.js.map +1 -1
- package/lib/esm/tile/ImdlGraphicsCreator.d.ts +4 -1
- package/lib/esm/tile/ImdlGraphicsCreator.d.ts.map +1 -1
- package/lib/esm/tile/ImdlGraphicsCreator.js +31 -22
- package/lib/esm/tile/ImdlGraphicsCreator.js.map +1 -1
- package/lib/esm/tile/TileDrawArgs.d.ts +4 -0
- package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
- package/lib/esm/tile/TileDrawArgs.js +2 -0
- package/lib/esm/tile/TileDrawArgs.js.map +1 -1
- package/lib/esm/tile/TileTreeReference.d.ts +2 -0
- package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
- package/lib/esm/tile/TileTreeReference.js +3 -0
- package/lib/esm/tile/TileTreeReference.js.map +1 -1
- package/lib/esm/tile/map/MapTile.js +1 -1
- package/lib/esm/tile/map/MapTile.js.map +1 -1
- package/lib/public/scripts/parse-imdl-worker.js +1 -1
- package/lib/workers/webpack/parse-imdl-worker.js +1 -1
- package/package.json +18 -18
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
/** @packageDocumentation
|
|
6
|
+
* @module WebGL
|
|
7
|
+
*/
|
|
8
|
+
import { ContourDisplay } from "@itwin/core-common";
|
|
9
|
+
import { TextureUnit } from "../RenderFlags";
|
|
10
|
+
import { addFeatureIndex } from "./FeatureSymbology";
|
|
11
|
+
import { addInstancedRtcMatrix } from "./Vertex";
|
|
12
|
+
const computeContourNdx = `
|
|
13
|
+
if (u_contourLUTWidth == 0u)
|
|
14
|
+
return 15.0;
|
|
15
|
+
uint lutIndex = uint(getFeatureIndex());
|
|
16
|
+
bool odd = bool(lutIndex & 1u);
|
|
17
|
+
lutIndex /= 2u;
|
|
18
|
+
uint byteSel = lutIndex & 0x3u;
|
|
19
|
+
lutIndex /= 4u;
|
|
20
|
+
ivec2 coords = ivec2(lutIndex % u_contourLUTWidth, lutIndex / u_contourLUTWidth);
|
|
21
|
+
uvec4 contourNdx4 = uvec4(texelFetch(u_contourLUT, coords, 0) * 255.0 + 0.5);
|
|
22
|
+
uvec2 contourNdx2 = bool(byteSel & 2u) ? contourNdx4.ba : contourNdx4.rg;
|
|
23
|
+
uint contourNdx = bool(byteSel & 1u) ? contourNdx2.g : contourNdx2.r;
|
|
24
|
+
return float(odd ? contourNdx >> 4u : contourNdx & 0xFu);
|
|
25
|
+
`;
|
|
26
|
+
const unpack2BytesVec4 = `
|
|
27
|
+
vec4 unpack2BytesVec4(vec4 f, bool upper) {
|
|
28
|
+
f = floor(f + 0.5);
|
|
29
|
+
vec4 outUpper = floor(f / 256.0);
|
|
30
|
+
vec4 outLower = floor(f - outUpper * 256.0);
|
|
31
|
+
return upper ? outUpper : outLower;
|
|
32
|
+
}
|
|
33
|
+
`;
|
|
34
|
+
const unpackAndNormalize2BytesVec4 = `
|
|
35
|
+
vec4 unpackAndNormalize2BytesVec4(vec4 f, bool upper) {
|
|
36
|
+
return unpack2BytesVec4(f, upper) / 255.0;
|
|
37
|
+
}
|
|
38
|
+
`;
|
|
39
|
+
const applyContours = `
|
|
40
|
+
int contourNdx = int(v_contourNdx + 0.5);
|
|
41
|
+
if (contourNdx > 14) // 15 => no contours
|
|
42
|
+
return baseColor;
|
|
43
|
+
|
|
44
|
+
const int maxDefs = ${ContourDisplay.maxContourGroups}; // max number of contour definitions allowed, have to change index arrays if this changes
|
|
45
|
+
int contourNdxC = clamp(contourNdx, 0, maxDefs - 1);
|
|
46
|
+
|
|
47
|
+
bool even = (contourNdxC & 1) == 0;
|
|
48
|
+
vec4 rgbfp = u_contourDefs[even ? contourNdxC * 3 / 2 : (contourNdxC - 1) * 3 / 2 + 2];
|
|
49
|
+
vec4 intervalsPair = u_contourDefs[(contourNdxC / 2) * 3 + 1];
|
|
50
|
+
// intervals.r => minor interval distance, intervals.g => major index count
|
|
51
|
+
vec2 intervals = even ? intervalsPair.rg : intervalsPair.ba;
|
|
52
|
+
|
|
53
|
+
float coord = v_height / intervals.r;
|
|
54
|
+
// determine if this is in the vicinity of a major contour line (1/2 an interval either way, which is one limit of drawing width)
|
|
55
|
+
bool maj = (fract((abs(coord) + 0.5) / intervals.g) < (1.0 / intervals.g));
|
|
56
|
+
vec4 rgbf = unpackAndNormalize2BytesVec4(rgbfp, maj);
|
|
57
|
+
// rgbf.a => (4-bit linecode / 4-bit weight) maj/min, where the 4-bit weight is a 3-bit weight value with one fraction bit and a 1.5 offset.
|
|
58
|
+
// This gives a weight range of 1.5 to 9 in 0.5 increments.
|
|
59
|
+
// NB: the showGeometry bit flag is stuck in at bit 16 of this, so the major line code has an extra bit in it that needs to be masked out
|
|
60
|
+
int lineCodeWt = int((rgbf.a * 255.0) + 0.5);
|
|
61
|
+
// first * 0.5 is for fractional part of width, then have to add 1.0 for offset, then another 1.0 for actual width bias
|
|
62
|
+
float lineRadius = (float(lineCodeWt & 0xf) * 0.5 + 2.0) * 0.5;
|
|
63
|
+
|
|
64
|
+
// abs(fract(coord - 0.5) - 0.5) will produce 0.0 at the contour line, and 0.5 at the mid-point between contour lines
|
|
65
|
+
// fwidth(coord) is sum of absolute diffs in coord in adjacent pixels
|
|
66
|
+
float line = abs(fract(coord - 0.5) - 0.5) / fwidth(coord);
|
|
67
|
+
// If line is 0 (like at contour line), contourAlpha = lineRadius, so will use draw in contour color
|
|
68
|
+
// If line >= lineRadius, contourAlpha = 0, so won't show contour
|
|
69
|
+
float contourAlpha = lineRadius - min(line, lineRadius);
|
|
70
|
+
|
|
71
|
+
// figure out which direction line is going, to know which screen pattern offset to use
|
|
72
|
+
float dx = dFdx(contourAlpha);
|
|
73
|
+
float dy = dFdy(contourAlpha);
|
|
74
|
+
|
|
75
|
+
const float patLength = 32.0;
|
|
76
|
+
uint patterns[10] = uint[](0xffffffffu, 0x80808080u, 0xf8f8f8f8u, 0xffe0ffe0u, 0xfe10fe10u, 0xe0e0e0e0u, 0xf888f888u, 0xff18ff18u, 0xccccccccu, 0x00000001u);
|
|
77
|
+
|
|
78
|
+
float offset = trunc((abs(dx) > abs(dy)) ? gl_FragCoord.y : gl_FragCoord.x);
|
|
79
|
+
offset = mod(offset, patLength);
|
|
80
|
+
uint msk = 1u << uint(offset);
|
|
81
|
+
contourAlpha *= (patterns[(lineCodeWt / 16) & 0xf] & msk) > 0u ? 1.0 : 0.0;
|
|
82
|
+
contourAlpha = min(contourAlpha, 1.0);
|
|
83
|
+
if (rgbfp.a / 65536.0 < 0.5) { // showGeometry == 0
|
|
84
|
+
if (contourAlpha < 0.5)
|
|
85
|
+
discard;
|
|
86
|
+
return vec4(rgbf.rgb, 1.0);
|
|
87
|
+
}
|
|
88
|
+
// set contour opaque even if base color is transparent
|
|
89
|
+
float alpha = contourAlpha >= 0.5 ? 1.0 : baseColor.a;
|
|
90
|
+
return vec4(mix(baseColor.rgb, rgbf.rgb, contourAlpha), alpha);
|
|
91
|
+
`;
|
|
92
|
+
/** @internal */
|
|
93
|
+
export function addApplyContours(builder) {
|
|
94
|
+
const modelPos = builder.vert.usesInstancedGeometry ? "(g_instancedRtcMatrix * rawPosition)" : "rawPosition";
|
|
95
|
+
const computeWorldHeight = `
|
|
96
|
+
float computeWorldHeight(vec4 rawPosition) {
|
|
97
|
+
float height = (u_modelToWorldC * ${modelPos}).z;
|
|
98
|
+
// TODO: apply ECEF correction to height
|
|
99
|
+
return height;
|
|
100
|
+
}
|
|
101
|
+
`;
|
|
102
|
+
addFeatureIndex(builder.vert);
|
|
103
|
+
builder.addFunctionComputedVarying("v_contourNdx", 2 /* VariableType.Float */, "computeContourNdx", computeContourNdx);
|
|
104
|
+
builder.addFunctionComputedVaryingWithArgs("v_height", 2 /* VariableType.Float */, "computeWorldHeight(rawPosition)", computeWorldHeight);
|
|
105
|
+
if (builder.vert.usesInstancedGeometry)
|
|
106
|
+
addInstancedRtcMatrix(builder.vert);
|
|
107
|
+
builder.vert.addUniform("u_contourLUT", 8 /* VariableType.Sampler2D */, (prog) => {
|
|
108
|
+
prog.addGraphicUniform("u_contourLUT", (uniform, params) => {
|
|
109
|
+
// set this uniform here so that it won't cause problems (e.g.: loopback) if it does not end up being set by bindContourLUT call
|
|
110
|
+
uniform.setUniform1i(TextureUnit.Contours - TextureUnit.Zero);
|
|
111
|
+
params.target.uniforms.batch.bindContourLUT(uniform);
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
builder.vert.addUniform("u_contourLUTWidth", 10 /* VariableType.Uint */, (prog) => {
|
|
115
|
+
prog.addGraphicUniform("u_contourLUTWidth", (uniform, params) => {
|
|
116
|
+
params.target.uniforms.batch.bindContourLUTWidth(uniform);
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
builder.vert.addUniform("u_modelToWorldC", 7 /* VariableType.Mat4 */, (prog) => {
|
|
120
|
+
prog.addGraphicUniform("u_modelToWorldC", (uniform, params) => {
|
|
121
|
+
params.target.uniforms.branch.bindModelToWorldTransform(uniform, params.geometry, false);
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
const contourDefsSize = 8;
|
|
125
|
+
builder.frag.addUniformArray("u_contourDefs", 5 /* VariableType.Vec4 */, contourDefsSize, (prog) => {
|
|
126
|
+
prog.addGraphicUniform("u_contourDefs", (uniform, params) => {
|
|
127
|
+
params.target.uniforms.contours.bindcontourDefs(uniform);
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
builder.frag.addFunction(unpack2BytesVec4);
|
|
131
|
+
builder.frag.addFunction(unpackAndNormalize2BytesVec4);
|
|
132
|
+
builder.frag.set(11 /* FragmentShaderComponent.ApplyContours */, applyContours);
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=Contours.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Contours.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Contours.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAI7C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEjD,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;CAazB,CAAC;AAEF,MAAM,gBAAgB,GAAG;;;;;;;CAOxB,CAAC;AAEF,MAAM,4BAA4B,GAAG;;;;CAIpC,CAAC;AAEF,MAAM,aAAa,GAAG;;;;;wBAKE,cAAc,CAAC,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+CtD,CAAC;AAEF,gBAAgB;AAChB,MAAM,UAAU,gBAAgB,CAAC,OAAuB;IACtD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,aAAa,CAAC;IAE7G,MAAM,kBAAkB,GAAG;;sCAES,QAAQ;;;;CAI7C,CAAC;IAEA,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9B,OAAO,CAAC,0BAA0B,CAAC,cAAc,8BAAsB,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;IAC/G,OAAO,CAAC,kCAAkC,CAAC,UAAU,8BAAsB,iCAAiC,EAAE,kBAAkB,CAAC,CAAC;IAElI,IAAI,OAAO,CAAC,IAAI,CAAC,qBAAqB;QACpC,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,kCAA0B,CAAC,IAAI,EAAE,EAAE;QACvE,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzD,gIAAgI;YAChI,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;YAC9D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,8BAAqB,CAAC,IAAI,EAAE,EAAE;QACvE,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,6BAAqB,CAAC,IAAI,EAAE,EAAE;QACrE,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC5D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,yBAAyB,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC3F,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,CAAC,CAAC;IAC1B,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,6BAAqB,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE;QACzF,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAC3C,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,4BAA4B,CAAC,CAAC;IACvD,OAAO,CAAC,IAAI,CAAC,GAAG,iDAAwC,aAAa,CAAC,CAAC;AACzE,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\nimport { ContourDisplay } from \"@itwin/core-common\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport {\r\n FragmentShaderComponent, ProgramBuilder, VariableType,\r\n} from \"../ShaderBuilder\";\r\nimport { addFeatureIndex } from \"./FeatureSymbology\";\r\nimport { addInstancedRtcMatrix } from \"./Vertex\";\r\n\r\nconst computeContourNdx = `\r\n if (u_contourLUTWidth == 0u)\r\n return 15.0;\r\n uint lutIndex = uint(getFeatureIndex());\r\n bool odd = bool(lutIndex & 1u);\r\n lutIndex /= 2u;\r\n uint byteSel = lutIndex & 0x3u;\r\n lutIndex /= 4u;\r\n ivec2 coords = ivec2(lutIndex % u_contourLUTWidth, lutIndex / u_contourLUTWidth);\r\n uvec4 contourNdx4 = uvec4(texelFetch(u_contourLUT, coords, 0) * 255.0 + 0.5);\r\n uvec2 contourNdx2 = bool(byteSel & 2u) ? contourNdx4.ba : contourNdx4.rg;\r\n uint contourNdx = bool(byteSel & 1u) ? contourNdx2.g : contourNdx2.r;\r\n return float(odd ? contourNdx >> 4u : contourNdx & 0xFu);\r\n`;\r\n\r\nconst unpack2BytesVec4 = `\r\nvec4 unpack2BytesVec4(vec4 f, bool upper) {\r\n f = floor(f + 0.5);\r\n vec4 outUpper = floor(f / 256.0);\r\n vec4 outLower = floor(f - outUpper * 256.0);\r\n return upper ? outUpper : outLower;\r\n}\r\n`;\r\n\r\nconst unpackAndNormalize2BytesVec4 = `\r\nvec4 unpackAndNormalize2BytesVec4(vec4 f, bool upper) {\r\n return unpack2BytesVec4(f, upper) / 255.0;\r\n}\r\n`;\r\n\r\nconst applyContours = `\r\n int contourNdx = int(v_contourNdx + 0.5);\r\n if (contourNdx > 14) // 15 => no contours\r\n return baseColor;\r\n\r\n const int maxDefs = ${ContourDisplay.maxContourGroups}; // max number of contour definitions allowed, have to change index arrays if this changes\r\n int contourNdxC = clamp(contourNdx, 0, maxDefs - 1);\r\n\r\n bool even = (contourNdxC & 1) == 0;\r\n vec4 rgbfp = u_contourDefs[even ? contourNdxC * 3 / 2 : (contourNdxC - 1) * 3 / 2 + 2];\r\n vec4 intervalsPair = u_contourDefs[(contourNdxC / 2) * 3 + 1];\r\n // intervals.r => minor interval distance, intervals.g => major index count\r\n vec2 intervals = even ? intervalsPair.rg : intervalsPair.ba;\r\n\r\n float coord = v_height / intervals.r;\r\n // determine if this is in the vicinity of a major contour line (1/2 an interval either way, which is one limit of drawing width)\r\n bool maj = (fract((abs(coord) + 0.5) / intervals.g) < (1.0 / intervals.g));\r\n vec4 rgbf = unpackAndNormalize2BytesVec4(rgbfp, maj);\r\n // rgbf.a => (4-bit linecode / 4-bit weight) maj/min, where the 4-bit weight is a 3-bit weight value with one fraction bit and a 1.5 offset.\r\n // This gives a weight range of 1.5 to 9 in 0.5 increments.\r\n // NB: the showGeometry bit flag is stuck in at bit 16 of this, so the major line code has an extra bit in it that needs to be masked out\r\n int lineCodeWt = int((rgbf.a * 255.0) + 0.5);\r\n // first * 0.5 is for fractional part of width, then have to add 1.0 for offset, then another 1.0 for actual width bias\r\n float lineRadius = (float(lineCodeWt & 0xf) * 0.5 + 2.0) * 0.5;\r\n\r\n // abs(fract(coord - 0.5) - 0.5) will produce 0.0 at the contour line, and 0.5 at the mid-point between contour lines\r\n // fwidth(coord) is sum of absolute diffs in coord in adjacent pixels\r\n float line = abs(fract(coord - 0.5) - 0.5) / fwidth(coord);\r\n // If line is 0 (like at contour line), contourAlpha = lineRadius, so will use draw in contour color\r\n\t// If line >= lineRadius, contourAlpha = 0, so won't show contour\r\n float contourAlpha = lineRadius - min(line, lineRadius);\r\n\r\n // figure out which direction line is going, to know which screen pattern offset to use\r\n float dx = dFdx(contourAlpha);\r\n float dy = dFdy(contourAlpha);\r\n\r\n const float patLength = 32.0;\r\n uint patterns[10] = uint[](0xffffffffu, 0x80808080u, 0xf8f8f8f8u, 0xffe0ffe0u, 0xfe10fe10u, 0xe0e0e0e0u, 0xf888f888u, 0xff18ff18u, 0xccccccccu, 0x00000001u);\r\n\r\n float offset = trunc((abs(dx) > abs(dy)) ? gl_FragCoord.y : gl_FragCoord.x);\r\n offset = mod(offset, patLength);\r\n uint msk = 1u << uint(offset);\r\n contourAlpha *= (patterns[(lineCodeWt / 16) & 0xf] & msk) > 0u ? 1.0 : 0.0;\r\n contourAlpha = min(contourAlpha, 1.0);\r\n if (rgbfp.a / 65536.0 < 0.5) { // showGeometry == 0\r\n if (contourAlpha < 0.5)\r\n discard;\r\n return vec4(rgbf.rgb, 1.0);\r\n }\r\n // set contour opaque even if base color is transparent\r\n float alpha = contourAlpha >= 0.5 ? 1.0 : baseColor.a;\r\n return vec4(mix(baseColor.rgb, rgbf.rgb, contourAlpha), alpha);\r\n`;\r\n\r\n/** @internal */\r\nexport function addApplyContours(builder: ProgramBuilder) {\r\n const modelPos = builder.vert.usesInstancedGeometry ? \"(g_instancedRtcMatrix * rawPosition)\" : \"rawPosition\";\r\n\r\n const computeWorldHeight = `\r\nfloat computeWorldHeight(vec4 rawPosition) {\r\n float height = (u_modelToWorldC * ${modelPos}).z;\r\n // TODO: apply ECEF correction to height\r\n return height;\r\n}\r\n`;\r\n\r\n addFeatureIndex(builder.vert);\r\n\r\n builder.addFunctionComputedVarying(\"v_contourNdx\", VariableType.Float, \"computeContourNdx\", computeContourNdx);\r\n builder.addFunctionComputedVaryingWithArgs(\"v_height\", VariableType.Float, \"computeWorldHeight(rawPosition)\", computeWorldHeight);\r\n\r\n if (builder.vert.usesInstancedGeometry)\r\n addInstancedRtcMatrix(builder.vert);\r\n\r\n builder.vert.addUniform(\"u_contourLUT\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_contourLUT\", (uniform, params) => {\r\n // set this uniform here so that it won't cause problems (e.g.: loopback) if it does not end up being set by bindContourLUT call\r\n uniform.setUniform1i(TextureUnit.Contours - TextureUnit.Zero);\r\n params.target.uniforms.batch.bindContourLUT(uniform);\r\n });\r\n });\r\n\r\n builder.vert.addUniform(\"u_contourLUTWidth\", VariableType.Uint, (prog) => {\r\n prog.addGraphicUniform(\"u_contourLUTWidth\", (uniform, params) => {\r\n params.target.uniforms.batch.bindContourLUTWidth(uniform);\r\n });\r\n });\r\n\r\n builder.vert.addUniform(\"u_modelToWorldC\", VariableType.Mat4, (prog) => {\r\n prog.addGraphicUniform(\"u_modelToWorldC\", (uniform, params) => {\r\n params.target.uniforms.branch.bindModelToWorldTransform(uniform, params.geometry, false);\r\n });\r\n });\r\n\r\n const contourDefsSize = 8;\r\n builder.frag.addUniformArray(\"u_contourDefs\", VariableType.Vec4, contourDefsSize, (prog) => {\r\n prog.addGraphicUniform(\"u_contourDefs\", (uniform, params) => {\r\n params.target.uniforms.contours.bindcontourDefs(uniform);\r\n });\r\n });\r\n\r\n builder.frag.addFunction(unpack2BytesVec4);\r\n builder.frag.addFunction(unpackAndNormalize2BytesVec4);\r\n builder.frag.set(FragmentShaderComponent.ApplyContours, applyContours);\r\n}\r\n"]}
|
|
@@ -24,7 +24,7 @@ export function createCopyColorProgram(context, copyAlpha = true) {
|
|
|
24
24
|
const builder = createViewportQuadBuilder(true);
|
|
25
25
|
const frag = builder.frag;
|
|
26
26
|
frag.set(1 /* FragmentShaderComponent.ComputeBaseColor */, copyAlpha ? computeColor : computeColorNoAlpha);
|
|
27
|
-
frag.set(
|
|
27
|
+
frag.set(17 /* FragmentShaderComponent.AssignFragData */, assignFragColor);
|
|
28
28
|
frag.addUniform("u_color", 8 /* VariableType.Sampler2D */, (prog) => {
|
|
29
29
|
prog.addGraphicUniform("u_color", (uniform, params) => {
|
|
30
30
|
const geom = params.geometry;
|
|
@@ -29,7 +29,7 @@ export function createCopyPickBuffersProgram(context) {
|
|
|
29
29
|
});
|
|
30
30
|
}, 3 /* VariablePrecision.High */);
|
|
31
31
|
frag.addDrawBuffersExtension(2);
|
|
32
|
-
frag.set(
|
|
32
|
+
frag.set(17 /* FragmentShaderComponent.AssignFragData */, assignFragData);
|
|
33
33
|
builder.vert.headerComment = "//!V! CopyPickBuffers";
|
|
34
34
|
builder.frag.headerComment = "//!F! CopyPickBuffers";
|
|
35
35
|
return builder.buildProgram(context);
|
|
@@ -52,7 +52,7 @@ export function createVolClassColorUsingStencilProgram(context) {
|
|
|
52
52
|
const builder = createViewportQuadBuilder(false);
|
|
53
53
|
const frag = builder.frag;
|
|
54
54
|
frag.set(1 /* FragmentShaderComponent.ComputeBaseColor */, computehiliteColor);
|
|
55
|
-
frag.set(
|
|
55
|
+
frag.set(17 /* FragmentShaderComponent.AssignFragData */, assignFragColor);
|
|
56
56
|
frag.addUniform("u_hilite_color", 5 /* VariableType.Vec4 */, (prog) => {
|
|
57
57
|
prog.addGraphicUniform("u_hilite_color", (uniform, params) => {
|
|
58
58
|
const useLighting = params.geometry.getFlashMode(params);
|
|
@@ -75,7 +75,7 @@ export function createVolClassCopyZProgram(context) {
|
|
|
75
75
|
builder.addInlineComputedVarying("v_texCoord", 3 /* VariableType.Vec2 */, computeTexCoord); // TODO: I think this is not necessary because it's already added from the create above
|
|
76
76
|
const frag = builder.frag;
|
|
77
77
|
frag.set(1 /* FragmentShaderComponent.ComputeBaseColor */, computeSetBlendColor);
|
|
78
|
-
frag.set(
|
|
78
|
+
frag.set(17 /* FragmentShaderComponent.AssignFragData */, assignFragColor);
|
|
79
79
|
frag.addUniform("u_blend_color", 5 /* VariableType.Vec4 */, (prog) => {
|
|
80
80
|
prog.addGraphicUniform("u_blend_color", (uniform, _params) => {
|
|
81
81
|
scratchColor.set(0.0, 0.0, 0.0, 0.0);
|
|
@@ -88,7 +88,7 @@ export function createVolClassCopyZProgram(context) {
|
|
|
88
88
|
Texture2DHandle.bindSampler(uniform, geom.texture, TextureUnit.Zero);
|
|
89
89
|
});
|
|
90
90
|
});
|
|
91
|
-
frag.set(
|
|
91
|
+
frag.set(19 /* FragmentShaderComponent.FinalizeDepth */, depthFromTexture);
|
|
92
92
|
builder.vert.headerComment = "//!V! VolClassCopyZ";
|
|
93
93
|
builder.frag.headerComment = "//!F! VolClassCopyZ";
|
|
94
94
|
return builder.buildProgram(context);
|
|
@@ -101,7 +101,7 @@ export function createVolClassSetBlendProgram(context) {
|
|
|
101
101
|
addBoundaryTypeConstants(frag);
|
|
102
102
|
frag.set(0 /* FragmentShaderComponent.CheckForEarlyDiscard */, checkDiscardBackgroundByZ);
|
|
103
103
|
frag.set(1 /* FragmentShaderComponent.ComputeBaseColor */, computeSetBlendColor);
|
|
104
|
-
frag.set(
|
|
104
|
+
frag.set(17 /* FragmentShaderComponent.AssignFragData */, assignFragColor);
|
|
105
105
|
frag.addUniform("u_boundaryType", 1 /* VariableType.Int */, (prog) => {
|
|
106
106
|
prog.addGraphicUniform("u_boundaryType", (uniform, params) => {
|
|
107
107
|
const geom = params.geometry;
|
|
@@ -144,7 +144,7 @@ export function createVolClassBlendProgram(context) {
|
|
|
144
144
|
builder.addInlineComputedVarying("v_texCoord", 3 /* VariableType.Vec2 */, computeTexCoord);
|
|
145
145
|
const frag = builder.frag;
|
|
146
146
|
frag.set(1 /* FragmentShaderComponent.ComputeBaseColor */, computeBlendTextureColor);
|
|
147
|
-
frag.set(
|
|
147
|
+
frag.set(17 /* FragmentShaderComponent.AssignFragData */, assignFragColor);
|
|
148
148
|
frag.addUniform("u_blendTexture", 8 /* VariableType.Sampler2D */, (prog) => {
|
|
149
149
|
prog.addGraphicUniform("u_blendTexture", (uniform, params) => {
|
|
150
150
|
const geom = params.geometry;
|
|
@@ -45,7 +45,7 @@ export function createEDLCalcBasicProgram(context) {
|
|
|
45
45
|
const builder = createViewportQuadBuilder(true);
|
|
46
46
|
const frag = builder.frag;
|
|
47
47
|
frag.set(1 /* FragmentShaderComponent.ComputeBaseColor */, calcBasicEDL);
|
|
48
|
-
frag.set(
|
|
48
|
+
frag.set(17 /* FragmentShaderComponent.AssignFragData */, assignFragColor);
|
|
49
49
|
frag.addUniform("u_texInfo", 4 /* VariableType.Vec3 */, (prog) => {
|
|
50
50
|
prog.addGraphicUniform("u_texInfo", (uniform, params) => {
|
|
51
51
|
const geom = params.geometry;
|
|
@@ -111,7 +111,7 @@ export function createEDLCalcFullProgram(context) {
|
|
|
111
111
|
const builder = createViewportQuadBuilder(true);
|
|
112
112
|
const frag = builder.frag;
|
|
113
113
|
frag.set(1 /* FragmentShaderComponent.ComputeBaseColor */, calcFullEDL);
|
|
114
|
-
frag.set(
|
|
114
|
+
frag.set(17 /* FragmentShaderComponent.AssignFragData */, assignFragColor);
|
|
115
115
|
frag.addUniform("u_texInfo", 4 /* VariableType.Vec3 */, (prog) => {
|
|
116
116
|
prog.addGraphicUniform("u_texInfo", (uniform, params) => {
|
|
117
117
|
const geom = params.geometry;
|
|
@@ -182,7 +182,7 @@ export function createEDLFilterProgram(context) {
|
|
|
182
182
|
const builder = createViewportQuadBuilder(true);
|
|
183
183
|
const frag = builder.frag;
|
|
184
184
|
frag.set(1 /* FragmentShaderComponent.ComputeBaseColor */, filterEDL);
|
|
185
|
-
frag.set(
|
|
185
|
+
frag.set(17 /* FragmentShaderComponent.AssignFragData */, assignFragColor);
|
|
186
186
|
frag.addUniform("u_texInfo", 4 /* VariableType.Vec3 */, (prog) => {
|
|
187
187
|
prog.addGraphicUniform("u_texInfo", (uniform, params) => {
|
|
188
188
|
const geom = params.geometry;
|
|
@@ -221,7 +221,7 @@ export function createEDLMixProgram(context) {
|
|
|
221
221
|
const builder = createViewportQuadBuilder(true);
|
|
222
222
|
const frag = builder.frag;
|
|
223
223
|
frag.set(1 /* FragmentShaderComponent.ComputeBaseColor */, mixEDL);
|
|
224
|
-
frag.set(
|
|
224
|
+
frag.set(17 /* FragmentShaderComponent.AssignFragData */, assignFragColor);
|
|
225
225
|
frag.addUniform("u_colorTexture1", 8 /* VariableType.Sampler2D */, (prog) => {
|
|
226
226
|
prog.addGraphicUniform("u_colorTexture1", (uniform, params) => {
|
|
227
227
|
const geom = params.geometry;
|
|
@@ -63,7 +63,7 @@ export function createEVSMProgram(context) {
|
|
|
63
63
|
addEvsmExponent(frag);
|
|
64
64
|
frag.addFunction(warpDepth);
|
|
65
65
|
frag.set(1 /* FragmentShaderComponent.ComputeBaseColor */, computeEVSM);
|
|
66
|
-
frag.set(
|
|
66
|
+
frag.set(17 /* FragmentShaderComponent.AssignFragData */, assignFragColor);
|
|
67
67
|
builder.vert.headerComment = "//!V! EVSMFromDepth";
|
|
68
68
|
builder.frag.headerComment = "//!F! EVSMFromDepth";
|
|
69
69
|
return builder.buildProgram(context);
|
|
@@ -237,7 +237,7 @@ function createBase(type, instanced, isAnimated, positionType) {
|
|
|
237
237
|
addRenderOrder(vert);
|
|
238
238
|
addRenderOrderConstants(vert);
|
|
239
239
|
builder.addInlineComputedVarying("v_renderOrder", 2 /* VariableType.Float */, computeIndexedRenderOrder);
|
|
240
|
-
builder.frag.set(
|
|
240
|
+
builder.frag.set(21 /* FragmentShaderComponent.OverrideRenderOrder */, "return v_renderOrder;");
|
|
241
241
|
}
|
|
242
242
|
else {
|
|
243
243
|
vert.addInitializer(decodeEndPointAndQuadIndices);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** @packageDocumentation
|
|
2
2
|
* @module WebGL
|
|
3
3
|
*/
|
|
4
|
-
import { FragmentShaderBuilder, ProgramBuilder, ShaderBuilder } from "../ShaderBuilder";
|
|
4
|
+
import { FragmentShaderBuilder, ProgramBuilder, ShaderBuilder, VertexShaderBuilder } from "../ShaderBuilder";
|
|
5
5
|
import { FeatureMode, TechniqueFlags } from "../TechniqueFlags";
|
|
6
6
|
/** @internal */
|
|
7
7
|
export declare const enum FeatureSymbologyOptions {
|
|
@@ -17,6 +17,7 @@ export declare const enum FeatureSymbologyOptions {
|
|
|
17
17
|
}
|
|
18
18
|
/** @internal */
|
|
19
19
|
export declare function addOvrFlagConstants(builder: ShaderBuilder): void;
|
|
20
|
+
export declare function addFeatureIndex(vert: VertexShaderBuilder): void;
|
|
20
21
|
export declare function addMaxAlpha(builder: ShaderBuilder): void;
|
|
21
22
|
/** @internal */
|
|
22
23
|
export declare function addSurfaceHiliter(builder: ProgramBuilder, wantWeight?: boolean): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeatureSymbology.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/FeatureSymbology.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EACL,qBAAqB,EAA2B,cAAc,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"FeatureSymbology.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/FeatureSymbology.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EACL,qBAAqB,EAA2B,cAAc,EAAE,aAAa,EAAmC,mBAAmB,EAEpI,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAWhE,gBAAgB;AAChB,0BAAkB,uBAAuB;IACvC,IAAI,IAAI;IACR,MAAM,IAAS;IACf,QAAQ,IAAS;IACjB,YAAY,IAAS;IACrB,KAAK,IAAS;IACd,KAAK,KAAS;IAEd,OAAO,KAA+B;IACtC,KAAK,KAAwC;IAC7C,MAAM,KAAmD;CAC1D;AAED,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAkBhE;AAwED,wBAAgB,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI,CAK/D;AAsJD,wBAAgB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAIxD;AA6DD,gBAAgB;AAChB,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,GAAE,OAAe,GAAG,IAAI,CAG5F;AAED,gBAAgB;AAChB,wBAAgB,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,GAAE,OAAe,GAAG,IAAI,CAkBrF;AAkBD,gBAAgB;AAChB,eAAO,MAAM,iBAAiB,yLAM7B,CAAC;AAuEF,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,aAAa,QAc7D;AAED,gBAAgB;AAChB,wBAAgB,cAAc,CAAC,OAAO,EAAE,aAAa,QAOpD;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,QAMzD;AAgBD,gBAAgB;AAChB,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,OAAO,QAiB3E;AASD,gBAAgB;AAChB,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,QA4D/E;AAkED,eAAO,MAAM,eAAe,sOAIzB,CAAC;AAwCJ,gBAAgB;AAChB,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,CAIpE;AAoBD,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,uBAAuB,GAAG,IAAI,CAsBnH;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAW/D;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO,GAAG,IAAI,CA0ClG"}
|
|
@@ -16,10 +16,10 @@ import { addAlpha, addLineWeight, replaceLineCode, replaceLineWeight } from "./V
|
|
|
16
16
|
/** @internal */
|
|
17
17
|
export function addOvrFlagConstants(builder) {
|
|
18
18
|
// NB: These are the bit positions of each flag in OvrFlags enum - not the flag values
|
|
19
|
-
builder.addBitFlagConstant("
|
|
19
|
+
builder.addBitFlagConstant("kOvrBit_LineRgb", 0);
|
|
20
20
|
builder.addBitFlagConstant("kOvrBit_Rgb", 1);
|
|
21
21
|
builder.addBitFlagConstant("kOvrBit_Alpha", 2);
|
|
22
|
-
builder.addBitFlagConstant("
|
|
22
|
+
builder.addBitFlagConstant("kOvrBit_LineAlpha", 3);
|
|
23
23
|
builder.addBitFlagConstant("kOvrBit_Flashed", 4);
|
|
24
24
|
builder.addBitFlagConstant("kOvrBit_NonLocatable", 5);
|
|
25
25
|
builder.addBitFlagConstant("kOvrBit_LineCode", 6);
|
|
@@ -28,6 +28,9 @@ export function addOvrFlagConstants(builder) {
|
|
|
28
28
|
builder.addBitFlagConstant("kOvrBit_Hilited", 0);
|
|
29
29
|
builder.addBitFlagConstant("kOvrBit_Emphasized", 1);
|
|
30
30
|
builder.addBitFlagConstant("kOvrBit_ViewIndependentTransparency", 2);
|
|
31
|
+
builder.addBitFlagConstant("kOvrBit_InvisibleDuringPick", 3);
|
|
32
|
+
builder.addBitFlagConstant("kOvrBit_Visibility", 4);
|
|
33
|
+
builder.addBitFlagConstant("kOvrBit_IgnoreMaterial", 5);
|
|
31
34
|
}
|
|
32
35
|
const computeLUTFeatureIndex = `g_featureAndMaterialIndex.xyz`;
|
|
33
36
|
const computeInstanceFeatureIndex = `g_isAreaPattern ? u_patternFeatureId : a_featureId`;
|
|
@@ -73,9 +76,9 @@ vec4 getFirstFeatureRgba() {
|
|
|
73
76
|
}
|
|
74
77
|
`;
|
|
75
78
|
const getSecondFeatureRgba = `
|
|
76
|
-
vec4 getSecondFeatureRgba() {
|
|
79
|
+
vec4 getSecondFeatureRgba(bool isLinear) {
|
|
77
80
|
vec2 coord = feature_texCoord;
|
|
78
|
-
coord.x += g_feature_stepX;
|
|
81
|
+
coord.x += g_feature_stepX * (isLinear ? 2.0 : 1.0);
|
|
79
82
|
return TEXTURE(u_featureLUT, coord);
|
|
80
83
|
}
|
|
81
84
|
`;
|
|
@@ -89,7 +92,7 @@ float computeLineCode() {
|
|
|
89
92
|
return linear_feature_overrides.z > 0.5 ? linear_feature_overrides.w : g_lineCode;
|
|
90
93
|
}
|
|
91
94
|
`;
|
|
92
|
-
function addFeatureIndex(vert) {
|
|
95
|
+
export function addFeatureIndex(vert) {
|
|
93
96
|
vert.addGlobal("g_featureIndex", 4 /* VariableType.Vec3 */);
|
|
94
97
|
vert.addFunction(decodeUint24);
|
|
95
98
|
vert.addFunction(getFeatureIndex(vert));
|
|
@@ -193,7 +196,7 @@ function addCommon(builder, mode, opts, wantGlobalOvrFlags = true) {
|
|
|
193
196
|
});
|
|
194
197
|
});
|
|
195
198
|
}
|
|
196
|
-
addLookupTable(vert, "feature", "
|
|
199
|
+
addLookupTable(vert, "feature", "3.0");
|
|
197
200
|
vert.addGlobal("feature_texCoord", 3 /* VariableType.Vec2 */);
|
|
198
201
|
vert.addFunction(computeFeatureTextureCoords);
|
|
199
202
|
vert.addFunction(getFirstFeatureRgba);
|
|
@@ -294,7 +297,7 @@ export function addHiliter(builder, wantWeight = false) {
|
|
|
294
297
|
addEmphasisFlags(builder.frag);
|
|
295
298
|
addExtractNthBit(builder.frag);
|
|
296
299
|
builder.frag.set(1 /* FragmentShaderComponent.ComputeBaseColor */, computeHiliteColor);
|
|
297
|
-
builder.frag.set(
|
|
300
|
+
builder.frag.set(17 /* FragmentShaderComponent.AssignFragData */, assignFragColor);
|
|
298
301
|
}
|
|
299
302
|
function addSamplers(frag, testFeatureId) {
|
|
300
303
|
if (testFeatureId) {
|
|
@@ -388,6 +391,7 @@ const checkForEarlySurfaceDiscardWithFeatureID = `
|
|
|
388
391
|
export function addRenderOrderConstants(builder) {
|
|
389
392
|
builder.addConstant("kRenderOrder_BlankingRegion", 2 /* VariableType.Float */, 2 /* RenderOrder.BlankingRegion */.toFixed(1));
|
|
390
393
|
builder.addConstant("kRenderOrder_Linear", 2 /* VariableType.Float */, 5 /* RenderOrder.Linear */.toFixed(1));
|
|
394
|
+
builder.addConstant("kRenderOrder_PlanarLinear", 2 /* VariableType.Float */, 13 /* RenderOrder.PlanarLinear */.toFixed(1));
|
|
391
395
|
builder.addConstant("kRenderOrder_Edge", 2 /* VariableType.Float */, 6 /* RenderOrder.Edge */.toFixed(1));
|
|
392
396
|
builder.addConstant("kRenderOrder_PlanarEdge", 2 /* VariableType.Float */, 14 /* RenderOrder.PlanarEdge */.toFixed(1));
|
|
393
397
|
builder.addConstant("kRenderOrder_Silhouette", 2 /* VariableType.Float */, 7 /* RenderOrder.Silhouette */.toFixed(1));
|
|
@@ -515,23 +519,29 @@ const computeFeatureOverrides = `
|
|
|
515
519
|
vec4 value = getFirstFeatureRgba();
|
|
516
520
|
|
|
517
521
|
float emphFlags = value.y * 256.0;
|
|
522
|
+
if (nthFeatureBitSet(emphFlags, kOvrBit_InvisibleDuringPick)) {
|
|
523
|
+
feature_invisible = true;
|
|
524
|
+
return;
|
|
525
|
+
}
|
|
526
|
+
|
|
518
527
|
v_feature_emphasis = kEmphFlag_Hilite * extractNthBit(emphFlags, kOvrBit_Hilited) + kEmphFlag_Emphasize * extractNthBit(emphFlags, kOvrBit_Emphasized);
|
|
519
528
|
|
|
520
529
|
float flags = value.x * 256.0;
|
|
521
|
-
if (0.0 == flags)
|
|
530
|
+
if (0.0 == flags && 0.0 == emphFlags)
|
|
522
531
|
return; // nothing overridden for this feature
|
|
523
532
|
|
|
524
533
|
bool nonLocatable = (u_shaderFlags[kShaderBit_IgnoreNonLocatable] ? nthFeatureBitSet(flags, kOvrBit_NonLocatable) : false);
|
|
525
534
|
v_feature_emphasis += kEmphFlag_NonLocatable * float(nthFeatureBitSet(flags, kOvrBit_NonLocatable));
|
|
526
|
-
bool invisible = nthFeatureBitSet(
|
|
535
|
+
bool invisible = nthFeatureBitSet(emphFlags, kOvrBit_Visibility);
|
|
527
536
|
feature_invisible = invisible || nonLocatable;
|
|
528
537
|
if (feature_invisible)
|
|
529
538
|
return;
|
|
530
539
|
|
|
531
|
-
bool
|
|
532
|
-
bool
|
|
540
|
+
bool isLinear = u_renderOrder == kRenderOrder_Linear || u_renderOrder == kRenderOrder_PlanarLinear || u_renderOrder == kRenderOrder_PlanarEdge;
|
|
541
|
+
bool rgbOverridden = isLinear ? nthFeatureBitSet(flags, kOvrBit_LineRgb) : nthFeatureBitSet(flags, kOvrBit_Rgb);
|
|
542
|
+
bool alphaOverridden = isLinear ? nthFeatureBitSet(flags, kOvrBit_LineAlpha) : nthFeatureBitSet(flags, kOvrBit_Alpha);
|
|
533
543
|
if (alphaOverridden || rgbOverridden) {
|
|
534
|
-
vec4 rgba = getSecondFeatureRgba();
|
|
544
|
+
vec4 rgba = getSecondFeatureRgba(isLinear);
|
|
535
545
|
if (rgbOverridden)
|
|
536
546
|
feature_rgb = rgba.rgb;
|
|
537
547
|
|
|
@@ -546,7 +556,7 @@ const computeFeatureOverrides = `
|
|
|
546
556
|
nthFeatureBitSet(flags, kOvrBit_LineCode),
|
|
547
557
|
value.z * 256.0);
|
|
548
558
|
|
|
549
|
-
feature_ignore_material = nthFeatureBitSet(
|
|
559
|
+
feature_ignore_material = nthFeatureBitSet(emphFlags, kOvrBit_IgnoreMaterial);
|
|
550
560
|
use_material = use_material && !feature_ignore_material;
|
|
551
561
|
|
|
552
562
|
v_feature_emphasis += kEmphFlag_Flash * extractNthFeatureBit(flags, kOvrBit_Flashed);
|
|
@@ -618,7 +628,7 @@ function addApplyFlash(frag) {
|
|
|
618
628
|
addEmphasisFlags(frag);
|
|
619
629
|
addExtractNthBit(frag);
|
|
620
630
|
frag.addFunction(doApplyFlash);
|
|
621
|
-
frag.set(
|
|
631
|
+
frag.set(12 /* FragmentShaderComponent.ApplyFlash */, applyFlash);
|
|
622
632
|
addFlashIntensity(frag);
|
|
623
633
|
}
|
|
624
634
|
/** @internal */
|
|
@@ -634,6 +644,8 @@ export function addFeatureSymbology(builder, feat, opts) {
|
|
|
634
644
|
vert.addGlobal("feature_viewIndependentTransparency", 0 /* VariableType.Boolean */, "false");
|
|
635
645
|
addEmphasisFlags(vert);
|
|
636
646
|
vert.addGlobal("use_material", 0 /* VariableType.Boolean */, "true");
|
|
647
|
+
addRenderOrder(vert);
|
|
648
|
+
addRenderOrderConstants(vert);
|
|
637
649
|
vert.set(3 /* VertexShaderComponent.ComputeFeatureOverrides */, computeFeatureOverrides);
|
|
638
650
|
vert.set(7 /* VertexShaderComponent.ApplyFeatureColor */, applyFeatureColor);
|
|
639
651
|
addApplyFlash(builder.frag);
|
|
@@ -651,7 +663,7 @@ export function addUniformHiliter(builder) {
|
|
|
651
663
|
addEmphasisFlags(builder.frag);
|
|
652
664
|
addExtractNthBit(builder.frag);
|
|
653
665
|
builder.frag.set(1 /* FragmentShaderComponent.ComputeBaseColor */, computeHiliteColor);
|
|
654
|
-
builder.frag.set(
|
|
666
|
+
builder.frag.set(17 /* FragmentShaderComponent.AssignFragData */, assignFragColor);
|
|
655
667
|
}
|
|
656
668
|
/** For a uniform feature table, the feature ID output to pick buffers is equal to the batch ID.
|
|
657
669
|
* The following symbology overrides are supported:
|