@xeokit/xeokit-sdk 2.6.84 → 2.6.85-renderers-refactor-v2

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.
Files changed (183) hide show
  1. package/dist/xeokit-sdk.cjs.js +13077 -44659
  2. package/dist/xeokit-sdk.es.js +13078 -44658
  3. package/dist/xeokit-sdk.es5.js +1402 -3502
  4. package/dist/xeokit-sdk.min.cjs.js +8 -8
  5. package/dist/xeokit-sdk.min.es.js +8 -8
  6. package/dist/xeokit-sdk.min.es5.js +7 -7
  7. package/package.json +1 -1
  8. package/src/plugins/lib/ui/index.js +12 -0
  9. package/src/viewer/Viewer.js +55 -103
  10. package/src/viewer/scene/canvas/Canvas.js +3 -43
  11. package/src/viewer/scene/geometry/ReadableGeometry.js +0 -25
  12. package/src/viewer/scene/lights/CubeTexture.js +0 -13
  13. package/src/viewer/scene/lights/DirLight.js +2 -1
  14. package/src/viewer/scene/lights/PointLight.js +2 -1
  15. package/src/viewer/scene/materials/Texture.js +0 -9
  16. package/src/viewer/scene/math/rtcCoords.js +1 -38
  17. package/src/viewer/scene/mesh/Mesh.js +454 -212
  18. package/src/viewer/scene/mesh/draw/DrawShaderSource.js +305 -1502
  19. package/src/viewer/scene/mesh/draw/LambertShaderSource.js +35 -0
  20. package/src/viewer/scene/mesh/emphasis/EmphasisShaderSource.js +34 -0
  21. package/src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js +9 -157
  22. package/src/viewer/scene/mesh/pick/PickMeshShaderSource.js +21 -150
  23. package/src/viewer/scene/mesh/pick/PickTriangleShaderSource.js +12 -124
  24. package/src/viewer/scene/mesh/shadow/ShadowShaderSource.js +22 -97
  25. package/src/viewer/scene/model/SceneModel.js +245 -861
  26. package/src/viewer/scene/model/SceneModelEntity.js +4 -4
  27. package/src/viewer/scene/model/SceneModelMesh.js +3 -3
  28. package/src/viewer/scene/model/layer/DTXLayer.js +940 -0
  29. package/src/viewer/scene/model/layer/Layer.js +786 -0
  30. package/src/viewer/scene/model/layer/VBOLayer.js +1019 -0
  31. package/src/viewer/scene/model/layer/programs/ColorProgram.js +35 -0
  32. package/src/viewer/scene/model/layer/programs/ColorTextureProgram.js +46 -0
  33. package/src/viewer/scene/model/layer/programs/DepthProgram.js +11 -0
  34. package/src/viewer/scene/model/layer/programs/EdgesProgram.js +12 -0
  35. package/src/viewer/scene/model/layer/programs/FlatColorProgram.js +24 -0
  36. package/src/viewer/scene/model/layer/programs/OcclusionProgram.js +12 -0
  37. package/src/viewer/scene/model/layer/programs/PBRProgram.js +180 -0
  38. package/src/viewer/scene/model/layer/programs/PickDepthProgram.js +30 -0
  39. package/src/viewer/scene/model/layer/programs/PickMeshProgram.js +12 -0
  40. package/src/viewer/scene/model/layer/programs/PickNormalsProgram.js +18 -0
  41. package/src/viewer/scene/model/layer/programs/ShadowProgram.js +23 -0
  42. package/src/viewer/scene/model/layer/programs/SilhouetteProgram.js +15 -0
  43. package/src/viewer/scene/model/layer/programs/SnapProgram.js +28 -0
  44. package/src/viewer/scene/scene/Scene.js +21 -38
  45. package/src/viewer/scene/webgl/ArrayBuf.js +5 -20
  46. package/src/viewer/scene/webgl/FrameContext.js +14 -86
  47. package/src/viewer/scene/webgl/RenderBuffer.js +62 -262
  48. package/src/viewer/scene/webgl/Renderer.js +880 -843
  49. package/src/viewer/scene/webgl/WebGLRenderer.js +612 -0
  50. package/src/viewer/scene/webgl/occlusion/OcclusionLayer.js +60 -132
  51. package/src/viewer/scene/webgl/occlusion/OcclusionTester.js +167 -328
  52. package/src/viewer/scene/mesh/draw/DrawRenderer.js +0 -996
  53. package/src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js +0 -259
  54. package/src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js +0 -159
  55. package/src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js +0 -286
  56. package/src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js +0 -262
  57. package/src/viewer/scene/mesh/occlusion/OcclusionRenderer.js +0 -221
  58. package/src/viewer/scene/mesh/pick/PickMeshRenderer.js +0 -223
  59. package/src/viewer/scene/mesh/pick/PickTriangleRenderer.js +0 -200
  60. package/src/viewer/scene/mesh/shadow/ShadowRenderer.js +0 -214
  61. package/src/viewer/scene/model/RENDER_PASSES.js +0 -34
  62. package/src/viewer/scene/model/dtx/BindableDataTexture.js +0 -31
  63. package/src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js +0 -27
  64. package/src/viewer/scene/model/dtx/lines/DTXLinesLayer.js +0 -897
  65. package/src/viewer/scene/model/dtx/lines/DTXLinesState.js +0 -46
  66. package/src/viewer/scene/model/dtx/lines/DTXLinesTextureFactory.js +0 -411
  67. package/src/viewer/scene/model/dtx/lines/dataTextureRamStats.js +0 -49
  68. package/src/viewer/scene/model/dtx/lines/rebucketPositions.js +0 -208
  69. package/src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js +0 -389
  70. package/src/viewer/scene/model/dtx/lines/renderers/DTXLinesRenderers.js +0 -65
  71. package/src/viewer/scene/model/dtx/triangles/DTXTrianglesLayer.js +0 -1399
  72. package/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js +0 -46
  73. package/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js +0 -250
  74. package/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesTextureFactory.js +0 -518
  75. package/src/viewer/scene/model/dtx/triangles/lib/dataTextureRamStats.js +0 -54
  76. package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js +0 -639
  77. package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js +0 -464
  78. package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js +0 -423
  79. package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js +0 -431
  80. package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js +0 -345
  81. package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js +0 -436
  82. package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js +0 -466
  83. package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js +0 -437
  84. package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js +0 -460
  85. package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js +0 -437
  86. package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js +0 -307
  87. package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js +0 -472
  88. package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js +0 -474
  89. package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js +0 -435
  90. package/src/viewer/scene/model/vbo/ScratchMemory.js +0 -63
  91. package/src/viewer/scene/model/vbo/VBORenderer.js +0 -664
  92. package/src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js +0 -704
  93. package/src/viewer/scene/model/vbo/batching/lines/lib/VBOBatchingLinesBuffer.js +0 -19
  94. package/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js +0 -318
  95. package/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesColorRenderer.js +0 -114
  96. package/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesRenderers.js +0 -99
  97. package/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSilhouetteRenderer.js +0 -124
  98. package/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js +0 -313
  99. package/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js +0 -311
  100. package/src/viewer/scene/model/vbo/batching/lines/renderers/VBOSceneModelLineBatchingRenderer.js +0 -24
  101. package/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js +0 -688
  102. package/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsRenderer.js +0 -24
  103. package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsColorRenderer.js +0 -168
  104. package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsOcclusionRenderer.js +0 -136
  105. package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickDepthRenderer.js +0 -156
  106. package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickMeshRenderer.js +0 -148
  107. package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js +0 -144
  108. package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsShadowRenderer.js +0 -107
  109. package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSilhouetteRenderer.js +0 -146
  110. package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js +0 -315
  111. package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js +0 -305
  112. package/src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesBuffer.js +0 -24
  113. package/src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js +0 -1346
  114. package/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesColorRenderer.js +0 -131
  115. package/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesEmphasisRenderer.js +0 -135
  116. package/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesRenderer.js +0 -12
  117. package/src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js +0 -403
  118. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesBatchingRenderer.js +0 -35
  119. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorRenderer.js +0 -252
  120. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorTextureRenderer.js +0 -294
  121. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesDepthRenderer.js +0 -115
  122. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesFlatColorRenderer.js +0 -246
  123. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesNormalsRenderer.js +0 -139
  124. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesOcclusionRenderer.js +0 -125
  125. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPBRRenderer.js +0 -561
  126. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickDepthRenderer.js +0 -144
  127. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickMeshRenderer.js +0 -130
  128. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsFlatRenderer.js +0 -121
  129. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsRenderer.js +0 -131
  130. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesShadowRenderer.js +0 -107
  131. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSilhouetteRenderer.js +0 -144
  132. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js +0 -313
  133. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js +0 -312
  134. package/src/viewer/scene/model/vbo/float16.js +0 -760
  135. package/src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js +0 -711
  136. package/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesColorRenderer.js +0 -148
  137. package/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderer.js +0 -26
  138. package/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderers.js +0 -139
  139. package/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSilhouetteRenderer.js +0 -127
  140. package/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js +0 -308
  141. package/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js +0 -299
  142. package/src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js +0 -733
  143. package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsColorRenderer.js +0 -174
  144. package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsDepthRenderer.js +0 -156
  145. package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsOcclusionRenderer.js +0 -149
  146. package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickDepthRenderer.js +0 -170
  147. package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickMeshRenderer.js +0 -152
  148. package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderer.js +0 -26
  149. package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js +0 -174
  150. package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsShadowRenderer.js +0 -119
  151. package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSilhouetteRenderer.js +0 -154
  152. package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js +0 -307
  153. package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js +0 -293
  154. package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingTrianglesRenderer.js +0 -150
  155. package/src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js +0 -1289
  156. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesColorRenderer.js +0 -135
  157. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesEmphasisRenderer.js +0 -137
  158. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesRenderer.js +0 -12
  159. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js +0 -403
  160. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorRenderer.js +0 -267
  161. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorTextureRenderer.js +0 -299
  162. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesDepthRenderer.js +0 -126
  163. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatColorRenderer.js +0 -255
  164. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatNormalsRenderer.js +0 -130
  165. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesInstancingRenderer.js +0 -32
  166. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesNormalsRenderer.js +0 -138
  167. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesOcclusionRenderer.js +0 -128
  168. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPBRRenderer.js +0 -561
  169. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickDepthRenderer.js +0 -149
  170. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickMeshRenderer.js +0 -136
  171. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsFlatRenderer.js +0 -130
  172. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsRenderer.js +0 -145
  173. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesShadowRenderer.js +0 -113
  174. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSilhouetteRenderer.js +0 -148
  175. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js +0 -319
  176. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js +0 -310
  177. package/src/viewer/scene/webgl/Attribute.js +0 -23
  178. package/src/viewer/scene/webgl/Program.js +0 -181
  179. package/src/viewer/scene/webgl/RenderBufferManager.js +0 -34
  180. package/src/viewer/scene/webgl/Sampler.js +0 -18
  181. package/src/viewer/scene/webgl/Shader.js +0 -49
  182. package/src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js +0 -324
  183. package/src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js +0 -384
