@itwin/core-frontend 3.0.0-dev.133 → 3.0.0-dev.138
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 +4 -4
- package/lib/cjs/IModelApp.js +6 -6
- 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/Viewport.d.ts +1 -1
- package/lib/cjs/Viewport.js +1 -1
- 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/esm/IModelApp.d.ts +4 -4
- package/lib/esm/IModelApp.js +6 -6
- 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/Viewport.d.ts +1 -1
- package/lib/esm/Viewport.js +1 -1
- 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/package.json +22 -22
|
@@ -22,13 +22,14 @@ class TechniqueFlags {
|
|
|
22
22
|
this.isClassified = 0 /* No */;
|
|
23
23
|
this.isShadowable = 0 /* No */;
|
|
24
24
|
this.isThematic = 0 /* No */;
|
|
25
|
+
this.isWiremesh = 0 /* No */;
|
|
25
26
|
this._isHilite = false;
|
|
26
27
|
this.isTranslucent = translucent;
|
|
27
28
|
}
|
|
28
29
|
get hasClip() {
|
|
29
30
|
return this.numClipPlanes > 0;
|
|
30
31
|
}
|
|
31
|
-
init(target, pass, instanced, animated = 0 /* No */, classified = 0 /* No */, shadowable = 0 /* No */, thematic = 0 /* No */) {
|
|
32
|
+
init(target, pass, instanced, animated = 0 /* No */, classified = 0 /* No */, shadowable = 0 /* No */, thematic = 0 /* No */, wiremesh = 0 /* No */) {
|
|
32
33
|
const clipStack = target.uniforms.branch.clipStack;
|
|
33
34
|
const numClipPlanes = clipStack.hasClip ? clipStack.textureHeight : 0;
|
|
34
35
|
if (9 /* Hilite */ === pass || 15 /* HiliteClassification */ === pass || 17 /* HilitePlanarClassification */ === pass) {
|
|
@@ -44,6 +45,7 @@ class TechniqueFlags {
|
|
|
44
45
|
this.isClassified = classified;
|
|
45
46
|
this.isShadowable = shadowable;
|
|
46
47
|
this.isThematic = thematic;
|
|
48
|
+
this.isWiremesh = wiremesh;
|
|
47
49
|
this.featureMode = target.uniforms.batch.featureMode;
|
|
48
50
|
// 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).
|
|
49
51
|
// These are only useful if the geometry defines feature Ids.
|
|
@@ -79,6 +81,7 @@ class TechniqueFlags {
|
|
|
79
81
|
this.isInstanced = instanced;
|
|
80
82
|
this.isShadowable = shadowable;
|
|
81
83
|
this.isThematic = thematic;
|
|
84
|
+
this.isWiremesh = 0 /* No */;
|
|
82
85
|
this.numClipPlanes = 0;
|
|
83
86
|
}
|
|
84
87
|
get hasFeatures() { return 0 /* None */ !== this.featureMode; }
|
|
@@ -108,6 +111,7 @@ class TechniqueFlags {
|
|
|
108
111
|
&& this.isClassified === other.isClassified
|
|
109
112
|
&& this.isShadowable === other.isShadowable
|
|
110
113
|
&& this.isThematic === other.isThematic
|
|
114
|
+
&& this.isWiremesh === other.isWiremesh
|
|
111
115
|
&& this.isHilite === other.isHilite;
|
|
112
116
|
}
|
|
113
117
|
buildDescription() {
|
|
@@ -130,6 +134,8 @@ class TechniqueFlags {
|
|
|
130
134
|
parts.push("Thematic");
|
|
131
135
|
if (this.hasFeatures)
|
|
132
136
|
parts.push(1 /* Pick */ === this.featureMode ? "Pick" : "Overrides");
|
|
137
|
+
if (this.isWiremesh)
|
|
138
|
+
parts.push("Wiremesh");
|
|
133
139
|
return parts.join("-");
|
|
134
140
|
}
|
|
135
141
|
static fromDescription(description) {
|
|
@@ -164,6 +170,9 @@ class TechniqueFlags {
|
|
|
164
170
|
case "Thematic":
|
|
165
171
|
flags.isThematic = 1 /* Yes */;
|
|
166
172
|
break;
|
|
173
|
+
case "Wiremesh":
|
|
174
|
+
flags.isWiremesh = 1 /* Yes */;
|
|
175
|
+
break;
|
|
167
176
|
case "Pick":
|
|
168
177
|
flags.featureMode = 1 /* Pick */;
|
|
169
178
|
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"]}
|
|
@@ -156,7 +156,7 @@ function createAmbientOcclusionProgram(context) {
|
|
|
156
156
|
frag.addFunction(Fragment_1.computeLinearDepth);
|
|
157
157
|
(0, FeatureSymbology_1.addRenderOrderConstants)(frag);
|
|
158
158
|
frag.set(1 /* ComputeBaseColor */, computeAmbientOcclusion);
|
|
159
|
-
frag.set(
|
|
159
|
+
frag.set(16 /* AssignFragData */, Fragment_1.assignFragColor);
|
|
160
160
|
frag.addUniform("u_pickDepthAndOrder", 8 /* Sampler2D */, (prog) => {
|
|
161
161
|
prog.addGraphicUniform("u_pickDepthAndOrder", (uniform, params) => {
|
|
162
162
|
const geom = params.geometry;
|
|
@@ -51,7 +51,7 @@ function createBlurProgram(context) {
|
|
|
51
51
|
(0, Fragment_1.addWindowToTexCoords)(frag);
|
|
52
52
|
frag.addFunction(Decode_1.decodeDepthRgb);
|
|
53
53
|
frag.set(1 /* ComputeBaseColor */, computeBlur);
|
|
54
|
-
frag.set(
|
|
54
|
+
frag.set(16 /* AssignFragData */, Fragment_1.assignFragColor);
|
|
55
55
|
(0, Viewport_1.addViewport)(frag);
|
|
56
56
|
frag.addUniform("u_textureToBlur", 8 /* Sampler2D */, (prog) => {
|
|
57
57
|
prog.addGraphicUniform("u_textureToBlur", (uniform, params) => {
|
|
@@ -28,11 +28,11 @@ function createClearPickAndColorProgram(context) {
|
|
|
28
28
|
frag.set(1 /* ComputeBaseColor */, computeBaseColor);
|
|
29
29
|
if (!System_1.System.instance.capabilities.supportsMRTPickShaders) {
|
|
30
30
|
// NB: This shader is never used - we gl.clear() directly
|
|
31
|
-
frag.set(
|
|
31
|
+
frag.set(16 /* AssignFragData */, "FragColor = baseColor;");
|
|
32
32
|
}
|
|
33
33
|
else {
|
|
34
34
|
frag.addDrawBuffersExtension(3);
|
|
35
|
-
frag.set(
|
|
35
|
+
frag.set(16 /* AssignFragData */, assignFragData);
|
|
36
36
|
}
|
|
37
37
|
builder.vert.headerComment = "//!V! ClearPickAndColor";
|
|
38
38
|
builder.frag.headerComment = "//!F! ClearPickAndColor";
|
|
@@ -23,11 +23,11 @@ function createClearTranslucentProgram(context) {
|
|
|
23
23
|
frag.set(1 /* ComputeBaseColor */, computeBaseColor);
|
|
24
24
|
if (System_1.System.instance.capabilities.supportsMRTTransparency) {
|
|
25
25
|
frag.addDrawBuffersExtension(2);
|
|
26
|
-
frag.set(
|
|
26
|
+
frag.set(16 /* AssignFragData */, assignFragData);
|
|
27
27
|
}
|
|
28
28
|
else {
|
|
29
29
|
// NB: This shader is never used - we just gl.clear() directly
|
|
30
|
-
frag.set(
|
|
30
|
+
frag.set(16 /* AssignFragData */, assignFragColor);
|
|
31
31
|
}
|
|
32
32
|
builder.vert.headerComment = "//!V! ClearTranslucent";
|
|
33
33
|
builder.frag.headerComment = "//!F! ClearTranslucent";
|
|
@@ -40,7 +40,7 @@ function createCombine3TexturesProgram(context) {
|
|
|
40
40
|
Texture_1.Texture2DHandle.bindSampler(uniform, params.geometry.texture2, RenderFlags_1.TextureUnit.Two);
|
|
41
41
|
});
|
|
42
42
|
}, 3 /* High */);
|
|
43
|
-
frag.set(
|
|
43
|
+
frag.set(16 /* AssignFragData */, assignFragData);
|
|
44
44
|
builder.vert.headerComment = "//!V! Combine3Textures";
|
|
45
45
|
builder.frag.headerComment = "//!F! Combine3Textures";
|
|
46
46
|
return builder.buildProgram(context);
|
|
@@ -33,7 +33,7 @@ function createCombineTexturesProgram(context) {
|
|
|
33
33
|
Texture_1.Texture2DHandle.bindSampler(uniform, params.geometry.texture1, RenderFlags_1.TextureUnit.One);
|
|
34
34
|
});
|
|
35
35
|
}, 3 /* High */);
|
|
36
|
-
frag.set(
|
|
36
|
+
frag.set(16 /* AssignFragData */, assignFragData);
|
|
37
37
|
builder.vert.headerComment = "//!V! CombineTextures";
|
|
38
38
|
builder.frag.headerComment = "//!F! CombineTextures";
|
|
39
39
|
return builder.buildProgram(context);
|
|
@@ -116,7 +116,7 @@ function createCompositeProgram(flags, context) {
|
|
|
116
116
|
const frag = builder.frag;
|
|
117
117
|
frag.addFunction(wantOcclusion ? computeAmbientOcclusion : computeDefaultAmbientOcclusion);
|
|
118
118
|
frag.addFunction(computeOpaqueColor);
|
|
119
|
-
frag.set(
|
|
119
|
+
frag.set(16 /* AssignFragData */, Fragment_1.assignFragColor);
|
|
120
120
|
frag.addUniform("u_opaque", 8 /* Sampler2D */, (prog) => {
|
|
121
121
|
prog.addGraphicUniform("u_opaque", (uniform, params) => {
|
|
122
122
|
Texture_1.Texture2DHandle.bindSampler(uniform, params.geometry.opaque, RenderFlags_1.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"}
|
|
@@ -13,19 +13,34 @@ const Texture_1 = require("../Texture");
|
|
|
13
13
|
const Fragment_1 = require("./Fragment");
|
|
14
14
|
const ViewportQuad_1 = require("./ViewportQuad");
|
|
15
15
|
const computeColor = "return TEXTURE(u_color, v_texCoord);";
|
|
16
|
-
|
|
16
|
+
// Transparent background color will not have premultiplied alpha - multiply it when copying.
|
|
17
|
+
// Set all other pixels opaque.
|
|
18
|
+
const computeColorNoAlpha = `
|
|
19
|
+
vec4 color = TEXTURE(u_color, v_texCoord);
|
|
20
|
+
if (color == u_bgColor)
|
|
21
|
+
return vec4(color.rgb * color.a, color.a);
|
|
22
|
+
else
|
|
23
|
+
return vec4(color.rgb, 1.0);
|
|
24
|
+
`;
|
|
17
25
|
/** @internal */
|
|
18
26
|
function createCopyColorProgram(context, copyAlpha = true) {
|
|
19
27
|
const builder = (0, ViewportQuad_1.createViewportQuadBuilder)(true);
|
|
20
28
|
const frag = builder.frag;
|
|
21
29
|
frag.set(1 /* ComputeBaseColor */, copyAlpha ? computeColor : computeColorNoAlpha);
|
|
22
|
-
frag.set(
|
|
30
|
+
frag.set(16 /* AssignFragData */, Fragment_1.assignFragColor);
|
|
23
31
|
frag.addUniform("u_color", 8 /* Sampler2D */, (prog) => {
|
|
24
32
|
prog.addGraphicUniform("u_color", (uniform, params) => {
|
|
25
33
|
const geom = params.geometry;
|
|
26
34
|
Texture_1.Texture2DHandle.bindSampler(uniform, geom.texture, RenderFlags_1.TextureUnit.Zero);
|
|
27
35
|
});
|
|
28
36
|
});
|
|
37
|
+
if (!copyAlpha) {
|
|
38
|
+
frag.addUniform("u_bgColor", 5 /* Vec4 */, (prog) => {
|
|
39
|
+
prog.addProgramUniform("u_bgColor", (uniform, params) => {
|
|
40
|
+
params.target.uniforms.style.bindBackgroundRgba(uniform);
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
}
|
|
29
44
|
const flagString = (copyAlpha ? "-CopyAlpha" : "-NoAlpha");
|
|
30
45
|
builder.vert.headerComment = `//!V! CopyColor${flagString}`;
|
|
31
46
|
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,gDAA6C;AAG7C,wCAA6C;AAC7C,yCAA6C;AAC7C,iDAA2D;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,gDAA6C;AAG7C,wCAA6C;AAC7C,yCAA6C;AAC7C,iDAA2D;AAE3D,MAAM,YAAY,GAAG,sCAAsC,CAAC;AAE5D,6FAA6F;AAC7F,+BAA+B;AAC/B,MAAM,mBAAmB,GAAG;;;;;;CAM3B,CAAC;AAEF,gBAAgB;AAChB,SAAgB,sBAAsB,CAAC,OAAqB,EAAE,YAAqB,IAAI;IACrF,MAAM,OAAO,GAAG,IAAA,wCAAyB,EAAC,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,0BAAe,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,yBAAe,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,yBAAW,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;AA1BD,wDA0BC","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"]}
|
|
@@ -24,7 +24,7 @@ function createCopyPickBuffersProgram(context) {
|
|
|
24
24
|
frag.set(1 /* ComputeBaseColor */, computeBaseColor);
|
|
25
25
|
if (System_1.System.instance.capabilities.maxColorAttachments < 2) {
|
|
26
26
|
// NB: Never used - we gl.clear() each attachment directly.
|
|
27
|
-
frag.set(
|
|
27
|
+
frag.set(16 /* AssignFragData */, "FragColor = vec4(0.0);");
|
|
28
28
|
}
|
|
29
29
|
else {
|
|
30
30
|
frag.addUniform("u_pickFeatureId", 8 /* Sampler2D */, (prog) => {
|
|
@@ -38,7 +38,7 @@ function createCopyPickBuffersProgram(context) {
|
|
|
38
38
|
});
|
|
39
39
|
}, 3 /* High */);
|
|
40
40
|
frag.addDrawBuffersExtension(2);
|
|
41
|
-
frag.set(
|
|
41
|
+
frag.set(16 /* AssignFragData */, assignFragData);
|
|
42
42
|
}
|
|
43
43
|
builder.vert.headerComment = "//!V! CopyPickBuffers";
|
|
44
44
|
builder.frag.headerComment = "//!F! CopyPickBuffers";
|
|
@@ -67,7 +67,7 @@ function createVolClassColorUsingStencilProgram(context) {
|
|
|
67
67
|
const builder = (0, ViewportQuad_1.createViewportQuadBuilder)(false);
|
|
68
68
|
const frag = builder.frag;
|
|
69
69
|
frag.set(1 /* ComputeBaseColor */, computehiliteColor);
|
|
70
|
-
frag.set(
|
|
70
|
+
frag.set(16 /* AssignFragData */, Fragment_1.assignFragColor);
|
|
71
71
|
frag.addUniform("u_hilite_color", 5 /* Vec4 */, (prog) => {
|
|
72
72
|
prog.addGraphicUniform("u_hilite_color", (uniform, params) => {
|
|
73
73
|
const useLighting = params.geometry.getFlashMode(params);
|
|
@@ -91,7 +91,7 @@ function createVolClassCopyZProgram(context) {
|
|
|
91
91
|
builder.addInlineComputedVarying("v_texCoord", 3 /* Vec2 */, computeTexCoord); // TODO: I think this is not necessary because it's already added from the create above
|
|
92
92
|
const frag = builder.frag;
|
|
93
93
|
frag.set(1 /* ComputeBaseColor */, computeSetBlendColor);
|
|
94
|
-
frag.set(
|
|
94
|
+
frag.set(16 /* AssignFragData */, Fragment_1.assignFragColor);
|
|
95
95
|
frag.addUniform("u_blend_color", 5 /* Vec4 */, (prog) => {
|
|
96
96
|
prog.addGraphicUniform("u_blend_color", (uniform, _params) => {
|
|
97
97
|
scratchColor.set(0.0, 0.0, 0.0, 0.0);
|
|
@@ -106,7 +106,7 @@ function createVolClassCopyZProgram(context) {
|
|
|
106
106
|
});
|
|
107
107
|
if (!System_1.System.instance.capabilities.isWebGL2)
|
|
108
108
|
frag.addExtension("GL_EXT_frag_depth");
|
|
109
|
-
frag.set(
|
|
109
|
+
frag.set(18 /* FinalizeDepth */, depthFromTexture);
|
|
110
110
|
builder.vert.headerComment = "//!V! VolClassCopyZ";
|
|
111
111
|
builder.frag.headerComment = "//!F! VolClassCopyZ";
|
|
112
112
|
return builder.buildProgram(context);
|
|
@@ -127,7 +127,7 @@ function createVolClassCopyZUsingPointsProgram(context) {
|
|
|
127
127
|
vert.set(9 /* ComputePosition */, computePosition);
|
|
128
128
|
const frag = builder.frag;
|
|
129
129
|
frag.set(1 /* ComputeBaseColor */, computeSetBlendColor);
|
|
130
|
-
frag.set(
|
|
130
|
+
frag.set(16 /* AssignFragData */, Fragment_1.assignFragColor);
|
|
131
131
|
frag.addUniform("u_blend_color", 5 /* Vec4 */, (prog) => {
|
|
132
132
|
prog.addGraphicUniform("u_blend_color", (uniform, _params) => {
|
|
133
133
|
scratchColor.set(0.0, 0.0, 0.0, 0.0);
|
|
@@ -147,7 +147,7 @@ function createVolClassSetBlendProgram(context) {
|
|
|
147
147
|
addBoundaryTypeConstants(frag);
|
|
148
148
|
frag.set(0 /* CheckForEarlyDiscard */, checkDiscardBackgroundByZ);
|
|
149
149
|
frag.set(1 /* ComputeBaseColor */, computeSetBlendColor);
|
|
150
|
-
frag.set(
|
|
150
|
+
frag.set(16 /* AssignFragData */, Fragment_1.assignFragColor);
|
|
151
151
|
frag.addUniform("u_boundaryType", 1 /* Int */, (prog) => {
|
|
152
152
|
prog.addGraphicUniform("u_boundaryType", (uniform, params) => {
|
|
153
153
|
const geom = params.geometry;
|
|
@@ -191,7 +191,7 @@ function createVolClassBlendProgram(context) {
|
|
|
191
191
|
builder.addInlineComputedVarying("v_texCoord", 3 /* Vec2 */, computeTexCoord);
|
|
192
192
|
const frag = builder.frag;
|
|
193
193
|
frag.set(1 /* ComputeBaseColor */, computeBlendTextureColor);
|
|
194
|
-
frag.set(
|
|
194
|
+
frag.set(16 /* AssignFragData */, Fragment_1.assignFragColor);
|
|
195
195
|
frag.addUniform("u_blendTexture", 8 /* Sampler2D */, (prog) => {
|
|
196
196
|
prog.addGraphicUniform("u_blendTexture", (uniform, params) => {
|
|
197
197
|
const geom = params.geometry;
|
|
@@ -66,7 +66,7 @@ function createEVSMProgram(context) {
|
|
|
66
66
|
(0, SolarShadowMapping_1.addEvsmExponent)(frag);
|
|
67
67
|
frag.addFunction(SolarShadowMapping_1.warpDepth);
|
|
68
68
|
frag.set(1 /* ComputeBaseColor */, computeEVSM);
|
|
69
|
-
frag.set(
|
|
69
|
+
frag.set(16 /* AssignFragData */, Fragment_1.assignFragColor);
|
|
70
70
|
builder.vert.headerComment = "//!V! EVSMFromDepth";
|
|
71
71
|
builder.frag.headerComment = "//!F! EVSMFromDepth";
|
|
72
72
|
return builder.buildProgram(context);
|
|
@@ -319,7 +319,7 @@ function addHiliter(builder, wantWeight = false) {
|
|
|
319
319
|
addEmphasisFlags(builder.frag);
|
|
320
320
|
(0, Common_1.addExtractNthBit)(builder.frag);
|
|
321
321
|
builder.frag.set(1 /* ComputeBaseColor */, computeHiliteColor);
|
|
322
|
-
builder.frag.set(
|
|
322
|
+
builder.frag.set(16 /* AssignFragData */, Fragment_1.assignFragColor);
|
|
323
323
|
}
|
|
324
324
|
exports.addHiliter = addHiliter;
|
|
325
325
|
function addSamplers(frag, testFeatureId) {
|
|
@@ -673,7 +673,7 @@ exports.addFeatureSymbology = addFeatureSymbology;
|
|
|
673
673
|
*/
|
|
674
674
|
function addUniformHiliter(builder) {
|
|
675
675
|
builder.frag.set(1 /* ComputeBaseColor */, `return vec4(1.0, 0.0, 0.0, 0.0);`);
|
|
676
|
-
builder.frag.set(
|
|
676
|
+
builder.frag.set(16 /* AssignFragData */, Fragment_1.assignFragColor);
|
|
677
677
|
}
|
|
678
678
|
exports.addUniformHiliter = addUniformHiliter;
|
|
679
679
|
/** For a uniform feature table, the feature ID output to pick buffers is equal to the batch ID.
|
|
@@ -97,12 +97,12 @@ function addPickBufferOutputs(frag) {
|
|
|
97
97
|
frag.addFunction(exports.computeLinearDepth);
|
|
98
98
|
const prelude = new ShaderBuilder_1.SourceBuilder();
|
|
99
99
|
prelude.add(computePickBufferOutputs);
|
|
100
|
-
const overrideColor = frag.get(
|
|
100
|
+
const overrideColor = frag.get(19 /* OverrideColor */);
|
|
101
101
|
if (undefined !== overrideColor) {
|
|
102
102
|
frag.addFunction("vec4 overrideColor(vec4 currentColor)", overrideColor);
|
|
103
103
|
prelude.addline(" output0 = overrideColor(output0);");
|
|
104
104
|
}
|
|
105
|
-
const overrideFeatureId = frag.get(
|
|
105
|
+
const overrideFeatureId = frag.get(17 /* OverrideFeatureId */);
|
|
106
106
|
if (undefined !== overrideFeatureId) {
|
|
107
107
|
frag.addFunction("vec4 overrideFeatureId(vec4 currentId)", overrideFeatureId);
|
|
108
108
|
prelude.addline(reassignFeatureId);
|
|
@@ -110,11 +110,11 @@ function addPickBufferOutputs(frag) {
|
|
|
110
110
|
(0, RenderPass_1.addRenderPass)(frag);
|
|
111
111
|
if (System_1.System.instance.capabilities.supportsMRTPickShaders) {
|
|
112
112
|
frag.addDrawBuffersExtension(3);
|
|
113
|
-
frag.set(
|
|
113
|
+
frag.set(16 /* AssignFragData */, prelude.source + assignPickBufferOutputsMRT);
|
|
114
114
|
}
|
|
115
115
|
else {
|
|
116
116
|
addRenderTargetIndex(frag);
|
|
117
|
-
frag.set(
|
|
117
|
+
frag.set(16 /* AssignFragData */, prelude.source + assignPickBufferOutputsMP);
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
120
|
exports.addPickBufferOutputs = addPickBufferOutputs;
|
|
@@ -122,7 +122,7 @@ exports.addPickBufferOutputs = addPickBufferOutputs;
|
|
|
122
122
|
function addAltPickBufferOutputs(frag) {
|
|
123
123
|
const prelude = new ShaderBuilder_1.SourceBuilder();
|
|
124
124
|
prelude.add(computeAltPickBufferOutputs);
|
|
125
|
-
const overrideColor = frag.get(
|
|
125
|
+
const overrideColor = frag.get(19 /* OverrideColor */);
|
|
126
126
|
if (undefined !== overrideColor) {
|
|
127
127
|
frag.addFunction("vec4 overrideColor(vec4 currentColor)", overrideColor);
|
|
128
128
|
prelude.addline(" output0 = overrideColor(output0);");
|
|
@@ -130,24 +130,24 @@ function addAltPickBufferOutputs(frag) {
|
|
|
130
130
|
(0, RenderPass_1.addRenderPass)(frag);
|
|
131
131
|
if (System_1.System.instance.capabilities.supportsMRTPickShaders) {
|
|
132
132
|
frag.addDrawBuffersExtension(3);
|
|
133
|
-
frag.set(
|
|
133
|
+
frag.set(16 /* AssignFragData */, prelude.source + assignPickBufferOutputsMRT);
|
|
134
134
|
}
|
|
135
135
|
else {
|
|
136
136
|
addRenderTargetIndex(frag);
|
|
137
|
-
frag.set(
|
|
137
|
+
frag.set(16 /* AssignFragData */, prelude.source + assignPickBufferOutputsMP);
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
140
|
exports.addAltPickBufferOutputs = addAltPickBufferOutputs;
|
|
141
141
|
/** @internal */
|
|
142
142
|
function addFragColorWithPreMultipliedAlpha(frag) {
|
|
143
143
|
(0, RenderPass_1.addRenderPass)(frag);
|
|
144
|
-
const overrideColor = frag.get(
|
|
144
|
+
const overrideColor = frag.get(19 /* OverrideColor */);
|
|
145
145
|
if (undefined === overrideColor) {
|
|
146
|
-
frag.set(
|
|
146
|
+
frag.set(16 /* AssignFragData */, assignFragColorWithPreMultipliedAlpha);
|
|
147
147
|
}
|
|
148
148
|
else {
|
|
149
149
|
frag.addFunction("vec4 overrideColor(vec4 currentColor)", overrideColor);
|
|
150
|
-
frag.set(
|
|
150
|
+
frag.set(16 /* AssignFragData */, overrideAndAssignFragColorWithPreMultipliedAlpha);
|
|
151
151
|
}
|
|
152
152
|
}
|
|
153
153
|
exports.addFragColorWithPreMultipliedAlpha = addFragColorWithPreMultipliedAlpha;
|
|
@@ -27,7 +27,7 @@ function addLogDepth(builder) {
|
|
|
27
27
|
});
|
|
28
28
|
if (!System_1.System.instance.capabilities.isWebGL2)
|
|
29
29
|
frag.addExtension("GL_EXT_frag_depth");
|
|
30
|
-
frag.set(
|
|
30
|
+
frag.set(18 /* FinalizeDepth */, finalizeDepth);
|
|
31
31
|
}
|
|
32
32
|
exports.addLogDepth = addLogDepth;
|
|
33
33
|
//# sourceMappingURL=LogarithmicDepthBuffer.js.map
|
|
@@ -294,7 +294,7 @@ function addFeaturePlanarClassifier(builder) {
|
|
|
294
294
|
uniform.setUniform4fv(scratchBatchBaseComponents);
|
|
295
295
|
});
|
|
296
296
|
});
|
|
297
|
-
frag.set(
|
|
297
|
+
frag.set(17 /* OverrideFeatureId */, overrideFeatureId);
|
|
298
298
|
frag.addFunction(Common_1.addUInt32s);
|
|
299
299
|
}
|
|
300
300
|
exports.addFeaturePlanarClassifier = addFeaturePlanarClassifier;
|
|
@@ -385,9 +385,9 @@ function addOverrideClassifierColor(builder, isThematic) {
|
|
|
385
385
|
const haveOverrides = undefined !== builder.frag.find("v_feature_emphasis");
|
|
386
386
|
builder.frag.addFunction(haveOverrides ? encodeNonLocatableWithFeatures : encodeNonLocatable);
|
|
387
387
|
if (isThematic === 0 /* No */)
|
|
388
|
-
builder.frag.set(
|
|
388
|
+
builder.frag.set(19 /* OverrideColor */, haveOverrides ? overrideClassifierWithFeatures : overrideClassifierForClip);
|
|
389
389
|
else
|
|
390
|
-
builder.frag.set(
|
|
390
|
+
builder.frag.set(19 /* OverrideColor */, haveOverrides ? overrideClassifierWithFeaturesForThematic : overrideClassifierForClipForThematic);
|
|
391
391
|
}
|
|
392
392
|
exports.addOverrideClassifierColor = addOverrideClassifierColor;
|
|
393
393
|
//# 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"}
|
|
@@ -24,6 +24,7 @@ const SolarShadowMapping_1 = require("./SolarShadowMapping");
|
|
|
24
24
|
const Surface_1 = require("./Surface");
|
|
25
25
|
const Thematic_1 = require("./Thematic");
|
|
26
26
|
const Vertex_1 = require("./Vertex");
|
|
27
|
+
const Wiremesh_1 = require("./Wiremesh");
|
|
27
28
|
const computePosition = "gl_PointSize = 1.0; return MAT_MVP * rawPos;";
|
|
28
29
|
const computeNormal = `
|
|
29
30
|
vec3 normal = octDecodeNormal(a_norm); // normal coming in for is already in world space
|
|
@@ -158,7 +159,7 @@ function createRealityMeshHiliterBuilder() {
|
|
|
158
159
|
const vert = builder.vert;
|
|
159
160
|
vert.set(9 /* ComputePosition */, computePosition);
|
|
160
161
|
(0, Vertex_1.addModelViewProjectionMatrix)(vert);
|
|
161
|
-
builder.frag.set(
|
|
162
|
+
builder.frag.set(16 /* AssignFragData */, Fragment_1.assignFragColor);
|
|
162
163
|
return builder;
|
|
163
164
|
}
|
|
164
165
|
/** @internal */
|
|
@@ -185,7 +186,7 @@ function createRealityMeshBuilder(flags) {
|
|
|
185
186
|
(0, SolarShadowMapping_1.addSolarShadowMap)(builder, true);
|
|
186
187
|
const frag = builder.frag;
|
|
187
188
|
frag.addGlobal("featureIncrement", 2 /* Float */, "0.0");
|
|
188
|
-
frag.set(
|
|
189
|
+
frag.set(17 /* OverrideFeatureId */, overrideFeatureId);
|
|
189
190
|
let textureCount = System_1.System.instance.maxRealityImageryLayers;
|
|
190
191
|
let gradientTextureUnit = RenderFlags_1.TextureUnit.RealityMeshThematicGradient;
|
|
191
192
|
const caps = System_1.System.instance.capabilities;
|
|
@@ -234,6 +235,8 @@ function createRealityMeshBuilder(flags) {
|
|
|
234
235
|
addTextures(builder, textureCount);
|
|
235
236
|
if (1 /* Yes */ === flags.isThematic)
|
|
236
237
|
addThematicToRealityMesh(builder, gradientTextureUnit);
|
|
238
|
+
if (flags.isWiremesh)
|
|
239
|
+
(0, Wiremesh_1.addWiremesh)(builder);
|
|
237
240
|
return builder;
|
|
238
241
|
}
|
|
239
242
|
exports.default = createRealityMeshBuilder;
|