@itwin/core-frontend 3.0.0-dev.140 → 3.0.0-dev.145
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/RealityDataSource.d.ts +14 -7
- package/lib/cjs/RealityDataSource.d.ts.map +1 -1
- package/lib/cjs/RealityDataSource.js +25 -25
- package/lib/cjs/RealityDataSource.js.map +1 -1
- package/lib/cjs/core-frontend.js.map +1 -1
- package/lib/cjs/render/MockRender.d.ts +3 -1
- package/lib/cjs/render/MockRender.d.ts.map +1 -1
- package/lib/cjs/render/MockRender.js.map +1 -1
- package/lib/cjs/render/RenderSystem.d.ts +3 -1
- package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
- package/lib/cjs/render/RenderSystem.js +4 -2
- package/lib/cjs/render/RenderSystem.js.map +1 -1
- package/lib/cjs/render/primitives/EdgeParams.d.ts +50 -0
- package/lib/cjs/render/primitives/EdgeParams.d.ts.map +1 -0
- package/lib/cjs/render/primitives/EdgeParams.js +116 -0
- package/lib/cjs/render/primitives/EdgeParams.js.map +1 -0
- package/lib/cjs/render/primitives/PointStringParams.d.ts +16 -0
- package/lib/cjs/render/primitives/PointStringParams.d.ts.map +1 -0
- package/lib/cjs/render/primitives/PointStringParams.js +43 -0
- package/lib/cjs/render/primitives/PointStringParams.js.map +1 -0
- package/lib/cjs/render/primitives/PolylineParams.d.ts +44 -0
- package/lib/cjs/render/primitives/PolylineParams.d.ts.map +1 -0
- package/lib/cjs/render/primitives/PolylineParams.js +205 -0
- package/lib/cjs/render/primitives/PolylineParams.js.map +1 -0
- package/lib/cjs/render/primitives/SurfaceParams.d.ts +46 -0
- package/lib/cjs/render/primitives/SurfaceParams.d.ts.map +1 -0
- package/lib/cjs/render/primitives/SurfaceParams.js +42 -0
- package/lib/cjs/render/primitives/SurfaceParams.js.map +1 -0
- package/lib/cjs/render/primitives/VertexTable.d.ts +3 -123
- package/lib/cjs/render/primitives/VertexTable.d.ts.map +1 -1
- package/lib/cjs/render/primitives/VertexTable.js +10 -351
- package/lib/cjs/render/primitives/VertexTable.js.map +1 -1
- package/lib/cjs/render/webgl/CachedGeometry.d.ts +4 -2
- package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/EdgeGeometry.d.ts +73 -0
- package/lib/cjs/render/webgl/EdgeGeometry.d.ts.map +1 -0
- package/lib/cjs/render/webgl/EdgeGeometry.js +141 -0
- package/lib/cjs/render/webgl/EdgeGeometry.js.map +1 -0
- package/lib/cjs/render/webgl/InstancedGeometry.d.ts +4 -4
- package/lib/cjs/render/webgl/InstancedGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Material.d.ts +1 -1
- package/lib/cjs/render/webgl/Material.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Material.js.map +1 -1
- package/lib/cjs/render/webgl/Mesh.d.ts +6 -162
- package/lib/cjs/render/webgl/Mesh.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Mesh.js +11 -456
- package/lib/cjs/render/webgl/Mesh.js.map +1 -1
- package/lib/cjs/render/webgl/MeshData.d.ts +38 -0
- package/lib/cjs/render/webgl/MeshData.d.ts.map +1 -0
- package/lib/cjs/render/webgl/MeshData.js +66 -0
- package/lib/cjs/render/webgl/MeshData.js.map +1 -0
- package/lib/cjs/render/webgl/MeshGeometry.d.ts +38 -0
- package/lib/cjs/render/webgl/MeshGeometry.d.ts.map +1 -0
- package/lib/cjs/render/webgl/MeshGeometry.js +60 -0
- package/lib/cjs/render/webgl/MeshGeometry.js.map +1 -0
- package/lib/cjs/render/webgl/PointString.d.ts +1 -1
- package/lib/cjs/render/webgl/PointString.d.ts.map +1 -1
- package/lib/cjs/render/webgl/PointString.js.map +1 -1
- package/lib/cjs/render/webgl/Polyline.d.ts +1 -1
- package/lib/cjs/render/webgl/Polyline.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Polyline.js.map +1 -1
- package/lib/cjs/render/webgl/RenderCommands.js +4 -4
- package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
- package/lib/cjs/render/webgl/SurfaceGeometry.d.ts +54 -0
- package/lib/cjs/render/webgl/SurfaceGeometry.d.ts.map +1 -0
- package/lib/cjs/render/webgl/SurfaceGeometry.js +240 -0
- package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -0
- package/lib/cjs/render/webgl/System.d.ts +5 -3
- package/lib/cjs/render/webgl/System.d.ts.map +1 -1
- package/lib/cjs/render/webgl/System.js +10 -4
- package/lib/cjs/render/webgl/System.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Surface.js +3 -3
- package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/cjs/render-primitives.d.ts +5 -1
- package/lib/cjs/render-primitives.d.ts.map +1 -1
- package/lib/cjs/render-primitives.js +5 -1
- package/lib/cjs/render-primitives.js.map +1 -1
- package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
- package/lib/cjs/tile/ImdlReader.js +8 -5
- package/lib/cjs/tile/ImdlReader.js.map +1 -1
- package/lib/cjs/tile/RealityModelTileTree.js +1 -1
- package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
- package/lib/cjs/webgl.d.ts +4 -0
- package/lib/cjs/webgl.d.ts.map +1 -1
- package/lib/cjs/webgl.js +4 -0
- package/lib/cjs/webgl.js.map +1 -1
- package/lib/esm/RealityDataSource.d.ts +14 -7
- package/lib/esm/RealityDataSource.d.ts.map +1 -1
- package/lib/esm/RealityDataSource.js +23 -23
- package/lib/esm/RealityDataSource.js.map +1 -1
- package/lib/esm/core-frontend.js.map +1 -1
- package/lib/esm/render/MockRender.d.ts +3 -1
- package/lib/esm/render/MockRender.d.ts.map +1 -1
- package/lib/esm/render/MockRender.js.map +1 -1
- package/lib/esm/render/RenderSystem.d.ts +3 -1
- package/lib/esm/render/RenderSystem.d.ts.map +1 -1
- package/lib/esm/render/RenderSystem.js +3 -1
- package/lib/esm/render/RenderSystem.js.map +1 -1
- package/lib/esm/render/primitives/EdgeParams.d.ts +50 -0
- package/lib/esm/render/primitives/EdgeParams.d.ts.map +1 -0
- package/lib/esm/render/primitives/EdgeParams.js +113 -0
- package/lib/esm/render/primitives/EdgeParams.js.map +1 -0
- package/lib/esm/render/primitives/PointStringParams.d.ts +16 -0
- package/lib/esm/render/primitives/PointStringParams.d.ts.map +1 -0
- package/lib/esm/render/primitives/PointStringParams.js +39 -0
- package/lib/esm/render/primitives/PointStringParams.js.map +1 -0
- package/lib/esm/render/primitives/PolylineParams.d.ts +44 -0
- package/lib/esm/render/primitives/PolylineParams.d.ts.map +1 -0
- package/lib/esm/render/primitives/PolylineParams.js +199 -0
- package/lib/esm/render/primitives/PolylineParams.js.map +1 -0
- package/lib/esm/render/primitives/SurfaceParams.d.ts +46 -0
- package/lib/esm/render/primitives/SurfaceParams.d.ts.map +1 -0
- package/lib/esm/render/primitives/SurfaceParams.js +37 -0
- package/lib/esm/render/primitives/SurfaceParams.js.map +1 -0
- package/lib/esm/render/primitives/VertexTable.d.ts +3 -123
- package/lib/esm/render/primitives/VertexTable.d.ts.map +1 -1
- package/lib/esm/render/primitives/VertexTable.js +5 -341
- package/lib/esm/render/primitives/VertexTable.js.map +1 -1
- package/lib/esm/render/webgl/CachedGeometry.d.ts +4 -2
- package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
- package/lib/esm/render/webgl/EdgeGeometry.d.ts +73 -0
- package/lib/esm/render/webgl/EdgeGeometry.d.ts.map +1 -0
- package/lib/esm/render/webgl/EdgeGeometry.js +135 -0
- package/lib/esm/render/webgl/EdgeGeometry.js.map +1 -0
- package/lib/esm/render/webgl/InstancedGeometry.d.ts +4 -4
- package/lib/esm/render/webgl/InstancedGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/Material.d.ts +1 -1
- package/lib/esm/render/webgl/Material.d.ts.map +1 -1
- package/lib/esm/render/webgl/Material.js.map +1 -1
- package/lib/esm/render/webgl/Mesh.d.ts +6 -162
- package/lib/esm/render/webgl/Mesh.d.ts.map +1 -1
- package/lib/esm/render/webgl/Mesh.js +5 -443
- package/lib/esm/render/webgl/Mesh.js.map +1 -1
- package/lib/esm/render/webgl/MeshData.d.ts +38 -0
- package/lib/esm/render/webgl/MeshData.d.ts.map +1 -0
- package/lib/esm/render/webgl/MeshData.js +62 -0
- package/lib/esm/render/webgl/MeshData.js.map +1 -0
- package/lib/esm/render/webgl/MeshGeometry.d.ts +38 -0
- package/lib/esm/render/webgl/MeshGeometry.d.ts.map +1 -0
- package/lib/esm/render/webgl/MeshGeometry.js +56 -0
- package/lib/esm/render/webgl/MeshGeometry.js.map +1 -0
- package/lib/esm/render/webgl/PointString.d.ts +1 -1
- package/lib/esm/render/webgl/PointString.d.ts.map +1 -1
- package/lib/esm/render/webgl/PointString.js.map +1 -1
- package/lib/esm/render/webgl/Polyline.d.ts +1 -1
- package/lib/esm/render/webgl/Polyline.d.ts.map +1 -1
- package/lib/esm/render/webgl/Polyline.js.map +1 -1
- package/lib/esm/render/webgl/RenderCommands.js +1 -1
- package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
- package/lib/esm/render/webgl/SurfaceGeometry.d.ts +54 -0
- package/lib/esm/render/webgl/SurfaceGeometry.d.ts.map +1 -0
- package/lib/esm/render/webgl/SurfaceGeometry.js +235 -0
- package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -0
- package/lib/esm/render/webgl/System.d.ts +5 -3
- package/lib/esm/render/webgl/System.d.ts.map +1 -1
- package/lib/esm/render/webgl/System.js +10 -4
- package/lib/esm/render/webgl/System.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Surface.js +1 -1
- package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/esm/render-primitives.d.ts +5 -1
- package/lib/esm/render-primitives.d.ts.map +1 -1
- package/lib/esm/render-primitives.js +5 -1
- package/lib/esm/render-primitives.js.map +1 -1
- package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
- package/lib/esm/tile/ImdlReader.js +4 -1
- package/lib/esm/tile/ImdlReader.js.map +1 -1
- package/lib/esm/tile/RealityModelTileTree.js +1 -1
- package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
- package/lib/esm/webgl.d.ts +4 -0
- package/lib/esm/webgl.d.ts.map +1 -1
- package/lib/esm/webgl.js +4 -0
- package/lib/esm/webgl.js.map +1 -1
- package/package.json +22 -22
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/** @packageDocumentation
|
|
2
|
+
* @module WebGL
|
|
3
|
+
*/
|
|
4
|
+
import { ViewFlags } from "@itwin/core-common";
|
|
5
|
+
import { VertexIndices } from "../primitives/VertexTable";
|
|
6
|
+
import { RenderMemory } from "../RenderMemory";
|
|
7
|
+
import { ShaderProgramParams } from "./DrawCommand";
|
|
8
|
+
import { BuffersContainer } from "./AttributeBuffers";
|
|
9
|
+
import { MaterialInfo } from "./Material";
|
|
10
|
+
import { RenderOrder, RenderPass } from "./RenderFlags";
|
|
11
|
+
import { Target } from "./Target";
|
|
12
|
+
import { TechniqueId } from "./TechniqueId";
|
|
13
|
+
import { MeshData } from "./MeshData";
|
|
14
|
+
import { MeshGeometry } from "./MeshGeometry";
|
|
15
|
+
/** @internal */
|
|
16
|
+
export declare function wantMaterials(vf: ViewFlags): boolean;
|
|
17
|
+
/** @internal */
|
|
18
|
+
export declare class SurfaceGeometry extends MeshGeometry {
|
|
19
|
+
private readonly _buffers;
|
|
20
|
+
private readonly _indices;
|
|
21
|
+
get lutBuffers(): BuffersContainer;
|
|
22
|
+
static create(mesh: MeshData, indices: VertexIndices): SurfaceGeometry | undefined;
|
|
23
|
+
get isDisposed(): boolean;
|
|
24
|
+
dispose(): void;
|
|
25
|
+
collectStatistics(stats: RenderMemory.Statistics): void;
|
|
26
|
+
get isLit(): boolean;
|
|
27
|
+
get isTexturedType(): boolean;
|
|
28
|
+
get hasTexture(): boolean;
|
|
29
|
+
get isGlyph(): boolean;
|
|
30
|
+
get alwaysRenderTranslucent(): boolean;
|
|
31
|
+
get isTileSection(): boolean;
|
|
32
|
+
get isClassifier(): boolean;
|
|
33
|
+
get supportsThematicDisplay(): boolean;
|
|
34
|
+
get allowColorOverride(): boolean;
|
|
35
|
+
get asSurface(): this;
|
|
36
|
+
get asEdge(): undefined;
|
|
37
|
+
get asSilhouette(): undefined;
|
|
38
|
+
protected _draw(numInstances: number, instanceBuffersContainer?: BuffersContainer): void;
|
|
39
|
+
wantMixMonochromeColor(target: Target): boolean;
|
|
40
|
+
get techniqueId(): TechniqueId;
|
|
41
|
+
get isLitSurface(): boolean;
|
|
42
|
+
get hasBakedLighting(): boolean;
|
|
43
|
+
get hasFixedNormals(): boolean;
|
|
44
|
+
get renderOrder(): RenderOrder;
|
|
45
|
+
getColor(target: Target): import("./ColorInfo").ColorInfo;
|
|
46
|
+
getRenderPass(target: Target): RenderPass;
|
|
47
|
+
protected _wantWoWReversal(target: Target): boolean;
|
|
48
|
+
get materialInfo(): MaterialInfo | undefined;
|
|
49
|
+
useTexture(params: ShaderProgramParams): boolean;
|
|
50
|
+
computeSurfaceFlags(params: ShaderProgramParams, flags: Int32Array): void;
|
|
51
|
+
private constructor();
|
|
52
|
+
private wantTextures;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=SurfaceGeometry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SurfaceGeometry.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/SurfaceGeometry.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAyB,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEtE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAkC,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAmB,MAAM,eAAe,CAAC;AAEzE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,gBAAgB;AAChB,wBAAgB,aAAa,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAEpD;AAMD,gBAAgB;AAChB,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IAExC,IAAW,UAAU,qBAA4B;WAEnC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,GAAG,eAAe,GAAG,SAAS;IAKzF,IAAW,UAAU,IAAI,OAAO,CAG/B;IAEM,OAAO;IAKP,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI;IAI9D,IAAW,KAAK,YAAmG;IACnH,IAAW,cAAc,YAAwG;IACjI,IAAW,UAAU,YAAgE;IACrF,IAAW,OAAO,YAAgC;IAClD,IAAoB,uBAAuB,YAA2B;IACtE,IAAW,aAAa,YAAuE;IAC/F,IAAW,YAAY,YAAgE;IACvF,IAAoB,uBAAuB,YAE1C;IAED,IAAoB,kBAAkB,YAKrC;IAED,IAAoB,SAAS,SAAmB;IAChD,IAAoB,MAAM,cAAwB;IAClD,IAAoB,YAAY,cAAwB;IAExD,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,wBAAwB,CAAC,EAAE,gBAAgB,GAAG,IAAI;IAmBxE,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAK/D,IAAW,WAAW,IAAI,WAAW,CAAgC;IACrE,IAAoB,YAAY,YAAyB;IACzD,IAAoB,gBAAgB,YAAyC;IAC7E,IAAoB,eAAe,YAAwC;IAC3E,IAAW,WAAW,IAAI,WAAW,CASpC;IAEe,QAAQ,CAAC,MAAM,EAAE,MAAM;IAOhC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU;IAgDhD,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAmBnD,IAAoB,YAAY,IAAI,YAAY,GAAG,SAAS,CAAmC;IAExF,UAAU,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO;IAIhD,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAyDhF,OAAO;IASP,OAAO,CAAC,YAAY;CA0BrB"}
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
/** @packageDocumentation
|
|
6
|
+
* @module WebGL
|
|
7
|
+
*/
|
|
8
|
+
import { assert, dispose } from "@itwin/core-bentley";
|
|
9
|
+
import { FillFlags, RenderMode } from "@itwin/core-common";
|
|
10
|
+
import { SurfaceType } from "../primitives/SurfaceParams";
|
|
11
|
+
import { AttributeMap } from "./AttributeMap";
|
|
12
|
+
import { GL } from "./GL";
|
|
13
|
+
import { BufferHandle, BufferParameters, BuffersContainer } from "./AttributeBuffers";
|
|
14
|
+
import { System } from "./System";
|
|
15
|
+
import { MeshGeometry } from "./MeshGeometry";
|
|
16
|
+
/** @internal */
|
|
17
|
+
export function wantMaterials(vf) {
|
|
18
|
+
return vf.materials && RenderMode.SmoothShade === vf.renderMode;
|
|
19
|
+
}
|
|
20
|
+
function wantLighting(vf) {
|
|
21
|
+
return RenderMode.SmoothShade === vf.renderMode && vf.lighting;
|
|
22
|
+
}
|
|
23
|
+
/** @internal */
|
|
24
|
+
export class SurfaceGeometry extends MeshGeometry {
|
|
25
|
+
constructor(indices, numIndices, mesh) {
|
|
26
|
+
super(mesh, numIndices);
|
|
27
|
+
this._buffers = BuffersContainer.create();
|
|
28
|
+
const attrPos = AttributeMap.findAttribute("a_pos", 0 /* Surface */, false);
|
|
29
|
+
assert(undefined !== attrPos);
|
|
30
|
+
this._buffers.addBuffer(indices, [BufferParameters.create(attrPos.location, 3, GL.DataType.UnsignedByte, false, 0, 0, false)]);
|
|
31
|
+
this._indices = indices;
|
|
32
|
+
}
|
|
33
|
+
get lutBuffers() { return this._buffers; }
|
|
34
|
+
static create(mesh, indices) {
|
|
35
|
+
const indexBuffer = BufferHandle.createArrayBuffer(indices.data);
|
|
36
|
+
return undefined !== indexBuffer ? new SurfaceGeometry(indexBuffer, indices.length, mesh) : undefined;
|
|
37
|
+
}
|
|
38
|
+
get isDisposed() {
|
|
39
|
+
return this._buffers.isDisposed
|
|
40
|
+
&& this._indices.isDisposed;
|
|
41
|
+
}
|
|
42
|
+
dispose() {
|
|
43
|
+
dispose(this._buffers);
|
|
44
|
+
dispose(this._indices);
|
|
45
|
+
}
|
|
46
|
+
collectStatistics(stats) {
|
|
47
|
+
stats.addSurface(this._indices.bytesUsed);
|
|
48
|
+
}
|
|
49
|
+
get isLit() { return SurfaceType.Lit === this.surfaceType || SurfaceType.TexturedLit === this.surfaceType; }
|
|
50
|
+
get isTexturedType() { return SurfaceType.Textured === this.surfaceType || SurfaceType.TexturedLit === this.surfaceType; }
|
|
51
|
+
get hasTexture() { return this.isTexturedType && undefined !== this.texture; }
|
|
52
|
+
get isGlyph() { return this.mesh.isGlyph; }
|
|
53
|
+
get alwaysRenderTranslucent() { return this.isGlyph; }
|
|
54
|
+
get isTileSection() { return undefined !== this.texture && this.texture.isTileSection; }
|
|
55
|
+
get isClassifier() { return SurfaceType.VolumeClassifier === this.surfaceType; }
|
|
56
|
+
get supportsThematicDisplay() {
|
|
57
|
+
return !this.isGlyph;
|
|
58
|
+
}
|
|
59
|
+
get allowColorOverride() {
|
|
60
|
+
// Text background color should not be overridden by feature symbology overrides - otherwise it becomes unreadable...
|
|
61
|
+
// We don't actually know if we have text.
|
|
62
|
+
// We do know that text background color uses blanking fill. So do ImageGraphics, so they're also going to forbid overriding their color.
|
|
63
|
+
return FillFlags.Blanking !== (this.fillFlags & FillFlags.Blanking);
|
|
64
|
+
}
|
|
65
|
+
get asSurface() { return this; }
|
|
66
|
+
get asEdge() { return undefined; }
|
|
67
|
+
get asSilhouette() { return undefined; }
|
|
68
|
+
_draw(numInstances, instanceBuffersContainer) {
|
|
69
|
+
const system = System.instance;
|
|
70
|
+
// If we can't write depth in the fragment shader, use polygonOffset to force blanking regions to draw behind.
|
|
71
|
+
const offset = 2 /* BlankingRegion */ === this.renderOrder && !system.supportsLogZBuffer;
|
|
72
|
+
if (offset) {
|
|
73
|
+
system.context.enable(GL.POLYGON_OFFSET_FILL);
|
|
74
|
+
system.context.polygonOffset(1.0, 1.0);
|
|
75
|
+
}
|
|
76
|
+
const bufs = instanceBuffersContainer !== undefined ? instanceBuffersContainer : this._buffers;
|
|
77
|
+
bufs.bind();
|
|
78
|
+
system.drawArrays(GL.PrimitiveType.Triangles, 0, this._numIndices, numInstances);
|
|
79
|
+
bufs.unbind();
|
|
80
|
+
if (offset)
|
|
81
|
+
system.context.disable(GL.POLYGON_OFFSET_FILL);
|
|
82
|
+
}
|
|
83
|
+
wantMixMonochromeColor(target) {
|
|
84
|
+
// Text relies on white-on-white reversal.
|
|
85
|
+
return !this.isGlyph && (this.isLitSurface || this.wantTextures(target, this.hasTexture));
|
|
86
|
+
}
|
|
87
|
+
get techniqueId() { return 0 /* Surface */; }
|
|
88
|
+
get isLitSurface() { return this.isLit; }
|
|
89
|
+
get hasBakedLighting() { return this.mesh.hasBakedLighting; }
|
|
90
|
+
get hasFixedNormals() { return this.mesh.hasFixedNormals; }
|
|
91
|
+
get renderOrder() {
|
|
92
|
+
if (FillFlags.Behind === (this.fillFlags & FillFlags.Behind))
|
|
93
|
+
return 2 /* BlankingRegion */;
|
|
94
|
+
let order = this.isLit ? 4 /* LitSurface */ : 3 /* UnlitSurface */;
|
|
95
|
+
if (this.isPlanar)
|
|
96
|
+
order = order | 8 /* PlanarBit */;
|
|
97
|
+
return order;
|
|
98
|
+
}
|
|
99
|
+
getColor(target) {
|
|
100
|
+
if (FillFlags.Background === (this.fillFlags & FillFlags.Background))
|
|
101
|
+
return target.uniforms.style.backgroundColorInfo;
|
|
102
|
+
else
|
|
103
|
+
return this.colorInfo;
|
|
104
|
+
}
|
|
105
|
+
getRenderPass(target) {
|
|
106
|
+
// Classifiers have a dedicated pass
|
|
107
|
+
if (this.isClassifier)
|
|
108
|
+
return 5 /* Classification */;
|
|
109
|
+
const opaquePass = this.isPlanar ? 3 /* OpaquePlanar */ : 4 /* OpaqueGeneral */;
|
|
110
|
+
// When reading pixels, glyphs are always opaque. Otherwise always transparent (for anti-aliasing).
|
|
111
|
+
if (this.isGlyph)
|
|
112
|
+
return target.isReadPixelsInProgress ? opaquePass : 7 /* Translucent */;
|
|
113
|
+
const vf = target.currentViewFlags;
|
|
114
|
+
// When rendering thematic isolines, we need translucency because they have anti-aliasing.
|
|
115
|
+
if (target.wantThematicDisplay && this.supportsThematicDisplay && target.uniforms.thematic.wantIsoLines)
|
|
116
|
+
return 7 /* Translucent */;
|
|
117
|
+
// In wireframe, unless fill is explicitly enabled for planar region, surface does not draw
|
|
118
|
+
if (RenderMode.Wireframe === vf.renderMode && !this.mesh.isTextureAlwaysDisplayed) {
|
|
119
|
+
const fillFlags = this.fillFlags;
|
|
120
|
+
const showFill = FillFlags.Always === (fillFlags & FillFlags.Always) || (vf.fill && FillFlags.ByView === (fillFlags & FillFlags.ByView));
|
|
121
|
+
if (!showFill)
|
|
122
|
+
return 255 /* None */;
|
|
123
|
+
}
|
|
124
|
+
// If transparency disabled by render mode or view flag, always draw opaque.
|
|
125
|
+
if (!vf.transparency || RenderMode.SolidFill === vf.renderMode || RenderMode.HiddenLine === vf.renderMode)
|
|
126
|
+
return opaquePass;
|
|
127
|
+
// We have 3 sources of alpha: the material, the texture, and the color.
|
|
128
|
+
// Base alpha comes from the material if it overrides it; otherwise from the color.
|
|
129
|
+
// The texture's alpha is multiplied by the base alpha.
|
|
130
|
+
// So we must draw in the translucent pass if the texture has transparency OR the base alpha is less than 1.
|
|
131
|
+
let hasAlpha = false;
|
|
132
|
+
const mat = wantMaterials(vf) ? this.mesh.materialInfo : undefined;
|
|
133
|
+
if (undefined !== mat && mat.overridesAlpha)
|
|
134
|
+
hasAlpha = mat.hasTranslucency;
|
|
135
|
+
else
|
|
136
|
+
hasAlpha = this.getColor(target).hasTranslucency;
|
|
137
|
+
if (!hasAlpha) {
|
|
138
|
+
const tex = this.wantTextures(target, true) ? this.texture : undefined;
|
|
139
|
+
hasAlpha = undefined !== tex && tex.hasTranslucency;
|
|
140
|
+
}
|
|
141
|
+
return hasAlpha ? 7 /* Translucent */ : opaquePass;
|
|
142
|
+
}
|
|
143
|
+
_wantWoWReversal(target) {
|
|
144
|
+
const fillFlags = this.fillFlags;
|
|
145
|
+
if (FillFlags.None !== (fillFlags & FillFlags.Background))
|
|
146
|
+
return false; // fill color explicitly from background
|
|
147
|
+
if (FillFlags.None !== (fillFlags & FillFlags.Always))
|
|
148
|
+
return true; // fill displayed even in wireframe
|
|
149
|
+
const vf = target.currentViewFlags;
|
|
150
|
+
if (RenderMode.Wireframe === vf.renderMode || vf.visibleEdges)
|
|
151
|
+
return false; // never invert surfaces when edges are displayed
|
|
152
|
+
if (this.isLit && wantLighting(vf))
|
|
153
|
+
return false;
|
|
154
|
+
// Don't invert white pixels of textures...
|
|
155
|
+
return !this.wantTextures(target, this.hasTexture);
|
|
156
|
+
}
|
|
157
|
+
get materialInfo() { return this.mesh.materialInfo; }
|
|
158
|
+
useTexture(params) {
|
|
159
|
+
return this.wantTextures(params.target, this.hasTexture);
|
|
160
|
+
}
|
|
161
|
+
computeSurfaceFlags(params, flags) {
|
|
162
|
+
const target = params.target;
|
|
163
|
+
const vf = target.currentViewFlags;
|
|
164
|
+
const useMaterial = wantMaterials(vf);
|
|
165
|
+
flags[3 /* IgnoreMaterial */] = useMaterial ? 0 : 1;
|
|
166
|
+
flags[9 /* HasMaterialAtlas */] = useMaterial && this.hasMaterialAtlas ? 1 : 0;
|
|
167
|
+
flags[1 /* ApplyLighting */] = 0;
|
|
168
|
+
flags[8 /* NoFaceFront */] = 0;
|
|
169
|
+
flags[6 /* HasColorAndNormal */] = 0;
|
|
170
|
+
if (this.isLit) {
|
|
171
|
+
flags[2 /* HasNormals */] = 1;
|
|
172
|
+
if (wantLighting(vf)) {
|
|
173
|
+
flags[1 /* ApplyLighting */] = 1;
|
|
174
|
+
if (this.hasFixedNormals)
|
|
175
|
+
flags[8 /* NoFaceFront */] = 1;
|
|
176
|
+
}
|
|
177
|
+
// Textured meshes store normal in place of color index.
|
|
178
|
+
// Untextured lit meshes store normal where textured meshes would store UV coords.
|
|
179
|
+
// Tell shader where to find normal.
|
|
180
|
+
if (!this.isTexturedType) {
|
|
181
|
+
flags[6 /* HasColorAndNormal */] = 1;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
flags[2 /* HasNormals */] = 0;
|
|
186
|
+
}
|
|
187
|
+
flags[0 /* HasTexture */] = this.useTexture(params) ? 1 : 0;
|
|
188
|
+
// The transparency threshold controls how transparent a surface must be to allow light to pass through; more opaque surfaces cast shadows.
|
|
189
|
+
flags[4 /* TransparencyThreshold */] = params.target.isDrawingShadowMap ? 1 : 0;
|
|
190
|
+
flags[5 /* BackgroundFill */] = 0;
|
|
191
|
+
switch (params.renderPass) {
|
|
192
|
+
// NB: We need this for opaque pass due to SolidFill (must compute transparency, discard below threshold, render opaque at or above threshold)
|
|
193
|
+
case 2 /* OpaqueLinear */:
|
|
194
|
+
case 3 /* OpaquePlanar */:
|
|
195
|
+
case 4 /* OpaqueGeneral */:
|
|
196
|
+
case 7 /* Translucent */:
|
|
197
|
+
case 11 /* WorldOverlay */:
|
|
198
|
+
case 1 /* OpaqueLayers */:
|
|
199
|
+
case 6 /* TranslucentLayers */:
|
|
200
|
+
case 10 /* OverlayLayers */: {
|
|
201
|
+
const mode = vf.renderMode;
|
|
202
|
+
if (!this.isGlyph && (RenderMode.HiddenLine === mode || RenderMode.SolidFill === mode)) {
|
|
203
|
+
flags[4 /* TransparencyThreshold */] = 1;
|
|
204
|
+
if (RenderMode.HiddenLine === mode && FillFlags.Always !== (this.fillFlags & FillFlags.Always)) {
|
|
205
|
+
// fill flags test for text - doesn't render with bg fill in hidden line mode.
|
|
206
|
+
flags[5 /* BackgroundFill */] = 1;
|
|
207
|
+
}
|
|
208
|
+
break;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
wantTextures(target, surfaceTextureExists) {
|
|
214
|
+
if (this.hasScalarAnimation && undefined !== target.analysisTexture)
|
|
215
|
+
return true;
|
|
216
|
+
if (!surfaceTextureExists)
|
|
217
|
+
return false;
|
|
218
|
+
if (this.mesh.isTextureAlwaysDisplayed)
|
|
219
|
+
return true;
|
|
220
|
+
if (this.supportsThematicDisplay && target.wantThematicDisplay)
|
|
221
|
+
return false;
|
|
222
|
+
const fill = this.fillFlags;
|
|
223
|
+
const flags = target.currentViewFlags;
|
|
224
|
+
// ###TODO need to distinguish between gradient fill and actual textures...
|
|
225
|
+
switch (flags.renderMode) {
|
|
226
|
+
case RenderMode.SmoothShade:
|
|
227
|
+
return flags.textures;
|
|
228
|
+
case RenderMode.Wireframe:
|
|
229
|
+
return FillFlags.Always === (fill & FillFlags.Always) || (flags.fill && FillFlags.ByView === (fill & FillFlags.ByView));
|
|
230
|
+
default:
|
|
231
|
+
return FillFlags.Always === (fill & FillFlags.Always);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
//# sourceMappingURL=SurfaceGeometry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SurfaceGeometry.js","sourceRoot":"","sources":["../../../../src/render/webgl/SurfaceGeometry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { FillFlags, RenderMode, ViewFlags } from \"@itwin/core-common\";\r\nimport { SurfaceType } from \"../primitives/SurfaceParams\";\r\nimport { VertexIndices } from \"../primitives/VertexTable\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { AttributeMap } from \"./AttributeMap\";\r\nimport { ShaderProgramParams } from \"./DrawCommand\";\r\nimport { GL } from \"./GL\";\r\nimport { BufferHandle, BufferParameters, BuffersContainer } from \"./AttributeBuffers\";\r\nimport { MaterialInfo } from \"./Material\";\r\nimport { RenderOrder, RenderPass, SurfaceBitIndex } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\nimport { MeshData } from \"./MeshData\";\r\nimport { MeshGeometry } from \"./MeshGeometry\";\r\n\r\n/** @internal */\r\nexport function wantMaterials(vf: ViewFlags): boolean {\r\n return vf.materials && RenderMode.SmoothShade === vf.renderMode;\r\n}\r\n\r\nfunction wantLighting(vf: ViewFlags) {\r\n return RenderMode.SmoothShade === vf.renderMode && vf.lighting;\r\n}\r\n\r\n/** @internal */\r\nexport class SurfaceGeometry extends MeshGeometry {\r\n private readonly _buffers: BuffersContainer;\r\n private readonly _indices: BufferHandle;\r\n\r\n public get lutBuffers() { return this._buffers; }\r\n\r\n public static create(mesh: MeshData, indices: VertexIndices): SurfaceGeometry | undefined {\r\n const indexBuffer = BufferHandle.createArrayBuffer(indices.data);\r\n return undefined !== indexBuffer ? new SurfaceGeometry(indexBuffer, indices.length, mesh) : undefined;\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this._buffers.isDisposed\r\n && this._indices.isDisposed;\r\n }\r\n\r\n public dispose() {\r\n dispose(this._buffers);\r\n dispose(this._indices);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n stats.addSurface(this._indices.bytesUsed);\r\n }\r\n\r\n public get isLit() { return SurfaceType.Lit === this.surfaceType || SurfaceType.TexturedLit === this.surfaceType; }\r\n public get isTexturedType() { return SurfaceType.Textured === this.surfaceType || SurfaceType.TexturedLit === this.surfaceType; }\r\n public get hasTexture() { return this.isTexturedType && undefined !== this.texture; }\r\n public get isGlyph() { return this.mesh.isGlyph; }\r\n public override get alwaysRenderTranslucent() { return this.isGlyph; }\r\n public get isTileSection() { return undefined !== this.texture && this.texture.isTileSection; }\r\n public get isClassifier() { return SurfaceType.VolumeClassifier === this.surfaceType; }\r\n public override get supportsThematicDisplay() {\r\n return !this.isGlyph;\r\n }\r\n\r\n public override get allowColorOverride() {\r\n // Text background color should not be overridden by feature symbology overrides - otherwise it becomes unreadable...\r\n // We don't actually know if we have text.\r\n // We do know that text background color uses blanking fill. So do ImageGraphics, so they're also going to forbid overriding their color.\r\n return FillFlags.Blanking !== (this.fillFlags & FillFlags.Blanking);\r\n }\r\n\r\n public override get asSurface() { return this; }\r\n public override get asEdge() { return undefined; }\r\n public override get asSilhouette() { return undefined; }\r\n\r\n protected _draw(numInstances: number, instanceBuffersContainer?: BuffersContainer): void {\r\n const system = System.instance;\r\n\r\n // If we can't write depth in the fragment shader, use polygonOffset to force blanking regions to draw behind.\r\n const offset = RenderOrder.BlankingRegion === this.renderOrder && !system.supportsLogZBuffer;\r\n if (offset) {\r\n system.context.enable(GL.POLYGON_OFFSET_FILL);\r\n system.context.polygonOffset(1.0, 1.0);\r\n }\r\n\r\n const bufs = instanceBuffersContainer !== undefined ? instanceBuffersContainer : this._buffers;\r\n bufs.bind();\r\n system.drawArrays(GL.PrimitiveType.Triangles, 0, this._numIndices, numInstances);\r\n bufs.unbind();\r\n\r\n if (offset)\r\n system.context.disable(GL.POLYGON_OFFSET_FILL);\r\n }\r\n\r\n public override wantMixMonochromeColor(target: Target): boolean {\r\n // Text relies on white-on-white reversal.\r\n return !this.isGlyph && (this.isLitSurface || this.wantTextures(target, this.hasTexture));\r\n }\r\n\r\n public get techniqueId(): TechniqueId { return TechniqueId.Surface; }\r\n public override get isLitSurface() { return this.isLit; }\r\n public override get hasBakedLighting() { return this.mesh.hasBakedLighting; }\r\n public override get hasFixedNormals() { return this.mesh.hasFixedNormals; }\r\n public get renderOrder(): RenderOrder {\r\n if (FillFlags.Behind === (this.fillFlags & FillFlags.Behind))\r\n return RenderOrder.BlankingRegion;\r\n\r\n let order = this.isLit ? RenderOrder.LitSurface : RenderOrder.UnlitSurface;\r\n if (this.isPlanar)\r\n order = order | RenderOrder.PlanarBit;\r\n\r\n return order;\r\n }\r\n\r\n public override getColor(target: Target) {\r\n if (FillFlags.Background === (this.fillFlags & FillFlags.Background))\r\n return target.uniforms.style.backgroundColorInfo;\r\n else\r\n return this.colorInfo;\r\n }\r\n\r\n public getRenderPass(target: Target): RenderPass {\r\n // Classifiers have a dedicated pass\r\n if (this.isClassifier)\r\n return RenderPass.Classification;\r\n\r\n const opaquePass = this.isPlanar ? RenderPass.OpaquePlanar : RenderPass.OpaqueGeneral;\r\n\r\n // When reading pixels, glyphs are always opaque. Otherwise always transparent (for anti-aliasing).\r\n if (this.isGlyph)\r\n return target.isReadPixelsInProgress ? opaquePass : RenderPass.Translucent;\r\n\r\n const vf = target.currentViewFlags;\r\n\r\n // When rendering thematic isolines, we need translucency because they have anti-aliasing.\r\n if (target.wantThematicDisplay && this.supportsThematicDisplay && target.uniforms.thematic.wantIsoLines)\r\n return RenderPass.Translucent;\r\n\r\n // In wireframe, unless fill is explicitly enabled for planar region, surface does not draw\r\n if (RenderMode.Wireframe === vf.renderMode && !this.mesh.isTextureAlwaysDisplayed) {\r\n const fillFlags = this.fillFlags;\r\n const showFill = FillFlags.Always === (fillFlags & FillFlags.Always) || (vf.fill && FillFlags.ByView === (fillFlags & FillFlags.ByView));\r\n if (!showFill)\r\n return RenderPass.None;\r\n }\r\n\r\n // If transparency disabled by render mode or view flag, always draw opaque.\r\n if (!vf.transparency || RenderMode.SolidFill === vf.renderMode || RenderMode.HiddenLine === vf.renderMode)\r\n return opaquePass;\r\n\r\n // We have 3 sources of alpha: the material, the texture, and the color.\r\n // Base alpha comes from the material if it overrides it; otherwise from the color.\r\n // The texture's alpha is multiplied by the base alpha.\r\n // So we must draw in the translucent pass if the texture has transparency OR the base alpha is less than 1.\r\n let hasAlpha = false;\r\n const mat = wantMaterials(vf) ? this.mesh.materialInfo : undefined;\r\n if (undefined !== mat && mat.overridesAlpha)\r\n hasAlpha = mat.hasTranslucency;\r\n else\r\n hasAlpha = this.getColor(target).hasTranslucency;\r\n\r\n if (!hasAlpha) {\r\n const tex = this.wantTextures(target, true) ? this.texture : undefined;\r\n hasAlpha = undefined !== tex && tex.hasTranslucency;\r\n }\r\n\r\n return hasAlpha ? RenderPass.Translucent : opaquePass;\r\n }\r\n\r\n protected _wantWoWReversal(target: Target): boolean {\r\n const fillFlags = this.fillFlags;\r\n if (FillFlags.None !== (fillFlags & FillFlags.Background))\r\n return false; // fill color explicitly from background\r\n\r\n if (FillFlags.None !== (fillFlags & FillFlags.Always))\r\n return true; // fill displayed even in wireframe\r\n\r\n const vf = target.currentViewFlags;\r\n if (RenderMode.Wireframe === vf.renderMode || vf.visibleEdges)\r\n return false; // never invert surfaces when edges are displayed\r\n\r\n if (this.isLit && wantLighting(vf))\r\n return false;\r\n\r\n // Don't invert white pixels of textures...\r\n return !this.wantTextures(target, this.hasTexture);\r\n }\r\n\r\n public override get materialInfo(): MaterialInfo | undefined { return this.mesh.materialInfo; }\r\n\r\n public useTexture(params: ShaderProgramParams): boolean {\r\n return this.wantTextures(params.target, this.hasTexture);\r\n }\r\n\r\n public computeSurfaceFlags(params: ShaderProgramParams, flags: Int32Array): void {\r\n const target = params.target;\r\n const vf = target.currentViewFlags;\r\n\r\n const useMaterial = wantMaterials(vf);\r\n flags[SurfaceBitIndex.IgnoreMaterial] = useMaterial ? 0 : 1;\r\n flags[SurfaceBitIndex.HasMaterialAtlas] = useMaterial && this.hasMaterialAtlas ? 1 : 0;\r\n\r\n flags[SurfaceBitIndex.ApplyLighting] = 0;\r\n flags[SurfaceBitIndex.NoFaceFront] = 0;\r\n flags[SurfaceBitIndex.HasColorAndNormal] = 0;\r\n if (this.isLit) {\r\n flags[SurfaceBitIndex.HasNormals] = 1;\r\n if (wantLighting(vf)) {\r\n flags[SurfaceBitIndex.ApplyLighting] = 1;\r\n if (this.hasFixedNormals)\r\n flags[SurfaceBitIndex.NoFaceFront] = 1;\r\n }\r\n\r\n // Textured meshes store normal in place of color index.\r\n // Untextured lit meshes store normal where textured meshes would store UV coords.\r\n // Tell shader where to find normal.\r\n if (!this.isTexturedType) {\r\n flags[SurfaceBitIndex.HasColorAndNormal] = 1;\r\n }\r\n } else {\r\n flags[SurfaceBitIndex.HasNormals] = 0;\r\n }\r\n\r\n flags[SurfaceBitIndex.HasTexture] = this.useTexture(params) ? 1 : 0;\r\n\r\n // The transparency threshold controls how transparent a surface must be to allow light to pass through; more opaque surfaces cast shadows.\r\n flags[SurfaceBitIndex.TransparencyThreshold] = params.target.isDrawingShadowMap ? 1 : 0;\r\n flags[SurfaceBitIndex.BackgroundFill] = 0;\r\n switch (params.renderPass) {\r\n // NB: We need this for opaque pass due to SolidFill (must compute transparency, discard below threshold, render opaque at or above threshold)\r\n case RenderPass.OpaqueLinear:\r\n case RenderPass.OpaquePlanar:\r\n case RenderPass.OpaqueGeneral:\r\n case RenderPass.Translucent:\r\n case RenderPass.WorldOverlay:\r\n case RenderPass.OpaqueLayers:\r\n case RenderPass.TranslucentLayers:\r\n case RenderPass.OverlayLayers: {\r\n const mode = vf.renderMode;\r\n if (!this.isGlyph && (RenderMode.HiddenLine === mode || RenderMode.SolidFill === mode)) {\r\n flags[SurfaceBitIndex.TransparencyThreshold] = 1;\r\n if (RenderMode.HiddenLine === mode && FillFlags.Always !== (this.fillFlags & FillFlags.Always)) {\r\n // fill flags test for text - doesn't render with bg fill in hidden line mode.\r\n flags[SurfaceBitIndex.BackgroundFill] = 1;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private constructor(indices: BufferHandle, numIndices: number, mesh: MeshData) {\r\n super(mesh, numIndices);\r\n this._buffers = BuffersContainer.create();\r\n const attrPos = AttributeMap.findAttribute(\"a_pos\", TechniqueId.Surface, false);\r\n assert(undefined !== attrPos);\r\n this._buffers.addBuffer(indices, [BufferParameters.create(attrPos.location, 3, GL.DataType.UnsignedByte, false, 0, 0, false)]);\r\n this._indices = indices;\r\n }\r\n\r\n private wantTextures(target: Target, surfaceTextureExists: boolean): boolean {\r\n if (this.hasScalarAnimation && undefined !== target.analysisTexture)\r\n return true;\r\n\r\n if (!surfaceTextureExists)\r\n return false;\r\n\r\n if (this.mesh.isTextureAlwaysDisplayed)\r\n return true;\r\n\r\n if (this.supportsThematicDisplay && target.wantThematicDisplay)\r\n return false;\r\n\r\n const fill = this.fillFlags;\r\n const flags = target.currentViewFlags;\r\n\r\n // ###TODO need to distinguish between gradient fill and actual textures...\r\n switch (flags.renderMode) {\r\n case RenderMode.SmoothShade:\r\n return flags.textures;\r\n case RenderMode.Wireframe:\r\n return FillFlags.Always === (fill & FillFlags.Always) || (flags.fill && FillFlags.ByView === (fill & FillFlags.ByView));\r\n default:\r\n return FillFlags.Always === (fill & FillFlags.Always);\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -14,7 +14,9 @@ import { InstancedGraphicParams, PatternGraphicParams } from "../InstancedGraphi
|
|
|
14
14
|
import { RealityMeshPrimitive } from "../primitives/mesh/RealityMeshPrimitive";
|
|
15
15
|
import { TerrainMeshPrimitive } from "../primitives/mesh/TerrainMeshPrimitive";
|
|
16
16
|
import { PointCloudArgs } from "../primitives/PointCloudPrimitive";
|
|
17
|
-
import { MeshParams
|
|
17
|
+
import { MeshParams } from "../primitives/VertexTable";
|
|
18
|
+
import { PointStringParams } from "../primitives/PointStringParams";
|
|
19
|
+
import { PolylineParams } from "../primitives/PolylineParams";
|
|
18
20
|
import { RenderClipVolume } from "../RenderClipVolume";
|
|
19
21
|
import { RenderGraphic, RenderGraphicOwner } from "../RenderGraphic";
|
|
20
22
|
import { RenderMemory } from "../RenderMemory";
|
|
@@ -63,8 +65,8 @@ export declare class IdMap implements WebGLDisposable {
|
|
|
63
65
|
dispose(): void;
|
|
64
66
|
/** Add a material to this IdMap, given that it has a valid key. */
|
|
65
67
|
addMaterial(material: RenderMaterial): void;
|
|
66
|
-
/** Add a texture to this IdMap, given that it has a valid key. */
|
|
67
|
-
addTexture(texture: RenderTexture): void;
|
|
68
|
+
/** Add a texture to this IdMap, given that it has a valid string key. If specified, it will instead use the key parameter, which could also be a gradient symb. */
|
|
69
|
+
addTexture(texture: RenderTexture, key?: TextureCacheKey): void;
|
|
68
70
|
/** Add a texture to this IdMap using gradient symbology. */
|
|
69
71
|
addGradient(gradientSymb: Gradient.Symb, texture: RenderTexture): void;
|
|
70
72
|
/** Find a cached material using its key. If not found, returns undefined. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"System.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/System.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAyB,UAAU,EAAiB,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACnG,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EACL,QAAQ,EAAE,mBAAmB,EAAE,OAAO,EAAE,QAAQ,EAAkC,iBAAiB,EAAe,kBAAkB,EAAE,cAAc,EAAE,aAAa,EACpK,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAa,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAGnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,2BAA2B,EAAE,cAAc,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAC7H,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"System.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/System.ts"],"names":[],"mappings":"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"}
|
|
@@ -127,10 +127,16 @@ export class IdMap {
|
|
|
127
127
|
if (material.key)
|
|
128
128
|
this.materials.set(material.key, material);
|
|
129
129
|
}
|
|
130
|
-
/** Add a texture to this IdMap, given that it has a valid key. */
|
|
131
|
-
addTexture(texture) {
|
|
130
|
+
/** Add a texture to this IdMap, given that it has a valid string key. If specified, it will instead use the key parameter, which could also be a gradient symb. */
|
|
131
|
+
addTexture(texture, key) {
|
|
132
132
|
assert(texture instanceof Texture);
|
|
133
|
-
if (
|
|
133
|
+
if (undefined !== key) {
|
|
134
|
+
if ("string" === typeof key)
|
|
135
|
+
this.textures.set(key, texture);
|
|
136
|
+
else
|
|
137
|
+
this.addGradient(key, texture);
|
|
138
|
+
}
|
|
139
|
+
else if (texture.key)
|
|
134
140
|
this.textures.set(texture.key, texture);
|
|
135
141
|
}
|
|
136
142
|
/** Add a texture to this IdMap using gradient symbology. */
|
|
@@ -537,7 +543,7 @@ export class System extends RenderSystem {
|
|
|
537
543
|
return undefined;
|
|
538
544
|
const texture = new Texture({ handle, type, ownership: args.ownership });
|
|
539
545
|
if (texture && info)
|
|
540
|
-
info.idMap.addTexture(texture);
|
|
546
|
+
info.idMap.addTexture(texture, info.key);
|
|
541
547
|
return texture;
|
|
542
548
|
}
|
|
543
549
|
async createTextureFromSource(args) {
|