@itwin/core-frontend 3.0.0-dev.134 → 3.0.0-dev.139
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/AccuSnap.js +3 -3
- package/lib/cjs/AccuSnap.js.map +1 -1
- package/lib/cjs/ApproximateTerrainHeights.d.ts.map +1 -1
- package/lib/cjs/ApproximateTerrainHeights.js +2 -1
- package/lib/cjs/ApproximateTerrainHeights.js.map +1 -1
- package/lib/cjs/HitDetail.js +7 -7
- package/lib/cjs/HitDetail.js.map +1 -1
- package/lib/cjs/IModelApp.d.ts +15 -5
- package/lib/cjs/IModelApp.d.ts.map +1 -1
- package/lib/cjs/IModelApp.js +13 -8
- package/lib/cjs/IModelApp.js.map +1 -1
- package/lib/cjs/IModelConnection.d.ts +1 -1
- package/lib/cjs/IModelConnection.js +1 -1
- package/lib/cjs/IModelConnection.js.map +1 -1
- package/lib/cjs/IModeljs-css.js +1 -1
- package/lib/cjs/IModeljs-css.js.map +1 -1
- package/lib/cjs/LocalhostIpcApp.d.ts +2 -1
- package/lib/cjs/LocalhostIpcApp.d.ts.map +1 -1
- package/lib/cjs/LocalhostIpcApp.js +21 -7
- package/lib/cjs/LocalhostIpcApp.js.map +1 -1
- package/lib/cjs/SheetViewState.js +2 -0
- package/lib/cjs/SheetViewState.js.map +1 -1
- package/lib/cjs/ViewManager.d.ts.map +1 -1
- package/lib/cjs/ViewManager.js +8 -8
- package/lib/cjs/ViewManager.js.map +1 -1
- package/lib/cjs/Viewport.d.ts +1 -1
- package/lib/cjs/Viewport.js +2 -2
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/core-frontend.d.ts +1 -1
- package/lib/cjs/core-frontend.js +1 -1
- package/lib/cjs/core-frontend.js.map +1 -1
- package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts +3 -2
- package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
- package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js +3 -2
- package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
- package/lib/cjs/quantity-formatting/BasicUnitsProvider.d.ts +5 -1
- package/lib/cjs/quantity-formatting/BasicUnitsProvider.d.ts.map +1 -1
- package/lib/cjs/quantity-formatting/BasicUnitsProvider.js +20 -5
- package/lib/cjs/quantity-formatting/BasicUnitsProvider.js.map +1 -1
- package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts +26 -3
- package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
- package/lib/cjs/quantity-formatting/QuantityFormatter.js +46 -7
- package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
- package/lib/cjs/render/RenderSystem.d.ts +0 -2
- package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
- package/lib/cjs/render/RenderSystem.js.map +1 -1
- package/lib/cjs/render/webgl/DrawCommand.d.ts.map +1 -1
- package/lib/cjs/render/webgl/DrawCommand.js +3 -1
- package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
- package/lib/cjs/render/webgl/Mesh.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Mesh.js +1 -2
- package/lib/cjs/render/webgl/Mesh.js.map +1 -1
- package/lib/cjs/render/webgl/PlanarClassifier.d.ts.map +1 -1
- package/lib/cjs/render/webgl/PlanarClassifier.js +1 -0
- package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/cjs/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
- package/lib/cjs/render/webgl/PlanarTextureProjection.js +1 -0
- package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
- package/lib/cjs/render/webgl/SceneCompositor.js +1 -0
- package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/cjs/render/webgl/ShaderBuilder.d.ts +8 -7
- package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
- package/lib/cjs/render/webgl/ShaderBuilder.js +20 -18
- package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/cjs/render/webgl/SolarShadowMap.d.ts.map +1 -1
- package/lib/cjs/render/webgl/SolarShadowMap.js +1 -0
- package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
- package/lib/cjs/render/webgl/System.d.ts +0 -3
- package/lib/cjs/render/webgl/System.d.ts.map +1 -1
- package/lib/cjs/render/webgl/System.js +0 -3
- package/lib/cjs/render/webgl/System.js.map +1 -1
- package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Target.js +5 -0
- package/lib/cjs/render/webgl/Target.js.map +1 -1
- package/lib/cjs/render/webgl/Technique.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Technique.js +74 -29
- package/lib/cjs/render/webgl/Technique.js.map +1 -1
- package/lib/cjs/render/webgl/TechniqueFlags.d.ts +7 -1
- package/lib/cjs/render/webgl/TechniqueFlags.d.ts.map +1 -1
- package/lib/cjs/render/webgl/TechniqueFlags.js +10 -1
- package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +1 -1
- package/lib/cjs/render/webgl/glsl/Blur.js +1 -1
- package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js +2 -2
- package/lib/cjs/render/webgl/glsl/ClearTranslucent.js +2 -2
- 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/CopyColor.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/CopyColor.js +17 -2
- package/lib/cjs/render/webgl/glsl/CopyColor.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js +2 -2
- package/lib/cjs/render/webgl/glsl/CopyStencil.js +6 -6
- package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js +1 -1
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +2 -2
- package/lib/cjs/render/webgl/glsl/Fragment.js +10 -10
- package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
- package/lib/cjs/render/webgl/glsl/PlanarClassification.js +3 -3
- package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/RealityMesh.js +5 -2
- package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
- 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/Surface.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Surface.js +5 -2
- package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Translucency.js +2 -2
- package/lib/cjs/render/webgl/glsl/Wiremesh.d.ts +9 -0
- package/lib/cjs/render/webgl/glsl/Wiremesh.d.ts.map +1 -0
- package/lib/cjs/render/webgl/glsl/Wiremesh.js +40 -0
- package/lib/cjs/render/webgl/glsl/Wiremesh.js.map +1 -0
- package/lib/cjs/tile/B3dmReader.d.ts +1 -1
- package/lib/cjs/tile/B3dmReader.d.ts.map +1 -1
- package/lib/cjs/tile/B3dmReader.js +4 -4
- package/lib/cjs/tile/B3dmReader.js.map +1 -1
- package/lib/cjs/tile/ContextShareProvider.d.ts.map +1 -1
- package/lib/cjs/tile/ContextShareProvider.js +19 -0
- package/lib/cjs/tile/ContextShareProvider.js.map +1 -1
- package/lib/cjs/tile/GltfReader.d.ts +3 -1
- package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
- package/lib/cjs/tile/GltfReader.js +33 -1
- package/lib/cjs/tile/GltfReader.js.map +1 -1
- package/lib/cjs/tile/I3dmReader.d.ts +1 -1
- package/lib/cjs/tile/I3dmReader.d.ts.map +1 -1
- package/lib/cjs/tile/I3dmReader.js +4 -4
- package/lib/cjs/tile/I3dmReader.js.map +1 -1
- package/lib/cjs/tile/RealityModelTileTree.d.ts +2 -1
- package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/RealityModelTileTree.js +29 -10
- package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
- package/lib/cjs/tile/RealityTileLoader.d.ts +1 -0
- package/lib/cjs/tile/RealityTileLoader.d.ts.map +1 -1
- package/lib/cjs/tile/RealityTileLoader.js +3 -2
- package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
- package/lib/cjs/tile/map/CesiumTerrainProvider.js +1 -1
- package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js +1 -1
- package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerSources.js +1 -1
- package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
- package/lib/esm/AccuSnap.js +3 -3
- package/lib/esm/AccuSnap.js.map +1 -1
- package/lib/esm/ApproximateTerrainHeights.d.ts.map +1 -1
- package/lib/esm/ApproximateTerrainHeights.js +2 -1
- package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
- package/lib/esm/HitDetail.js +7 -7
- package/lib/esm/HitDetail.js.map +1 -1
- package/lib/esm/IModelApp.d.ts +15 -5
- package/lib/esm/IModelApp.d.ts.map +1 -1
- package/lib/esm/IModelApp.js +13 -8
- package/lib/esm/IModelApp.js.map +1 -1
- package/lib/esm/IModelConnection.d.ts +1 -1
- package/lib/esm/IModelConnection.js +1 -1
- package/lib/esm/IModelConnection.js.map +1 -1
- package/lib/esm/IModeljs-css.js +1 -1
- package/lib/esm/IModeljs-css.js.map +1 -1
- package/lib/esm/LocalhostIpcApp.d.ts +2 -1
- package/lib/esm/LocalhostIpcApp.d.ts.map +1 -1
- package/lib/esm/LocalhostIpcApp.js +22 -8
- package/lib/esm/LocalhostIpcApp.js.map +1 -1
- package/lib/esm/SheetViewState.js +2 -0
- package/lib/esm/SheetViewState.js.map +1 -1
- package/lib/esm/ViewManager.d.ts.map +1 -1
- package/lib/esm/ViewManager.js +8 -8
- package/lib/esm/ViewManager.js.map +1 -1
- package/lib/esm/Viewport.d.ts +1 -1
- package/lib/esm/Viewport.js +2 -2
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/core-frontend.d.ts +1 -1
- package/lib/esm/core-frontend.js +1 -1
- package/lib/esm/core-frontend.js.map +1 -1
- package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts +3 -2
- package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
- package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js +3 -2
- package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
- package/lib/esm/quantity-formatting/BasicUnitsProvider.d.ts +5 -1
- package/lib/esm/quantity-formatting/BasicUnitsProvider.d.ts.map +1 -1
- package/lib/esm/quantity-formatting/BasicUnitsProvider.js +18 -4
- package/lib/esm/quantity-formatting/BasicUnitsProvider.js.map +1 -1
- package/lib/esm/quantity-formatting/QuantityFormatter.d.ts +26 -3
- package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
- package/lib/esm/quantity-formatting/QuantityFormatter.js +45 -7
- package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
- package/lib/esm/render/RenderSystem.d.ts +0 -2
- package/lib/esm/render/RenderSystem.d.ts.map +1 -1
- package/lib/esm/render/RenderSystem.js.map +1 -1
- package/lib/esm/render/webgl/DrawCommand.d.ts.map +1 -1
- package/lib/esm/render/webgl/DrawCommand.js +3 -1
- package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
- package/lib/esm/render/webgl/Mesh.d.ts.map +1 -1
- package/lib/esm/render/webgl/Mesh.js +1 -2
- package/lib/esm/render/webgl/Mesh.js.map +1 -1
- package/lib/esm/render/webgl/PlanarClassifier.d.ts.map +1 -1
- package/lib/esm/render/webgl/PlanarClassifier.js +1 -0
- package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/esm/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
- package/lib/esm/render/webgl/PlanarTextureProjection.js +1 -0
- package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
- package/lib/esm/render/webgl/SceneCompositor.js +1 -0
- package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/esm/render/webgl/ShaderBuilder.d.ts +8 -7
- package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
- package/lib/esm/render/webgl/ShaderBuilder.js +20 -18
- package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/esm/render/webgl/SolarShadowMap.d.ts.map +1 -1
- package/lib/esm/render/webgl/SolarShadowMap.js +1 -0
- package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
- package/lib/esm/render/webgl/System.d.ts +0 -3
- package/lib/esm/render/webgl/System.d.ts.map +1 -1
- package/lib/esm/render/webgl/System.js +0 -3
- package/lib/esm/render/webgl/System.js.map +1 -1
- package/lib/esm/render/webgl/Target.d.ts.map +1 -1
- package/lib/esm/render/webgl/Target.js +5 -0
- package/lib/esm/render/webgl/Target.js.map +1 -1
- package/lib/esm/render/webgl/Technique.d.ts.map +1 -1
- package/lib/esm/render/webgl/Technique.js +74 -29
- package/lib/esm/render/webgl/Technique.js.map +1 -1
- package/lib/esm/render/webgl/TechniqueFlags.d.ts +7 -1
- package/lib/esm/render/webgl/TechniqueFlags.d.ts.map +1 -1
- package/lib/esm/render/webgl/TechniqueFlags.js +10 -1
- package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
- package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +1 -1
- package/lib/esm/render/webgl/glsl/Blur.js +1 -1
- package/lib/esm/render/webgl/glsl/ClearPickAndColor.js +2 -2
- package/lib/esm/render/webgl/glsl/ClearTranslucent.js +2 -2
- 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/CopyColor.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/CopyColor.js +17 -2
- package/lib/esm/render/webgl/glsl/CopyColor.js.map +1 -1
- package/lib/esm/render/webgl/glsl/CopyPickBuffers.js +2 -2
- package/lib/esm/render/webgl/glsl/CopyStencil.js +6 -6
- package/lib/esm/render/webgl/glsl/EVSMFromDepth.js +1 -1
- package/lib/esm/render/webgl/glsl/FeatureSymbology.js +2 -2
- package/lib/esm/render/webgl/glsl/Fragment.js +10 -10
- package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
- package/lib/esm/render/webgl/glsl/PlanarClassification.js +3 -3
- package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/RealityMesh.js +5 -2
- package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
- 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/Surface.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Surface.js +5 -2
- package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Translucency.js +2 -2
- package/lib/esm/render/webgl/glsl/Wiremesh.d.ts +9 -0
- package/lib/esm/render/webgl/glsl/Wiremesh.d.ts.map +1 -0
- package/lib/esm/render/webgl/glsl/Wiremesh.js +36 -0
- package/lib/esm/render/webgl/glsl/Wiremesh.js.map +1 -0
- package/lib/esm/tile/B3dmReader.d.ts +1 -1
- package/lib/esm/tile/B3dmReader.d.ts.map +1 -1
- package/lib/esm/tile/B3dmReader.js +4 -4
- package/lib/esm/tile/B3dmReader.js.map +1 -1
- package/lib/esm/tile/ContextShareProvider.d.ts.map +1 -1
- package/lib/esm/tile/ContextShareProvider.js +19 -0
- package/lib/esm/tile/ContextShareProvider.js.map +1 -1
- package/lib/esm/tile/GltfReader.d.ts +3 -1
- package/lib/esm/tile/GltfReader.d.ts.map +1 -1
- package/lib/esm/tile/GltfReader.js +33 -1
- package/lib/esm/tile/GltfReader.js.map +1 -1
- package/lib/esm/tile/I3dmReader.d.ts +1 -1
- package/lib/esm/tile/I3dmReader.d.ts.map +1 -1
- package/lib/esm/tile/I3dmReader.js +4 -4
- package/lib/esm/tile/I3dmReader.js.map +1 -1
- package/lib/esm/tile/RealityModelTileTree.d.ts +2 -1
- package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
- package/lib/esm/tile/RealityModelTileTree.js +30 -11
- package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
- package/lib/esm/tile/RealityTileLoader.d.ts +1 -0
- package/lib/esm/tile/RealityTileLoader.d.ts.map +1 -1
- package/lib/esm/tile/RealityTileLoader.js +3 -2
- package/lib/esm/tile/RealityTileLoader.js.map +1 -1
- package/lib/esm/tile/map/CesiumTerrainProvider.js +1 -1
- package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js +1 -1
- package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/MapLayerSources.js +1 -1
- package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
- package/package.json +22 -22
|
@@ -19,13 +19,14 @@ export class TechniqueFlags {
|
|
|
19
19
|
this.isClassified = 0 /* No */;
|
|
20
20
|
this.isShadowable = 0 /* No */;
|
|
21
21
|
this.isThematic = 0 /* No */;
|
|
22
|
+
this.isWiremesh = 0 /* No */;
|
|
22
23
|
this._isHilite = false;
|
|
23
24
|
this.isTranslucent = translucent;
|
|
24
25
|
}
|
|
25
26
|
get hasClip() {
|
|
26
27
|
return this.numClipPlanes > 0;
|
|
27
28
|
}
|
|
28
|
-
init(target, pass, instanced, animated = 0 /* No */, classified = 0 /* No */, shadowable = 0 /* No */, thematic = 0 /* No */) {
|
|
29
|
+
init(target, pass, instanced, animated = 0 /* No */, classified = 0 /* No */, shadowable = 0 /* No */, thematic = 0 /* No */, wiremesh = 0 /* No */) {
|
|
29
30
|
const clipStack = target.uniforms.branch.clipStack;
|
|
30
31
|
const numClipPlanes = clipStack.hasClip ? clipStack.textureHeight : 0;
|
|
31
32
|
if (9 /* Hilite */ === pass || 15 /* HiliteClassification */ === pass || 17 /* HilitePlanarClassification */ === pass) {
|
|
@@ -41,6 +42,7 @@ export class TechniqueFlags {
|
|
|
41
42
|
this.isClassified = classified;
|
|
42
43
|
this.isShadowable = shadowable;
|
|
43
44
|
this.isThematic = thematic;
|
|
45
|
+
this.isWiremesh = wiremesh;
|
|
44
46
|
this.featureMode = target.uniforms.batch.featureMode;
|
|
45
47
|
// Determine if we should use the shaders which support discarding surfaces in favor of their edges (and discarding non-planar surfaces in favor of coincident planar surfaces).
|
|
46
48
|
// These are only useful if the geometry defines feature Ids.
|
|
@@ -76,6 +78,7 @@ export class TechniqueFlags {
|
|
|
76
78
|
this.isInstanced = instanced;
|
|
77
79
|
this.isShadowable = shadowable;
|
|
78
80
|
this.isThematic = thematic;
|
|
81
|
+
this.isWiremesh = 0 /* No */;
|
|
79
82
|
this.numClipPlanes = 0;
|
|
80
83
|
}
|
|
81
84
|
get hasFeatures() { return 0 /* None */ !== this.featureMode; }
|
|
@@ -105,6 +108,7 @@ export class TechniqueFlags {
|
|
|
105
108
|
&& this.isClassified === other.isClassified
|
|
106
109
|
&& this.isShadowable === other.isShadowable
|
|
107
110
|
&& this.isThematic === other.isThematic
|
|
111
|
+
&& this.isWiremesh === other.isWiremesh
|
|
108
112
|
&& this.isHilite === other.isHilite;
|
|
109
113
|
}
|
|
110
114
|
buildDescription() {
|
|
@@ -127,6 +131,8 @@ export class TechniqueFlags {
|
|
|
127
131
|
parts.push("Thematic");
|
|
128
132
|
if (this.hasFeatures)
|
|
129
133
|
parts.push(1 /* Pick */ === this.featureMode ? "Pick" : "Overrides");
|
|
134
|
+
if (this.isWiremesh)
|
|
135
|
+
parts.push("Wiremesh");
|
|
130
136
|
return parts.join("-");
|
|
131
137
|
}
|
|
132
138
|
static fromDescription(description) {
|
|
@@ -161,6 +167,9 @@ export class TechniqueFlags {
|
|
|
161
167
|
case "Thematic":
|
|
162
168
|
flags.isThematic = 1 /* Yes */;
|
|
163
169
|
break;
|
|
170
|
+
case "Wiremesh":
|
|
171
|
+
flags.isWiremesh = 1 /* Yes */;
|
|
172
|
+
break;
|
|
164
173
|
case "Pick":
|
|
165
174
|
flags.featureMode = 1 /* Pick */;
|
|
166
175
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TechniqueFlags.js","sourceRoot":"","sources":["../../../../src/render/webgl/TechniqueFlags.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 { RenderMode } from \"@itwin/core-common\";\r\nimport { RenderPass } from \"./RenderFlags\";\r\nimport { Target } from \"./Target\";\r\n\r\n/* eslint-disable no-restricted-syntax */\r\n\r\n/** Specifies how a TechniqueFlags handles feature table/overrides.\r\n * @internal\r\n */\r\nexport const enum FeatureMode {\r\n None, // no features\r\n Pick, // feature table only\r\n Overrides, // feature table with symbology overrides\r\n}\r\n\r\n/** @internal */\r\nexport const enum IsInstanced { No, Yes }\r\n\r\n/** @internal */\r\nexport const enum IsAnimated { No, Yes }\r\n\r\n/** @internal */\r\nexport const enum IsClassified { No, Yes }\r\n\r\n/** @internal */\r\nexport const enum IsEdgeTestNeeded { No, Yes }\r\n\r\n/** @internal */\r\nexport const enum IsShadowable { No, Yes }\r\n\r\n/** @internal */\r\nexport const enum IsThematic { No, Yes }\r\n\r\n/** Flags used to control which shader program is used by a rendering Technique.\r\n * @internal\r\n */\r\nexport class TechniqueFlags {\r\n public numClipPlanes = 0;\r\n public featureMode = FeatureMode.None;\r\n public isTranslucent: boolean;\r\n public isEdgeTestNeeded: IsEdgeTestNeeded = IsEdgeTestNeeded.No;\r\n public isAnimated: IsAnimated = IsAnimated.No;\r\n public isInstanced: IsInstanced = IsInstanced.No;\r\n public isClassified: IsClassified = IsClassified.No;\r\n public isShadowable: IsShadowable = IsShadowable.No;\r\n public isThematic: IsThematic = IsThematic.No;\r\n private _isHilite = false;\r\n\r\n public constructor(translucent: boolean = false) {\r\n this.isTranslucent = translucent;\r\n }\r\n\r\n public get hasClip(): boolean {\r\n return this.numClipPlanes > 0;\r\n }\r\n\r\n public init(target: Target, pass: RenderPass, instanced: IsInstanced, animated: IsAnimated = IsAnimated.No, classified = IsClassified.No, shadowable = IsShadowable.No, thematic = IsThematic.No): void {\r\n const clipStack = target.uniforms.branch.clipStack;\r\n const numClipPlanes = clipStack.hasClip ? clipStack.textureHeight : 0;\r\n if (RenderPass.Hilite === pass || RenderPass.HiliteClassification === pass || RenderPass.HilitePlanarClassification === pass) {\r\n const isClassified = (classified === IsClassified.Yes && RenderPass.HilitePlanarClassification === pass) ? IsClassified.Yes : IsClassified.No;\r\n this.initForHilite(numClipPlanes, instanced, isClassified);\r\n } else {\r\n this._isHilite = false;\r\n this.isTranslucent = RenderPass.Translucent === pass;\r\n this.numClipPlanes = numClipPlanes;\r\n this.isAnimated = animated;\r\n this.isInstanced = instanced;\r\n this.isClassified = classified;\r\n this.isShadowable = shadowable;\r\n this.isThematic = thematic;\r\n this.featureMode = target.uniforms.batch.featureMode;\r\n\r\n // Determine if we should use the shaders which support discarding surfaces in favor of their edges (and discarding non-planar surfaces in favor of coincident planar surfaces).\r\n // These are only useful if the geometry defines feature Ids.\r\n // In 3d, if we're only displaying surfaces or edges, not both, don't bother, unless forceSurfaceDiscard is true.\r\n this.isEdgeTestNeeded = this.hasFeatures ? (this.isClassified ? IsEdgeTestNeeded.No : IsEdgeTestNeeded.Yes) : IsEdgeTestNeeded.No;\r\n if (!target.currentViewFlags.forceSurfaceDiscard && target.is3d && !target.isReadPixelsInProgress && this.isEdgeTestNeeded) {\r\n switch (target.currentViewFlags.renderMode) {\r\n case RenderMode.Wireframe:\r\n // We're only displaying edges (ignoring filled planar regions)\r\n this.isEdgeTestNeeded = IsEdgeTestNeeded.No;\r\n break;\r\n case RenderMode.SmoothShade:\r\n if (!target.currentViewFlags.visibleEdges && !target.wantAmbientOcclusion && pass !== RenderPass.PlanarClassification) {\r\n // We're only displaying surfaces (ignoring filled planar regions).\r\n // NB: Filled text (blanking region) is handled by adjusting the depth in the surface vertex shader.\r\n this.isEdgeTestNeeded = IsEdgeTestNeeded.No;\r\n }\r\n break;\r\n default:\r\n // SolidFill and HiddenLine always display edges and surfaces.\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n public reset(mode: FeatureMode, instanced: IsInstanced = IsInstanced.No, shadowable: IsShadowable, thematic: IsThematic) {\r\n this._isHilite = false;\r\n this.featureMode = mode;\r\n this.isTranslucent = false;\r\n this.isEdgeTestNeeded = IsEdgeTestNeeded.No;\r\n this.isAnimated = IsAnimated.No;\r\n this.isClassified = IsClassified.No;\r\n this.isInstanced = instanced;\r\n this.isShadowable = shadowable;\r\n this.isThematic = thematic;\r\n this.numClipPlanes = 0;\r\n }\r\n\r\n public get hasFeatures() { return FeatureMode.None !== this.featureMode; }\r\n\r\n public setAnimated(animated: boolean) { this.isAnimated = animated ? IsAnimated.Yes : IsAnimated.No; }\r\n public setInstanced(instanced: boolean) { this.isInstanced = instanced ? IsInstanced.Yes : IsInstanced.No; }\r\n public setClassified(classified: boolean) {\r\n this.isClassified = classified ? IsClassified.Yes : IsClassified.No;\r\n }\r\n\r\n public get isHilite() { return this._isHilite; }\r\n public initForHilite(numClipPlanes: number, instanced: IsInstanced, classified: IsClassified) {\r\n this.featureMode = classified ? FeatureMode.None : FeatureMode.Overrides;\r\n this._isHilite = true;\r\n this.isTranslucent = false;\r\n this.isEdgeTestNeeded = IsEdgeTestNeeded.No;\r\n this.isAnimated = IsAnimated.No;\r\n this.isInstanced = instanced;\r\n this.isClassified = classified;\r\n this.numClipPlanes = numClipPlanes;\r\n }\r\n\r\n public equals(other: TechniqueFlags): boolean {\r\n return this.numClipPlanes === other.numClipPlanes\r\n && this.featureMode === other.featureMode\r\n && this.isTranslucent === other.isTranslucent\r\n && this.isEdgeTestNeeded === other.isEdgeTestNeeded\r\n && this.isAnimated === other.isAnimated\r\n && this.isInstanced === other.isInstanced\r\n && this.isClassified === other.isClassified\r\n && this.isShadowable === other.isShadowable\r\n && this.isThematic === other.isThematic\r\n && this.isHilite === other.isHilite;\r\n }\r\n\r\n public buildDescription(): string {\r\n const parts = [this.isTranslucent ? \"Translucent\" : \"Opaque\"];\r\n if (this.isInstanced) parts.push(\"Instanced\");\r\n if (this.isEdgeTestNeeded) parts.push(\"EdgeTestNeeded\");\r\n if (this.isAnimated) parts.push(\"Animated\");\r\n if (this.isHilite) parts.push(\"Hilite\");\r\n if (this.isClassified) parts.push(\"Classified\");\r\n if (this.hasClip) parts.push(\"Clip\");\r\n if (this.isShadowable) parts.push(\"Shadowable\");\r\n if (this.isThematic) parts.push(\"Thematic\");\r\n if (this.hasFeatures) parts.push(FeatureMode.Pick === this.featureMode ? \"Pick\" : \"Overrides\");\r\n return parts.join(\"-\");\r\n }\r\n\r\n public static fromDescription(description: string): TechniqueFlags {\r\n const flags = new TechniqueFlags(false);\r\n const parts = description.split(\"-\");\r\n for (const part of parts) {\r\n switch (part) {\r\n case \"Translucent\":\r\n flags.isTranslucent = true;\r\n break;\r\n case \"Instanced\":\r\n flags.isInstanced = IsInstanced.Yes;\r\n break;\r\n case \"EdgeTestNeeded\":\r\n flags.isEdgeTestNeeded = IsEdgeTestNeeded.Yes;\r\n break;\r\n case \"Animated\":\r\n flags.isAnimated = IsAnimated.Yes;\r\n break;\r\n case \"Hilite\":\r\n flags._isHilite = true;\r\n break;\r\n case \"Classified\":\r\n flags.isClassified = IsClassified.Yes;\r\n break;\r\n case \"Clip\":\r\n flags.numClipPlanes = 1;\r\n break;\r\n case \"Shadowable\":\r\n flags.isShadowable = IsShadowable.Yes;\r\n break;\r\n case \"Thematic\":\r\n flags.isThematic = IsThematic.Yes;\r\n break;\r\n case \"Pick\":\r\n flags.featureMode = FeatureMode.Pick;\r\n break;\r\n case \"Overrides\":\r\n flags.featureMode = FeatureMode.Overrides;\r\n break;\r\n }\r\n }\r\n\r\n return flags;\r\n }\r\n\r\n public static readonly defaults = new TechniqueFlags();\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"TechniqueFlags.js","sourceRoot":"","sources":["../../../../src/render/webgl/TechniqueFlags.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 { RenderMode } from \"@itwin/core-common\";\r\nimport { RenderPass } from \"./RenderFlags\";\r\nimport { Target } from \"./Target\";\r\n\r\n/* eslint-disable no-restricted-syntax */\r\n\r\n/** Specifies how a TechniqueFlags handles feature table/overrides.\r\n * @internal\r\n */\r\nexport const enum FeatureMode {\r\n None, // no features\r\n Pick, // feature table only\r\n Overrides, // feature table with symbology overrides\r\n}\r\n\r\n/** @internal */\r\nexport const enum IsInstanced { No, Yes }\r\n\r\n/** @internal */\r\nexport const enum IsAnimated { No, Yes }\r\n\r\n/** @internal */\r\nexport const enum IsClassified { No, Yes }\r\n\r\n/** @internal */\r\nexport const enum IsEdgeTestNeeded { No, Yes }\r\n\r\n/** @internal */\r\nexport const enum IsShadowable { No, Yes }\r\n\r\n/** @internal */\r\nexport const enum IsThematic { No, Yes }\r\n\r\n/** @internal */\r\nexport const enum IsWiremesh { No, Yes }\r\n\r\n/** Flags used to control which shader program is used by a rendering Technique.\r\n * @internal\r\n */\r\nexport class TechniqueFlags {\r\n public numClipPlanes = 0;\r\n public featureMode = FeatureMode.None;\r\n public isTranslucent: boolean;\r\n public isEdgeTestNeeded: IsEdgeTestNeeded = IsEdgeTestNeeded.No;\r\n public isAnimated: IsAnimated = IsAnimated.No;\r\n public isInstanced: IsInstanced = IsInstanced.No;\r\n public isClassified: IsClassified = IsClassified.No;\r\n public isShadowable: IsShadowable = IsShadowable.No;\r\n public isThematic: IsThematic = IsThematic.No;\r\n public isWiremesh: IsWiremesh = IsWiremesh.No;\r\n private _isHilite = false;\r\n\r\n public constructor(translucent: boolean = false) {\r\n this.isTranslucent = translucent;\r\n }\r\n\r\n public get hasClip(): boolean {\r\n return this.numClipPlanes > 0;\r\n }\r\n\r\n public init(target: Target, pass: RenderPass, instanced: IsInstanced, animated: IsAnimated = IsAnimated.No, classified = IsClassified.No, shadowable = IsShadowable.No, thematic = IsThematic.No, wiremesh = IsWiremesh.No): void {\r\n const clipStack = target.uniforms.branch.clipStack;\r\n const numClipPlanes = clipStack.hasClip ? clipStack.textureHeight : 0;\r\n if (RenderPass.Hilite === pass || RenderPass.HiliteClassification === pass || RenderPass.HilitePlanarClassification === pass) {\r\n const isClassified = (classified === IsClassified.Yes && RenderPass.HilitePlanarClassification === pass) ? IsClassified.Yes : IsClassified.No;\r\n this.initForHilite(numClipPlanes, instanced, isClassified);\r\n } else {\r\n this._isHilite = false;\r\n this.isTranslucent = RenderPass.Translucent === pass;\r\n this.numClipPlanes = numClipPlanes;\r\n this.isAnimated = animated;\r\n this.isInstanced = instanced;\r\n this.isClassified = classified;\r\n this.isShadowable = shadowable;\r\n this.isThematic = thematic;\r\n this.isWiremesh = wiremesh;\r\n this.featureMode = target.uniforms.batch.featureMode;\r\n\r\n // Determine if we should use the shaders which support discarding surfaces in favor of their edges (and discarding non-planar surfaces in favor of coincident planar surfaces).\r\n // These are only useful if the geometry defines feature Ids.\r\n // In 3d, if we're only displaying surfaces or edges, not both, don't bother, unless forceSurfaceDiscard is true.\r\n this.isEdgeTestNeeded = this.hasFeatures ? (this.isClassified ? IsEdgeTestNeeded.No : IsEdgeTestNeeded.Yes) : IsEdgeTestNeeded.No;\r\n if (!target.currentViewFlags.forceSurfaceDiscard && target.is3d && !target.isReadPixelsInProgress && this.isEdgeTestNeeded) {\r\n switch (target.currentViewFlags.renderMode) {\r\n case RenderMode.Wireframe:\r\n // We're only displaying edges (ignoring filled planar regions)\r\n this.isEdgeTestNeeded = IsEdgeTestNeeded.No;\r\n break;\r\n case RenderMode.SmoothShade:\r\n if (!target.currentViewFlags.visibleEdges && !target.wantAmbientOcclusion && pass !== RenderPass.PlanarClassification) {\r\n // We're only displaying surfaces (ignoring filled planar regions).\r\n // NB: Filled text (blanking region) is handled by adjusting the depth in the surface vertex shader.\r\n this.isEdgeTestNeeded = IsEdgeTestNeeded.No;\r\n }\r\n break;\r\n default:\r\n // SolidFill and HiddenLine always display edges and surfaces.\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n public reset(mode: FeatureMode, instanced: IsInstanced = IsInstanced.No, shadowable: IsShadowable, thematic: IsThematic) {\r\n this._isHilite = false;\r\n this.featureMode = mode;\r\n this.isTranslucent = false;\r\n this.isEdgeTestNeeded = IsEdgeTestNeeded.No;\r\n this.isAnimated = IsAnimated.No;\r\n this.isClassified = IsClassified.No;\r\n this.isInstanced = instanced;\r\n this.isShadowable = shadowable;\r\n this.isThematic = thematic;\r\n this.isWiremesh = IsWiremesh.No;\r\n this.numClipPlanes = 0;\r\n }\r\n\r\n public get hasFeatures() { return FeatureMode.None !== this.featureMode; }\r\n\r\n public setAnimated(animated: boolean) { this.isAnimated = animated ? IsAnimated.Yes : IsAnimated.No; }\r\n public setInstanced(instanced: boolean) { this.isInstanced = instanced ? IsInstanced.Yes : IsInstanced.No; }\r\n public setClassified(classified: boolean) {\r\n this.isClassified = classified ? IsClassified.Yes : IsClassified.No;\r\n }\r\n\r\n public get isHilite() { return this._isHilite; }\r\n public initForHilite(numClipPlanes: number, instanced: IsInstanced, classified: IsClassified) {\r\n this.featureMode = classified ? FeatureMode.None : FeatureMode.Overrides;\r\n this._isHilite = true;\r\n this.isTranslucent = false;\r\n this.isEdgeTestNeeded = IsEdgeTestNeeded.No;\r\n this.isAnimated = IsAnimated.No;\r\n this.isInstanced = instanced;\r\n this.isClassified = classified;\r\n this.numClipPlanes = numClipPlanes;\r\n }\r\n\r\n public equals(other: TechniqueFlags): boolean {\r\n return this.numClipPlanes === other.numClipPlanes\r\n && this.featureMode === other.featureMode\r\n && this.isTranslucent === other.isTranslucent\r\n && this.isEdgeTestNeeded === other.isEdgeTestNeeded\r\n && this.isAnimated === other.isAnimated\r\n && this.isInstanced === other.isInstanced\r\n && this.isClassified === other.isClassified\r\n && this.isShadowable === other.isShadowable\r\n && this.isThematic === other.isThematic\r\n && this.isWiremesh === other.isWiremesh\r\n && this.isHilite === other.isHilite;\r\n }\r\n\r\n public buildDescription(): string {\r\n const parts = [this.isTranslucent ? \"Translucent\" : \"Opaque\"];\r\n if (this.isInstanced) parts.push(\"Instanced\");\r\n if (this.isEdgeTestNeeded) parts.push(\"EdgeTestNeeded\");\r\n if (this.isAnimated) parts.push(\"Animated\");\r\n if (this.isHilite) parts.push(\"Hilite\");\r\n if (this.isClassified) parts.push(\"Classified\");\r\n if (this.hasClip) parts.push(\"Clip\");\r\n if (this.isShadowable) parts.push(\"Shadowable\");\r\n if (this.isThematic) parts.push(\"Thematic\");\r\n if (this.hasFeatures) parts.push(FeatureMode.Pick === this.featureMode ? \"Pick\" : \"Overrides\");\r\n if (this.isWiremesh) parts.push(\"Wiremesh\");\r\n return parts.join(\"-\");\r\n }\r\n\r\n public static fromDescription(description: string): TechniqueFlags {\r\n const flags = new TechniqueFlags(false);\r\n const parts = description.split(\"-\");\r\n for (const part of parts) {\r\n switch (part) {\r\n case \"Translucent\":\r\n flags.isTranslucent = true;\r\n break;\r\n case \"Instanced\":\r\n flags.isInstanced = IsInstanced.Yes;\r\n break;\r\n case \"EdgeTestNeeded\":\r\n flags.isEdgeTestNeeded = IsEdgeTestNeeded.Yes;\r\n break;\r\n case \"Animated\":\r\n flags.isAnimated = IsAnimated.Yes;\r\n break;\r\n case \"Hilite\":\r\n flags._isHilite = true;\r\n break;\r\n case \"Classified\":\r\n flags.isClassified = IsClassified.Yes;\r\n break;\r\n case \"Clip\":\r\n flags.numClipPlanes = 1;\r\n break;\r\n case \"Shadowable\":\r\n flags.isShadowable = IsShadowable.Yes;\r\n break;\r\n case \"Thematic\":\r\n flags.isThematic = IsThematic.Yes;\r\n break;\r\n case \"Wiremesh\":\r\n flags.isWiremesh = IsWiremesh.Yes;\r\n break;\r\n case \"Pick\":\r\n flags.featureMode = FeatureMode.Pick;\r\n break;\r\n case \"Overrides\":\r\n flags.featureMode = FeatureMode.Overrides;\r\n break;\r\n }\r\n }\r\n\r\n return flags;\r\n }\r\n\r\n public static readonly defaults = new TechniqueFlags();\r\n}\r\n"]}
|
|
@@ -153,7 +153,7 @@ export function createAmbientOcclusionProgram(context) {
|
|
|
153
153
|
frag.addFunction(computeLinearDepth);
|
|
154
154
|
addRenderOrderConstants(frag);
|
|
155
155
|
frag.set(1 /* ComputeBaseColor */, computeAmbientOcclusion);
|
|
156
|
-
frag.set(
|
|
156
|
+
frag.set(16 /* AssignFragData */, assignFragColor);
|
|
157
157
|
frag.addUniform("u_pickDepthAndOrder", 8 /* Sampler2D */, (prog) => {
|
|
158
158
|
prog.addGraphicUniform("u_pickDepthAndOrder", (uniform, params) => {
|
|
159
159
|
const geom = params.geometry;
|
|
@@ -48,7 +48,7 @@ export function createBlurProgram(context) {
|
|
|
48
48
|
addWindowToTexCoords(frag);
|
|
49
49
|
frag.addFunction(decodeDepthRgb);
|
|
50
50
|
frag.set(1 /* ComputeBaseColor */, computeBlur);
|
|
51
|
-
frag.set(
|
|
51
|
+
frag.set(16 /* AssignFragData */, assignFragColor);
|
|
52
52
|
addViewport(frag);
|
|
53
53
|
frag.addUniform("u_textureToBlur", 8 /* Sampler2D */, (prog) => {
|
|
54
54
|
prog.addGraphicUniform("u_textureToBlur", (uniform, params) => {
|
|
@@ -25,11 +25,11 @@ export function createClearPickAndColorProgram(context) {
|
|
|
25
25
|
frag.set(1 /* ComputeBaseColor */, computeBaseColor);
|
|
26
26
|
if (!System.instance.capabilities.supportsMRTPickShaders) {
|
|
27
27
|
// NB: This shader is never used - we gl.clear() directly
|
|
28
|
-
frag.set(
|
|
28
|
+
frag.set(16 /* AssignFragData */, "FragColor = baseColor;");
|
|
29
29
|
}
|
|
30
30
|
else {
|
|
31
31
|
frag.addDrawBuffersExtension(3);
|
|
32
|
-
frag.set(
|
|
32
|
+
frag.set(16 /* AssignFragData */, assignFragData);
|
|
33
33
|
}
|
|
34
34
|
builder.vert.headerComment = "//!V! ClearPickAndColor";
|
|
35
35
|
builder.frag.headerComment = "//!F! ClearPickAndColor";
|
|
@@ -20,11 +20,11 @@ export function createClearTranslucentProgram(context) {
|
|
|
20
20
|
frag.set(1 /* ComputeBaseColor */, computeBaseColor);
|
|
21
21
|
if (System.instance.capabilities.supportsMRTTransparency) {
|
|
22
22
|
frag.addDrawBuffersExtension(2);
|
|
23
|
-
frag.set(
|
|
23
|
+
frag.set(16 /* AssignFragData */, assignFragData);
|
|
24
24
|
}
|
|
25
25
|
else {
|
|
26
26
|
// NB: This shader is never used - we just gl.clear() directly
|
|
27
|
-
frag.set(
|
|
27
|
+
frag.set(16 /* AssignFragData */, assignFragColor);
|
|
28
28
|
}
|
|
29
29
|
builder.vert.headerComment = "//!V! ClearTranslucent";
|
|
30
30
|
builder.frag.headerComment = "//!F! ClearTranslucent";
|
|
@@ -37,7 +37,7 @@ export function createCombine3TexturesProgram(context) {
|
|
|
37
37
|
Texture2DHandle.bindSampler(uniform, params.geometry.texture2, TextureUnit.Two);
|
|
38
38
|
});
|
|
39
39
|
}, 3 /* High */);
|
|
40
|
-
frag.set(
|
|
40
|
+
frag.set(16 /* AssignFragData */, assignFragData);
|
|
41
41
|
builder.vert.headerComment = "//!V! Combine3Textures";
|
|
42
42
|
builder.frag.headerComment = "//!F! Combine3Textures";
|
|
43
43
|
return builder.buildProgram(context);
|
|
@@ -30,7 +30,7 @@ export function createCombineTexturesProgram(context) {
|
|
|
30
30
|
Texture2DHandle.bindSampler(uniform, params.geometry.texture1, TextureUnit.One);
|
|
31
31
|
});
|
|
32
32
|
}, 3 /* High */);
|
|
33
|
-
frag.set(
|
|
33
|
+
frag.set(16 /* AssignFragData */, assignFragData);
|
|
34
34
|
builder.vert.headerComment = "//!V! CombineTextures";
|
|
35
35
|
builder.frag.headerComment = "//!F! CombineTextures";
|
|
36
36
|
return builder.buildProgram(context);
|
|
@@ -113,7 +113,7 @@ export function createCompositeProgram(flags, context) {
|
|
|
113
113
|
const frag = builder.frag;
|
|
114
114
|
frag.addFunction(wantOcclusion ? computeAmbientOcclusion : computeDefaultAmbientOcclusion);
|
|
115
115
|
frag.addFunction(computeOpaqueColor);
|
|
116
|
-
frag.set(
|
|
116
|
+
frag.set(16 /* AssignFragData */, assignFragColor);
|
|
117
117
|
frag.addUniform("u_opaque", 8 /* Sampler2D */, (prog) => {
|
|
118
118
|
prog.addGraphicUniform("u_opaque", (uniform, params) => {
|
|
119
119
|
Texture2DHandle.bindSampler(uniform, params.geometry.opaque, TextureUnit.Zero);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CopyColor.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/CopyColor.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI1D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"CopyColor.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/CopyColor.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI1D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAiBjD,gBAAgB;AAChB,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,GAAE,OAAc,GAAG,aAAa,CA0BtG"}
|
|
@@ -10,19 +10,34 @@ import { Texture2DHandle } from "../Texture";
|
|
|
10
10
|
import { assignFragColor } from "./Fragment";
|
|
11
11
|
import { createViewportQuadBuilder } from "./ViewportQuad";
|
|
12
12
|
const computeColor = "return TEXTURE(u_color, v_texCoord);";
|
|
13
|
-
|
|
13
|
+
// Transparent background color will not have premultiplied alpha - multiply it when copying.
|
|
14
|
+
// Set all other pixels opaque.
|
|
15
|
+
const computeColorNoAlpha = `
|
|
16
|
+
vec4 color = TEXTURE(u_color, v_texCoord);
|
|
17
|
+
if (color == u_bgColor)
|
|
18
|
+
return vec4(color.rgb * color.a, color.a);
|
|
19
|
+
else
|
|
20
|
+
return vec4(color.rgb, 1.0);
|
|
21
|
+
`;
|
|
14
22
|
/** @internal */
|
|
15
23
|
export function createCopyColorProgram(context, copyAlpha = true) {
|
|
16
24
|
const builder = createViewportQuadBuilder(true);
|
|
17
25
|
const frag = builder.frag;
|
|
18
26
|
frag.set(1 /* ComputeBaseColor */, copyAlpha ? computeColor : computeColorNoAlpha);
|
|
19
|
-
frag.set(
|
|
27
|
+
frag.set(16 /* AssignFragData */, assignFragColor);
|
|
20
28
|
frag.addUniform("u_color", 8 /* Sampler2D */, (prog) => {
|
|
21
29
|
prog.addGraphicUniform("u_color", (uniform, params) => {
|
|
22
30
|
const geom = params.geometry;
|
|
23
31
|
Texture2DHandle.bindSampler(uniform, geom.texture, TextureUnit.Zero);
|
|
24
32
|
});
|
|
25
33
|
});
|
|
34
|
+
if (!copyAlpha) {
|
|
35
|
+
frag.addUniform("u_bgColor", 5 /* Vec4 */, (prog) => {
|
|
36
|
+
prog.addProgramUniform("u_bgColor", (uniform, params) => {
|
|
37
|
+
params.target.uniforms.style.bindBackgroundRgba(uniform);
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
}
|
|
26
41
|
const flagString = (copyAlpha ? "-CopyAlpha" : "-NoAlpha");
|
|
27
42
|
builder.vert.headerComment = `//!V! CopyColor${flagString}`;
|
|
28
43
|
builder.frag.headerComment = `//!F! CopyColor${flagString}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CopyColor.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/CopyColor.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,MAAM,YAAY,GAAG,sCAAsC,CAAC;AAE5D,MAAM,mBAAmB,GAAG,
|
|
1
|
+
{"version":3,"file":"CopyColor.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/CopyColor.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,MAAM,YAAY,GAAG,sCAAsC,CAAC;AAE5D,6FAA6F;AAC7F,+BAA+B;AAC/B,MAAM,mBAAmB,GAAG;;;;;;CAM3B,CAAC;AAEF,gBAAgB;AAChB,MAAM,UAAU,sBAAsB,CAAC,OAAqB,EAAE,YAAqB,IAAI;IACrF,MAAM,OAAO,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,IAAI,CAAC,GAAG,2BAA2C,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IACnG,IAAI,CAAC,GAAG,0BAAyC,eAAe,CAAC,CAAC;IAClE,IAAI,CAAC,UAAU,CAAC,SAAS,qBAA0B,CAAC,IAAI,EAAE,EAAE;QAC1D,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACpD,MAAM,IAAI,GAAG,MAAM,CAAC,QAA8C,CAAC;YACnE,eAAe,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,SAAS,EAAE;QACd,IAAI,CAAC,UAAU,CAAC,WAAW,gBAAqB,CAAC,IAAI,EAAE,EAAE;YACvD,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACtD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;KACJ;IAED,MAAM,UAAU,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC3D,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,kBAAkB,UAAU,EAAE,CAAC;IAC5D,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,kBAAkB,UAAU,EAAE,CAAC;IAE5D,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { WebGLContext } from \"@itwin/webgl-compatibility\";\r\nimport { SingleTexturedViewportQuadGeometry } from \"../CachedGeometry\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport { FragmentShaderComponent, VariableType } from \"../ShaderBuilder\";\r\nimport { ShaderProgram } from \"../ShaderProgram\";\r\nimport { Texture2DHandle } from \"../Texture\";\r\nimport { assignFragColor } from \"./Fragment\";\r\nimport { createViewportQuadBuilder } from \"./ViewportQuad\";\r\n\r\nconst computeColor = \"return TEXTURE(u_color, v_texCoord);\";\r\n\r\n// Transparent background color will not have premultiplied alpha - multiply it when copying.\r\n// Set all other pixels opaque.\r\nconst computeColorNoAlpha = `\r\n vec4 color = TEXTURE(u_color, v_texCoord);\r\n if (color == u_bgColor)\r\n return vec4(color.rgb * color.a, color.a);\r\n else\r\n return vec4(color.rgb, 1.0);\r\n`;\r\n\r\n/** @internal */\r\nexport function createCopyColorProgram(context: WebGLContext, copyAlpha: boolean = true): ShaderProgram {\r\n const builder = createViewportQuadBuilder(true);\r\n const frag = builder.frag;\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, copyAlpha ? computeColor : computeColorNoAlpha);\r\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\r\n frag.addUniform(\"u_color\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_color\", (uniform, params) => {\r\n const geom = params.geometry as SingleTexturedViewportQuadGeometry;\r\n Texture2DHandle.bindSampler(uniform, geom.texture, TextureUnit.Zero);\r\n });\r\n });\r\n\r\n if (!copyAlpha) {\r\n frag.addUniform(\"u_bgColor\", VariableType.Vec4, (prog) => {\r\n prog.addProgramUniform(\"u_bgColor\", (uniform, params) => {\r\n params.target.uniforms.style.bindBackgroundRgba(uniform);\r\n });\r\n });\r\n }\r\n\r\n const flagString = (copyAlpha ? \"-CopyAlpha\" : \"-NoAlpha\");\r\n builder.vert.headerComment = `//!V! CopyColor${flagString}`;\r\n builder.frag.headerComment = `//!F! CopyColor${flagString}`;\r\n\r\n return builder.buildProgram(context);\r\n}\r\n"]}
|
|
@@ -21,7 +21,7 @@ export function createCopyPickBuffersProgram(context) {
|
|
|
21
21
|
frag.set(1 /* ComputeBaseColor */, computeBaseColor);
|
|
22
22
|
if (System.instance.capabilities.maxColorAttachments < 2) {
|
|
23
23
|
// NB: Never used - we gl.clear() each attachment directly.
|
|
24
|
-
frag.set(
|
|
24
|
+
frag.set(16 /* AssignFragData */, "FragColor = vec4(0.0);");
|
|
25
25
|
}
|
|
26
26
|
else {
|
|
27
27
|
frag.addUniform("u_pickFeatureId", 8 /* Sampler2D */, (prog) => {
|
|
@@ -35,7 +35,7 @@ export function createCopyPickBuffersProgram(context) {
|
|
|
35
35
|
});
|
|
36
36
|
}, 3 /* High */);
|
|
37
37
|
frag.addDrawBuffersExtension(2);
|
|
38
|
-
frag.set(
|
|
38
|
+
frag.set(16 /* AssignFragData */, assignFragData);
|
|
39
39
|
}
|
|
40
40
|
builder.vert.headerComment = "//!V! CopyPickBuffers";
|
|
41
41
|
builder.frag.headerComment = "//!F! CopyPickBuffers";
|
|
@@ -64,7 +64,7 @@ export function createVolClassColorUsingStencilProgram(context) {
|
|
|
64
64
|
const builder = createViewportQuadBuilder(false);
|
|
65
65
|
const frag = builder.frag;
|
|
66
66
|
frag.set(1 /* ComputeBaseColor */, computehiliteColor);
|
|
67
|
-
frag.set(
|
|
67
|
+
frag.set(16 /* AssignFragData */, assignFragColor);
|
|
68
68
|
frag.addUniform("u_hilite_color", 5 /* Vec4 */, (prog) => {
|
|
69
69
|
prog.addGraphicUniform("u_hilite_color", (uniform, params) => {
|
|
70
70
|
const useLighting = params.geometry.getFlashMode(params);
|
|
@@ -87,7 +87,7 @@ export function createVolClassCopyZProgram(context) {
|
|
|
87
87
|
builder.addInlineComputedVarying("v_texCoord", 3 /* Vec2 */, computeTexCoord); // TODO: I think this is not necessary because it's already added from the create above
|
|
88
88
|
const frag = builder.frag;
|
|
89
89
|
frag.set(1 /* ComputeBaseColor */, computeSetBlendColor);
|
|
90
|
-
frag.set(
|
|
90
|
+
frag.set(16 /* AssignFragData */, assignFragColor);
|
|
91
91
|
frag.addUniform("u_blend_color", 5 /* Vec4 */, (prog) => {
|
|
92
92
|
prog.addGraphicUniform("u_blend_color", (uniform, _params) => {
|
|
93
93
|
scratchColor.set(0.0, 0.0, 0.0, 0.0);
|
|
@@ -102,7 +102,7 @@ export function createVolClassCopyZProgram(context) {
|
|
|
102
102
|
});
|
|
103
103
|
if (!System.instance.capabilities.isWebGL2)
|
|
104
104
|
frag.addExtension("GL_EXT_frag_depth");
|
|
105
|
-
frag.set(
|
|
105
|
+
frag.set(18 /* FinalizeDepth */, depthFromTexture);
|
|
106
106
|
builder.vert.headerComment = "//!V! VolClassCopyZ";
|
|
107
107
|
builder.frag.headerComment = "//!F! VolClassCopyZ";
|
|
108
108
|
return builder.buildProgram(context);
|
|
@@ -122,7 +122,7 @@ export function createVolClassCopyZUsingPointsProgram(context) {
|
|
|
122
122
|
vert.set(9 /* ComputePosition */, computePosition);
|
|
123
123
|
const frag = builder.frag;
|
|
124
124
|
frag.set(1 /* ComputeBaseColor */, computeSetBlendColor);
|
|
125
|
-
frag.set(
|
|
125
|
+
frag.set(16 /* AssignFragData */, assignFragColor);
|
|
126
126
|
frag.addUniform("u_blend_color", 5 /* Vec4 */, (prog) => {
|
|
127
127
|
prog.addGraphicUniform("u_blend_color", (uniform, _params) => {
|
|
128
128
|
scratchColor.set(0.0, 0.0, 0.0, 0.0);
|
|
@@ -141,7 +141,7 @@ export function createVolClassSetBlendProgram(context) {
|
|
|
141
141
|
addBoundaryTypeConstants(frag);
|
|
142
142
|
frag.set(0 /* CheckForEarlyDiscard */, checkDiscardBackgroundByZ);
|
|
143
143
|
frag.set(1 /* ComputeBaseColor */, computeSetBlendColor);
|
|
144
|
-
frag.set(
|
|
144
|
+
frag.set(16 /* AssignFragData */, assignFragColor);
|
|
145
145
|
frag.addUniform("u_boundaryType", 1 /* Int */, (prog) => {
|
|
146
146
|
prog.addGraphicUniform("u_boundaryType", (uniform, params) => {
|
|
147
147
|
const geom = params.geometry;
|
|
@@ -184,7 +184,7 @@ export function createVolClassBlendProgram(context) {
|
|
|
184
184
|
builder.addInlineComputedVarying("v_texCoord", 3 /* Vec2 */, computeTexCoord);
|
|
185
185
|
const frag = builder.frag;
|
|
186
186
|
frag.set(1 /* ComputeBaseColor */, computeBlendTextureColor);
|
|
187
|
-
frag.set(
|
|
187
|
+
frag.set(16 /* AssignFragData */, assignFragColor);
|
|
188
188
|
frag.addUniform("u_blendTexture", 8 /* Sampler2D */, (prog) => {
|
|
189
189
|
prog.addGraphicUniform("u_blendTexture", (uniform, params) => {
|
|
190
190
|
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 /* ComputeBaseColor */, computeEVSM);
|
|
66
|
-
frag.set(
|
|
66
|
+
frag.set(16 /* AssignFragData */, assignFragColor);
|
|
67
67
|
builder.vert.headerComment = "//!V! EVSMFromDepth";
|
|
68
68
|
builder.frag.headerComment = "//!F! EVSMFromDepth";
|
|
69
69
|
return builder.buildProgram(context);
|
|
@@ -313,7 +313,7 @@ export function addHiliter(builder, wantWeight = false) {
|
|
|
313
313
|
addEmphasisFlags(builder.frag);
|
|
314
314
|
addExtractNthBit(builder.frag);
|
|
315
315
|
builder.frag.set(1 /* ComputeBaseColor */, computeHiliteColor);
|
|
316
|
-
builder.frag.set(
|
|
316
|
+
builder.frag.set(16 /* AssignFragData */, assignFragColor);
|
|
317
317
|
}
|
|
318
318
|
function addSamplers(frag, testFeatureId) {
|
|
319
319
|
if (testFeatureId) {
|
|
@@ -660,7 +660,7 @@ export function addFeatureSymbology(builder, feat, opts) {
|
|
|
660
660
|
*/
|
|
661
661
|
export function addUniformHiliter(builder) {
|
|
662
662
|
builder.frag.set(1 /* ComputeBaseColor */, `return vec4(1.0, 0.0, 0.0, 0.0);`);
|
|
663
|
-
builder.frag.set(
|
|
663
|
+
builder.frag.set(16 /* AssignFragData */, assignFragColor);
|
|
664
664
|
}
|
|
665
665
|
/** For a uniform feature table, the feature ID output to pick buffers is equal to the batch ID.
|
|
666
666
|
* The following symbology overrides are supported:
|
|
@@ -91,12 +91,12 @@ export function addPickBufferOutputs(frag) {
|
|
|
91
91
|
frag.addFunction(computeLinearDepth);
|
|
92
92
|
const prelude = new SourceBuilder();
|
|
93
93
|
prelude.add(computePickBufferOutputs);
|
|
94
|
-
const overrideColor = frag.get(
|
|
94
|
+
const overrideColor = frag.get(19 /* OverrideColor */);
|
|
95
95
|
if (undefined !== overrideColor) {
|
|
96
96
|
frag.addFunction("vec4 overrideColor(vec4 currentColor)", overrideColor);
|
|
97
97
|
prelude.addline(" output0 = overrideColor(output0);");
|
|
98
98
|
}
|
|
99
|
-
const overrideFeatureId = frag.get(
|
|
99
|
+
const overrideFeatureId = frag.get(17 /* OverrideFeatureId */);
|
|
100
100
|
if (undefined !== overrideFeatureId) {
|
|
101
101
|
frag.addFunction("vec4 overrideFeatureId(vec4 currentId)", overrideFeatureId);
|
|
102
102
|
prelude.addline(reassignFeatureId);
|
|
@@ -104,18 +104,18 @@ export function addPickBufferOutputs(frag) {
|
|
|
104
104
|
addRenderPass(frag);
|
|
105
105
|
if (System.instance.capabilities.supportsMRTPickShaders) {
|
|
106
106
|
frag.addDrawBuffersExtension(3);
|
|
107
|
-
frag.set(
|
|
107
|
+
frag.set(16 /* AssignFragData */, prelude.source + assignPickBufferOutputsMRT);
|
|
108
108
|
}
|
|
109
109
|
else {
|
|
110
110
|
addRenderTargetIndex(frag);
|
|
111
|
-
frag.set(
|
|
111
|
+
frag.set(16 /* AssignFragData */, prelude.source + assignPickBufferOutputsMP);
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
114
|
/** @internal */
|
|
115
115
|
export function addAltPickBufferOutputs(frag) {
|
|
116
116
|
const prelude = new SourceBuilder();
|
|
117
117
|
prelude.add(computeAltPickBufferOutputs);
|
|
118
|
-
const overrideColor = frag.get(
|
|
118
|
+
const overrideColor = frag.get(19 /* OverrideColor */);
|
|
119
119
|
if (undefined !== overrideColor) {
|
|
120
120
|
frag.addFunction("vec4 overrideColor(vec4 currentColor)", overrideColor);
|
|
121
121
|
prelude.addline(" output0 = overrideColor(output0);");
|
|
@@ -123,23 +123,23 @@ export function addAltPickBufferOutputs(frag) {
|
|
|
123
123
|
addRenderPass(frag);
|
|
124
124
|
if (System.instance.capabilities.supportsMRTPickShaders) {
|
|
125
125
|
frag.addDrawBuffersExtension(3);
|
|
126
|
-
frag.set(
|
|
126
|
+
frag.set(16 /* AssignFragData */, prelude.source + assignPickBufferOutputsMRT);
|
|
127
127
|
}
|
|
128
128
|
else {
|
|
129
129
|
addRenderTargetIndex(frag);
|
|
130
|
-
frag.set(
|
|
130
|
+
frag.set(16 /* AssignFragData */, prelude.source + assignPickBufferOutputsMP);
|
|
131
131
|
}
|
|
132
132
|
}
|
|
133
133
|
/** @internal */
|
|
134
134
|
export function addFragColorWithPreMultipliedAlpha(frag) {
|
|
135
135
|
addRenderPass(frag);
|
|
136
|
-
const overrideColor = frag.get(
|
|
136
|
+
const overrideColor = frag.get(19 /* OverrideColor */);
|
|
137
137
|
if (undefined === overrideColor) {
|
|
138
|
-
frag.set(
|
|
138
|
+
frag.set(16 /* AssignFragData */, assignFragColorWithPreMultipliedAlpha);
|
|
139
139
|
}
|
|
140
140
|
else {
|
|
141
141
|
frag.addFunction("vec4 overrideColor(vec4 currentColor)", overrideColor);
|
|
142
|
-
frag.set(
|
|
142
|
+
frag.set(16 /* AssignFragData */, overrideAndAssignFragColorWithPreMultipliedAlpha);
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
145
|
/** @internal */
|
|
@@ -24,6 +24,6 @@ export function addLogDepth(builder) {
|
|
|
24
24
|
});
|
|
25
25
|
if (!System.instance.capabilities.isWebGL2)
|
|
26
26
|
frag.addExtension("GL_EXT_frag_depth");
|
|
27
|
-
frag.set(
|
|
27
|
+
frag.set(18 /* FinalizeDepth */, finalizeDepth);
|
|
28
28
|
}
|
|
29
29
|
//# sourceMappingURL=LogarithmicDepthBuffer.js.map
|
|
@@ -290,7 +290,7 @@ export function addFeaturePlanarClassifier(builder) {
|
|
|
290
290
|
uniform.setUniform4fv(scratchBatchBaseComponents);
|
|
291
291
|
});
|
|
292
292
|
});
|
|
293
|
-
frag.set(
|
|
293
|
+
frag.set(17 /* OverrideFeatureId */, overrideFeatureId);
|
|
294
294
|
frag.addFunction(addUInt32s);
|
|
295
295
|
}
|
|
296
296
|
/** @internal */
|
|
@@ -379,8 +379,8 @@ export function addOverrideClassifierColor(builder, isThematic) {
|
|
|
379
379
|
const haveOverrides = undefined !== builder.frag.find("v_feature_emphasis");
|
|
380
380
|
builder.frag.addFunction(haveOverrides ? encodeNonLocatableWithFeatures : encodeNonLocatable);
|
|
381
381
|
if (isThematic === 0 /* No */)
|
|
382
|
-
builder.frag.set(
|
|
382
|
+
builder.frag.set(19 /* OverrideColor */, haveOverrides ? overrideClassifierWithFeatures : overrideClassifierForClip);
|
|
383
383
|
else
|
|
384
|
-
builder.frag.set(
|
|
384
|
+
builder.frag.set(19 /* OverrideColor */, haveOverrides ? overrideClassifierWithFeaturesForThematic : overrideClassifierForClipForThematic);
|
|
385
385
|
}
|
|
386
386
|
//# sourceMappingURL=PlanarClassification.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RealityMesh.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/RealityMesh.ts"],"names":[],"mappings":"AAIA;;GAEG;AAMH,OAAO,EAAkD,cAAc,EAAuC,MAAM,kBAAkB,CAAC;AAEvI,OAAO,EAAsD,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"RealityMesh.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/RealityMesh.ts"],"names":[],"mappings":"AAIA;;GAEG;AAMH,OAAO,EAAkD,cAAc,EAAuC,MAAM,kBAAkB,CAAC;AAEvI,OAAO,EAAsD,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAoKvG,gBAAgB;AAChB,wBAAgB,kCAAkC,IAAI,cAAc,CAInE;AAED,gBAAgB;AAChB,wBAAgB,wBAAwB,IAAI,cAAc,CAIzD;AAED,gBAAgB;AAChB,MAAM,CAAC,OAAO,UAAU,wBAAwB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CAwEtF"}
|
|
@@ -21,6 +21,7 @@ import { addSolarShadowMap } from "./SolarShadowMapping";
|
|
|
21
21
|
import { addClassificationTranslucencyDiscard, octDecodeNormal } from "./Surface";
|
|
22
22
|
import { addThematicDisplay, getComputeThematicIndex } from "./Thematic";
|
|
23
23
|
import { addModelViewProjectionMatrix, addNormalMatrix } from "./Vertex";
|
|
24
|
+
import { addWiremesh } from "./Wiremesh";
|
|
24
25
|
const computePosition = "gl_PointSize = 1.0; return MAT_MVP * rawPos;";
|
|
25
26
|
const computeNormal = `
|
|
26
27
|
vec3 normal = octDecodeNormal(a_norm); // normal coming in for is already in world space
|
|
@@ -155,7 +156,7 @@ function createRealityMeshHiliterBuilder() {
|
|
|
155
156
|
const vert = builder.vert;
|
|
156
157
|
vert.set(9 /* ComputePosition */, computePosition);
|
|
157
158
|
addModelViewProjectionMatrix(vert);
|
|
158
|
-
builder.frag.set(
|
|
159
|
+
builder.frag.set(16 /* AssignFragData */, assignFragColor);
|
|
159
160
|
return builder;
|
|
160
161
|
}
|
|
161
162
|
/** @internal */
|
|
@@ -180,7 +181,7 @@ export default function createRealityMeshBuilder(flags) {
|
|
|
180
181
|
addSolarShadowMap(builder, true);
|
|
181
182
|
const frag = builder.frag;
|
|
182
183
|
frag.addGlobal("featureIncrement", 2 /* Float */, "0.0");
|
|
183
|
-
frag.set(
|
|
184
|
+
frag.set(17 /* OverrideFeatureId */, overrideFeatureId);
|
|
184
185
|
let textureCount = System.instance.maxRealityImageryLayers;
|
|
185
186
|
let gradientTextureUnit = TextureUnit.RealityMeshThematicGradient;
|
|
186
187
|
const caps = System.instance.capabilities;
|
|
@@ -229,6 +230,8 @@ export default function createRealityMeshBuilder(flags) {
|
|
|
229
230
|
addTextures(builder, textureCount);
|
|
230
231
|
if (1 /* Yes */ === flags.isThematic)
|
|
231
232
|
addThematicToRealityMesh(builder, gradientTextureUnit);
|
|
233
|
+
if (flags.isWiremesh)
|
|
234
|
+
addWiremesh(builder);
|
|
232
235
|
return builder;
|
|
233
236
|
}
|
|
234
237
|
//# sourceMappingURL=RealityMesh.js.map
|