@xeokit/xeokit-sdk 2.6.91 → 2.6.93
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/dist/xeokit-sdk.cjs.js +13128 -44669
- package/dist/xeokit-sdk.es.js +13129 -44668
- package/dist/xeokit-sdk.es5.js +1414 -3498
- package/dist/xeokit-sdk.min.cjs.js +8 -8
- package/dist/xeokit-sdk.min.es.js +8 -8
- package/dist/xeokit-sdk.min.es5.js +7 -7
- package/package.json +1 -1
- package/src/plugins/AngleMeasurementsPlugin/AngleMeasurement.js +21 -1
- package/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js +32 -6
- package/src/viewer/Viewer.js +55 -103
- package/src/viewer/scene/canvas/Canvas.js +3 -43
- package/src/viewer/scene/geometry/ReadableGeometry.js +0 -25
- package/src/viewer/scene/lights/CubeTexture.js +0 -13
- package/src/viewer/scene/lights/DirLight.js +2 -1
- package/src/viewer/scene/lights/PointLight.js +2 -1
- package/src/viewer/scene/materials/Texture.js +0 -9
- package/src/viewer/scene/math/rtcCoords.js +1 -38
- package/src/viewer/scene/mesh/Mesh.js +454 -212
- package/src/viewer/scene/mesh/draw/DrawShaderSource.js +305 -1504
- package/src/viewer/scene/mesh/draw/LambertShaderSource.js +35 -0
- package/src/viewer/scene/mesh/emphasis/EmphasisShaderSource.js +34 -0
- package/src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js +9 -158
- package/src/viewer/scene/mesh/pick/PickMeshShaderSource.js +21 -151
- package/src/viewer/scene/mesh/pick/PickTriangleShaderSource.js +12 -124
- package/src/viewer/scene/mesh/shadow/ShadowShaderSource.js +22 -97
- package/src/viewer/scene/model/SceneModel.js +248 -852
- package/src/viewer/scene/model/SceneModelEntity.js +4 -4
- package/src/viewer/scene/model/SceneModelMesh.js +3 -3
- package/src/viewer/scene/model/layer/DTXLayer.js +940 -0
- package/src/viewer/scene/model/layer/Layer.js +788 -0
- package/src/viewer/scene/model/layer/VBOLayer.js +1019 -0
- package/src/viewer/scene/model/layer/programs/ColorProgram.js +35 -0
- package/src/viewer/scene/model/layer/programs/ColorTextureProgram.js +46 -0
- package/src/viewer/scene/model/layer/programs/DepthProgram.js +11 -0
- package/src/viewer/scene/model/layer/programs/EdgesProgram.js +12 -0
- package/src/viewer/scene/model/layer/programs/FlatColorProgram.js +24 -0
- package/src/viewer/scene/model/layer/programs/OcclusionProgram.js +12 -0
- package/src/viewer/scene/model/layer/programs/PBRProgram.js +180 -0
- package/src/viewer/scene/model/layer/programs/PickDepthProgram.js +30 -0
- package/src/viewer/scene/model/layer/programs/PickMeshProgram.js +12 -0
- package/src/viewer/scene/model/layer/programs/PickNormalsProgram.js +18 -0
- package/src/viewer/scene/model/layer/programs/ShadowProgram.js +23 -0
- package/src/viewer/scene/model/layer/programs/SilhouetteProgram.js +15 -0
- package/src/viewer/scene/model/layer/programs/SnapProgram.js +29 -0
- package/src/viewer/scene/scene/Scene.js +21 -38
- package/src/viewer/scene/webgl/ArrayBuf.js +5 -20
- package/src/viewer/scene/webgl/FrameContext.js +14 -86
- package/src/viewer/scene/webgl/RenderBuffer.js +62 -262
- package/src/viewer/scene/webgl/Renderer.js +880 -843
- package/src/viewer/scene/webgl/WebGLRenderer.js +612 -0
- package/src/viewer/scene/webgl/occlusion/OcclusionLayer.js +60 -132
- package/src/viewer/scene/webgl/occlusion/OcclusionTester.js +167 -328
- package/src/viewer/scene/mesh/draw/DrawRenderer.js +0 -998
- package/src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js +0 -259
- package/src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js +0 -160
- package/src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js +0 -286
- package/src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js +0 -263
- package/src/viewer/scene/mesh/occlusion/OcclusionRenderer.js +0 -221
- package/src/viewer/scene/mesh/pick/PickMeshRenderer.js +0 -223
- package/src/viewer/scene/mesh/pick/PickTriangleRenderer.js +0 -200
- package/src/viewer/scene/mesh/shadow/ShadowRenderer.js +0 -214
- package/src/viewer/scene/model/RENDER_PASSES.js +0 -34
- package/src/viewer/scene/model/dtx/BindableDataTexture.js +0 -31
- package/src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js +0 -27
- package/src/viewer/scene/model/dtx/lines/DTXLinesLayer.js +0 -897
- package/src/viewer/scene/model/dtx/lines/DTXLinesState.js +0 -46
- package/src/viewer/scene/model/dtx/lines/DTXLinesTextureFactory.js +0 -411
- package/src/viewer/scene/model/dtx/lines/dataTextureRamStats.js +0 -49
- package/src/viewer/scene/model/dtx/lines/rebucketPositions.js +0 -208
- package/src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js +0 -389
- package/src/viewer/scene/model/dtx/lines/renderers/DTXLinesRenderers.js +0 -65
- package/src/viewer/scene/model/dtx/triangles/DTXTrianglesLayer.js +0 -1399
- package/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js +0 -46
- package/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js +0 -250
- package/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesTextureFactory.js +0 -518
- package/src/viewer/scene/model/dtx/triangles/lib/dataTextureRamStats.js +0 -54
- package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js +0 -639
- package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js +0 -464
- package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js +0 -423
- package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js +0 -431
- package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js +0 -345
- package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js +0 -436
- package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js +0 -466
- package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js +0 -437
- package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js +0 -460
- package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js +0 -437
- package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js +0 -307
- package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js +0 -472
- package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js +0 -474
- package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js +0 -435
- package/src/viewer/scene/model/vbo/ScratchMemory.js +0 -63
- package/src/viewer/scene/model/vbo/VBORenderer.js +0 -664
- package/src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js +0 -704
- package/src/viewer/scene/model/vbo/batching/lines/lib/VBOBatchingLinesBuffer.js +0 -19
- package/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js +0 -318
- package/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesColorRenderer.js +0 -114
- package/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesRenderers.js +0 -99
- package/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSilhouetteRenderer.js +0 -124
- package/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js +0 -313
- package/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js +0 -311
- package/src/viewer/scene/model/vbo/batching/lines/renderers/VBOSceneModelLineBatchingRenderer.js +0 -24
- package/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js +0 -688
- package/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsRenderer.js +0 -24
- package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsColorRenderer.js +0 -168
- package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsOcclusionRenderer.js +0 -136
- package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickDepthRenderer.js +0 -156
- package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickMeshRenderer.js +0 -148
- package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js +0 -144
- package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsShadowRenderer.js +0 -107
- package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSilhouetteRenderer.js +0 -146
- package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js +0 -315
- package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js +0 -305
- package/src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesBuffer.js +0 -24
- package/src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js +0 -1346
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesColorRenderer.js +0 -131
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesEmphasisRenderer.js +0 -135
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesRenderer.js +0 -12
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js +0 -403
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesBatchingRenderer.js +0 -35
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorRenderer.js +0 -252
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorTextureRenderer.js +0 -294
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesDepthRenderer.js +0 -115
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesFlatColorRenderer.js +0 -246
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesNormalsRenderer.js +0 -139
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesOcclusionRenderer.js +0 -125
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPBRRenderer.js +0 -561
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickDepthRenderer.js +0 -144
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickMeshRenderer.js +0 -130
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsFlatRenderer.js +0 -121
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsRenderer.js +0 -131
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesShadowRenderer.js +0 -107
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSilhouetteRenderer.js +0 -144
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js +0 -313
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js +0 -312
- package/src/viewer/scene/model/vbo/float16.js +0 -760
- package/src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js +0 -711
- package/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesColorRenderer.js +0 -148
- package/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderer.js +0 -26
- package/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderers.js +0 -139
- package/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSilhouetteRenderer.js +0 -127
- package/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js +0 -308
- package/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js +0 -299
- package/src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js +0 -733
- package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsColorRenderer.js +0 -174
- package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsDepthRenderer.js +0 -156
- package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsOcclusionRenderer.js +0 -149
- package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickDepthRenderer.js +0 -170
- package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickMeshRenderer.js +0 -152
- package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderer.js +0 -26
- package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js +0 -174
- package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsShadowRenderer.js +0 -119
- package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSilhouetteRenderer.js +0 -154
- package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js +0 -307
- package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js +0 -293
- package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingTrianglesRenderer.js +0 -150
- package/src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js +0 -1289
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesColorRenderer.js +0 -135
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesEmphasisRenderer.js +0 -137
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesRenderer.js +0 -12
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js +0 -403
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorRenderer.js +0 -267
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorTextureRenderer.js +0 -299
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesDepthRenderer.js +0 -126
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatColorRenderer.js +0 -255
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatNormalsRenderer.js +0 -130
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesInstancingRenderer.js +0 -32
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesNormalsRenderer.js +0 -138
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesOcclusionRenderer.js +0 -128
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPBRRenderer.js +0 -561
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickDepthRenderer.js +0 -149
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickMeshRenderer.js +0 -136
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsFlatRenderer.js +0 -130
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsRenderer.js +0 -145
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesShadowRenderer.js +0 -113
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSilhouetteRenderer.js +0 -148
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js +0 -319
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js +0 -310
- package/src/viewer/scene/webgl/Attribute.js +0 -23
- package/src/viewer/scene/webgl/Program.js +0 -181
- package/src/viewer/scene/webgl/RenderBufferManager.js +0 -34
- package/src/viewer/scene/webgl/Sampler.js +0 -18
- package/src/viewer/scene/webgl/Shader.js +0 -49
- package/src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js +0 -324
- package/src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js +0 -384
|
@@ -1,435 +0,0 @@
|
|
|
1
|
-
import {Program} from "../../../../webgl/Program.js";
|
|
2
|
-
import {createRTCViewMat, getPlaneRTCPos} from "../../../../math/rtcCoords.js";
|
|
3
|
-
import {math} from "../../../../math/math.js";
|
|
4
|
-
|
|
5
|
-
const tempVec3a = math.vec3();
|
|
6
|
-
const tempVec3b = math.vec3();
|
|
7
|
-
const tempVec3c = math.vec3();
|
|
8
|
-
const tempVec3d = math.vec3();
|
|
9
|
-
const tempVec3e = math.vec3();
|
|
10
|
-
const tempMat4a = math.mat4();
|
|
11
|
-
|
|
12
|
-
const SNAPPING_LOG_DEPTH_BUF_ENABLED = true; // Improves occlusion accuracy at distance
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* @private
|
|
16
|
-
*/
|
|
17
|
-
export class DTXTrianglesSnapRenderer {
|
|
18
|
-
|
|
19
|
-
constructor(scene) {
|
|
20
|
-
this._scene = scene;
|
|
21
|
-
this._hash = this._getHash();
|
|
22
|
-
this._allocate();
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
getValid() {
|
|
26
|
-
return this._hash === this._getHash();
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
_getHash() {
|
|
30
|
-
return this._scene._sectionPlanesState.getHash();
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
drawLayer(frameCtx, dataTextureLayer, renderPass) {
|
|
34
|
-
|
|
35
|
-
if (!this._program) {
|
|
36
|
-
this._allocate();
|
|
37
|
-
if (this.errors) {
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
if (frameCtx.lastProgramId !== this._program.id) {
|
|
43
|
-
frameCtx.lastProgramId = this._program.id;
|
|
44
|
-
this._bindProgram();
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
const model = dataTextureLayer.model;
|
|
48
|
-
const scene = model.scene;
|
|
49
|
-
const camera = scene.camera;
|
|
50
|
-
const gl = scene.canvas.gl;
|
|
51
|
-
const state = dataTextureLayer._state;
|
|
52
|
-
const textureState = state.textureState;
|
|
53
|
-
const origin = dataTextureLayer._state.origin;
|
|
54
|
-
const {position, rotationMatrix} = model;
|
|
55
|
-
const aabb = dataTextureLayer.aabb; // Per-layer AABB for best RTC accuracy
|
|
56
|
-
const viewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;
|
|
57
|
-
|
|
58
|
-
const coordinateScaler = tempVec3a;
|
|
59
|
-
coordinateScaler[0] = math.safeInv(aabb[3] - aabb[0]) * math.MAX_INT;
|
|
60
|
-
coordinateScaler[1] = math.safeInv(aabb[4] - aabb[1]) * math.MAX_INT;
|
|
61
|
-
coordinateScaler[2] = math.safeInv(aabb[5] - aabb[2]) * math.MAX_INT;
|
|
62
|
-
|
|
63
|
-
frameCtx.snapPickCoordinateScale[0] = math.safeInv(coordinateScaler[0]);
|
|
64
|
-
frameCtx.snapPickCoordinateScale[1] = math.safeInv(coordinateScaler[1]);
|
|
65
|
-
frameCtx.snapPickCoordinateScale[2] = math.safeInv(coordinateScaler[2]);
|
|
66
|
-
|
|
67
|
-
textureState.bindCommonTextures(
|
|
68
|
-
this._program,
|
|
69
|
-
this.uTexturePerObjectPositionsDecodeMatrix,
|
|
70
|
-
this._uTexturePerVertexIdCoordinates,
|
|
71
|
-
this.uTexturePerObjectColorsAndFlags,
|
|
72
|
-
this._uTexturePerObjectMatrix
|
|
73
|
-
);
|
|
74
|
-
|
|
75
|
-
let rtcViewMatrix;
|
|
76
|
-
let rtcCameraEye;
|
|
77
|
-
|
|
78
|
-
const gotOrigin = (origin[0] !== 0 || origin[1] !== 0 || origin[2] !== 0);
|
|
79
|
-
const gotPosition = (position[0] !== 0 || position[1] !== 0 || position[2] !== 0);
|
|
80
|
-
if (gotOrigin || gotPosition) {
|
|
81
|
-
const rtcOrigin = tempVec3b;
|
|
82
|
-
if (gotOrigin) {
|
|
83
|
-
const rotatedOrigin = math.transformPoint3(rotationMatrix, origin, tempVec3c);
|
|
84
|
-
rtcOrigin[0] = rotatedOrigin[0];
|
|
85
|
-
rtcOrigin[1] = rotatedOrigin[1];
|
|
86
|
-
rtcOrigin[2] = rotatedOrigin[2];
|
|
87
|
-
} else {
|
|
88
|
-
rtcOrigin[0] = 0;
|
|
89
|
-
rtcOrigin[1] = 0;
|
|
90
|
-
rtcOrigin[2] = 0;
|
|
91
|
-
}
|
|
92
|
-
rtcOrigin[0] += position[0];
|
|
93
|
-
rtcOrigin[1] += position[1];
|
|
94
|
-
rtcOrigin[2] += position[2];
|
|
95
|
-
rtcViewMatrix = createRTCViewMat(viewMatrix, rtcOrigin, tempMat4a);
|
|
96
|
-
rtcCameraEye = tempVec3d;
|
|
97
|
-
rtcCameraEye[0] = camera.eye[0] - rtcOrigin[0];
|
|
98
|
-
rtcCameraEye[1] = camera.eye[1] - rtcOrigin[1];
|
|
99
|
-
rtcCameraEye[2] = camera.eye[2] - rtcOrigin[2];
|
|
100
|
-
frameCtx.snapPickOrigin[0] = rtcOrigin[0];
|
|
101
|
-
frameCtx.snapPickOrigin[1] = rtcOrigin[1];
|
|
102
|
-
frameCtx.snapPickOrigin[2] = rtcOrigin[2];
|
|
103
|
-
} else {
|
|
104
|
-
rtcViewMatrix = viewMatrix;
|
|
105
|
-
rtcCameraEye = camera.eye;
|
|
106
|
-
frameCtx.snapPickOrigin[0] = 0;
|
|
107
|
-
frameCtx.snapPickOrigin[1] = 0;
|
|
108
|
-
frameCtx.snapPickOrigin[2] = 0;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
gl.uniform3fv(this._uCameraEyeRtc, rtcCameraEye);
|
|
112
|
-
gl.uniform2fv(this.uVectorA, frameCtx.snapVectorA);
|
|
113
|
-
gl.uniform2fv(this.uInverseVectorAB, frameCtx.snapInvVectorAB);
|
|
114
|
-
gl.uniform1i(this._uLayerNumber, frameCtx.snapPickLayerNumber);
|
|
115
|
-
gl.uniform3fv(this._uCoordinateScaler, coordinateScaler);
|
|
116
|
-
gl.uniform1i(this._uRenderPass, renderPass);
|
|
117
|
-
gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);
|
|
118
|
-
gl.uniformMatrix4fv(this._uSceneModelMatrix, false, rotationMatrix);
|
|
119
|
-
gl.uniformMatrix4fv(this._uViewMatrix, false, rtcViewMatrix);
|
|
120
|
-
gl.uniformMatrix4fv(this._uProjMatrix, false, camera.projMatrix);
|
|
121
|
-
if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {
|
|
122
|
-
const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2);
|
|
123
|
-
gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);
|
|
124
|
-
}
|
|
125
|
-
const numAllocatedSectionPlanes = scene._sectionPlanesState.getNumAllocatedSectionPlanes();
|
|
126
|
-
const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;
|
|
127
|
-
if (numAllocatedSectionPlanes > 0) {
|
|
128
|
-
const sectionPlanes = scene._sectionPlanesState.sectionPlanes;
|
|
129
|
-
const baseIndex = dataTextureLayer.layerIndex * numSectionPlanes;
|
|
130
|
-
const renderFlags = model.renderFlags;
|
|
131
|
-
for (let sectionPlaneIndex = 0; sectionPlaneIndex < numAllocatedSectionPlanes; sectionPlaneIndex++) {
|
|
132
|
-
const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];
|
|
133
|
-
if (sectionPlaneUniforms) {
|
|
134
|
-
if (sectionPlaneIndex < numSectionPlanes) {
|
|
135
|
-
const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];
|
|
136
|
-
gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);
|
|
137
|
-
if (active) {
|
|
138
|
-
const sectionPlane = sectionPlanes[sectionPlaneIndex];
|
|
139
|
-
if (origin) {
|
|
140
|
-
const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, origin, tempVec3a, model.matrix);
|
|
141
|
-
gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);
|
|
142
|
-
} else {
|
|
143
|
-
gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);
|
|
144
|
-
}
|
|
145
|
-
gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);
|
|
146
|
-
}
|
|
147
|
-
} else {
|
|
148
|
-
gl.uniform1i(sectionPlaneUniforms.active, 0);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
const glMode = (frameCtx.snapMode === "edge") ? gl.LINES : gl.POINTS;
|
|
154
|
-
if (state.numEdgeIndices8Bits > 0) {
|
|
155
|
-
textureState.bindEdgeIndicesTextures(
|
|
156
|
-
this._program,
|
|
157
|
-
this._uTexturePerEdgeIdPortionIds,
|
|
158
|
-
this._uTexturePerPolygonIdEdgeIndices,
|
|
159
|
-
8 // 8 bits edge indices
|
|
160
|
-
);
|
|
161
|
-
gl.drawArrays(glMode, 0, state.numEdgeIndices8Bits);
|
|
162
|
-
}
|
|
163
|
-
if (state.numEdgeIndices16Bits > 0) {
|
|
164
|
-
textureState.bindEdgeIndicesTextures(
|
|
165
|
-
this._program,
|
|
166
|
-
this._uTexturePerEdgeIdPortionIds,
|
|
167
|
-
this._uTexturePerPolygonIdEdgeIndices,
|
|
168
|
-
16 // 16 bits edge indices
|
|
169
|
-
);
|
|
170
|
-
gl.drawArrays(glMode, 0, state.numEdgeIndices16Bits);
|
|
171
|
-
}
|
|
172
|
-
if (state.numEdgeIndices32Bits > 0) {
|
|
173
|
-
textureState.bindEdgeIndicesTextures(
|
|
174
|
-
this._program,
|
|
175
|
-
this._uTexturePerEdgeIdPortionIds,
|
|
176
|
-
this._uTexturePerPolygonIdEdgeIndices,
|
|
177
|
-
32 // 32 bits edge indices
|
|
178
|
-
);
|
|
179
|
-
gl.drawArrays(glMode, 0, state.numEdgeIndices32Bits);
|
|
180
|
-
}
|
|
181
|
-
frameCtx.drawElements++;
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
_allocate() {
|
|
185
|
-
const scene = this._scene;
|
|
186
|
-
const gl = scene.canvas.gl;
|
|
187
|
-
this._program = new Program(gl, this._buildShader());
|
|
188
|
-
if (this._program.errors) {
|
|
189
|
-
this.errors = this._program.errors;
|
|
190
|
-
return;
|
|
191
|
-
}
|
|
192
|
-
const program = this._program;
|
|
193
|
-
this._uRenderPass = program.getLocation("renderPass");
|
|
194
|
-
this._uPickInvisible = program.getLocation("pickInvisible");
|
|
195
|
-
this._uSceneModelMatrix = program.getLocation("sceneModelMatrix");
|
|
196
|
-
this._uViewMatrix = program.getLocation("viewMatrix");
|
|
197
|
-
this._uProjMatrix = program.getLocation("projMatrix");
|
|
198
|
-
this._uSectionPlanes = [];
|
|
199
|
-
for (let i = 0, len = scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {
|
|
200
|
-
this._uSectionPlanes.push({
|
|
201
|
-
active: program.getLocation("sectionPlaneActive" + i),
|
|
202
|
-
pos: program.getLocation("sectionPlanePos" + i),
|
|
203
|
-
dir: program.getLocation("sectionPlaneDir" + i)
|
|
204
|
-
});
|
|
205
|
-
}
|
|
206
|
-
if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {
|
|
207
|
-
this._uLogDepthBufFC = program.getLocation("logDepthBufFC");
|
|
208
|
-
}
|
|
209
|
-
this.uTexturePerObjectPositionsDecodeMatrix = "uObjectPerObjectPositionsDecodeMatrix";
|
|
210
|
-
this.uTexturePerObjectColorsAndFlags = "uObjectPerObjectColorsAndFlags";
|
|
211
|
-
this._uTexturePerVertexIdCoordinates = "uTexturePerVertexIdCoordinates";
|
|
212
|
-
this._uTexturePerPolygonIdEdgeIndices = "uTexturePerPolygonIdEdgeIndices";
|
|
213
|
-
this._uTexturePerEdgeIdPortionIds = "uTexturePerEdgeIdPortionIds";
|
|
214
|
-
this._uTextureModelMatrices = "uTextureModelMatrices";
|
|
215
|
-
this._uTexturePerObjectMatrix= "uTexturePerObjectMatrix";
|
|
216
|
-
this._uCameraEyeRtc = program.getLocation("uCameraEyeRtc");
|
|
217
|
-
this.uVectorA = program.getLocation("uSnapVectorA");
|
|
218
|
-
this.uInverseVectorAB = program.getLocation("uSnapInvVectorAB");
|
|
219
|
-
this._uLayerNumber = program.getLocation("uLayerNumber");
|
|
220
|
-
this._uCoordinateScaler = program.getLocation("uCoordinateScaler");
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
_bindProgram() {
|
|
224
|
-
this._program.bind();
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
_buildShader() {
|
|
228
|
-
return {
|
|
229
|
-
vertex: this._buildVertexShader(),
|
|
230
|
-
fragment: this._buildFragmentShader()
|
|
231
|
-
};
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
_buildVertexShader() {
|
|
235
|
-
const scene = this._scene;
|
|
236
|
-
const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;
|
|
237
|
-
const src = [];
|
|
238
|
-
src.push("#version 300 es");
|
|
239
|
-
src.push("// Batched geometry edges drawing vertex shader");
|
|
240
|
-
|
|
241
|
-
src.push("#ifdef GL_FRAGMENT_PRECISION_HIGH");
|
|
242
|
-
src.push("precision highp float;");
|
|
243
|
-
src.push("precision highp int;");
|
|
244
|
-
src.push("precision highp usampler2D;");
|
|
245
|
-
src.push("precision highp isampler2D;");
|
|
246
|
-
src.push("precision highp sampler2D;");
|
|
247
|
-
src.push("#else");
|
|
248
|
-
src.push("precision mediump float;");
|
|
249
|
-
src.push("precision mediump int;");
|
|
250
|
-
src.push("precision mediump usampler2D;");
|
|
251
|
-
src.push("precision mediump isampler2D;");
|
|
252
|
-
src.push("precision mediump sampler2D;");
|
|
253
|
-
src.push("#endif");
|
|
254
|
-
|
|
255
|
-
src.push("uniform int renderPass;");
|
|
256
|
-
|
|
257
|
-
if (scene.entityOffsetsEnabled) {
|
|
258
|
-
src.push("in vec3 offset;");
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
src.push("uniform mat4 sceneModelMatrix;");
|
|
262
|
-
src.push("uniform mat4 viewMatrix;");
|
|
263
|
-
src.push("uniform mat4 projMatrix;");
|
|
264
|
-
|
|
265
|
-
src.push("uniform highp sampler2D uObjectPerObjectPositionsDecodeMatrix;");
|
|
266
|
-
src.push("uniform lowp usampler2D uObjectPerObjectColorsAndFlags;");
|
|
267
|
-
src.push("uniform highp sampler2D uTexturePerObjectMatrix;");
|
|
268
|
-
src.push("uniform mediump usampler2D uTexturePerVertexIdCoordinates;");
|
|
269
|
-
src.push("uniform highp usampler2D uTexturePerPolygonIdEdgeIndices;");
|
|
270
|
-
src.push("uniform mediump usampler2D uTexturePerEdgeIdPortionIds;");
|
|
271
|
-
src.push("uniform vec3 uCameraEyeRtc;");
|
|
272
|
-
src.push("uniform vec2 uSnapVectorA;");
|
|
273
|
-
src.push("uniform vec2 uSnapInvVectorAB;");
|
|
274
|
-
|
|
275
|
-
src.push("vec3 positions[3];")
|
|
276
|
-
|
|
277
|
-
if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {
|
|
278
|
-
src.push("uniform float logDepthBufFC;");
|
|
279
|
-
src.push("out float vFragDepth;");
|
|
280
|
-
src.push("bool isPerspectiveMatrix(mat4 m) {");
|
|
281
|
-
src.push(" return (m[2][3] == - 1.0);");
|
|
282
|
-
src.push("}");
|
|
283
|
-
src.push("out float isPerspective;");
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
src.push("vec2 remapClipPos(vec2 clipPos) {");
|
|
287
|
-
src.push(" float x = (clipPos.x - uSnapVectorA.x) * uSnapInvVectorAB.x;");
|
|
288
|
-
src.push(" float y = (clipPos.y - uSnapVectorA.y) * uSnapInvVectorAB.y;");
|
|
289
|
-
src.push(" return vec2(x, y);")
|
|
290
|
-
src.push("}");
|
|
291
|
-
|
|
292
|
-
if (clipping) {
|
|
293
|
-
src.push("out vec4 vWorldPosition;");
|
|
294
|
-
src.push("flat out uint vFlags2;");
|
|
295
|
-
}
|
|
296
|
-
src.push("out vec4 vViewPosition;");
|
|
297
|
-
src.push("out highp vec3 relativeToOriginPosition;");
|
|
298
|
-
src.push("void main(void) {");
|
|
299
|
-
|
|
300
|
-
// constants
|
|
301
|
-
src.push("int edgeIndex = gl_VertexID / 2;")
|
|
302
|
-
|
|
303
|
-
// get packed object-id
|
|
304
|
-
src.push("int h_packed_object_id_index = (edgeIndex >> 3) & 4095;")
|
|
305
|
-
src.push("int v_packed_object_id_index = (edgeIndex >> 3) >> 12;")
|
|
306
|
-
|
|
307
|
-
src.push("int objectIndex = int(texelFetch(uTexturePerEdgeIdPortionIds, ivec2(h_packed_object_id_index, v_packed_object_id_index), 0).r);");
|
|
308
|
-
src.push("ivec2 objectIndexCoords = ivec2(objectIndex % 512, objectIndex / 512);");
|
|
309
|
-
|
|
310
|
-
// get flags & flags2
|
|
311
|
-
src.push("uvec4 flags = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);");
|
|
312
|
-
src.push("uvec4 flags2 = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);");
|
|
313
|
-
|
|
314
|
-
// flags.w = NOT_RENDERED | PICK
|
|
315
|
-
// renderPass = PICK
|
|
316
|
-
|
|
317
|
-
src.push(`if (int(flags.w) != renderPass) {`);
|
|
318
|
-
src.push(" gl_Position = vec4(3.0, 3.0, 3.0, 1.0);"); // Cull vertex
|
|
319
|
-
src.push(" return;"); // Cull vertex
|
|
320
|
-
src.push("}");
|
|
321
|
-
|
|
322
|
-
src.push("{");
|
|
323
|
-
|
|
324
|
-
// get vertex base
|
|
325
|
-
src.push("ivec4 packedVertexBase = ivec4(texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));");
|
|
326
|
-
src.push("ivec4 packedEdgeIndexBaseOffset = ivec4(texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+6, objectIndexCoords.y), 0));");
|
|
327
|
-
src.push("int edgeIndexBaseOffset = (packedEdgeIndexBaseOffset.r << 24) + (packedEdgeIndexBaseOffset.g << 16) + (packedEdgeIndexBaseOffset.b << 8) + packedEdgeIndexBaseOffset.a;");
|
|
328
|
-
|
|
329
|
-
src.push("int h_index = (edgeIndex - edgeIndexBaseOffset) & 4095;")
|
|
330
|
-
src.push("int v_index = (edgeIndex - edgeIndexBaseOffset) >> 12;")
|
|
331
|
-
|
|
332
|
-
src.push("ivec3 vertexIndices = ivec3(texelFetch(uTexturePerPolygonIdEdgeIndices, ivec2(h_index, v_index), 0));");
|
|
333
|
-
|
|
334
|
-
src.push("ivec3 uniqueVertexIndexes = vertexIndices + (packedVertexBase.r << 24) + (packedVertexBase.g << 16) + (packedVertexBase.b << 8) + packedVertexBase.a;")
|
|
335
|
-
|
|
336
|
-
src.push("int indexPositionH = uniqueVertexIndexes[gl_VertexID % 2] & 4095;")
|
|
337
|
-
src.push("int indexPositionV = uniqueVertexIndexes[gl_VertexID % 2] >> 12;")
|
|
338
|
-
|
|
339
|
-
src.push("mat4 objectInstanceMatrix = mat4 (texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));")
|
|
340
|
-
src.push("mat4 objectDecodeAndInstanceMatrix = objectInstanceMatrix * mat4 (texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uObjectPerObjectPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));")
|
|
341
|
-
|
|
342
|
-
src.push("uvec4 flags = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);");
|
|
343
|
-
src.push("uvec4 flags2 = texelFetch (uObjectPerObjectColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);");
|
|
344
|
-
|
|
345
|
-
src.push("vec3 position = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH, indexPositionV), 0));")
|
|
346
|
-
|
|
347
|
-
src.push("vec4 worldPosition = sceneModelMatrix * (objectDecodeAndInstanceMatrix * vec4(position, 1.0)); ");
|
|
348
|
-
src.push("relativeToOriginPosition = worldPosition.xyz;")
|
|
349
|
-
src.push(" vec4 viewPosition = viewMatrix * worldPosition; ");
|
|
350
|
-
if (clipping) {
|
|
351
|
-
src.push(" vWorldPosition = worldPosition;");
|
|
352
|
-
src.push(" vFlags2 = flags2.r;");
|
|
353
|
-
}
|
|
354
|
-
src.push("vViewPosition = viewPosition;");
|
|
355
|
-
src.push("vec4 clipPos = projMatrix * viewPosition;");
|
|
356
|
-
src.push("float tmp = clipPos.w;")
|
|
357
|
-
src.push("clipPos.xyzw /= tmp;")
|
|
358
|
-
src.push("clipPos.xy = remapClipPos(clipPos.xy);");
|
|
359
|
-
src.push("clipPos.xyzw *= tmp;")
|
|
360
|
-
src.push("vViewPosition = clipPos;");
|
|
361
|
-
if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {
|
|
362
|
-
src.push("vFragDepth = 1.0 + clipPos.w;");
|
|
363
|
-
src.push("isPerspective = float (isPerspectiveMatrix(projMatrix));");
|
|
364
|
-
}
|
|
365
|
-
src.push("gl_Position = clipPos;");
|
|
366
|
-
src.push("gl_PointSize = 1.0;"); // Windows needs this?
|
|
367
|
-
src.push(" }");
|
|
368
|
-
src.push("}");
|
|
369
|
-
return src;
|
|
370
|
-
}
|
|
371
|
-
|
|
372
|
-
_buildFragmentShader() {
|
|
373
|
-
|
|
374
|
-
const scene = this._scene;
|
|
375
|
-
const clipping = scene._sectionPlanesState.getNumAllocatedSectionPlanes() > 0;
|
|
376
|
-
const src = [];
|
|
377
|
-
src.push('#version 300 es');
|
|
378
|
-
src.push("// Triangles dataTexture pick depth fragment shader");
|
|
379
|
-
src.push("#ifdef GL_FRAGMENT_PRECISION_HIGH");
|
|
380
|
-
src.push("precision highp float;");
|
|
381
|
-
src.push("precision highp int;");
|
|
382
|
-
src.push("#else");
|
|
383
|
-
src.push("precision mediump float;");
|
|
384
|
-
src.push("precision mediump int;");
|
|
385
|
-
src.push("#endif");
|
|
386
|
-
if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {
|
|
387
|
-
src.push("in float isPerspective;");
|
|
388
|
-
src.push("uniform float logDepthBufFC;");
|
|
389
|
-
src.push("in float vFragDepth;");
|
|
390
|
-
}
|
|
391
|
-
src.push("uniform int uLayerNumber;");
|
|
392
|
-
src.push("uniform vec3 uCoordinateScaler;");
|
|
393
|
-
if (clipping) {
|
|
394
|
-
src.push("in vec4 vWorldPosition;");
|
|
395
|
-
src.push("flat in uint vFlags2;");
|
|
396
|
-
for (let i = 0, len = scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i < len; i++) {
|
|
397
|
-
src.push("uniform bool sectionPlaneActive" + i + ";");
|
|
398
|
-
src.push("uniform vec3 sectionPlanePos" + i + ";");
|
|
399
|
-
src.push("uniform vec3 sectionPlaneDir" + i + ";");
|
|
400
|
-
}
|
|
401
|
-
}
|
|
402
|
-
src.push("in highp vec3 relativeToOriginPosition;");
|
|
403
|
-
src.push("out highp ivec4 outCoords;");
|
|
404
|
-
src.push("void main(void) {");
|
|
405
|
-
if (clipping) {
|
|
406
|
-
src.push(" bool clippable = vFlags2 > 0u;");
|
|
407
|
-
src.push(" if (clippable) {");
|
|
408
|
-
src.push(" float dist = 0.0;");
|
|
409
|
-
for (var i = 0; i < scene._sectionPlanesState.getNumAllocatedSectionPlanes(); i++) {
|
|
410
|
-
src.push(" if (sectionPlaneActive" + i + ") {");
|
|
411
|
-
src.push(" dist += clamp(dot(-sectionPlaneDir" + i + ".xyz, vWorldPosition.xyz - sectionPlanePos" + i + ".xyz), 0.0, 1000.0);");
|
|
412
|
-
src.push(" }");
|
|
413
|
-
}
|
|
414
|
-
src.push(" if (dist > 0.0) { discard; }");
|
|
415
|
-
src.push(" }");
|
|
416
|
-
}
|
|
417
|
-
if (SNAPPING_LOG_DEPTH_BUF_ENABLED) {
|
|
418
|
-
src.push(" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;");
|
|
419
|
-
}
|
|
420
|
-
src.push("outCoords = ivec4(relativeToOriginPosition.xyz * uCoordinateScaler.xyz, uLayerNumber);")
|
|
421
|
-
src.push("}");
|
|
422
|
-
return src;
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
webglContextRestored() {
|
|
426
|
-
this._program = null;
|
|
427
|
-
}
|
|
428
|
-
|
|
429
|
-
destroy() {
|
|
430
|
-
if (this._program) {
|
|
431
|
-
this._program.destroy();
|
|
432
|
-
}
|
|
433
|
-
this._program = null;
|
|
434
|
-
}
|
|
435
|
-
}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Provides scratch memory for methods like TrianglesBatchingLayer setFlags() and setColors(),
|
|
3
|
-
* so they don't need to allocate temporary arrays that need garbage collection.
|
|
4
|
-
*
|
|
5
|
-
* @private
|
|
6
|
-
*/
|
|
7
|
-
class ScratchMemory {
|
|
8
|
-
|
|
9
|
-
constructor() {
|
|
10
|
-
this._uint8Arrays = {};
|
|
11
|
-
this._float32Arrays = {};
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
_clear() {
|
|
15
|
-
this._uint8Arrays = {};
|
|
16
|
-
this._float32Arrays = {};
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
getUInt8Array(len) {
|
|
20
|
-
let uint8Array = this._uint8Arrays[len];
|
|
21
|
-
if (!uint8Array) {
|
|
22
|
-
uint8Array = new Uint8Array(len);
|
|
23
|
-
this._uint8Arrays[len] = uint8Array;
|
|
24
|
-
}
|
|
25
|
-
return uint8Array;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
getFloat32Array(len) {
|
|
29
|
-
let float32Array = this._float32Arrays[len];
|
|
30
|
-
if (!float32Array) {
|
|
31
|
-
float32Array = new Float32Array(len);
|
|
32
|
-
this._float32Arrays[len] = float32Array;
|
|
33
|
-
}
|
|
34
|
-
return float32Array;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
const batchingLayerScratchMemory = new ScratchMemory();
|
|
39
|
-
|
|
40
|
-
let countUsers = 0;
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* @private
|
|
44
|
-
*/
|
|
45
|
-
function getScratchMemory() {
|
|
46
|
-
countUsers++;
|
|
47
|
-
return batchingLayerScratchMemory;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* @private
|
|
52
|
-
*/
|
|
53
|
-
function putScratchMemory() {
|
|
54
|
-
if (countUsers === 0) {
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
countUsers--;
|
|
58
|
-
if (countUsers === 0) {
|
|
59
|
-
batchingLayerScratchMemory._clear();
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
export {getScratchMemory, putScratchMemory};
|