@@ -1,518 +0,0 @@
1
- import {BindableDataTexture} from "./../../BindableDataTexture.js";
2
- import {dataTextureRamStats} from "./dataTextureRamStats.js";
3
-
4
- /**
5
- * @private
6
- */
7
- export class DTXTrianglesTextureFactory {
8
-
9
- constructor() {
10
-
11
- }
12
-
13
- /**
14
- * Enables the currently binded ````WebGLTexture```` to be used as a data texture.
15
- *
16
- * @param {WebGL2RenderingContext} gl
17
- *
18
- * @private
19
- */
20
- disableBindedTextureFiltering(gl) {
21
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
22
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
23
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
24
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
25
- }
26
-
27
- /**
28
- * This will generate an RGBA texture for:
29
- * - colors
30
- * - pickColors
31
- * - flags
32
- * - flags2
33
- * - vertex bases
34
- * - vertex base offsets
35
- *
36
- * The texture will have:
37
- * - 4 RGBA columns per row: for each object (pick) color and flags(2)
38
- * - N rows where N is the number of objects
39
- *
40
- * @param {WebGL2RenderingContext} gl
41
- * @param {ArrayLike<ArrayLike<int>>} colors Array of colors for all objects in the layer
42
- * @param {ArrayLike<ArrayLike<int>>} pickColors Array of pickColors for all objects in the layer
43
- * @param {ArrayLike<int>} vertexBases Array of position-index-bases foteh all objects in the layer
44
- * @param {ArrayLike<int>} indexBaseOffsets For triangles: array of offests between the (gl_VertexID / 3) and the position where the indices start in the texture layer
45
- * @param {ArrayLike<int>} edgeIndexBaseOffsets For edges: Array of offests between the (gl_VertexID / 2) and the position where the edge indices start in the texture layer
46
- * @param {ArrayLike<boolean>} solid Array is-solid flag for all objects in the layer
47
- *
48
- * @returns {BindableDataTexture}
49
- */
50
- createTextureForColorsAndFlags(gl, colors, pickColors, vertexBases, indexBaseOffsets, edgeIndexBaseOffsets, solid) {
51
- const numPortions = colors.length;
52
-
53
- // The number of rows in the texture is the number of
54
- // objects in the layer.
55
-
56
- this.numPortions = numPortions;
57
-
58
- const textureWidth = 512 * 8;
59
- const textureHeight = Math.ceil(numPortions / (textureWidth / 8));
60
-
61
- if (textureHeight === 0) {
62
- throw "texture height===0";
63
- }
64
-
65
- // 8 columns per texture row:
66
- // - col0: (RGBA) object color RGBA
67
- // - col1: (packed Uint32 as RGBA) object pick color
68
- // - col2: (packed 4 bytes as RGBA) object flags
69
- // - col3: (packed 4 bytes as RGBA) object flags2
70
- // - col4: (packed Uint32 bytes as RGBA) vertex base
71
- // - col5: (packed Uint32 bytes as RGBA) index base offset
72
- // - col6: (packed Uint32 bytes as RGBA) edge index base offset
73
- // - col7: (packed 4 bytes as RGBA) is-solid flag for objects
74
-
75
- const texArray = new Uint8Array(4 * textureWidth * textureHeight);
76
-
77
- dataTextureRamStats.sizeDataColorsAndFlags += texArray.byteLength;
78
- dataTextureRamStats.numberOfTextures++;
79
-
80
- for (let i = 0; i < numPortions; i++) {
81
- // object color
82
- texArray.set(colors [i], i * 32 + 0);
83
- texArray.set(pickColors [i], i * 32 + 4); // object pick color
84
- texArray.set([0, 0, 0, 0], i * 32 + 8); // object flags
85
- texArray.set([0, 0, 0, 0], i * 32 + 12); // object flags2
86
-
87
- // vertex base
88
- texArray.set([
89
- (vertexBases[i] >> 24) & 255,
90
- (vertexBases[i] >> 16) & 255,
91
- (vertexBases[i] >> 8) & 255,
92
- (vertexBases[i]) & 255,
93
- ],
94
- i * 32 + 16
95
- );
96
-
97
- // triangles index base offset
98
- texArray.set(
99
- [
100
- (indexBaseOffsets[i] >> 24) & 255,
101
- (indexBaseOffsets[i] >> 16) & 255,
102
- (indexBaseOffsets[i] >> 8) & 255,
103
- (indexBaseOffsets[i]) & 255,
104
- ],
105
- i * 32 + 20
106
- );
107
-
108
- // edge index base offset
109
- texArray.set(
110
- [
111
- (edgeIndexBaseOffsets[i] >> 24) & 255,
112
- (edgeIndexBaseOffsets[i] >> 16) & 255,
113
- (edgeIndexBaseOffsets[i] >> 8) & 255,
114
- (edgeIndexBaseOffsets[i]) & 255,
115
- ],
116
- i * 32 + 24
117
- );
118
-
119
- // is-solid flag
120
- texArray.set([solid[i] ? 1 : 0, 0, 0, 0], i * 32 + 28);
121
- }
122
- const texture = gl.createTexture();
123
- gl.bindTexture(gl.TEXTURE_2D, texture);
124
- gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGBA8UI, textureWidth, textureHeight);
125
- gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RGBA_INTEGER, gl.UNSIGNED_BYTE, texArray, 0);
126
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
127
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
128
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
129
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
130
- gl.bindTexture(gl.TEXTURE_2D, null);
131
- return new BindableDataTexture(gl, texture, textureWidth, textureHeight, texArray);
132
- }
133
-
134
- /**
135
- * This will generate a texture for all object offsets.
136
- *
137
- * @param {WebGL2RenderingContext} gl
138
- * @param {int[]} offsets Array of int[3], one XYZ offset array for each object
139
- *
140
- * @returns {BindableDataTexture}
141
- */
142
- createTextureForObjectOffsets(gl, numOffsets) {
143
- const textureWidth = 512;
144
- const textureHeight = Math.ceil(numOffsets / textureWidth);
145
- if (textureHeight === 0) {
146
- throw "texture height===0";
147
- }
148
- const texArray = new Float32Array(3 * textureWidth * textureHeight).fill(0);
149
- dataTextureRamStats.sizeDataTextureOffsets += texArray.byteLength;
150
- dataTextureRamStats.numberOfTextures++;
151
- const texture = gl.createTexture();
152
- gl.bindTexture(gl.TEXTURE_2D, texture);
153
- gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGB32F, textureWidth, textureHeight);
154
- gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RGB, gl.FLOAT, texArray, 0);
155
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
156
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
157
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
158
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
159
- gl.bindTexture(gl.TEXTURE_2D, null);
160
- return new BindableDataTexture(gl, texture, textureWidth, textureHeight, texArray);
161
- }
162
-
163
- /**
164
- * This will generate a texture for all positions decode matrices in the layer.
165
- *
166
- * The texture will have:
167
- * - 4 RGBA columns per row (each column will contain 4 packed half-float (16 bits) components).
168
- * Thus, each row will contain 16 packed half-floats corresponding to a complete positions decode matrix)
169
- * - N rows where N is the number of objects
170
- *
171
- * @param {WebGL2RenderingContext} gl
172
- * @param {ArrayLike<Matrix4x4>} instanceMatrices Array of geometry instancing matrices for all objects in the layer. Null if the objects are not instanced.
173
- *
174
- * @returns {BindableDataTexture}
175
- */
176
- createTextureForInstancingMatrices(gl, instanceMatrices) {
177
- const numMatrices = instanceMatrices.length;
178
- if (numMatrices === 0) {
179
- throw "num instance matrices===0";
180
- }
181
- // in one row we can fit 512 matrices
182
- const textureWidth = 512 * 4;
183
- const textureHeight = Math.ceil(numMatrices / (textureWidth / 4));
184
- const texArray = new Float32Array(4 * textureWidth * textureHeight);
185
- // dataTextureRamStats.sizeDataPositionDecodeMatrices += texArray.byteLength;
186
- dataTextureRamStats.numberOfTextures++;
187
- for (let i = 0; i < instanceMatrices.length; i++) { // 4x4 values
188
- texArray.set(instanceMatrices[i], i * 16);
189
- }
190
- const texture = gl.createTexture();
191
- gl.bindTexture(gl.TEXTURE_2D, texture);
192
- gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGBA32F, textureWidth, textureHeight);
193
- gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RGBA, gl.FLOAT, texArray, 0);
194
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
195
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
196
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
197
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
198
- gl.bindTexture(gl.TEXTURE_2D, null);
199
- return new BindableDataTexture(gl, texture, textureWidth, textureHeight, texArray);
200
- }
201
-
202
- /**
203
- * This will generate a texture for all positions decode matrices in the layer.
204
- *
205
- * The texture will have:
206
- * - 4 RGBA columns per row (each column will contain 4 packed half-float (16 bits) components).
207
- * Thus, each row will contain 16 packed half-floats corresponding to a complete positions decode matrix)
208
- * - N rows where N is the number of objects
209
- *
210
- * @param {WebGL2RenderingContext} gl
211
- * @param {ArrayLike<Matrix4x4>} positionDecodeMatrices Array of positions decode matrices for all objects in the layer
212
- *
213
- * @returns {BindableDataTexture}
214
- */
215
- createTextureForPositionsDecodeMatrices(gl, positionDecodeMatrices) {
216
- const numMatrices = positionDecodeMatrices.length;
217
- if (numMatrices === 0) {
218
- throw "num decode+entity matrices===0";
219
- }
220
- // in one row we can fit 512 matrices
221
- const textureWidth = 512 * 4;
222
- const textureHeight = Math.ceil(numMatrices / (textureWidth / 4));
223
- const texArray = new Float32Array(4 * textureWidth * textureHeight);
224
- dataTextureRamStats.sizeDataPositionDecodeMatrices += texArray.byteLength;
225
- dataTextureRamStats.numberOfTextures++;
226
- for (let i = 0; i < positionDecodeMatrices.length; i++) { // 4x4 values
227
- texArray.set(positionDecodeMatrices[i], i * 16);
228
- }
229
- const texture = gl.createTexture();
230
- gl.bindTexture(gl.TEXTURE_2D, texture);
231
- gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGBA32F, textureWidth, textureHeight);
232
- gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RGBA, gl.FLOAT, texArray, 0);
233
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
234
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
235
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
236
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
237
- gl.bindTexture(gl.TEXTURE_2D, null);
238
- return new BindableDataTexture(gl, texture, textureWidth, textureHeight);
239
- }
240
-
241
- /**
242
- * @param {WebGL2RenderingContext} gl
243
- * @param indicesArrays
244
- * @param lenIndices
245
- *
246
- * @returns {BindableDataTexture}
247
- */
248
- createTextureFor8BitIndices(gl, indicesArrays, lenIndices) {
249
- if (lenIndices === 0) {
250
- return {texture: null, textureHeight: 0,};
251
- }
252
- const textureWidth = 4096;
253
- const textureHeight = Math.ceil(lenIndices / 3 / textureWidth);
254
- if (textureHeight === 0) {
255
- throw "texture height===0";
256
- }
257
- const texArraySize = textureWidth * textureHeight * 3;
258
- const texArray = new Uint8Array(texArraySize);
259
- dataTextureRamStats.sizeDataTextureIndices += texArray.byteLength;
260
- dataTextureRamStats.numberOfTextures++;
261
- for (let i = 0, j = 0, len = indicesArrays.length; i < len; i++) {
262
- const pc = indicesArrays[i];
263
- texArray.set(pc, j);
264
- j += pc.length;
265
- }
266
- const texture = gl.createTexture();
267
- gl.bindTexture(gl.TEXTURE_2D, texture);
268
- gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGB8UI, textureWidth, textureHeight);
269
- gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RGB_INTEGER, gl.UNSIGNED_BYTE, texArray, 0);
270
- this.disableBindedTextureFiltering(gl);
271
- gl.bindTexture(gl.TEXTURE_2D, null);
272
- return new BindableDataTexture(gl, texture, textureWidth, textureHeight);
273
- }
274
-
275
- /**
276
- * @param {WebGL2RenderingContext} gl
277
- * @param indicesArrays
278
- * @param lenIndices
279
- *
280
- * @returns {BindableDataTexture}
281
- */
282
- createTextureFor16BitIndices(gl, indicesArrays, lenIndices) {
283
- if (lenIndices === 0) {
284
- return {texture: null, textureHeight: 0,};
285
- }
286
- const textureWidth = 4096;
287
- const textureHeight = Math.ceil(lenIndices / 3 / textureWidth);
288
- if (textureHeight === 0) {
289
- throw "texture height===0";
290
- }
291
- const texArraySize = textureWidth * textureHeight * 3;
292
- const texArray = new Uint16Array(texArraySize);
293
- dataTextureRamStats.sizeDataTextureIndices += texArray.byteLength;
294
- dataTextureRamStats.numberOfTextures++;
295
- for (let i = 0, j = 0, len = indicesArrays.length; i < len; i++) {
296
- const pc = indicesArrays[i];
297
- texArray.set(pc, j);
298
- j += pc.length;
299
- }
300
- const texture = gl.createTexture();
301
- gl.bindTexture(gl.TEXTURE_2D, texture);
302
- gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGB16UI, textureWidth, textureHeight);
303
- gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RGB_INTEGER, gl.UNSIGNED_SHORT, texArray, 0);
304
- this.disableBindedTextureFiltering(gl);
305
- gl.bindTexture(gl.TEXTURE_2D, null);
306
- return new BindableDataTexture(gl, texture, textureWidth, textureHeight);
307
- }
308
-
309
- /**
310
- * @param {WebGL2RenderingContext} gl
311
- * @param indicesArrays
312
- * @param lenIndices
313
- *
314
- * @returns {BindableDataTexture}
315
- */
316
- createTextureFor32BitIndices(gl, indicesArrays, lenIndices) {
317
- if (lenIndices === 0) {
318
- return {texture: null, textureHeight: 0,};
319
- }
320
- const textureWidth = 4096;
321
- const textureHeight = Math.ceil(lenIndices / 3 / textureWidth);
322
- if (textureHeight === 0) {
323
- throw "texture height===0";
324
- }
325
- const texArraySize = textureWidth * textureHeight * 3;
326
- const texArray = new Uint32Array(texArraySize);
327
- dataTextureRamStats.sizeDataTextureIndices += texArray.byteLength;
328
- dataTextureRamStats.numberOfTextures++;
329
- for (let i = 0, j = 0, len = indicesArrays.length; i < len; i++) {
330
- const pc = indicesArrays[i];
331
- texArray.set(pc, j);
332
- j += pc.length;
333
- }
334
- const texture = gl.createTexture();
335
- gl.bindTexture(gl.TEXTURE_2D, texture);
336
- gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGB32UI, textureWidth, textureHeight);
337
- gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RGB_INTEGER, gl.UNSIGNED_INT, texArray, 0);
338
- this.disableBindedTextureFiltering(gl);
339
- gl.bindTexture(gl.TEXTURE_2D, null);
340
- return new BindableDataTexture(gl, texture, textureWidth, textureHeight);
341
- }
342
-
343
- /**
344
- * @param {WebGL2RenderingContext} gl
345
- * @param indicesArrays
346
- * @param lenIndices
347
- *
348
- * @returns {BindableDataTexture}
349
- */
350
- createTextureFor8BitsEdgeIndices(gl, indicesArrays, lenIndices) {
351
- if (lenIndices === 0) {
352
- return {texture: null, textureHeight: 0,};
353
- }
354
- const textureWidth = 4096;
355
- const textureHeight = Math.ceil(lenIndices / 2 / textureWidth);
356
- if (textureHeight === 0) {
357
- throw "texture height===0";
358
- }
359
- const texArraySize = textureWidth * textureHeight * 2;
360
- const texArray = new Uint8Array(texArraySize);
361
- dataTextureRamStats.sizeDataTextureEdgeIndices += texArray.byteLength;
362
- dataTextureRamStats.numberOfTextures++;
363
- for (let i = 0, j = 0, len = indicesArrays.length; i < len; i++) {
364
- const pc = indicesArrays[i];
365
- texArray.set(pc, j);
366
- j += pc.length;
367
- }
368
- const texture = gl.createTexture();
369
- gl.bindTexture(gl.TEXTURE_2D, texture);
370
- gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RG8UI, textureWidth, textureHeight);
371
- gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RG_INTEGER, gl.UNSIGNED_BYTE, texArray, 0);
372
- this.disableBindedTextureFiltering(gl);
373
- gl.bindTexture(gl.TEXTURE_2D, null);
374
- return new BindableDataTexture(gl, texture, textureWidth, textureHeight);
375
- }
376
-
377
- /**
378
- * @param {WebGL2RenderingContext} gl
379
- * @param indicesArrays
380
- * @param lenIndices
381
- *
382
- * @returns {BindableDataTexture}
383
- */
384
- createTextureFor16BitsEdgeIndices(gl, indicesArrays, lenIndices) {
385
- if (lenIndices === 0) {
386
- return {texture: null, textureHeight: 0,};
387
- }
388
- const textureWidth = 4096;
389
- const textureHeight = Math.ceil(lenIndices / 2 / textureWidth);
390
- if (textureHeight === 0) {
391
- throw "texture height===0";
392
- }
393
- const texArraySize = textureWidth * textureHeight * 2;
394
- const texArray = new Uint16Array(texArraySize);
395
- dataTextureRamStats.sizeDataTextureEdgeIndices += texArray.byteLength;
396
- dataTextureRamStats.numberOfTextures++;
397
- for (let i = 0, j = 0, len = indicesArrays.length; i < len; i++) {
398
- const pc = indicesArrays[i];
399
- texArray.set(pc, j);
400
- j += pc.length;
401
- }
402
- const texture = gl.createTexture();
403
- gl.bindTexture(gl.TEXTURE_2D, texture);
404
- gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RG16UI, textureWidth, textureHeight);
405
- gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RG_INTEGER, gl.UNSIGNED_SHORT, texArray, 0);
406
- this.disableBindedTextureFiltering(gl);
407
- gl.bindTexture(gl.TEXTURE_2D, null);
408
- return new BindableDataTexture(gl, texture, textureWidth, textureHeight);
409
- }
410
-
411
- /**
412
- * @param {WebGL2RenderingContext} gl
413
- * @param indicesArrays
414
- * @param lenIndices
415
- *
416
- * @returns {BindableDataTexture}
417
- */
418
- createTextureFor32BitsEdgeIndices(gl, indicesArrays, lenIndices) {
419
- if (lenIndices === 0) {
420
- return {texture: null, textureHeight: 0,};
421
- }
422
- const textureWidth = 4096;
423
- const textureHeight = Math.ceil(lenIndices / 2 / textureWidth);
424
- if (textureHeight === 0) {
425
- throw "texture height===0";
426
- }
427
- const texArraySize = textureWidth * textureHeight * 2;
428
- const texArray = new Uint32Array(texArraySize);
429
- dataTextureRamStats.sizeDataTextureEdgeIndices += texArray.byteLength;
430
- dataTextureRamStats.numberOfTextures++;
431
- for (let i = 0, j = 0, len = indicesArrays.length; i < len; i++) {
432
- const pc = indicesArrays[i];
433
- texArray.set(pc, j);
434
- j += pc.length;
435
- }
436
- const texture = gl.createTexture();
437
- gl.bindTexture(gl.TEXTURE_2D, texture);
438
- gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RG32UI, textureWidth, textureHeight);
439
- gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RG_INTEGER, gl.UNSIGNED_INT, texArray, 0);
440
- this.disableBindedTextureFiltering(gl);
441
- gl.bindTexture(gl.TEXTURE_2D, null);
442
- return new BindableDataTexture(gl, texture, textureWidth, textureHeight);
443
- }
444
-
445
- /**
446
- * @param {WebGL2RenderingContext} gl
447
- * @param {ArrayLike<int>} positionsArrays Arrays of quantized positions in the layer
448
- * @param lenPositions
449
- *
450
- * This will generate a texture for positions in the layer.
451
- *
452
- * The texture will have:
453
- * - 1024 columns, where each pixel will be a 16-bit-per-component RGB texture, corresponding to the XYZ of the position
454
- * - a number of rows R where R*1024 is just >= than the number of vertices (positions / 3)
455
- *
456
- * @returns {BindableDataTexture}
457
- */
458
- createTextureForPositions(gl, positionsArrays, lenPositions) {
459
- const numVertices = lenPositions / 3;
460
- const textureWidth = 4096;
461
- const textureHeight = Math.ceil(numVertices / textureWidth);
462
- if (textureHeight === 0) {
463
- throw "texture height===0";
464
- }
465
- const texArraySize = textureWidth * textureHeight * 3;
466
- const texArray = new Uint16Array(texArraySize);
467
- dataTextureRamStats.sizeDataTexturePositions += texArray.byteLength;
468
- dataTextureRamStats.numberOfTextures++;
469
- for (let i = 0, j = 0, len = positionsArrays.length; i < len; i++) {
470
- const pc = positionsArrays[i];
471
- texArray.set(pc, j);
472
- j += pc.length;
473
- }
474
- const texture = gl.createTexture();
475
- gl.bindTexture(gl.TEXTURE_2D, texture);
476
- gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGB16UI, textureWidth, textureHeight);
477
- gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RGB_INTEGER, gl.UNSIGNED_SHORT, texArray, 0);
478
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
479
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
480
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
481
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
482
- gl.bindTexture(gl.TEXTURE_2D, null);
483
- return new BindableDataTexture(gl, texture, textureWidth, textureHeight);
484
- }
485
-
486
- /**
487
- * @param {WebGL2RenderingContext} gl
488
- * @param {ArrayLike<int>} portionIdsArray
489
- *
490
- * @returns {BindableDataTexture}
491
- */
492
- createTextureForPackedPortionIds(gl, portionIdsArray) {
493
- if (portionIdsArray.length === 0) {
494
- return {texture: null, textureHeight: 0,};
495
- }
496
- const lenArray = portionIdsArray.length;
497
- const textureWidth = 4096;
498
- const textureHeight = Math.ceil(lenArray / textureWidth);
499
- if (textureHeight === 0) {
500
- throw "texture height===0";
501
- }
502
- const texArraySize = textureWidth * textureHeight;
503
- const texArray = new Uint16Array(texArraySize);
504
- texArray.set(portionIdsArray, 0);
505
- dataTextureRamStats.sizeDataTexturePortionIds += texArray.byteLength;
506
- dataTextureRamStats.numberOfTextures++;
507
- const texture = gl.createTexture();
508
- gl.bindTexture(gl.TEXTURE_2D, texture);
509
- gl.texStorage2D(gl.TEXTURE_2D, 1, gl.R16UI, textureWidth, textureHeight);
510
- gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RED_INTEGER, gl.UNSIGNED_SHORT, texArray, 0);
511
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
512
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
513
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
514
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
515
- gl.bindTexture(gl.TEXTURE_2D, null);
516
- return new BindableDataTexture(gl, texture, textureWidth, textureHeight);
517
- }
518
- }
@@ -1,54 +0,0 @@
1
- export const dataTextureRamStats = {
2
- sizeDataColorsAndFlags: 0,
3
- sizeDataPositionDecodeMatrices: 0,
4
- sizeDataTextureOffsets: 0,
5
- sizeDataTexturePositions: 0,
6
- sizeDataTextureIndices: 0,
7
- sizeDataTextureEdgeIndices: 0,
8
- sizeDataTexturePortionIds: 0,
9
- numberOfGeometries: 0,
10
- numberOfPortions: 0,
11
- numberOfLayers: 0,
12
- numberOfTextures: 0,
13
- totalPolygons: 0,
14
- totalPolygons8Bits: 0,
15
- totalPolygons16Bits: 0,
16
- totalPolygons32Bits: 0,
17
- totalEdges: 0,
18
- totalEdges8Bits: 0,
19
- totalEdges16Bits: 0,
20
- totalEdges32Bits: 0,
21
- cannotCreatePortion: {
22
- because10BitsObjectId: 0,
23
- becauseTextureSize: 0,
24
- },
25
- overheadSizeAlignementIndices: 0,
26
- overheadSizeAlignementEdgeIndices: 0,
27
- };
28
-
29
- window.printDataTextureRamStats = function () {
30
-
31
- console.log(JSON.stringify(dataTextureRamStats, null, 4));
32
-
33
- let totalRamSize = 0;
34
-
35
- Object.keys(dataTextureRamStats).forEach(key => {
36
- if (key.startsWith("size")) {
37
- totalRamSize += dataTextureRamStats[key];
38
- }
39
- });
40
-
41
- console.log(`Total size ${totalRamSize} bytes (${(totalRamSize / 1000 / 1000).toFixed(2)} MB)`);
42
- console.log(`Avg bytes / triangle: ${(totalRamSize / dataTextureRamStats.totalPolygons).toFixed(2)}`);
43
-
44
- let percentualRamStats = {};
45
-
46
- Object.keys(dataTextureRamStats).forEach(key => {
47
- if (key.startsWith("size")) {
48
- percentualRamStats[key] =
49
- `${(dataTextureRamStats[key] / totalRamSize * 100).toFixed(2)} % of total`;
50
- }
51
- });
52
-
53
- console.log(JSON.stringify({percentualRamUsage: percentualRamStats}, null, 4));
54
- };