@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,223 +0,0 @@
1
- /**
2
- * @author xeolabs / https://github.com/xeolabs
3
- */
4
-
5
- import {PickMeshShaderSource} from "./PickMeshShaderSource.js";
6
- import {Program} from "../../webgl/Program.js";
7
- import {stats} from "../../stats.js";
8
- import {math} from "../../math/math.js";
9
- import {getPlaneRTCPos} from "../../math/rtcCoords.js";
10
-
11
- const tempVec3a = math.vec3();
12
-
13
- // No ID, because there is exactly one PickMeshRenderer per scene
14
-
15
- /**
16
- * @private
17
- */
18
- const PickMeshRenderer = function (hash, mesh) {
19
- this._hash = hash;
20
- this._shaderSource = new PickMeshShaderSource(mesh);
21
- this._scene = mesh.scene;
22
- this._useCount = 0;
23
- this._allocate(mesh);
24
- };
25
-
26
- const renderers = {};
27
-
28
- PickMeshRenderer.get = function (mesh) {
29
- const hash = [
30
- mesh.scene.canvas.canvas.id,
31
- mesh.scene._sectionPlanesState.getHash(),
32
- mesh._geometry._state.hash,
33
- mesh._state.hash
34
- ].join(";");
35
- let renderer = renderers[hash];
36
- if (!renderer) {
37
- renderer = new PickMeshRenderer(hash, mesh);
38
- if (renderer.errors) {
39
- console.log(renderer.errors.join("\n"));
40
- return null;
41
- }
42
- renderers[hash] = renderer;
43
- stats.memory.programs++;
44
- }
45
- renderer._useCount++;
46
- return renderer;
47
- };
48
-
49
- PickMeshRenderer.prototype.put = function () {
50
- if (--this._useCount === 0) {
51
- if (this._program) {
52
- this._program.destroy();
53
- }
54
- delete renderers[this._hash];
55
- stats.memory.programs--;
56
- }
57
- };
58
-
59
- PickMeshRenderer.prototype.webglContextRestored = function () {
60
- this._program = null;
61
- };
62
-
63
- PickMeshRenderer.prototype.drawMesh = function (frameCtx, mesh) {
64
-
65
- if (!this._program) {
66
- this._allocate(mesh);
67
- }
68
-
69
- const scene = this._scene;
70
- const gl = scene.canvas.gl;
71
- const meshState = mesh._state;
72
- const materialState = mesh._material._state;
73
- const geometryState = mesh._geometry._state;
74
- const origin = mesh.origin;
75
-
76
- if (frameCtx.lastProgramId !== this._program.id) {
77
- frameCtx.lastProgramId = this._program.id;
78
- this._bindProgram(frameCtx);
79
- }
80
-
81
- gl.uniformMatrix4fv(this._uViewMatrix, false, origin ? frameCtx.getRTCPickViewMatrix(meshState.originHash, origin) : frameCtx.pickViewMatrix);
82
-
83
- if (meshState.clippable) {
84
- const numAllocatedSectionPlanes = scene._sectionPlanesState.getNumAllocatedSectionPlanes();
85
- const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;
86
- if (numAllocatedSectionPlanes > 0) {
87
- const sectionPlanes = scene._sectionPlanesState.sectionPlanes;
88
- const renderFlags = mesh.renderFlags;
89
- for (let sectionPlaneIndex = 0; sectionPlaneIndex < numAllocatedSectionPlanes; sectionPlaneIndex++) {
90
- const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];
91
- if (sectionPlaneUniforms) {
92
- if (sectionPlaneIndex < numSectionPlanes) {
93
- const active = renderFlags.sectionPlanesActivePerLayer[sectionPlaneIndex];
94
- gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);
95
- if (active) {
96
- const sectionPlane = sectionPlanes[sectionPlaneIndex];
97
- if (origin) {
98
- const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, origin, tempVec3a);
99
- gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);
100
- } else {
101
- gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);
102
- }
103
- gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);
104
- }
105
- } else {
106
- gl.uniform1i(sectionPlaneUniforms.active, 0);
107
- }
108
- }
109
- }
110
- }
111
- }
112
-
113
- if (materialState.id !== this._lastMaterialId) {
114
- const backfaces = materialState.backfaces;
115
- if (frameCtx.backfaces !== backfaces) {
116
- if (backfaces) {
117
- gl.disable(gl.CULL_FACE);
118
- } else {
119
- gl.enable(gl.CULL_FACE);
120
- }
121
- frameCtx.backfaces = backfaces;
122
- }
123
- const frontface = materialState.frontface;
124
- if (frameCtx.frontface !== frontface) {
125
- if (frontface) {
126
- gl.frontFace(gl.CCW);
127
- } else {
128
- gl.frontFace(gl.CW);
129
- }
130
- frameCtx.frontface = frontface;
131
- }
132
- this._lastMaterialId = materialState.id;
133
- }
134
-
135
- gl.uniformMatrix4fv(this._uProjMatrix, false, frameCtx.pickProjMatrix);
136
- gl.uniformMatrix4fv(this._uModelMatrix, false, mesh.worldMatrix);
137
- if (this._uClippable) {
138
- gl.uniform1i(this._uClippable, mesh._state.clippable);
139
- }
140
- gl.uniform3fv(this._uOffset, mesh._state.offset);
141
-
142
- if (geometryState.id !== this._lastGeometryId) {
143
- if (this._uPositionsDecodeMatrix) {
144
- gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, geometryState.positionsDecodeMatrix);
145
- }
146
- if (this._aPosition) {
147
- this._aPosition.bindArrayBuffer(geometryState.positionsBuf, geometryState.compressGeometry ? gl.UNSIGNED_SHORT : gl.FLOAT);
148
- frameCtx.bindArray++;
149
- }
150
- if (geometryState.indicesBuf) {
151
- geometryState.indicesBuf.bind();
152
- frameCtx.bindArray++;
153
- }
154
- this._lastGeometryId = geometryState.id;
155
- }
156
-
157
- // Mesh-indexed color
158
- var pickID = mesh._state.pickID;
159
- const a = pickID >> 24 & 0xFF;
160
- const b = pickID >> 16 & 0xFF;
161
- const g = pickID >> 8 & 0xFF;
162
- const r = pickID & 0xFF;
163
- gl.uniform4f(this._uPickColor, r / 255, g / 255, b / 255, a / 255);
164
-
165
- gl.uniform2fv(this._uPickClipPos, frameCtx.pickClipPos);
166
-
167
- if (geometryState.indicesBuf) {
168
- gl.drawElements(geometryState.primitive, geometryState.indicesBuf.numItems, geometryState.indicesBuf.itemType, 0);
169
- frameCtx.drawElements++;
170
- } else if (geometryState.positions) {
171
- gl.drawArrays(gl.TRIANGLES, 0, geometryState.positions.numItems);
172
- }
173
- };
174
-
175
- PickMeshRenderer.prototype._allocate = function (mesh) {
176
- const scene = mesh.scene;
177
- const gl = scene.canvas.gl;
178
- this._program = new Program(gl, this._shaderSource);
179
- if (this._program.errors) {
180
- this.errors = this._program.errors;
181
- return;
182
- }
183
- const program = this._program;
184
- this._uPositionsDecodeMatrix = program.getLocation("positionsDecodeMatrix");
185
- this._uModelMatrix = program.getLocation("modelMatrix");
186
- this._uViewMatrix = program.getLocation("viewMatrix");
187
- this._uProjMatrix = program.getLocation("projMatrix");
188
- this._uSectionPlanes = [];
189
- const clips = scene._sectionPlanesState.sectionPlanes;
190
- for (let i = 0, len = clips.length; i < len; i++) {
191
- this._uSectionPlanes.push({
192
- active: program.getLocation("sectionPlaneActive" + i),
193
- pos: program.getLocation("sectionPlanePos" + i),
194
- dir: program.getLocation("sectionPlaneDir" + i)
195
- });
196
- }
197
- this._aPosition = program.getAttribute("position");
198
- this._uClippable = program.getLocation("clippable");
199
- this._uPickColor = program.getLocation("pickColor");
200
- this._uPickClipPos = program.getLocation("pickClipPos");
201
- this._uOffset = program.getLocation("offset");
202
- if (scene.logarithmicDepthBufferEnabled ) {
203
- this._uLogDepthBufFC = program.getLocation("logDepthBufFC");
204
- }
205
- this._lastMaterialId = null;
206
- this._lastGeometryId = null;
207
- };
208
-
209
- PickMeshRenderer.prototype._bindProgram = function (frameCtx) {
210
- const scene = this._scene;
211
- const gl = scene.canvas.gl;
212
- const project = scene.camera.project;
213
- this._program.bind();
214
- frameCtx.useProgram++;
215
- if (scene.logarithmicDepthBufferEnabled ) {
216
- const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);
217
- gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);
218
- }
219
- this._lastMaterialId = null;
220
- this._lastGeometryId = null;
221
- };
222
-
223
- export {PickMeshRenderer};
@@ -1,200 +0,0 @@
1
- /**
2
- * @author xeolabs / https://github.com/xeolabs
3
- */
4
-
5
- import {PickTriangleShaderSource} from "./PickTriangleShaderSource.js";
6
- import {Program} from "../../webgl/Program.js";
7
- import {stats} from "../../stats.js";
8
- import {getPlaneRTCPos} from "../../math/rtcCoords.js";
9
- import {math} from "../../math/math.js";
10
-
11
- const tempVec3a = math.vec3();
12
-
13
- /**
14
- * @private
15
- */
16
- const PickTriangleRenderer = function (hash, mesh) {
17
- this._hash = hash;
18
- this._scene = mesh.scene;
19
- this._useCount = 0;
20
- this._shaderSource = new PickTriangleShaderSource(mesh);
21
- this._allocate(mesh);
22
- };
23
-
24
- const renderers = {};
25
-
26
- PickTriangleRenderer.get = function (mesh) {
27
- const hash = [
28
- mesh.scene.canvas.canvas.id,
29
- mesh.scene._sectionPlanesState.getHash(),
30
- mesh._geometry._state.compressGeometry ? "cp" : "",
31
- mesh._state.hash
32
- ].join(";");
33
- let renderer = renderers[hash];
34
- if (!renderer) {
35
- renderer = new PickTriangleRenderer(hash, mesh);
36
- if (renderer.errors) {
37
- console.log(renderer.errors.join("\n"));
38
- return null;
39
- }
40
- renderers[hash] = renderer;
41
- stats.memory.programs++;
42
- }
43
- renderer._useCount++;
44
- return renderer;
45
- };
46
-
47
- PickTriangleRenderer.prototype.put = function () {
48
- if (--this._useCount === 0) {
49
- if (this._program) {
50
- this._program.destroy();
51
- }
52
- delete renderers[this._hash];
53
- stats.memory.programs--;
54
- }
55
- };
56
-
57
- PickTriangleRenderer.prototype.webglContextRestored = function () {
58
- this._program = null;
59
- };
60
-
61
- PickTriangleRenderer.prototype.drawMesh = function (frameCtx, mesh) {
62
-
63
- if (!this._program) {
64
- this._allocate(mesh);
65
- }
66
-
67
- const scene = this._scene;
68
- const gl = scene.canvas.gl;
69
- const meshState = mesh._state;
70
- const materialState = mesh._material._state;
71
- const geometry = mesh._geometry;
72
- const geometryState = mesh._geometry._state;
73
- const origin = mesh.origin;
74
- const backfaces = materialState.backfaces;
75
- const frontface = materialState.frontface;
76
- const project = scene.camera.project;
77
- const positionsBuf = geometry._getPickTrianglePositions();
78
- const pickColorsBuf = geometry._getPickTriangleColors();
79
-
80
- this._program.bind();
81
-
82
- frameCtx.useProgram++;
83
-
84
- if (scene.logarithmicDepthBufferEnabled ) {
85
- const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);
86
- gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);
87
- }
88
-
89
- gl.uniformMatrix4fv(this._uViewMatrix, false, origin ? frameCtx.getRTCPickViewMatrix(meshState.originHash, origin) : frameCtx.pickViewMatrix);
90
-
91
- if (meshState.clippable) {
92
- const numAllocatedSectionPlanes = scene._sectionPlanesState.getNumAllocatedSectionPlanes();
93
- const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;
94
- if (numAllocatedSectionPlanes > 0) {
95
- const sectionPlanes = scene._sectionPlanesState.sectionPlanes;
96
- const renderFlags = mesh.renderFlags;
97
- for (let sectionPlaneIndex = 0; sectionPlaneIndex < numAllocatedSectionPlanes; sectionPlaneIndex++) {
98
- const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];
99
- if (sectionPlaneUniforms) {
100
- if (sectionPlaneIndex < numSectionPlanes) {
101
- const active = renderFlags.sectionPlanesActivePerLayer[sectionPlaneIndex];
102
- gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);
103
- if (active) {
104
- const sectionPlane = sectionPlanes[sectionPlaneIndex];
105
- if (origin) {
106
- const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, origin, tempVec3a);
107
- gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);
108
- } else {
109
- gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);
110
- }
111
- gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);
112
- }
113
- } else {
114
- gl.uniform1i(sectionPlaneUniforms.active, 0);
115
- }
116
- }
117
- }
118
- }
119
- }
120
-
121
- gl.uniformMatrix4fv(this._uProjMatrix, false, frameCtx.pickProjMatrix);
122
-
123
- if (scene.logarithmicDepthBufferEnabled) {
124
- gl.uniform1f(this._uZFar, scene.camera.project.far);
125
- }
126
-
127
- if (frameCtx.backfaces !== backfaces) {
128
- if (backfaces) {
129
- gl.disable(gl.CULL_FACE);
130
- } else {
131
- gl.enable(gl.CULL_FACE);
132
- }
133
- frameCtx.backfaces = backfaces;
134
- }
135
- if (frameCtx.frontface !== frontface) {
136
- if (frontface) {
137
- gl.frontFace(gl.CCW);
138
- } else {
139
- gl.frontFace(gl.CW);
140
- }
141
- frameCtx.frontface = frontface;
142
- }
143
-
144
- gl.uniformMatrix4fv(this._uModelMatrix, false, mesh.worldMatrix);
145
- if (this._uClippable) {
146
- gl.uniform1i(this._uClippable, mesh._state.clippable);
147
- }
148
- gl.uniform3fv(this._uOffset, mesh._state.offset);
149
- if (this._uPositionsDecodeMatrix) {
150
- gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, geometryState.positionsDecodeMatrix);
151
- this._aPosition.bindArrayBuffer(positionsBuf, geometryState.compressGeometry ? gl.UNSIGNED_SHORT : gl.FLOAT);
152
- } else {
153
- this._aPosition.bindArrayBuffer(positionsBuf);
154
- }
155
-
156
- gl.uniform2fv(this._uPickClipPos, frameCtx.pickClipPos);
157
-
158
- pickColorsBuf.bind();
159
- gl.enableVertexAttribArray(this._aColor.location);
160
- gl.vertexAttribPointer(this._aColor.location, pickColorsBuf.itemSize, pickColorsBuf.itemType, true, 0, 0); // Normalize
161
- gl.drawArrays(geometryState.primitive, 0, positionsBuf.numItems / 3);
162
- };
163
-
164
- PickTriangleRenderer.prototype._allocate = function (mesh) {
165
- const scene = mesh.scene;
166
- const gl = scene.canvas.gl;
167
- this._program = new Program(gl, this._shaderSource);
168
- this._useCount = 0;
169
- if (this._program.errors) {
170
- this.errors = this._program.errors;
171
- return;
172
- }
173
- const program = this._program;
174
- this._uPositionsDecodeMatrix = program.getLocation("positionsDecodeMatrix");
175
- this._uModelMatrix = program.getLocation("modelMatrix");
176
- this._uViewMatrix = program.getLocation("viewMatrix");
177
- this._uProjMatrix = program.getLocation("projMatrix");
178
- this._uSectionPlanes = [];
179
- const sectionPlanes = scene._sectionPlanesState.sectionPlanes;
180
- for (let i = 0, len = sectionPlanes.length; i < len; i++) {
181
- this._uSectionPlanes.push({
182
- active: program.getLocation("sectionPlaneActive" + i),
183
- pos: program.getLocation("sectionPlanePos" + i),
184
- dir: program.getLocation("sectionPlaneDir" + i)
185
- });
186
- }
187
- this._aPosition = program.getAttribute("position");
188
- this._aColor = program.getAttribute("color");
189
- this._uPickClipPos = program.getLocation("pickClipPos");
190
- this._uClippable = program.getLocation("clippable");
191
- this._uOffset = program.getLocation("offset");
192
- if (scene.logarithmicDepthBufferEnabled ) {
193
- this._uLogDepthBufFC = program.getLocation("logDepthBufFC");
194
- }
195
- };
196
-
197
- export {PickTriangleRenderer};
198
-
199
-
200
-
@@ -1,214 +0,0 @@
1
- import {ShadowShaderSource} from "./ShadowShaderSource.js";
2
- import {Program} from "../../webgl/Program.js";
3
- import {stats} from "../../stats.js";
4
-
5
- /**
6
- * @private
7
- */
8
- const ShadowRenderer = function (hash, mesh) {
9
- this._hash = hash;
10
- this._shaderSource = new ShadowShaderSource(mesh);
11
- this._scene = mesh.scene;
12
- this._useCount = 0;
13
- this._allocate(mesh);
14
- };
15
-
16
- const renderers = {};
17
-
18
- ShadowRenderer.get = function (mesh) {
19
- const scene = mesh.scene;
20
- const hash = [scene.canvas.canvas.id, scene._sectionPlanesState.getHash(), mesh._geometry._state.hash, mesh._state.hash].join(";");
21
- let renderer = renderers[hash];
22
- if (!renderer) {
23
- renderer = new ShadowRenderer(hash, mesh);
24
- if (renderer.errors) {
25
- console.log(renderer.errors.join("\n"));
26
- return null;
27
- }
28
- renderers[hash] = renderer;
29
- stats.memory.programs++;
30
- }
31
- renderer._useCount++;
32
- return renderer;
33
- };
34
-
35
- ShadowRenderer.prototype.put = function () {
36
- if (--this._useCount === 0) {
37
- if (this._program) {
38
- this._program.destroy();
39
- }
40
- delete renderers[this._hash];
41
- stats.memory.programs--;
42
- }
43
- };
44
-
45
- ShadowRenderer.prototype.webglContextRestored = function () {
46
- this._program = null;
47
- };
48
-
49
- ShadowRenderer.prototype.drawMesh = function (frame, mesh) {
50
- if (!this._program) {
51
- this._allocate(mesh);
52
- }
53
- const scene = this._scene;
54
- const gl = scene.canvas.gl;
55
- const materialState = mesh._material._state;
56
- const geometryState = mesh._geometry._state;
57
- if (frame.lastProgramId !== this._program.id) {
58
- frame.lastProgramId = this._program.id;
59
- this._bindProgram(frame);
60
- }
61
- if (materialState.id !== this._lastMaterialId) {
62
- const backfaces = materialState.backfaces;
63
- if (frame.backfaces !== backfaces) {
64
- if (backfaces) {
65
- gl.disable(gl.CULL_FACE);
66
- } else {
67
- gl.enable(gl.CULL_FACE);
68
- }
69
- frame.backfaces = backfaces;
70
- }
71
- const frontface = materialState.frontface;
72
- if (frame.frontface !== frontface) {
73
- if (frontface) {
74
- gl.frontFace(gl.CCW);
75
- } else {
76
- gl.frontFace(gl.CW);
77
- }
78
- frame.frontface = frontface;
79
- }
80
- if (frame.lineWidth !== materialState.lineWidth) {
81
- gl.lineWidth(materialState.lineWidth);
82
- frame.lineWidth = materialState.lineWidth;
83
- }
84
- if (this._uPointSize) {
85
- gl.uniform1i(this._uPointSize, materialState.pointSize);
86
- }
87
- this._lastMaterialId = materialState.id;
88
- }
89
- gl.uniformMatrix4fv(this._uModelMatrix, gl.FALSE, mesh.worldMatrix);
90
- if (geometryState.combineGeometry) {
91
- const vertexBufs = mesh.vertexBufs;
92
- if (vertexBufs.id !== this._lastVertexBufsId) {
93
- if (vertexBufs.positionsBuf && this._aPosition) {
94
- this._aPosition.bindArrayBuffer(vertexBufs.positionsBuf, vertexBufs.compressGeometry ? gl.UNSIGNED_SHORT : gl.FLOAT);
95
- frame.bindArray++;
96
- }
97
- this._lastVertexBufsId = vertexBufs.id;
98
- }
99
- }
100
- if (this._uClippable) {
101
- gl.uniform1i(this._uClippable, mesh._state.clippable);
102
- }
103
- gl.uniform3fv(this._uOffset, mesh._state.offset);
104
- if (geometryState.id !== this._lastGeometryId) {
105
- if (this._uPositionsDecodeMatrix) {
106
- gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, geometryState.positionsDecodeMatrix);
107
- }
108
- if (geometryState.combineGeometry) { // VBOs were bound by the preceding VertexBufs chunk
109
- if (geometryState.indicesBufCombined) {
110
- geometryState.indicesBufCombined.bind();
111
- frame.bindArray++;
112
- }
113
- } else {
114
- if (this._aPosition) {
115
- this._aPosition.bindArrayBuffer(geometryState.positionsBuf, geometryState.compressGeometry ? gl.UNSIGNED_SHORT : gl.FLOAT);
116
- frame.bindArray++;
117
- }
118
- if (geometryState.indicesBuf) {
119
- geometryState.indicesBuf.bind();
120
- frame.bindArray++;
121
- }
122
- }
123
- this._lastGeometryId = geometryState.id;
124
- }
125
- if (geometryState.combineGeometry) {
126
- if (geometryState.indicesBufCombined) {
127
- gl.drawElements(geometryState.primitive, geometryState.indicesBufCombined.numItems, geometryState.indicesBufCombined.itemType, 0);
128
- frame.drawElements++;
129
- } else {
130
- // TODO: drawArrays() with VertexBufs positions
131
- }
132
- } else {
133
- if (geometryState.indicesBuf) {
134
- gl.drawElements(geometryState.primitive, geometryState.indicesBuf.numItems, geometryState.indicesBuf.itemType, 0);
135
- frame.drawElements++;
136
- } else if (geometryState.positions) {
137
- gl.drawArrays(gl.TRIANGLES, 0, geometryState.positions.numItems);
138
- frame.drawArrays++;
139
- }
140
- }
141
- };
142
-
143
- ShadowRenderer.prototype._allocate = function (mesh) {
144
- const scene = mesh.scene;
145
- const gl = scene.canvas.gl;
146
- this._program = new Program(gl, this._shaderSource);
147
- this._scene = scene;
148
- this._useCount = 0;
149
- if (this._program.errors) {
150
- this.errors = this._program.errors;
151
- return;
152
- }
153
- const program = this._program;
154
- this._uPositionsDecodeMatrix = program.getLocation("positionsDecodeMatrix");
155
- this._uModelMatrix = program.getLocation("modelMatrix");
156
- this._uShadowViewMatrix = program.getLocation("shadowViewMatrix");
157
- this._uShadowProjMatrix = program.getLocation("shadowProjMatrix");
158
- this._uSectionPlanes = {};
159
- const clips = scene._sectionPlanesState.sectionPlanes;
160
- for (let i = 0, len = clips.length; i < len; i++) {
161
- this._uSectionPlanes.push({
162
- active: program.getLocation("sectionPlaneActive" + i),
163
- pos: program.getLocation("sectionPlanePos" + i),
164
- dir: program.getLocation("sectionPlaneDir" + i)
165
- });
166
- }
167
- this._aPosition = program.getAttribute("position");
168
- this._uClippable = program.getLocation("clippable");
169
- this._uOffset = program.getLocation("offset");
170
- this._lastMaterialId = null;
171
- this._lastVertexBufsId = null;
172
- this._lastGeometryId = null;
173
- };
174
-
175
- ShadowRenderer.prototype._bindProgram = function (frame) {
176
- if (!this._program) {
177
- this._allocate(mesh);
178
- }
179
- const scene = this._scene;
180
- const gl = scene.canvas.gl;
181
- const sectionPlanesState = scene._sectionPlanesState;
182
- this._program.bind();
183
- frame.useProgram++;
184
- gl.uniformMatrix4fv(this._uShadowViewMatrix, false, frame.shadowViewMatrix);
185
- gl.uniformMatrix4fv(this._uShadowProjMatrix, false, frame.shadowProjMatrix);
186
- this._lastMaterialId = null;
187
- this._lastVertexBufsId = null;
188
- this._lastGeometryId = null;
189
- if (sectionPlanesState.getNumAllocatedSectionPlanes() > 0) {
190
- let sectionPlaneUniforms;
191
- let uSectionPlaneActive;
192
- let sectionPlane;
193
- let uSectionPlanePos;
194
- let uSectionPlaneDir;
195
- for (let i = 0, len = this._uSectionPlanes.length; i < len; i++) {
196
- sectionPlaneUniforms = this._uSectionPlanes[i];
197
- uSectionPlaneActive = sectionPlaneUniforms.active;
198
- sectionPlane = sectionPlanesState.sectionPlanes[i];
199
- if (uSectionPlaneActive) {
200
- gl.uniform1i(uSectionPlaneActive, sectionPlane.active);
201
- }
202
- uSectionPlanePos = sectionPlaneUniforms.pos;
203
- if (uSectionPlanePos) {
204
- gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);
205
- }
206
- uSectionPlaneDir = sectionPlaneUniforms.dir;
207
- if (uSectionPlaneDir) {
208
- gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);
209
- }
210
- }
211
- }
212
- };
213
-
214
- export {ShadowRenderer};
@@ -1,34 +0,0 @@
1
- /**
2
- * @private
3
- */
4
- const RENDER_PASSES = {
5
-
6
- // Skipped - suppress rendering
7
-
8
- NOT_RENDERED: 0,
9
-
10
- // Normal rendering - mutually exclusive modes
11
-
12
- COLOR_OPAQUE: 1,
13
- COLOR_TRANSPARENT: 2,
14
-
15
- // Emphasis silhouette rendering - mutually exclusive modes
16
-
17
- SILHOUETTE_HIGHLIGHTED: 3,
18
- SILHOUETTE_SELECTED: 4,
19
- SILHOUETTE_XRAYED: 5,
20
-
21
- // Edges rendering - mutually exclusive modes
22
-
23
- EDGES_COLOR_OPAQUE: 6,
24
- EDGES_COLOR_TRANSPARENT: 7,
25
- EDGES_HIGHLIGHTED: 8,
26
- EDGES_SELECTED: 9,
27
- EDGES_XRAYED: 10,
28
-
29
- // Picking
30
-
31
- PICK: 11
32
- };
33
-
34
- export {RENDER_PASSES};
@@ -1,31 +0,0 @@
1
- /**
2
- * @private
3
- */
4
- export class BindableDataTexture {
5
-
6
- constructor(gl, texture, textureWidth, textureHeight, textureData = null) {
7
- this._gl = gl;
8
- this._texture = texture;
9
- this._textureWidth = textureWidth;
10
- this._textureHeight = textureHeight;
11
- this._textureData = textureData;
12
- }
13
-
14
- bindTexture(glProgram, shaderName, glTextureUnit) {
15
- return glProgram.bindTexture(shaderName, this, glTextureUnit);
16
- }
17
-
18
- bind(unit) {
19
- this._gl.activeTexture(this._gl["TEXTURE" + unit]);
20
- this._gl.bindTexture(this._gl.TEXTURE_2D, this._texture);
21
- return true;
22
- }
23
-
24
- unbind(unit) {
25
- // This `unbind` method is ignored at the moment to allow avoiding
26
- // to rebind same texture already bound to a texture unit.
27
-
28
- // this._gl.activeTexture(this.state.gl["TEXTURE" + unit]);
29
- // this._gl.bindTexture(this.state.gl.TEXTURE_2D, null);
30
- }
31
- }