@itwin/core-frontend 3.0.0-dev.175 → 3.0.0-dev.179
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/IModelApp.d.ts +1 -1
- package/lib/cjs/IModelApp.d.ts.map +1 -1
- package/lib/cjs/IModelApp.js.map +1 -1
- package/lib/cjs/SheetViewState.d.ts.map +1 -1
- package/lib/cjs/SheetViewState.js +1 -2
- package/lib/cjs/SheetViewState.js.map +1 -1
- package/lib/cjs/Viewport.d.ts +1 -0
- package/lib/cjs/Viewport.d.ts.map +1 -1
- package/lib/cjs/Viewport.js +10 -2
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
- package/lib/cjs/render/RenderSystem.js +5 -6
- package/lib/cjs/render/RenderSystem.js.map +1 -1
- package/lib/cjs/render/RenderTexture.d.ts +2 -17
- package/lib/cjs/render/RenderTexture.d.ts.map +1 -1
- package/lib/cjs/render/RenderTexture.js +0 -17
- package/lib/cjs/render/RenderTexture.js.map +1 -1
- package/lib/cjs/render/webgl/BackgroundMapDrape.js +1 -1
- package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/cjs/render/webgl/CachedGeometry.d.ts +7 -6
- package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/CachedGeometry.js +7 -6
- package/lib/cjs/render/webgl/CachedGeometry.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 +2 -2
- package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
- package/lib/cjs/render/webgl/EdgeGeometry.d.ts +3 -3
- package/lib/cjs/render/webgl/EdgeGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/EdgeGeometry.js +2 -2
- package/lib/cjs/render/webgl/EdgeGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts +1 -1
- package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/IndexedEdgeGeometry.js +1 -1
- package/lib/cjs/render/webgl/IndexedEdgeGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/InstancedGeometry.d.ts +1 -1
- package/lib/cjs/render/webgl/InstancedGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/InstancedGeometry.js +1 -1
- package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/MeshGeometry.d.ts +2 -2
- package/lib/cjs/render/webgl/MeshGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/MeshGeometry.js +4 -5
- package/lib/cjs/render/webgl/MeshGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/PlanarClassifier.d.ts.map +1 -1
- package/lib/cjs/render/webgl/PlanarClassifier.js +2 -1
- package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/cjs/render/webgl/PlanarGrid.d.ts +2 -3
- package/lib/cjs/render/webgl/PlanarGrid.d.ts.map +1 -1
- package/lib/cjs/render/webgl/PlanarGrid.js +1 -1
- package/lib/cjs/render/webgl/PlanarGrid.js.map +1 -1
- package/lib/cjs/render/webgl/PointCloud.d.ts +2 -2
- package/lib/cjs/render/webgl/PointCloud.d.ts.map +1 -1
- package/lib/cjs/render/webgl/PointCloud.js +2 -2
- package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
- package/lib/cjs/render/webgl/PointString.d.ts +2 -2
- package/lib/cjs/render/webgl/PointString.d.ts.map +1 -1
- package/lib/cjs/render/webgl/PointString.js +1 -1
- package/lib/cjs/render/webgl/PointString.js.map +1 -1
- package/lib/cjs/render/webgl/Polyline.d.ts +2 -2
- package/lib/cjs/render/webgl/Polyline.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Polyline.js +6 -6
- package/lib/cjs/render/webgl/Polyline.js.map +1 -1
- package/lib/cjs/render/webgl/Primitive.d.ts +2 -2
- package/lib/cjs/render/webgl/Primitive.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Primitive.js +5 -5
- package/lib/cjs/render/webgl/Primitive.js.map +1 -1
- package/lib/cjs/render/webgl/RealityMesh.d.ts +2 -2
- package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
- package/lib/cjs/render/webgl/RealityMesh.js +4 -4
- package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
- package/lib/cjs/render/webgl/RenderCommands.d.ts +2 -2
- package/lib/cjs/render/webgl/RenderCommands.d.ts.map +1 -1
- package/lib/cjs/render/webgl/RenderCommands.js +49 -42
- package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
- package/lib/cjs/render/webgl/RenderFlags.d.ts +43 -0
- package/lib/cjs/render/webgl/RenderFlags.d.ts.map +1 -1
- package/lib/cjs/render/webgl/RenderFlags.js +58 -1
- package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
- package/lib/cjs/render/webgl/SceneCompositor.js +3 -3
- package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/cjs/render/webgl/ShaderProgram.d.ts +1 -1
- package/lib/cjs/render/webgl/ShaderProgram.d.ts.map +1 -1
- package/lib/cjs/render/webgl/ShaderProgram.js +4 -4
- 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 +2 -2
- package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
- package/lib/cjs/render/webgl/SurfaceGeometry.d.ts +2 -2
- package/lib/cjs/render/webgl/SurfaceGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/SurfaceGeometry.js +16 -8
- package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/System.d.ts.map +1 -1
- package/lib/cjs/render/webgl/System.js +15 -11
- package/lib/cjs/render/webgl/System.js.map +1 -1
- package/lib/cjs/render/webgl/Technique.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Technique.js +1 -68
- package/lib/cjs/render/webgl/Technique.js.map +1 -1
- package/lib/cjs/render/webgl/Texture.d.ts +15 -12
- package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Texture.js +26 -23
- package/lib/cjs/render/webgl/Texture.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/AmbientOcclusion.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +82 -17
- package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +9 -5
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Surface.js +29 -7
- package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Vertex.js +1 -1
- package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
- package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
- package/lib/cjs/tile/GltfReader.js +1 -2
- package/lib/cjs/tile/GltfReader.js.map +1 -1
- package/lib/cjs/tile/ImdlReader.d.ts +3 -1
- package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
- package/lib/cjs/tile/ImdlReader.js +1 -1
- package/lib/cjs/tile/ImdlReader.js.map +1 -1
- package/lib/esm/IModelApp.d.ts +1 -1
- package/lib/esm/IModelApp.d.ts.map +1 -1
- package/lib/esm/IModelApp.js.map +1 -1
- package/lib/esm/SheetViewState.d.ts.map +1 -1
- package/lib/esm/SheetViewState.js +1 -2
- package/lib/esm/SheetViewState.js.map +1 -1
- package/lib/esm/Viewport.d.ts +1 -0
- package/lib/esm/Viewport.d.ts.map +1 -1
- package/lib/esm/Viewport.js +10 -2
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/render/RenderSystem.d.ts.map +1 -1
- package/lib/esm/render/RenderSystem.js +6 -7
- package/lib/esm/render/RenderSystem.js.map +1 -1
- package/lib/esm/render/RenderTexture.d.ts +2 -17
- package/lib/esm/render/RenderTexture.d.ts.map +1 -1
- package/lib/esm/render/RenderTexture.js +1 -16
- package/lib/esm/render/RenderTexture.js.map +1 -1
- package/lib/esm/render/webgl/BackgroundMapDrape.js +2 -2
- package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/esm/render/webgl/CachedGeometry.d.ts +7 -6
- package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/CachedGeometry.js +7 -6
- package/lib/esm/render/webgl/CachedGeometry.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 +2 -2
- package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
- package/lib/esm/render/webgl/EdgeGeometry.d.ts +3 -3
- package/lib/esm/render/webgl/EdgeGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/EdgeGeometry.js +2 -2
- package/lib/esm/render/webgl/EdgeGeometry.js.map +1 -1
- package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts +1 -1
- package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/IndexedEdgeGeometry.js +1 -1
- package/lib/esm/render/webgl/IndexedEdgeGeometry.js.map +1 -1
- package/lib/esm/render/webgl/InstancedGeometry.d.ts +1 -1
- package/lib/esm/render/webgl/InstancedGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/InstancedGeometry.js +1 -1
- package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/esm/render/webgl/MeshGeometry.d.ts +2 -2
- package/lib/esm/render/webgl/MeshGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/MeshGeometry.js +4 -5
- package/lib/esm/render/webgl/MeshGeometry.js.map +1 -1
- package/lib/esm/render/webgl/PlanarClassifier.d.ts.map +1 -1
- package/lib/esm/render/webgl/PlanarClassifier.js +3 -2
- package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/esm/render/webgl/PlanarGrid.d.ts +2 -3
- package/lib/esm/render/webgl/PlanarGrid.d.ts.map +1 -1
- package/lib/esm/render/webgl/PlanarGrid.js +1 -1
- package/lib/esm/render/webgl/PlanarGrid.js.map +1 -1
- package/lib/esm/render/webgl/PointCloud.d.ts +2 -2
- package/lib/esm/render/webgl/PointCloud.d.ts.map +1 -1
- package/lib/esm/render/webgl/PointCloud.js +2 -2
- package/lib/esm/render/webgl/PointCloud.js.map +1 -1
- package/lib/esm/render/webgl/PointString.d.ts +2 -2
- package/lib/esm/render/webgl/PointString.d.ts.map +1 -1
- package/lib/esm/render/webgl/PointString.js +1 -1
- package/lib/esm/render/webgl/PointString.js.map +1 -1
- package/lib/esm/render/webgl/Polyline.d.ts +2 -2
- package/lib/esm/render/webgl/Polyline.d.ts.map +1 -1
- package/lib/esm/render/webgl/Polyline.js +6 -6
- package/lib/esm/render/webgl/Polyline.js.map +1 -1
- package/lib/esm/render/webgl/Primitive.d.ts +2 -2
- package/lib/esm/render/webgl/Primitive.d.ts.map +1 -1
- package/lib/esm/render/webgl/Primitive.js +5 -5
- package/lib/esm/render/webgl/Primitive.js.map +1 -1
- package/lib/esm/render/webgl/RealityMesh.d.ts +2 -2
- package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
- package/lib/esm/render/webgl/RealityMesh.js +4 -4
- package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
- package/lib/esm/render/webgl/RenderCommands.d.ts +2 -2
- package/lib/esm/render/webgl/RenderCommands.d.ts.map +1 -1
- package/lib/esm/render/webgl/RenderCommands.js +49 -42
- package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
- package/lib/esm/render/webgl/RenderFlags.d.ts +43 -0
- package/lib/esm/render/webgl/RenderFlags.d.ts.map +1 -1
- package/lib/esm/render/webgl/RenderFlags.js +57 -0
- package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
- package/lib/esm/render/webgl/SceneCompositor.js +3 -3
- package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/esm/render/webgl/ShaderProgram.d.ts +1 -1
- package/lib/esm/render/webgl/ShaderProgram.d.ts.map +1 -1
- package/lib/esm/render/webgl/ShaderProgram.js +4 -4
- 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 +3 -3
- package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
- package/lib/esm/render/webgl/SurfaceGeometry.d.ts +2 -2
- package/lib/esm/render/webgl/SurfaceGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/SurfaceGeometry.js +17 -9
- package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -1
- package/lib/esm/render/webgl/System.d.ts.map +1 -1
- package/lib/esm/render/webgl/System.js +16 -12
- package/lib/esm/render/webgl/System.js.map +1 -1
- package/lib/esm/render/webgl/Technique.d.ts.map +1 -1
- package/lib/esm/render/webgl/Technique.js +1 -68
- package/lib/esm/render/webgl/Technique.js.map +1 -1
- package/lib/esm/render/webgl/Texture.d.ts +15 -12
- package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
- package/lib/esm/render/webgl/Texture.js +27 -24
- package/lib/esm/render/webgl/Texture.js.map +1 -1
- package/lib/esm/render/webgl/glsl/AmbientOcclusion.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +83 -18
- package/lib/esm/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
- package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/FeatureSymbology.js +10 -6
- package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Surface.js +31 -9
- package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Vertex.js +2 -2
- package/lib/esm/render/webgl/glsl/Vertex.js.map +1 -1
- package/lib/esm/tile/GltfReader.d.ts.map +1 -1
- package/lib/esm/tile/GltfReader.js +2 -3
- package/lib/esm/tile/GltfReader.js.map +1 -1
- package/lib/esm/tile/ImdlReader.d.ts +3 -1
- package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
- package/lib/esm/tile/ImdlReader.js +1 -1
- package/lib/esm/tile/ImdlReader.js.map +1 -1
- package/package.json +24 -23
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Polyline.js","sourceRoot":"","sources":["../../../../src/render/webgl/Polyline.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAA8C;AAE9C,oDAAgG;AAEhG,kDAA+C;AAC/C,qDAAgE;AAGhE,yCAAsC;AACtC,6BAA0B;AAG1B,qCAAkC;AAGlC,2CAAwC;AAExC,gBAAgB;AAChB,MAAa,gBAAiB,SAAQ,4BAAW;IAa/C,YAAoB,GAAc,EAAE,OAAwB,EAAE,MAAsB,EAAE,QAA6B;QACjH,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC5C,IAAI,CAAC,YAAY,GAAG,8BAAgB,CAAC,KAAK,KAAK,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAChF,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,mBAAQ,CAAC,mBAAmB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAChE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;QACjD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAbD,IAAW,UAAU,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAezD,IAAW,UAAU,KAAc,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IAErF,OAAO;QACZ,IAAA,sBAAO,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClB,IAAA,sBAAO,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IAEM,iBAAiB,CAAC,KAA8B;QACrD,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,KAAK,EAAE,2BAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC1E,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED,IAAW,SAAS,KAAc,OAAO,+BAAiB,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAClF,IAAW,YAAY,KAAc,OAAO,+BAAiB,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACnF,IAAW,aAAa,KAAc,OAAO,+BAAiB,CAAC,OAAO,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAEvF,IAAW,WAAW;QACpB,IAAI,IAAI,CAAC,SAAS;YAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,qBAAwB,CAAC,aAAiB,CAAC;;YAEjE,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,uBAA0B,CAAC,eAAmB,CAAC;IACzE,CAAC;IAES,gBAAgB,CAAC,OAAe,IAAa,OAAO,IAAI,CAAC,CAAC,CAAC;IAErE,IAAoB,eAAe,KAAkC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEpF,gBAAgB,CAAC,MAAc,EAAE,SAAoB;QAC3D,MAAM,EAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC;QACnC,IAAI,wBAAU,CAAC,WAAW,KAAK,EAAE,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC,YAAY;YAC9D,sBAAuB;QAEzB,0GAA0G;QAC1G,MAAM,aAAa,GAAY,wBAAU,CAAC,SAAS,KAAK,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC,YAAY,IAAI,SAAS,CAAC,eAAe,CAAC;QACtH,OAAO,aAAa,CAAC,CAAC,qBAAwB,CAAC,qBAAwB,CAAC;IAC1E,CAAC;IAEM,aAAa,CAAC,MAAc;QACjC,MAAM,EAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC;QACnC,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC7D,0DAA0D;YAC1D,IAAI,mBAAoB,IAAI,IAAI,IAAI,CAAC,aAAa,IAAI,wBAAU,CAAC,SAAS,KAAK,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC,IAAI;gBACrG,IAAI,iBAAkB,CAAC;YACzB,OAAO,IAAI,CAAC;SACb;QACD,MAAM,aAAa,GAAY,EAAE,CAAC,YAAY,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,CAAC;QACrF,OAAO,aAAa,CAAC,CAAC,qBAAwB,CAAC,qBAAwB,CAAC;IAC1E,CAAC;IAED,IAAW,WAAW,KAAkB,wBAA4B,CAAC,CAAC;IACtE,IAAW,QAAQ,KAAc,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACzD,IAAoB,MAAM,KAAc,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAChE,IAAoB,OAAO,KAAmB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACxE,IAAoB,MAAM,KAAmB,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACtE,IAAW,gBAAgB,KAAa,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC3E,IAAoB,WAAW,KAAK,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAE5C,cAAc,CAAC,MAA2B;QAC3D,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;IAC7G,CAAC;IACkB,YAAY,CAAC,MAA2B;QACzD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC3G,CAAC;IACe,QAAQ,CAAC,MAAc;QACrC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;IACxF,CAAC;IAES,KAAK,CAAC,YAAoB,EAAE,wBAA2C;QAC/E,MAAM,EAAE,GAAG,eAAM,CAAC,QAAQ,CAAC;QAC3B,MAAM,IAAI,GAAG,wBAAwB,KAAK,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAEvG,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,EAAE,CAAC,UAAU,CAAC,OAAE,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAC5E,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,MAAsB,EAAE,qBAA0C;QACrF,MAAM,GAAG,GAAG,qBAAS,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7D,IAAI,SAAS,KAAK,GAAG;YACnB,OAAO,SAAS,CAAC;QAEnB,MAAM,OAAO,GAAG,gCAAe,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI,SAAS,KAAK,OAAO;YACvB,OAAO,SAAS,CAAC;QAEnB,OAAO,IAAI,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAC3E,CAAC;CACF;AAlHD,4CAkHC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { dispose } from \"@itwin/core-bentley\";\r\nimport { Point3d } from \"@itwin/core-geometry\";\r\nimport { FeatureIndexType, PolylineTypeFlags, QParams3d, RenderMode } from \"@itwin/core-common\";\r\nimport { PolylineParams } from \"../primitives/PolylineParams\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { LUTGeometry, PolylineBuffers } from \"./CachedGeometry\";\r\nimport { ColorInfo } from \"./ColorInfo\";\r\nimport { ShaderProgramParams } from \"./DrawCommand\";\r\nimport { LineCode } from \"./LineCode\";\r\nimport { GL } from \"./GL\";\r\nimport { BuffersContainer } from \"./AttributeBuffers\";\r\nimport { RenderOrder, RenderPass } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\nimport { VertexLUT } from \"./VertexLUT\";\r\n\r\n/** @internal */\r\nexport class PolylineGeometry extends LUTGeometry {\r\n public vertexParams: QParams3d;\r\n private readonly _hasFeatures: boolean;\r\n public lineWeight: number;\r\n public lineCode: number;\r\n public type: PolylineTypeFlags;\r\n private _isPlanar: boolean;\r\n public lut: VertexLUT;\r\n public numIndices: number;\r\n private _buffers: PolylineBuffers;\r\n\r\n public get lutBuffers() { return this._buffers.buffers; }\r\n\r\n private constructor(lut: VertexLUT, buffers: PolylineBuffers, params: PolylineParams, viOrigin: Point3d | undefined) {\r\n super(viOrigin);\r\n this.vertexParams = params.vertices.qparams;\r\n this._hasFeatures = FeatureIndexType.Empty !== params.vertices.featureIndexType;\r\n this.lineWeight = params.weight;\r\n this.lineCode = LineCode.valueFromLinePixels(params.linePixels);\r\n this.type = params.type;\r\n this._isPlanar = params.isPlanar;\r\n this.lut = lut;\r\n this.numIndices = params.polyline.indices.length;\r\n this._buffers = buffers;\r\n }\r\n\r\n public get isDisposed(): boolean { return this._buffers.isDisposed && this.lut.isDisposed; }\r\n\r\n public dispose() {\r\n dispose(this.lut);\r\n dispose(this._buffers);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this._buffers.collectStatistics(stats, RenderMemory.BufferType.Polylines);\r\n stats.addVertexTable(this.lut.bytesUsed);\r\n }\r\n\r\n public get isAnyEdge(): boolean { return PolylineTypeFlags.Normal !== this.type; }\r\n public get isNormalEdge(): boolean { return PolylineTypeFlags.Edge === this.type; }\r\n public get isOutlineEdge(): boolean { return PolylineTypeFlags.Outline === this.type; }\r\n\r\n public get renderOrder(): RenderOrder {\r\n if (this.isAnyEdge)\r\n return this.isPlanar ? RenderOrder.PlanarEdge : RenderOrder.Edge;\r\n else\r\n return this.isPlanar ? RenderOrder.PlanarLinear : RenderOrder.Linear;\r\n }\r\n\r\n protected _wantWoWReversal(_target: Target): boolean { return true; }\r\n\r\n public override get polylineBuffers(): PolylineBuffers | undefined { return this._buffers; }\r\n\r\n private _computeEdgePass(target: Target, colorInfo: ColorInfo): RenderPass {\r\n const vf = target.currentViewFlags;\r\n if (RenderMode.SmoothShade === vf.renderMode && !vf.visibleEdges)\r\n return RenderPass.None;\r\n\r\n // Only want to return Translucent for edges if rendering in Wireframe mode ###TODO: what about overrides?\r\n const isTranslucent: boolean = RenderMode.Wireframe === vf.renderMode && vf.transparency && colorInfo.hasTranslucency;\r\n return isTranslucent ? RenderPass.Translucent : RenderPass.OpaqueLinear;\r\n }\r\n\r\n public getRenderPass(target: Target): RenderPass {\r\n const vf = target.currentViewFlags;\r\n if (this.isEdge) {\r\n let pass = this._computeEdgePass(target, this.lut.colorInfo);\r\n // Only display the outline in wireframe if Fill is off...\r\n if (RenderPass.None !== pass && this.isOutlineEdge && RenderMode.Wireframe === vf.renderMode && vf.fill)\r\n pass = RenderPass.None;\r\n return pass;\r\n }\r\n const isTranslucent: boolean = vf.transparency && this.lut.colorInfo.hasTranslucency;\r\n return isTranslucent ? RenderPass.Translucent : RenderPass.OpaqueLinear;\r\n }\r\n\r\n public get techniqueId(): TechniqueId { return TechniqueId.Polyline; }\r\n public get isPlanar(): boolean { return this._isPlanar; }\r\n public override get isEdge(): boolean { return this.isAnyEdge; }\r\n public override get qOrigin(): Float32Array { return this.lut.qOrigin; }\r\n public override get qScale(): Float32Array { return this.lut.qScale; }\r\n public get numRgbaPerVertex(): number { return this.lut.numRgbaPerVertex; }\r\n public override get hasFeatures() { return this._hasFeatures; }\r\n\r\n protected override _getLineWeight(params: ShaderProgramParams): number {\r\n return this.isEdge ? params.target.computeEdgeWeight(params.renderPass, this.lineWeight) : this.lineWeight;\r\n }\r\n protected override _getLineCode(params: ShaderProgramParams): number {\r\n return this.isEdge ? params.target.computeEdgeLineCode(params.renderPass, this.lineCode) : this.lineCode;\r\n }\r\n public override getColor(target: Target): ColorInfo {\r\n return this.isEdge ? target.computeEdgeColor(this.lut.colorInfo) : this.lut.colorInfo;\r\n }\r\n\r\n protected _draw(numInstances: number, instanceBuffersContainer?: BuffersContainer): void {\r\n const gl = System.instance;\r\n const bufs = instanceBuffersContainer !== undefined ? instanceBuffersContainer : this._buffers.buffers;\r\n\r\n bufs.bind();\r\n gl.drawArrays(GL.PrimitiveType.Triangles, 0, this.numIndices, numInstances);\r\n bufs.unbind();\r\n }\r\n\r\n public static create(params: PolylineParams, viewIndependentOrigin: Point3d | undefined): PolylineGeometry | undefined {\r\n const lut = VertexLUT.createFromVertexTable(params.vertices);\r\n if (undefined === lut)\r\n return undefined;\r\n\r\n const buffers = PolylineBuffers.create(params.polyline);\r\n if (undefined === buffers)\r\n return undefined;\r\n\r\n return new PolylineGeometry(lut, buffers, params, viewIndependentOrigin);\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"Polyline.js","sourceRoot":"","sources":["../../../../src/render/webgl/Polyline.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 { dispose } from \"@itwin/core-bentley\";\r\nimport { Point3d } from \"@itwin/core-geometry\";\r\nimport { FeatureIndexType, PolylineTypeFlags, QParams3d, RenderMode } from \"@itwin/core-common\";\r\nimport { PolylineParams } from \"../primitives/PolylineParams\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { LUTGeometry, PolylineBuffers } from \"./CachedGeometry\";\r\nimport { ColorInfo } from \"./ColorInfo\";\r\nimport { ShaderProgramParams } from \"./DrawCommand\";\r\nimport { LineCode } from \"./LineCode\";\r\nimport { GL } from \"./GL\";\r\nimport { BuffersContainer } from \"./AttributeBuffers\";\r\nimport { Pass, RenderOrder } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\nimport { VertexLUT } from \"./VertexLUT\";\r\n\r\n/** @internal */\r\nexport class PolylineGeometry extends LUTGeometry {\r\n public vertexParams: QParams3d;\r\n private readonly _hasFeatures: boolean;\r\n public lineWeight: number;\r\n public lineCode: number;\r\n public type: PolylineTypeFlags;\r\n private _isPlanar: boolean;\r\n public lut: VertexLUT;\r\n public numIndices: number;\r\n private _buffers: PolylineBuffers;\r\n\r\n public get lutBuffers() { return this._buffers.buffers; }\r\n\r\n private constructor(lut: VertexLUT, buffers: PolylineBuffers, params: PolylineParams, viOrigin: Point3d | undefined) {\r\n super(viOrigin);\r\n this.vertexParams = params.vertices.qparams;\r\n this._hasFeatures = FeatureIndexType.Empty !== params.vertices.featureIndexType;\r\n this.lineWeight = params.weight;\r\n this.lineCode = LineCode.valueFromLinePixels(params.linePixels);\r\n this.type = params.type;\r\n this._isPlanar = params.isPlanar;\r\n this.lut = lut;\r\n this.numIndices = params.polyline.indices.length;\r\n this._buffers = buffers;\r\n }\r\n\r\n public get isDisposed(): boolean { return this._buffers.isDisposed && this.lut.isDisposed; }\r\n\r\n public dispose() {\r\n dispose(this.lut);\r\n dispose(this._buffers);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this._buffers.collectStatistics(stats, RenderMemory.BufferType.Polylines);\r\n stats.addVertexTable(this.lut.bytesUsed);\r\n }\r\n\r\n public get isAnyEdge(): boolean { return PolylineTypeFlags.Normal !== this.type; }\r\n public get isNormalEdge(): boolean { return PolylineTypeFlags.Edge === this.type; }\r\n public get isOutlineEdge(): boolean { return PolylineTypeFlags.Outline === this.type; }\r\n\r\n public get renderOrder(): RenderOrder {\r\n if (this.isAnyEdge)\r\n return this.isPlanar ? RenderOrder.PlanarEdge : RenderOrder.Edge;\r\n else\r\n return this.isPlanar ? RenderOrder.PlanarLinear : RenderOrder.Linear;\r\n }\r\n\r\n protected _wantWoWReversal(_target: Target): boolean { return true; }\r\n\r\n public override get polylineBuffers(): PolylineBuffers | undefined { return this._buffers; }\r\n\r\n private _computeEdgePass(target: Target, colorInfo: ColorInfo): Pass {\r\n const vf = target.currentViewFlags;\r\n if (RenderMode.SmoothShade === vf.renderMode && !vf.visibleEdges)\r\n return \"none\";\r\n\r\n // Only want to return Translucent for edges if rendering in Wireframe mode ###TODO: what about overrides?\r\n const isTranslucent: boolean = RenderMode.Wireframe === vf.renderMode && vf.transparency && colorInfo.hasTranslucency;\r\n return isTranslucent ? \"translucent\" : \"opaque-linear\";\r\n }\r\n\r\n public override getPass(target: Target): Pass {\r\n const vf = target.currentViewFlags;\r\n if (this.isEdge) {\r\n let pass = this._computeEdgePass(target, this.lut.colorInfo);\r\n // Only display the outline in wireframe if Fill is off...\r\n if (\"none\" !== pass && this.isOutlineEdge && RenderMode.Wireframe === vf.renderMode && vf.fill)\r\n pass = \"none\";\r\n\r\n return pass;\r\n }\r\n\r\n const isTranslucent: boolean = vf.transparency && this.lut.colorInfo.hasTranslucency;\r\n return isTranslucent ? \"translucent\" : \"opaque-linear\";\r\n }\r\n\r\n public get techniqueId(): TechniqueId { return TechniqueId.Polyline; }\r\n public get isPlanar(): boolean { return this._isPlanar; }\r\n public override get isEdge(): boolean { return this.isAnyEdge; }\r\n public override get qOrigin(): Float32Array { return this.lut.qOrigin; }\r\n public override get qScale(): Float32Array { return this.lut.qScale; }\r\n public get numRgbaPerVertex(): number { return this.lut.numRgbaPerVertex; }\r\n public override get hasFeatures() { return this._hasFeatures; }\r\n\r\n protected override _getLineWeight(params: ShaderProgramParams): number {\r\n return this.isEdge ? params.target.computeEdgeWeight(params.renderPass, this.lineWeight) : this.lineWeight;\r\n }\r\n protected override _getLineCode(params: ShaderProgramParams): number {\r\n return this.isEdge ? params.target.computeEdgeLineCode(params.renderPass, this.lineCode) : this.lineCode;\r\n }\r\n public override getColor(target: Target): ColorInfo {\r\n return this.isEdge ? target.computeEdgeColor(this.lut.colorInfo) : this.lut.colorInfo;\r\n }\r\n\r\n protected _draw(numInstances: number, instanceBuffersContainer?: BuffersContainer): void {\r\n const gl = System.instance;\r\n const bufs = instanceBuffersContainer !== undefined ? instanceBuffersContainer : this._buffers.buffers;\r\n\r\n bufs.bind();\r\n gl.drawArrays(GL.PrimitiveType.Triangles, 0, this.numIndices, numInstances);\r\n bufs.unbind();\r\n }\r\n\r\n public static create(params: PolylineParams, viewIndependentOrigin: Point3d | undefined): PolylineGeometry | undefined {\r\n const lut = VertexLUT.createFromVertexTable(params.vertices);\r\n if (undefined === lut)\r\n return undefined;\r\n\r\n const buffers = PolylineBuffers.create(params.polyline);\r\n if (undefined === buffers)\r\n return undefined;\r\n\r\n return new PolylineGeometry(lut, buffers, params, viewIndependentOrigin);\r\n }\r\n}\r\n"]}
|
|
@@ -8,7 +8,7 @@ import { CachedGeometry } from "./CachedGeometry";
|
|
|
8
8
|
import { Graphic } from "./Graphic";
|
|
9
9
|
import { InstanceBuffers, PatternBuffers } from "./InstancedGeometry";
|
|
10
10
|
import { RenderCommands } from "./RenderCommands";
|
|
11
|
-
import { RenderOrder, RenderPass } from "./RenderFlags";
|
|
11
|
+
import { Pass, RenderOrder, RenderPass } from "./RenderFlags";
|
|
12
12
|
import { ShaderProgramExecutor } from "./ShaderProgram";
|
|
13
13
|
import { Target } from "./Target";
|
|
14
14
|
import { TechniqueId } from "./TechniqueId";
|
|
@@ -23,7 +23,7 @@ export declare class Primitive extends Graphic {
|
|
|
23
23
|
get isPickable(): boolean;
|
|
24
24
|
dispose(): void;
|
|
25
25
|
collectStatistics(stats: RenderMemory.Statistics): void;
|
|
26
|
-
|
|
26
|
+
getPass(target: Target): Pass;
|
|
27
27
|
get hasFeatures(): boolean;
|
|
28
28
|
addCommands(commands: RenderCommands): void;
|
|
29
29
|
addHiliteCommands(commands: RenderCommands, pass: RenderPass): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Primitive.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/Primitive.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,cAAc,EAA8C,MAAM,kBAAkB,CAAC;AAE9F,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAA+C,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACnH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"Primitive.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/Primitive.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,cAAc,EAA8C,MAAM,kBAAkB,CAAC;AAE9F,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAA+C,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACnH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,gBAAgB;AAChB,qBAAa,SAAU,SAAQ,OAAO;IAC7B,cAAc,EAAE,cAAc,CAAC;IAC/B,WAAW,EAAE,OAAO,CAAS;IAEpC,SAAS,aAAa,UAAU,EAAE,cAAc;WAElC,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,EAAE,SAAS,CAAC,EAAE,sBAAsB,GAAG,iBAAiB,GAAG,SAAS,GAAG,SAAS;WAsBvH,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,EAAE,SAAS,CAAC,EAAE,eAAe,GAAG,cAAc,GAAG,SAAS,GAAG,SAAS;IAejI,IAAW,UAAU,IAAI,OAAO,CAA2C;IAC3E,IAAW,UAAU,YAAoB;IAElC,OAAO;IAIP,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI;IAIvD,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAkBpC,IAAW,WAAW,IAAI,OAAO,CAA4C;IAEtE,WAAW,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAElC,iBAAiB,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI;IAOnF,IAAW,YAAY,IAAI,OAAO,CAA6C;IAC/E,IAAW,WAAW,IAAI,OAAO,CAA4C;IAC7E,IAAW,KAAK,IAAI,OAAO,CAA6C;IACxE,IAAW,MAAM,IAAI,OAAO,CAAuC;IACnE,IAAW,WAAW,IAAI,WAAW,CAA4C;IACjF,IAAW,gBAAgB,IAAI,OAAO,CAAiD;IAEvE,WAAW,IAAI,SAAS;IAExC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAa;WAE1B,UAAU,IAAI,IAAI;IAEzB,IAAI,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI;IAUhD,IAAW,WAAW,IAAI,WAAW,CAA4C;CAClF;AAED,gBAAgB;AAChB,qBAAa,gBAAiB,SAAQ,SAAS;gBAC1B,UAAU,EAAE,cAAc;IAE7B,IAAI,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI;CAa1D;AAED,gBAAgB;AAChB,qBAAa,kBAAmB,SAAQ,SAAS;gBAC5B,UAAU,EAAE,cAAc;IAK7B,IAAI,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI;CAI1D"}
|
|
@@ -61,20 +61,20 @@ class Primitive extends Graphic_1.Graphic {
|
|
|
61
61
|
collectStatistics(stats) {
|
|
62
62
|
this.cachedGeometry.collectStatistics(stats);
|
|
63
63
|
}
|
|
64
|
-
|
|
64
|
+
getPass(target) {
|
|
65
65
|
if (this.isPixelMode)
|
|
66
|
-
return
|
|
66
|
+
return "view-overlay";
|
|
67
67
|
switch (target.primitiveVisibility) {
|
|
68
68
|
case RenderTarget_1.PrimitiveVisibility.Uninstanced:
|
|
69
69
|
if (this.cachedGeometry.isInstanced)
|
|
70
|
-
return
|
|
70
|
+
return "none";
|
|
71
71
|
break;
|
|
72
72
|
case RenderTarget_1.PrimitiveVisibility.Instanced:
|
|
73
73
|
if (!this.cachedGeometry.isInstanced)
|
|
74
|
-
return
|
|
74
|
+
return "none";
|
|
75
75
|
break;
|
|
76
76
|
}
|
|
77
|
-
return this.cachedGeometry.
|
|
77
|
+
return this.cachedGeometry.getPass(target);
|
|
78
78
|
}
|
|
79
79
|
get hasFeatures() { return this.cachedGeometry.hasFeatures; }
|
|
80
80
|
addCommands(commands) { commands.addPrimitive(this); }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Primitive.js","sourceRoot":"","sources":["../../../../src/render/webgl/Primitive.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { InstancedGraphicParams } from \"../InstancedGraphicParams\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { PrimitiveVisibility } from \"../RenderTarget\";\r\nimport { RenderAreaPattern } from \"../RenderSystem\";\r\nimport { CachedGeometry, LUTGeometry, SkySphereViewportQuadGeometry } from \"./CachedGeometry\";\r\nimport { DrawParams, PrimitiveCommand } from \"./DrawCommand\";\r\nimport { Graphic } from \"./Graphic\";\r\nimport { InstanceBuffers, InstancedGeometry, isInstancedGraphicParams, PatternBuffers } from \"./InstancedGeometry\";\r\nimport { RenderCommands } from \"./RenderCommands\";\r\nimport { RenderOrder, RenderPass } from \"./RenderFlags\";\r\nimport { ShaderProgramExecutor } from \"./ShaderProgram\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\n\r\n/** @internal */\r\nexport class Primitive extends Graphic {\r\n public cachedGeometry: CachedGeometry;\r\n public isPixelMode: boolean = false;\r\n\r\n protected constructor(cachedGeom: CachedGeometry) { super(); this.cachedGeometry = cachedGeom; }\r\n\r\n public static create(geom: CachedGeometry | undefined, instances?: InstancedGraphicParams | RenderAreaPattern): Primitive | undefined {\r\n if (!geom)\r\n return undefined;\r\n\r\n if (instances) {\r\n assert(geom instanceof LUTGeometry, \"Invalid geometry type for instancing\");\r\n if (instances instanceof PatternBuffers) {\r\n geom = InstancedGeometry.createPattern(geom, true, instances);\r\n } else {\r\n assert(isInstancedGraphicParams(instances));\r\n const range = InstanceBuffers.computeRange(geom.computeRange(), instances.transforms, instances.transformCenter);\r\n const instanceBuffers = InstanceBuffers.create(instances, range);\r\n if (!instanceBuffers)\r\n return undefined;\r\n\r\n geom = InstancedGeometry.create(geom, true, instanceBuffers);\r\n }\r\n }\r\n\r\n return new this(geom);\r\n }\r\n\r\n public static createShared(geom: CachedGeometry | undefined, instances?: InstanceBuffers | PatternBuffers): Primitive | undefined {\r\n if (!geom)\r\n return undefined;\r\n\r\n if (instances) {\r\n assert(geom instanceof LUTGeometry, \"Invalid geometry type for instancing\");\r\n if (instances instanceof InstanceBuffers)\r\n geom = InstancedGeometry.create(geom, false, instances);\r\n else\r\n geom = InstancedGeometry.createPattern(geom, false, instances);\r\n }\r\n\r\n return new this(geom);\r\n }\r\n\r\n public get isDisposed(): boolean { return this.cachedGeometry.isDisposed; }\r\n public get isPickable() { return false; }\r\n\r\n public dispose() {\r\n dispose(this.cachedGeometry);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this.cachedGeometry.collectStatistics(stats);\r\n }\r\n\r\n public getRenderPass(target: Target) {\r\n if (this.isPixelMode)\r\n return RenderPass.ViewOverlay;\r\n\r\n switch (target.primitiveVisibility) {\r\n case PrimitiveVisibility.Uninstanced:\r\n if (this.cachedGeometry.isInstanced)\r\n return RenderPass.None;\r\n break;\r\n case PrimitiveVisibility.Instanced:\r\n if (!this.cachedGeometry.isInstanced)\r\n return RenderPass.None;\r\n break;\r\n }\r\n\r\n return this.cachedGeometry.getRenderPass(target);\r\n }\r\n\r\n public get hasFeatures(): boolean { return this.cachedGeometry.hasFeatures; }\r\n\r\n public addCommands(commands: RenderCommands): void { commands.addPrimitive(this); }\r\n\r\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass): void {\r\n // Edges do not contribute to hilite pass.\r\n // Note that IsEdge() does not imply geom->ToEdge() => true...polylines can be edges too...\r\n if (!this.isEdge)\r\n commands.getCommands(pass).push(new PrimitiveCommand(this));\r\n }\r\n\r\n public get hasAnimation(): boolean { return this.cachedGeometry.hasAnimation; }\r\n public get isInstanced(): boolean { return this.cachedGeometry.isInstanced; }\r\n public get isLit(): boolean { return this.cachedGeometry.isLitSurface; }\r\n public get isEdge(): boolean { return this.cachedGeometry.isEdge; }\r\n public get renderOrder(): RenderOrder { return this.cachedGeometry.renderOrder; }\r\n public get hasMaterialAtlas(): boolean { return this.cachedGeometry.hasMaterialAtlas; }\r\n\r\n public override toPrimitive(): Primitive { return this; }\r\n\r\n private static _drawParams?: DrawParams;\r\n\r\n public static freeParams(): void { Primitive._drawParams = undefined; }\r\n\r\n public draw(shader: ShaderProgramExecutor): void {\r\n // ###TODO: local to world should be pushed before we're invoked...we shouldn't need to pass (or copy) it\r\n if (undefined === Primitive._drawParams)\r\n Primitive._drawParams = new DrawParams();\r\n\r\n const drawParams = Primitive._drawParams;\r\n drawParams.init(shader.params, this.cachedGeometry);\r\n shader.draw(drawParams);\r\n }\r\n\r\n public get techniqueId(): TechniqueId { return this.cachedGeometry.techniqueId; }\r\n}\r\n\r\n/** @internal */\r\nexport class SkyCubePrimitive extends Primitive {\r\n public constructor(cachedGeom: CachedGeometry) { super(cachedGeom); }\r\n\r\n public override draw(shader: ShaderProgramExecutor): void {\r\n // Alter viewport to maintain square aspect ratio of skybox images even as viewRect resizes\r\n const vh = shader.target.viewRect.height;\r\n const vw = shader.target.viewRect.width;\r\n if (vw > vh)\r\n System.instance.context.viewport(0, -(vw - vh) / 2, vw, vw);\r\n else\r\n System.instance.context.viewport(-(vh - vw) / 2, 0, vh, vh);\r\n\r\n super.draw(shader); // Draw the skybox cubemap\r\n\r\n System.instance.context.viewport(0, 0, vw, vh); // Restore viewport\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class SkySpherePrimitive extends Primitive {\r\n public constructor(cachedGeom: CachedGeometry) {\r\n super(cachedGeom);\r\n assert(cachedGeom instanceof SkySphereViewportQuadGeometry);\r\n }\r\n\r\n public override draw(shader: ShaderProgramExecutor): void {\r\n (this.cachedGeometry as SkySphereViewportQuadGeometry).initWorldPos(shader.target);\r\n super.draw(shader); // Draw the skybox sphere\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"Primitive.js","sourceRoot":"","sources":["../../../../src/render/webgl/Primitive.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { InstancedGraphicParams } from \"../InstancedGraphicParams\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { PrimitiveVisibility } from \"../RenderTarget\";\r\nimport { RenderAreaPattern } from \"../RenderSystem\";\r\nimport { CachedGeometry, LUTGeometry, SkySphereViewportQuadGeometry } from \"./CachedGeometry\";\r\nimport { DrawParams, PrimitiveCommand } from \"./DrawCommand\";\r\nimport { Graphic } from \"./Graphic\";\r\nimport { InstanceBuffers, InstancedGeometry, isInstancedGraphicParams, PatternBuffers } from \"./InstancedGeometry\";\r\nimport { RenderCommands } from \"./RenderCommands\";\r\nimport { Pass, RenderOrder, RenderPass } from \"./RenderFlags\";\r\nimport { ShaderProgramExecutor } from \"./ShaderProgram\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\n\r\n/** @internal */\r\nexport class Primitive extends Graphic {\r\n public cachedGeometry: CachedGeometry;\r\n public isPixelMode: boolean = false;\r\n\r\n protected constructor(cachedGeom: CachedGeometry) { super(); this.cachedGeometry = cachedGeom; }\r\n\r\n public static create(geom: CachedGeometry | undefined, instances?: InstancedGraphicParams | RenderAreaPattern): Primitive | undefined {\r\n if (!geom)\r\n return undefined;\r\n\r\n if (instances) {\r\n assert(geom instanceof LUTGeometry, \"Invalid geometry type for instancing\");\r\n if (instances instanceof PatternBuffers) {\r\n geom = InstancedGeometry.createPattern(geom, true, instances);\r\n } else {\r\n assert(isInstancedGraphicParams(instances));\r\n const range = InstanceBuffers.computeRange(geom.computeRange(), instances.transforms, instances.transformCenter);\r\n const instanceBuffers = InstanceBuffers.create(instances, range);\r\n if (!instanceBuffers)\r\n return undefined;\r\n\r\n geom = InstancedGeometry.create(geom, true, instanceBuffers);\r\n }\r\n }\r\n\r\n return new this(geom);\r\n }\r\n\r\n public static createShared(geom: CachedGeometry | undefined, instances?: InstanceBuffers | PatternBuffers): Primitive | undefined {\r\n if (!geom)\r\n return undefined;\r\n\r\n if (instances) {\r\n assert(geom instanceof LUTGeometry, \"Invalid geometry type for instancing\");\r\n if (instances instanceof InstanceBuffers)\r\n geom = InstancedGeometry.create(geom, false, instances);\r\n else\r\n geom = InstancedGeometry.createPattern(geom, false, instances);\r\n }\r\n\r\n return new this(geom);\r\n }\r\n\r\n public get isDisposed(): boolean { return this.cachedGeometry.isDisposed; }\r\n public get isPickable() { return false; }\r\n\r\n public dispose() {\r\n dispose(this.cachedGeometry);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this.cachedGeometry.collectStatistics(stats);\r\n }\r\n\r\n public getPass(target: Target): Pass {\r\n if (this.isPixelMode)\r\n return \"view-overlay\";\r\n\r\n switch (target.primitiveVisibility) {\r\n case PrimitiveVisibility.Uninstanced:\r\n if (this.cachedGeometry.isInstanced)\r\n return \"none\";\r\n break;\r\n case PrimitiveVisibility.Instanced:\r\n if (!this.cachedGeometry.isInstanced)\r\n return \"none\";\r\n break;\r\n }\r\n\r\n return this.cachedGeometry.getPass(target);\r\n }\r\n\r\n public get hasFeatures(): boolean { return this.cachedGeometry.hasFeatures; }\r\n\r\n public addCommands(commands: RenderCommands): void { commands.addPrimitive(this); }\r\n\r\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass): void {\r\n // Edges do not contribute to hilite pass.\r\n // Note that IsEdge() does not imply geom->ToEdge() => true...polylines can be edges too...\r\n if (!this.isEdge)\r\n commands.getCommands(pass).push(new PrimitiveCommand(this));\r\n }\r\n\r\n public get hasAnimation(): boolean { return this.cachedGeometry.hasAnimation; }\r\n public get isInstanced(): boolean { return this.cachedGeometry.isInstanced; }\r\n public get isLit(): boolean { return this.cachedGeometry.isLitSurface; }\r\n public get isEdge(): boolean { return this.cachedGeometry.isEdge; }\r\n public get renderOrder(): RenderOrder { return this.cachedGeometry.renderOrder; }\r\n public get hasMaterialAtlas(): boolean { return this.cachedGeometry.hasMaterialAtlas; }\r\n\r\n public override toPrimitive(): Primitive { return this; }\r\n\r\n private static _drawParams?: DrawParams;\r\n\r\n public static freeParams(): void { Primitive._drawParams = undefined; }\r\n\r\n public draw(shader: ShaderProgramExecutor): void {\r\n // ###TODO: local to world should be pushed before we're invoked...we shouldn't need to pass (or copy) it\r\n if (undefined === Primitive._drawParams)\r\n Primitive._drawParams = new DrawParams();\r\n\r\n const drawParams = Primitive._drawParams;\r\n drawParams.init(shader.params, this.cachedGeometry);\r\n shader.draw(drawParams);\r\n }\r\n\r\n public get techniqueId(): TechniqueId { return this.cachedGeometry.techniqueId; }\r\n}\r\n\r\n/** @internal */\r\nexport class SkyCubePrimitive extends Primitive {\r\n public constructor(cachedGeom: CachedGeometry) { super(cachedGeom); }\r\n\r\n public override draw(shader: ShaderProgramExecutor): void {\r\n // Alter viewport to maintain square aspect ratio of skybox images even as viewRect resizes\r\n const vh = shader.target.viewRect.height;\r\n const vw = shader.target.viewRect.width;\r\n if (vw > vh)\r\n System.instance.context.viewport(0, -(vw - vh) / 2, vw, vw);\r\n else\r\n System.instance.context.viewport(-(vh - vw) / 2, 0, vh, vh);\r\n\r\n super.draw(shader); // Draw the skybox cubemap\r\n\r\n System.instance.context.viewport(0, 0, vw, vh); // Restore viewport\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class SkySpherePrimitive extends Primitive {\r\n public constructor(cachedGeom: CachedGeometry) {\r\n super(cachedGeom);\r\n assert(cachedGeom instanceof SkySphereViewportQuadGeometry);\r\n }\r\n\r\n public override draw(shader: ShaderProgramExecutor): void {\r\n (this.cachedGeometry as SkySphereViewportQuadGeometry).initWorldPos(shader.target);\r\n super.draw(shader); // Draw the skybox sphere\r\n }\r\n}\r\n"]}
|
|
@@ -12,7 +12,7 @@ import { TerrainMeshPrimitive } from "../primitives/mesh/TerrainMeshPrimitive";
|
|
|
12
12
|
import { RenderGraphic } from "../RenderGraphic";
|
|
13
13
|
import { RenderMemory } from "../RenderMemory";
|
|
14
14
|
import { RenderSystem, TerrainTexture } from "../RenderSystem";
|
|
15
|
-
import { RenderOrder
|
|
15
|
+
import { RenderOrder } from "./RenderFlags";
|
|
16
16
|
import { Target } from "./Target";
|
|
17
17
|
import { TechniqueId } from "./TechniqueId";
|
|
18
18
|
/** @internal */
|
|
@@ -56,7 +56,7 @@ export declare class RealityMeshGeometry extends IndexedGeometry implements IDis
|
|
|
56
56
|
static createGraphic(system: RenderSystem, realityMesh: RealityMeshGeometry, featureTable: PackedFeatureTable, tileId: string | undefined, baseColor: ColorDef | undefined, baseTransparent: boolean, textures?: TerrainTexture[]): RenderGraphic | undefined;
|
|
57
57
|
collectStatistics(stats: RenderMemory.Statistics): void;
|
|
58
58
|
get techniqueId(): TechniqueId;
|
|
59
|
-
|
|
59
|
+
getPass(target: Target): "none" | "opaque" | "translucent";
|
|
60
60
|
get renderOrder(): RenderOrder;
|
|
61
61
|
draw(): void;
|
|
62
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RealityMesh.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/RealityMesh.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EAAmB,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAW,OAAO,EAAE,SAAS,EAAY,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAgB,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE/F,OAAO,EAAE,YAAY,EAAoB,eAAe,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACtG,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAG/D,OAAO,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"RealityMesh.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/RealityMesh.ts"],"names":[],"mappings":"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"}
|
|
@@ -201,12 +201,12 @@ class RealityMeshGeometry extends CachedGeometry_1.IndexedGeometry {
|
|
|
201
201
|
this._isTerrain ? stats.addTerrain(this._realityMeshParams.bytesUsed) : stats.addRealityMesh(this._realityMeshParams.bytesUsed);
|
|
202
202
|
}
|
|
203
203
|
get techniqueId() { return 7 /* RealityMesh */; }
|
|
204
|
-
|
|
204
|
+
getPass(target) {
|
|
205
205
|
if (target.isDrawingShadowMap)
|
|
206
|
-
return
|
|
206
|
+
return "none";
|
|
207
207
|
if (this._baseIsTransparent || (target.wantThematicDisplay && target.uniforms.thematic.wantIsoLines))
|
|
208
|
-
return
|
|
209
|
-
return
|
|
208
|
+
return "translucent";
|
|
209
|
+
return "opaque";
|
|
210
210
|
}
|
|
211
211
|
get renderOrder() { return 3 /* UnlitSurface */; }
|
|
212
212
|
draw() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RealityMesh.js","sourceRoot":"","sources":["../../../../src/render/webgl/RealityMesh.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\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose, IDisposable } from \"@itwin/core-bentley\";\r\nimport { Range2d, Range3d, Transform, Vector2d } from \"@itwin/core-geometry\";\r\nimport { ColorDef, PackedFeatureTable, Quantization, RenderTexture } from \"@itwin/core-common\";\r\nimport { AttributeMap } from \"./AttributeMap\";\r\nimport { BufferHandle, BufferParameters, QBufferHandle2d, QBufferHandle3d } from \"./AttributeBuffers\";\r\nimport { IndexedGeometry, IndexedGeometryParams } from \"./CachedGeometry\";\r\nimport { Matrix4 } from \"./Matrix\";\r\nimport { GraphicBranch } from \"../GraphicBranch\";\r\nimport { RealityMeshPrimitive } from \"../primitives/mesh/RealityMeshPrimitive\";\r\nimport { TerrainMeshPrimitive } from \"../primitives/mesh/TerrainMeshPrimitive\";\r\nimport { RenderGraphic } from \"../RenderGraphic\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { RenderSystem, TerrainTexture } from \"../RenderSystem\";\r\nimport { GL } from \"./GL\";\r\nimport { Primitive } from \"./Primitive\";\r\nimport { RenderOrder, RenderPass } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\n\r\nconst scratchOverlapRange = Range2d.createNull();\r\n\r\n/** @internal */\r\nexport class RealityTextureParams {\r\n\r\n constructor(public matrices: Matrix4[], public textures: RenderTexture[]) { }\r\n public static create(terrainTextures: TerrainTexture[]) {\r\n const maxTexturesPerMesh = System.instance.maxRealityImageryLayers;\r\n assert(terrainTextures.length <= maxTexturesPerMesh);\r\n\r\n const renderTextures = [];\r\n const matrices = new Array<Matrix4>();\r\n for (const terrainTexture of terrainTextures) {\r\n const matrix = new Matrix4(); // Published as Mat4.\r\n renderTextures.push(terrainTexture.texture);\r\n assert(terrainTexture.texture !== undefined, \"Texture not defined in TerrainTextureParams constructor\");\r\n matrix.data[0] = terrainTexture.translate.x;\r\n matrix.data[1] = terrainTexture.translate.y;\r\n matrix.data[2] = terrainTexture.scale.x;\r\n matrix.data[3] = terrainTexture.scale.y;\r\n\r\n if (terrainTexture.clipRectangle) {\r\n matrix.data[4] = terrainTexture.clipRectangle.low.x;\r\n matrix.data[5] = terrainTexture.clipRectangle.low.y;\r\n matrix.data[6] = terrainTexture.clipRectangle.high.x;\r\n matrix.data[7] = terrainTexture.clipRectangle.high.y;\r\n } else {\r\n matrix.data[4] = matrix.data[5] = 0;\r\n matrix.data[6] = matrix.data[7] = 1;\r\n }\r\n matrix.data[8] = (1.0 - terrainTexture.transparency);\r\n matrix.data[9] = terrainTexture.featureId;\r\n matrices.push(matrix);\r\n }\r\n\r\n for (let i = terrainTextures.length; i < maxTexturesPerMesh; i++) {\r\n const matrix = new Matrix4();\r\n matrix.data[0] = matrix.data[1] = 0.0;\r\n matrix.data[2] = matrix.data[3] = 1.0;\r\n matrix.data[4] = matrix.data[5] = 1;\r\n matrix.data[6] = matrix.data[7] = -1;\r\n matrices.push(matrix);\r\n }\r\n return new RealityTextureParams(matrices, renderTextures);\r\n }\r\n}\r\n\r\n/** @internal */\r\n\r\nexport class RealityMeshGeometryParams extends IndexedGeometryParams {\r\n public readonly uvParams: QBufferHandle2d;\r\n public readonly featureID?: number;\r\n public readonly normals?: BufferHandle;\r\n\r\n protected constructor(positions: QBufferHandle3d, normals: BufferHandle | undefined, uvParams: QBufferHandle2d, indices: BufferHandle, numIndices: number, featureID?: number) {\r\n super(positions, indices, numIndices);\r\n let attrParams = AttributeMap.findAttribute(\"a_uvParam\", TechniqueId.RealityMesh, false);\r\n assert(attrParams !== undefined);\r\n this.buffers.addBuffer(uvParams, [BufferParameters.create(attrParams.location, 2, GL.DataType.UnsignedShort, false, 0, 0, false)]);\r\n this.uvParams = uvParams;\r\n\r\n if (undefined !== normals) {\r\n attrParams = AttributeMap.findAttribute(\"a_norm\", TechniqueId.RealityMesh, false);\r\n assert(attrParams !== undefined);\r\n if (normals.bytesUsed > 0)\r\n this.buffers.addBuffer(normals, [BufferParameters.create(attrParams.location, 2, GL.DataType.UnsignedByte, false, 0, 0, false)]);\r\n this.normals = normals;\r\n }\r\n\r\n this.featureID = featureID;\r\n }\r\n\r\n private static createFromBuffers(posBuf: QBufferHandle3d, uvParamBuf: QBufferHandle2d, indices: Uint16Array, normBuf: BufferHandle | undefined, featureID: number) {\r\n const indBuf = BufferHandle.createBuffer(GL.Buffer.Target.ElementArrayBuffer, indices);\r\n\r\n if (undefined === indBuf)\r\n return undefined;\r\n\r\n return new RealityMeshGeometryParams(posBuf, normBuf, uvParamBuf, indBuf, indices.length, featureID);\r\n\r\n }\r\n\r\n public static createFromRealityMesh(mesh: RealityMeshPrimitive) {\r\n const posBuf = QBufferHandle3d.create(mesh.pointQParams, mesh.points);\r\n const uvParamBuf = QBufferHandle2d.create(mesh.uvQParams, mesh.uvs);\r\n const normalBuf = mesh.normals ? BufferHandle.createArrayBuffer(mesh.normals) : undefined;\r\n return (undefined === posBuf || undefined === uvParamBuf) ? undefined : this.createFromBuffers(posBuf, uvParamBuf, mesh.indices, normalBuf, mesh.featureID);\r\n }\r\n\r\n public override get isDisposed(): boolean {\r\n return super.isDisposed && this.uvParams.isDisposed;\r\n }\r\n public get bytesUsed(): number { return this.positions.bytesUsed + (undefined === this.normals ? 0 : this.normals.bytesUsed) + this.uvParams.bytesUsed + this.indices.bytesUsed; }\r\n\r\n public override dispose() {\r\n super.dispose();\r\n dispose(this.uvParams);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class RealityMeshGeometry extends IndexedGeometry implements IDisposable, RenderMemory.Consumer {\r\n public override get asRealityMesh(): RealityMeshGeometry | undefined { return this; }\r\n public override get isDisposed(): boolean { return this._realityMeshParams.isDisposed; }\r\n public get uvQParams() { return this._realityMeshParams.uvParams.params; }\r\n public override get hasFeatures(): boolean { return this._realityMeshParams.featureID !== undefined; }\r\n public override get supportsThematicDisplay() { return true; }\r\n public get overrideColorMix() { return .5; } // This could be a setting from either the mesh or the override if required.\r\n\r\n private constructor(private _realityMeshParams: RealityMeshGeometryParams, public textureParams: RealityTextureParams | undefined, private readonly _transform: Transform | undefined, public readonly baseColor: ColorDef | undefined, private _baseIsTransparent: boolean, private _isTerrain: boolean) {\r\n super(_realityMeshParams);\r\n }\r\n\r\n public override dispose() {\r\n super.dispose();\r\n dispose(this._realityMeshParams);\r\n }\r\n\r\n public static createFromTerrainMesh(terrainMesh: TerrainMeshPrimitive, transform: Transform | undefined) {\r\n const params = RealityMeshGeometryParams.createFromRealityMesh(terrainMesh);\r\n return params ? new RealityMeshGeometry(params, undefined, transform, undefined, false, true) : undefined;\r\n }\r\n\r\n public static createFromRealityMesh(realityMesh: RealityMeshPrimitive): RealityMeshGeometry | undefined {\r\n const params = RealityMeshGeometryParams.createFromRealityMesh(realityMesh);\r\n if (!params)\r\n return undefined;\r\n const texture = realityMesh.texture ? new TerrainTexture(realityMesh.texture, realityMesh.featureID, Vector2d.create(1.0, -1.0), Vector2d.create(0.0, 1.0), Range2d.createXYXY(0, 0, 1, 1), 0, 0) : undefined;\r\n\r\n return new RealityMeshGeometry(params, texture ? RealityTextureParams.create([texture]) : undefined, undefined, undefined, false, false);\r\n }\r\n\r\n public getRange(): Range3d {\r\n return Range3d.createXYZXYZ(this.qOrigin[0], this.qOrigin[1], this.qOrigin[2], this.qOrigin[0] + Quantization.rangeScale16 * this.qScale[0], this.qOrigin[1] + Quantization.rangeScale16 * this.qScale[1], this.qOrigin[2] + Quantization.rangeScale16 * this.qScale[2]);\r\n }\r\n\r\n public static createGraphic(system: RenderSystem, realityMesh: RealityMeshGeometry, featureTable: PackedFeatureTable, tileId: string | undefined, baseColor: ColorDef | undefined, baseTransparent: boolean, textures?: TerrainTexture[]): RenderGraphic | undefined {\r\n const meshes = [];\r\n if (textures === undefined)\r\n textures = [];\r\n\r\n const texturesPerMesh = System.instance.maxRealityImageryLayers;\r\n const layers = new Array<TerrainTexture[]>();\r\n let layerCount = 0;\r\n for (const texture of textures) {\r\n const layer = layers[texture.layerIndex];\r\n if (layer) {\r\n layer.push(texture);\r\n } else {\r\n layerCount++;\r\n layers[texture.layerIndex] = [texture];\r\n }\r\n }\r\n if (layerCount < 2) {\r\n // If only there is not more than one layer then we can group all of the textures into a single draw call.\r\n meshes.push(new RealityMeshGeometry(realityMesh._realityMeshParams, RealityTextureParams.create(textures), realityMesh._transform, baseColor, baseTransparent, realityMesh._isTerrain));\r\n } else {\r\n const primaryLayer = layers.shift()!;\r\n for (const primaryTexture of primaryLayer) {\r\n const targetRectangle = primaryTexture.targetRectangle;\r\n const overlapMinimum = 1.0E-5 * (targetRectangle.high.x - targetRectangle.low.x) * (targetRectangle.high.y - targetRectangle.low.y);\r\n const layerTextures = [primaryTexture];\r\n for (const secondaryLayer of layers) {\r\n if (!secondaryLayer)\r\n continue;\r\n for (const secondaryTexture of secondaryLayer) {\r\n const secondaryRectangle = secondaryTexture.targetRectangle;\r\n const overlap = targetRectangle.intersect(secondaryRectangle, scratchOverlapRange);\r\n if (!overlap.isNull && (overlap.high.x - overlap.low.x) * (overlap.high.y - overlap.low.y) > overlapMinimum) {\r\n const textureRange = Range2d.createXYXY(overlap.low.x, overlap.low.y, overlap.high.x, overlap.high.y);\r\n secondaryRectangle.worldToLocal(textureRange.low, textureRange.low);\r\n secondaryRectangle.worldToLocal(textureRange.high, textureRange.high);\r\n\r\n if (secondaryTexture.clipRectangle)\r\n textureRange.intersect(secondaryTexture.clipRectangle, textureRange);\r\n\r\n if (!textureRange.isNull)\r\n layerTextures.push(new TerrainTexture(secondaryTexture.texture, secondaryTexture.featureId, secondaryTexture.scale, secondaryTexture.translate, secondaryTexture.targetRectangle, secondaryTexture.layerIndex, secondaryTexture.transparency, textureRange));\r\n }\r\n }\r\n }\r\n layerTextures.length = Math.min(layerTextures.length, texturesPerMesh);\r\n meshes.push(new RealityMeshGeometry(realityMesh._realityMeshParams, RealityTextureParams.create(layerTextures), realityMesh._transform, baseColor, baseTransparent, realityMesh._isTerrain));\r\n }\r\n }\r\n\r\n if (meshes.length === 0)\r\n return undefined;\r\n\r\n const branch = new GraphicBranch(true);\r\n for (const mesh of meshes) {\r\n const primitive = Primitive.create(mesh);\r\n branch.add(system.createBatch(primitive!, featureTable, mesh.getRange(), { tileId }));\r\n }\r\n\r\n return system.createBranch(branch, realityMesh._transform ? realityMesh._transform : Transform.createIdentity());\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this._isTerrain ? stats.addTerrain(this._realityMeshParams.bytesUsed) : stats.addRealityMesh(this._realityMeshParams.bytesUsed);\r\n }\r\n\r\n public get techniqueId(): TechniqueId { return TechniqueId.RealityMesh; }\r\n\r\n public getRenderPass(target: Target): RenderPass {\r\n if (target.isDrawingShadowMap)\r\n return RenderPass.None;\r\n\r\n if (this._baseIsTransparent || (target.wantThematicDisplay && target.uniforms.thematic.wantIsoLines))\r\n return RenderPass.Translucent;\r\n\r\n return RenderPass.OpaqueGeneral;\r\n }\r\n public get renderOrder(): RenderOrder { return RenderOrder.UnlitSurface; }\r\n\r\n public override draw(): void {\r\n this._params.buffers.bind();\r\n System.instance.context.drawElements(GL.PrimitiveType.Triangles, this._params.numIndices, GL.DataType.UnsignedShort, 0);\r\n this._params.buffers.unbind();\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"RealityMesh.js","sourceRoot":"","sources":["../../../../src/render/webgl/RealityMesh.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\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose, IDisposable } from \"@itwin/core-bentley\";\r\nimport { Range2d, Range3d, Transform, Vector2d } from \"@itwin/core-geometry\";\r\nimport { ColorDef, PackedFeatureTable, Quantization, RenderTexture } from \"@itwin/core-common\";\r\nimport { AttributeMap } from \"./AttributeMap\";\r\nimport { BufferHandle, BufferParameters, QBufferHandle2d, QBufferHandle3d } from \"./AttributeBuffers\";\r\nimport { IndexedGeometry, IndexedGeometryParams } from \"./CachedGeometry\";\r\nimport { Matrix4 } from \"./Matrix\";\r\nimport { GraphicBranch } from \"../GraphicBranch\";\r\nimport { RealityMeshPrimitive } from \"../primitives/mesh/RealityMeshPrimitive\";\r\nimport { TerrainMeshPrimitive } from \"../primitives/mesh/TerrainMeshPrimitive\";\r\nimport { RenderGraphic } from \"../RenderGraphic\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { RenderSystem, TerrainTexture } from \"../RenderSystem\";\r\nimport { GL } from \"./GL\";\r\nimport { Primitive } from \"./Primitive\";\r\nimport { RenderOrder } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\n\r\nconst scratchOverlapRange = Range2d.createNull();\r\n\r\n/** @internal */\r\nexport class RealityTextureParams {\r\n\r\n constructor(public matrices: Matrix4[], public textures: RenderTexture[]) { }\r\n public static create(terrainTextures: TerrainTexture[]) {\r\n const maxTexturesPerMesh = System.instance.maxRealityImageryLayers;\r\n assert(terrainTextures.length <= maxTexturesPerMesh);\r\n\r\n const renderTextures = [];\r\n const matrices = new Array<Matrix4>();\r\n for (const terrainTexture of terrainTextures) {\r\n const matrix = new Matrix4(); // Published as Mat4.\r\n renderTextures.push(terrainTexture.texture);\r\n assert(terrainTexture.texture !== undefined, \"Texture not defined in TerrainTextureParams constructor\");\r\n matrix.data[0] = terrainTexture.translate.x;\r\n matrix.data[1] = terrainTexture.translate.y;\r\n matrix.data[2] = terrainTexture.scale.x;\r\n matrix.data[3] = terrainTexture.scale.y;\r\n\r\n if (terrainTexture.clipRectangle) {\r\n matrix.data[4] = terrainTexture.clipRectangle.low.x;\r\n matrix.data[5] = terrainTexture.clipRectangle.low.y;\r\n matrix.data[6] = terrainTexture.clipRectangle.high.x;\r\n matrix.data[7] = terrainTexture.clipRectangle.high.y;\r\n } else {\r\n matrix.data[4] = matrix.data[5] = 0;\r\n matrix.data[6] = matrix.data[7] = 1;\r\n }\r\n matrix.data[8] = (1.0 - terrainTexture.transparency);\r\n matrix.data[9] = terrainTexture.featureId;\r\n matrices.push(matrix);\r\n }\r\n\r\n for (let i = terrainTextures.length; i < maxTexturesPerMesh; i++) {\r\n const matrix = new Matrix4();\r\n matrix.data[0] = matrix.data[1] = 0.0;\r\n matrix.data[2] = matrix.data[3] = 1.0;\r\n matrix.data[4] = matrix.data[5] = 1;\r\n matrix.data[6] = matrix.data[7] = -1;\r\n matrices.push(matrix);\r\n }\r\n return new RealityTextureParams(matrices, renderTextures);\r\n }\r\n}\r\n\r\n/** @internal */\r\n\r\nexport class RealityMeshGeometryParams extends IndexedGeometryParams {\r\n public readonly uvParams: QBufferHandle2d;\r\n public readonly featureID?: number;\r\n public readonly normals?: BufferHandle;\r\n\r\n protected constructor(positions: QBufferHandle3d, normals: BufferHandle | undefined, uvParams: QBufferHandle2d, indices: BufferHandle, numIndices: number, featureID?: number) {\r\n super(positions, indices, numIndices);\r\n let attrParams = AttributeMap.findAttribute(\"a_uvParam\", TechniqueId.RealityMesh, false);\r\n assert(attrParams !== undefined);\r\n this.buffers.addBuffer(uvParams, [BufferParameters.create(attrParams.location, 2, GL.DataType.UnsignedShort, false, 0, 0, false)]);\r\n this.uvParams = uvParams;\r\n\r\n if (undefined !== normals) {\r\n attrParams = AttributeMap.findAttribute(\"a_norm\", TechniqueId.RealityMesh, false);\r\n assert(attrParams !== undefined);\r\n if (normals.bytesUsed > 0)\r\n this.buffers.addBuffer(normals, [BufferParameters.create(attrParams.location, 2, GL.DataType.UnsignedByte, false, 0, 0, false)]);\r\n this.normals = normals;\r\n }\r\n\r\n this.featureID = featureID;\r\n }\r\n\r\n private static createFromBuffers(posBuf: QBufferHandle3d, uvParamBuf: QBufferHandle2d, indices: Uint16Array, normBuf: BufferHandle | undefined, featureID: number) {\r\n const indBuf = BufferHandle.createBuffer(GL.Buffer.Target.ElementArrayBuffer, indices);\r\n\r\n if (undefined === indBuf)\r\n return undefined;\r\n\r\n return new RealityMeshGeometryParams(posBuf, normBuf, uvParamBuf, indBuf, indices.length, featureID);\r\n\r\n }\r\n\r\n public static createFromRealityMesh(mesh: RealityMeshPrimitive) {\r\n const posBuf = QBufferHandle3d.create(mesh.pointQParams, mesh.points);\r\n const uvParamBuf = QBufferHandle2d.create(mesh.uvQParams, mesh.uvs);\r\n const normalBuf = mesh.normals ? BufferHandle.createArrayBuffer(mesh.normals) : undefined;\r\n return (undefined === posBuf || undefined === uvParamBuf) ? undefined : this.createFromBuffers(posBuf, uvParamBuf, mesh.indices, normalBuf, mesh.featureID);\r\n }\r\n\r\n public override get isDisposed(): boolean {\r\n return super.isDisposed && this.uvParams.isDisposed;\r\n }\r\n public get bytesUsed(): number { return this.positions.bytesUsed + (undefined === this.normals ? 0 : this.normals.bytesUsed) + this.uvParams.bytesUsed + this.indices.bytesUsed; }\r\n\r\n public override dispose() {\r\n super.dispose();\r\n dispose(this.uvParams);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class RealityMeshGeometry extends IndexedGeometry implements IDisposable, RenderMemory.Consumer {\r\n public override get asRealityMesh(): RealityMeshGeometry | undefined { return this; }\r\n public override get isDisposed(): boolean { return this._realityMeshParams.isDisposed; }\r\n public get uvQParams() { return this._realityMeshParams.uvParams.params; }\r\n public override get hasFeatures(): boolean { return this._realityMeshParams.featureID !== undefined; }\r\n public override get supportsThematicDisplay() { return true; }\r\n public get overrideColorMix() { return .5; } // This could be a setting from either the mesh or the override if required.\r\n\r\n private constructor(private _realityMeshParams: RealityMeshGeometryParams, public textureParams: RealityTextureParams | undefined, private readonly _transform: Transform | undefined, public readonly baseColor: ColorDef | undefined, private _baseIsTransparent: boolean, private _isTerrain: boolean) {\r\n super(_realityMeshParams);\r\n }\r\n\r\n public override dispose() {\r\n super.dispose();\r\n dispose(this._realityMeshParams);\r\n }\r\n\r\n public static createFromTerrainMesh(terrainMesh: TerrainMeshPrimitive, transform: Transform | undefined) {\r\n const params = RealityMeshGeometryParams.createFromRealityMesh(terrainMesh);\r\n return params ? new RealityMeshGeometry(params, undefined, transform, undefined, false, true) : undefined;\r\n }\r\n\r\n public static createFromRealityMesh(realityMesh: RealityMeshPrimitive): RealityMeshGeometry | undefined {\r\n const params = RealityMeshGeometryParams.createFromRealityMesh(realityMesh);\r\n if (!params)\r\n return undefined;\r\n const texture = realityMesh.texture ? new TerrainTexture(realityMesh.texture, realityMesh.featureID, Vector2d.create(1.0, -1.0), Vector2d.create(0.0, 1.0), Range2d.createXYXY(0, 0, 1, 1), 0, 0) : undefined;\r\n\r\n return new RealityMeshGeometry(params, texture ? RealityTextureParams.create([texture]) : undefined, undefined, undefined, false, false);\r\n }\r\n\r\n public getRange(): Range3d {\r\n return Range3d.createXYZXYZ(this.qOrigin[0], this.qOrigin[1], this.qOrigin[2], this.qOrigin[0] + Quantization.rangeScale16 * this.qScale[0], this.qOrigin[1] + Quantization.rangeScale16 * this.qScale[1], this.qOrigin[2] + Quantization.rangeScale16 * this.qScale[2]);\r\n }\r\n\r\n public static createGraphic(system: RenderSystem, realityMesh: RealityMeshGeometry, featureTable: PackedFeatureTable, tileId: string | undefined, baseColor: ColorDef | undefined, baseTransparent: boolean, textures?: TerrainTexture[]): RenderGraphic | undefined {\r\n const meshes = [];\r\n if (textures === undefined)\r\n textures = [];\r\n\r\n const texturesPerMesh = System.instance.maxRealityImageryLayers;\r\n const layers = new Array<TerrainTexture[]>();\r\n let layerCount = 0;\r\n for (const texture of textures) {\r\n const layer = layers[texture.layerIndex];\r\n if (layer) {\r\n layer.push(texture);\r\n } else {\r\n layerCount++;\r\n layers[texture.layerIndex] = [texture];\r\n }\r\n }\r\n if (layerCount < 2) {\r\n // If only there is not more than one layer then we can group all of the textures into a single draw call.\r\n meshes.push(new RealityMeshGeometry(realityMesh._realityMeshParams, RealityTextureParams.create(textures), realityMesh._transform, baseColor, baseTransparent, realityMesh._isTerrain));\r\n } else {\r\n const primaryLayer = layers.shift()!;\r\n for (const primaryTexture of primaryLayer) {\r\n const targetRectangle = primaryTexture.targetRectangle;\r\n const overlapMinimum = 1.0E-5 * (targetRectangle.high.x - targetRectangle.low.x) * (targetRectangle.high.y - targetRectangle.low.y);\r\n const layerTextures = [primaryTexture];\r\n for (const secondaryLayer of layers) {\r\n if (!secondaryLayer)\r\n continue;\r\n for (const secondaryTexture of secondaryLayer) {\r\n const secondaryRectangle = secondaryTexture.targetRectangle;\r\n const overlap = targetRectangle.intersect(secondaryRectangle, scratchOverlapRange);\r\n if (!overlap.isNull && (overlap.high.x - overlap.low.x) * (overlap.high.y - overlap.low.y) > overlapMinimum) {\r\n const textureRange = Range2d.createXYXY(overlap.low.x, overlap.low.y, overlap.high.x, overlap.high.y);\r\n secondaryRectangle.worldToLocal(textureRange.low, textureRange.low);\r\n secondaryRectangle.worldToLocal(textureRange.high, textureRange.high);\r\n\r\n if (secondaryTexture.clipRectangle)\r\n textureRange.intersect(secondaryTexture.clipRectangle, textureRange);\r\n\r\n if (!textureRange.isNull)\r\n layerTextures.push(new TerrainTexture(secondaryTexture.texture, secondaryTexture.featureId, secondaryTexture.scale, secondaryTexture.translate, secondaryTexture.targetRectangle, secondaryTexture.layerIndex, secondaryTexture.transparency, textureRange));\r\n }\r\n }\r\n }\r\n layerTextures.length = Math.min(layerTextures.length, texturesPerMesh);\r\n meshes.push(new RealityMeshGeometry(realityMesh._realityMeshParams, RealityTextureParams.create(layerTextures), realityMesh._transform, baseColor, baseTransparent, realityMesh._isTerrain));\r\n }\r\n }\r\n\r\n if (meshes.length === 0)\r\n return undefined;\r\n\r\n const branch = new GraphicBranch(true);\r\n for (const mesh of meshes) {\r\n const primitive = Primitive.create(mesh);\r\n branch.add(system.createBatch(primitive!, featureTable, mesh.getRange(), { tileId }));\r\n }\r\n\r\n return system.createBranch(branch, realityMesh._transform ? realityMesh._transform : Transform.createIdentity());\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this._isTerrain ? stats.addTerrain(this._realityMeshParams.bytesUsed) : stats.addRealityMesh(this._realityMeshParams.bytesUsed);\r\n }\r\n\r\n public get techniqueId(): TechniqueId { return TechniqueId.RealityMesh; }\r\n\r\n public override getPass(target: Target) {\r\n if (target.isDrawingShadowMap)\r\n return \"none\";\r\n\r\n if (this._baseIsTransparent || (target.wantThematicDisplay && target.uniforms.thematic.wantIsoLines))\r\n return \"translucent\";\r\n\r\n return \"opaque\";\r\n }\r\n public get renderOrder(): RenderOrder { return RenderOrder.UnlitSurface; }\r\n\r\n public override draw(): void {\r\n this._params.buffers.bind();\r\n System.instance.context.drawElements(GL.PrimitiveType.Triangles, this._params.numIndices, GL.DataType.UnsignedShort, 0);\r\n this._params.buffers.unbind();\r\n }\r\n}\r\n"]}
|
|
@@ -10,7 +10,7 @@ import { DrawCommands, PrimitiveCommand } from "./DrawCommand";
|
|
|
10
10
|
import { Batch, Branch, Graphic } from "./Graphic";
|
|
11
11
|
import { Layer, LayerContainer } from "./Layer";
|
|
12
12
|
import { Primitive } from "./Primitive";
|
|
13
|
-
import { CompositeFlags, RenderPass } from "./RenderFlags";
|
|
13
|
+
import { CompositeFlags, Pass, RenderPass } from "./RenderFlags";
|
|
14
14
|
import { TargetGraphics } from "./TargetGraphics";
|
|
15
15
|
import { Target } from "./Target";
|
|
16
16
|
/** A list of DrawCommands to be rendered, ordered by render pass.
|
|
@@ -52,7 +52,7 @@ export declare class RenderCommands implements Iterable<DrawCommands> {
|
|
|
52
52
|
private addPickableDecorations;
|
|
53
53
|
addBackground(gf?: Graphic): void;
|
|
54
54
|
addSkyBox(gf?: Graphic): void;
|
|
55
|
-
addPrimitiveCommand(command: PrimitiveCommand, pass?:
|
|
55
|
+
addPrimitiveCommand(command: PrimitiveCommand, pass?: Pass): void;
|
|
56
56
|
getCommands(pass: RenderPass): DrawCommands;
|
|
57
57
|
replaceCommands(pass: RenderPass, cmds: DrawCommands): void;
|
|
58
58
|
addHiliteBranch(branch: Branch, pass: RenderPass): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RenderCommands.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/RenderCommands.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EAAE,OAAO,EAA6B,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGnF,OAAO,EAAE,WAAW,EAAiB,MAAM,kBAAkB,CAAC;AAE9D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACL,YAAY,EAAiE,gBAAgB,EAE9F,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAiB,MAAM,WAAW,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAGhD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAe,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"RenderCommands.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/RenderCommands.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,7 @@ const DrawCommand_1 = require("./DrawCommand");
|
|
|
16
16
|
const Graphic_1 = require("./Graphic");
|
|
17
17
|
const LayerCommands_1 = require("./LayerCommands");
|
|
18
18
|
const Mesh_1 = require("./Mesh");
|
|
19
|
+
const RenderFlags_1 = require("./RenderFlags");
|
|
19
20
|
/** A list of DrawCommands to be rendered, ordered by render pass.
|
|
20
21
|
* @internal
|
|
21
22
|
*/
|
|
@@ -151,67 +152,73 @@ class RenderCommands {
|
|
|
151
152
|
}
|
|
152
153
|
addPrimitiveCommand(command, pass) {
|
|
153
154
|
if (undefined === pass)
|
|
154
|
-
pass = command.
|
|
155
|
-
if (
|
|
155
|
+
pass = command.getPass(this.target);
|
|
156
|
+
if ("none" === pass) // Edges will return none if they don't want to draw at all (edges not turned on).
|
|
156
157
|
return;
|
|
157
158
|
if (255 /* None */ !== this._forcedRenderPass) {
|
|
158
159
|
// Add the command to the forced render pass (background).
|
|
159
160
|
this.getCommands(this._forcedRenderPass).push(command);
|
|
160
161
|
return;
|
|
161
162
|
}
|
|
163
|
+
if (!command.hasFeatures) {
|
|
164
|
+
// Draw in general opaque pass so they are not in pick data.
|
|
165
|
+
switch (pass) {
|
|
166
|
+
case "opaque-linear":
|
|
167
|
+
case "opaque-planar":
|
|
168
|
+
pass = "opaque";
|
|
169
|
+
break;
|
|
170
|
+
case "opaque-planar-translucent":
|
|
171
|
+
pass = "opaque-translucent";
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
162
175
|
const haveFeatureOverrides = (this._opaqueOverrides || this._translucentOverrides) && command.opcode && command.hasFeatures;
|
|
163
|
-
if (
|
|
176
|
+
if (RenderFlags_1.Pass.rendersTranslucent(pass) && this._addTranslucentAsOpaque) {
|
|
164
177
|
switch (command.renderOrder) {
|
|
165
178
|
case 12 /* PlanarLitSurface */:
|
|
166
179
|
case 11 /* PlanarUnlitSurface */:
|
|
167
180
|
case 2 /* BlankingRegion */:
|
|
168
|
-
pass =
|
|
181
|
+
pass = "opaque-planar";
|
|
169
182
|
break;
|
|
170
183
|
case 4 /* LitSurface */:
|
|
171
184
|
case 3 /* UnlitSurface */:
|
|
172
|
-
pass =
|
|
185
|
+
pass = "opaque";
|
|
173
186
|
break;
|
|
174
187
|
default:
|
|
175
|
-
pass =
|
|
188
|
+
pass = "opaque-linear";
|
|
176
189
|
break;
|
|
177
190
|
}
|
|
178
191
|
}
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
192
|
+
const isDoublePass = RenderFlags_1.Pass.rendersOpaqueAndTranslucent(pass);
|
|
193
|
+
const renderTranslucentDuringOpaque = isDoublePass || (this._opaqueOverrides && haveFeatureOverrides);
|
|
194
|
+
if (renderTranslucentDuringOpaque && RenderFlags_1.Pass.rendersTranslucent(pass) && !command.primitive.cachedGeometry.alwaysRenderTranslucent) {
|
|
195
|
+
let opaquePass;
|
|
196
|
+
if (RenderFlags_1.Pass.rendersOpaqueAndTranslucent(pass)) {
|
|
197
|
+
opaquePass = RenderFlags_1.Pass.toOpaquePass(pass);
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
switch (command.renderOrder) {
|
|
201
|
+
case 12 /* PlanarLitSurface */:
|
|
202
|
+
case 11 /* PlanarUnlitSurface */:
|
|
203
|
+
case 2 /* BlankingRegion */:
|
|
204
|
+
opaquePass = 3 /* OpaquePlanar */;
|
|
205
|
+
break;
|
|
206
|
+
case 4 /* LitSurface */:
|
|
207
|
+
case 3 /* UnlitSurface */:
|
|
208
|
+
opaquePass = 4 /* OpaqueGeneral */;
|
|
209
|
+
break;
|
|
210
|
+
default:
|
|
211
|
+
opaquePass = 2 /* OpaqueLinear */;
|
|
212
|
+
break;
|
|
199
213
|
}
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
// must draw in both passes unless we are overriding translucent geometry to draw in the opaque pass for _ReadPixels.
|
|
203
|
-
case 2 /* OpaqueLinear */:
|
|
204
|
-
case 3 /* OpaquePlanar */:
|
|
205
|
-
// Want these items to draw in general opaque pass so they are not in pick data.
|
|
206
|
-
if (!command.hasFeatures)
|
|
207
|
-
pass = 4 /* OpaqueGeneral */;
|
|
208
|
-
/* falls through */
|
|
209
|
-
case 4 /* OpaqueGeneral */:
|
|
210
|
-
if (this._translucentOverrides && haveFeatureOverrides && !this._addTranslucentAsOpaque)
|
|
211
|
-
this.getCommands(7 /* Translucent */).push(command);
|
|
212
|
-
break;
|
|
214
|
+
}
|
|
215
|
+
this.getCommands(opaquePass).push(command);
|
|
213
216
|
}
|
|
214
|
-
this.
|
|
217
|
+
const renderOpaqueDuringTranslucent = isDoublePass || (this._translucentOverrides && haveFeatureOverrides);
|
|
218
|
+
if (renderOpaqueDuringTranslucent && RenderFlags_1.Pass.rendersOpaque(pass) && !this._addTranslucentAsOpaque)
|
|
219
|
+
this.getCommands(7 /* Translucent */).push(command);
|
|
220
|
+
if (!RenderFlags_1.Pass.rendersOpaqueAndTranslucent(pass))
|
|
221
|
+
this.getCommands(RenderFlags_1.Pass.toRenderPass(pass)).push(command);
|
|
215
222
|
}
|
|
216
223
|
getCommands(pass) {
|
|
217
224
|
let idx = pass;
|
|
@@ -440,7 +447,7 @@ class RenderCommands {
|
|
|
440
447
|
// if (this.target.isGeometryOutsideActiveVolume(prim.cachedGeometry))
|
|
441
448
|
// return;
|
|
442
449
|
if (undefined !== this._frustumPlanes) { // See if we can cull this primitive.
|
|
443
|
-
if (
|
|
450
|
+
if ("classification" === prim.getPass(this.target)) {
|
|
444
451
|
const geom = prim.cachedGeometry;
|
|
445
452
|
geom.computeRange(this._scratchRange);
|
|
446
453
|
let frustum = core_common_1.Frustum.fromRange(this._scratchRange, this._scratchFrustum);
|
|
@@ -455,7 +462,7 @@ class RenderCommands {
|
|
|
455
462
|
if (255 /* None */ === this._forcedRenderPass && prim.isEdge) {
|
|
456
463
|
const vf = this.target.currentViewFlags;
|
|
457
464
|
if (vf.renderMode !== core_common_1.RenderMode.Wireframe && vf.hiddenEdges)
|
|
458
|
-
this.
|
|
465
|
+
this.getCommands(8 /* HiddenEdge */).push(command);
|
|
459
466
|
}
|
|
460
467
|
}
|
|
461
468
|
addBranch(branch) {
|