@xeokit/xeokit-sdk 2.6.85-renderers-refactor-v1 → 2.6.86-beta.0

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 (187) hide show
  1. package/dist/xeokit-sdk.cjs.js +44634 -17106
  2. package/dist/xeokit-sdk.es.js +44633 -17106
  3. package/dist/xeokit-sdk.es5.js +3582 -1519
  4. package/dist/xeokit-sdk.es5.js.map +1 -0
  5. package/dist/xeokit-sdk.min.cjs.js +8 -8
  6. package/dist/xeokit-sdk.min.es.js +8 -8
  7. package/dist/xeokit-sdk.min.es5.js +7 -7
  8. package/dist/xeokit-sdk.min.es5.js.map +1 -0
  9. package/package.json +1 -2
  10. package/src/plugins/index.js +0 -1
  11. package/src/viewer/Viewer.js +103 -55
  12. package/src/viewer/scene/canvas/Canvas.js +43 -3
  13. package/src/viewer/scene/geometry/ReadableGeometry.js +25 -0
  14. package/src/viewer/scene/lights/CubeTexture.js +13 -0
  15. package/src/viewer/scene/lights/DirLight.js +1 -2
  16. package/src/viewer/scene/lights/PointLight.js +1 -2
  17. package/src/viewer/scene/materials/Texture.js +9 -0
  18. package/src/viewer/scene/math/rtcCoords.js +38 -1
  19. package/src/viewer/scene/mesh/Mesh.js +212 -454
  20. package/src/viewer/scene/mesh/draw/DrawRenderer.js +998 -0
  21. package/src/viewer/scene/mesh/draw/DrawShaderSource.js +1504 -305
  22. package/src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js +259 -0
  23. package/src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js +160 -0
  24. package/src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js +286 -0
  25. package/src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js +263 -0
  26. package/src/viewer/scene/mesh/occlusion/OcclusionRenderer.js +221 -0
  27. package/src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js +158 -9
  28. package/src/viewer/scene/mesh/pick/PickMeshRenderer.js +223 -0
  29. package/src/viewer/scene/mesh/pick/PickMeshShaderSource.js +151 -21
  30. package/src/viewer/scene/mesh/pick/PickTriangleRenderer.js +200 -0
  31. package/src/viewer/scene/mesh/pick/PickTriangleShaderSource.js +124 -12
  32. package/src/viewer/scene/mesh/shadow/ShadowRenderer.js +214 -0
  33. package/src/viewer/scene/mesh/shadow/ShadowShaderSource.js +97 -22
  34. package/src/viewer/scene/model/RENDER_PASSES.js +34 -0
  35. package/src/viewer/scene/model/SceneModel.js +861 -245
  36. package/src/viewer/scene/model/SceneModelEntity.js +4 -4
  37. package/src/viewer/scene/model/SceneModelMesh.js +3 -3
  38. package/src/viewer/scene/model/dtx/BindableDataTexture.js +31 -0
  39. package/src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js +27 -0
  40. package/src/viewer/scene/model/dtx/lines/DTXLinesLayer.js +897 -0
  41. package/src/viewer/scene/model/dtx/lines/DTXLinesState.js +46 -0
  42. package/src/viewer/scene/model/dtx/lines/DTXLinesTextureFactory.js +411 -0
  43. package/src/viewer/scene/model/dtx/lines/dataTextureRamStats.js +49 -0
  44. package/src/viewer/scene/model/dtx/lines/rebucketPositions.js +208 -0
  45. package/src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js +389 -0
  46. package/src/viewer/scene/model/dtx/lines/renderers/DTXLinesRenderers.js +65 -0
  47. package/src/viewer/scene/model/dtx/triangles/DTXTrianglesLayer.js +1399 -0
  48. package/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js +46 -0
  49. package/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js +250 -0
  50. package/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesTextureFactory.js +518 -0
  51. package/src/viewer/scene/model/dtx/triangles/lib/dataTextureRamStats.js +54 -0
  52. package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js +639 -0
  53. package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js +464 -0
  54. package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js +423 -0
  55. package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js +431 -0
  56. package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js +345 -0
  57. package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js +436 -0
  58. package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js +466 -0
  59. package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js +437 -0
  60. package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js +460 -0
  61. package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js +437 -0
  62. package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js +307 -0
  63. package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js +472 -0
  64. package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js +474 -0
  65. package/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js +435 -0
  66. package/src/viewer/scene/model/vbo/ScratchMemory.js +63 -0
  67. package/src/viewer/scene/model/vbo/VBORenderer.js +664 -0
  68. package/src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js +704 -0
  69. package/src/viewer/scene/model/vbo/batching/lines/lib/VBOBatchingLinesBuffer.js +19 -0
  70. package/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js +318 -0
  71. package/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesColorRenderer.js +114 -0
  72. package/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesRenderers.js +99 -0
  73. package/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSilhouetteRenderer.js +124 -0
  74. package/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js +313 -0
  75. package/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js +311 -0
  76. package/src/viewer/scene/model/vbo/batching/lines/renderers/VBOSceneModelLineBatchingRenderer.js +24 -0
  77. package/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js +688 -0
  78. package/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsRenderer.js +24 -0
  79. package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsColorRenderer.js +168 -0
  80. package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsOcclusionRenderer.js +136 -0
  81. package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickDepthRenderer.js +156 -0
  82. package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickMeshRenderer.js +148 -0
  83. package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js +144 -0
  84. package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsShadowRenderer.js +107 -0
  85. package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSilhouetteRenderer.js +146 -0
  86. package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js +315 -0
  87. package/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js +305 -0
  88. package/src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesBuffer.js +24 -0
  89. package/src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js +1346 -0
  90. package/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesColorRenderer.js +131 -0
  91. package/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesEmphasisRenderer.js +135 -0
  92. package/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesRenderer.js +12 -0
  93. package/src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js +403 -0
  94. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesBatchingRenderer.js +35 -0
  95. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorRenderer.js +252 -0
  96. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorTextureRenderer.js +294 -0
  97. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesDepthRenderer.js +115 -0
  98. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesFlatColorRenderer.js +246 -0
  99. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesNormalsRenderer.js +139 -0
  100. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesOcclusionRenderer.js +125 -0
  101. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPBRRenderer.js +561 -0
  102. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickDepthRenderer.js +144 -0
  103. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickMeshRenderer.js +130 -0
  104. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsFlatRenderer.js +121 -0
  105. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsRenderer.js +131 -0
  106. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesShadowRenderer.js +107 -0
  107. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSilhouetteRenderer.js +144 -0
  108. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js +313 -0
  109. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js +312 -0
  110. package/src/viewer/scene/model/vbo/float16.js +760 -0
  111. package/src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js +711 -0
  112. package/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesColorRenderer.js +148 -0
  113. package/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderer.js +26 -0
  114. package/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderers.js +139 -0
  115. package/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSilhouetteRenderer.js +127 -0
  116. package/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js +308 -0
  117. package/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js +299 -0
  118. package/src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js +733 -0
  119. package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsColorRenderer.js +174 -0
  120. package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsDepthRenderer.js +156 -0
  121. package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsOcclusionRenderer.js +149 -0
  122. package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickDepthRenderer.js +170 -0
  123. package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickMeshRenderer.js +152 -0
  124. package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderer.js +26 -0
  125. package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js +174 -0
  126. package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsShadowRenderer.js +119 -0
  127. package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSilhouetteRenderer.js +154 -0
  128. package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js +307 -0
  129. package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js +293 -0
  130. package/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingTrianglesRenderer.js +150 -0
  131. package/src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js +1289 -0
  132. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesColorRenderer.js +135 -0
  133. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesEmphasisRenderer.js +137 -0
  134. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesRenderer.js +12 -0
  135. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js +403 -0
  136. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorRenderer.js +267 -0
  137. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorTextureRenderer.js +299 -0
  138. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesDepthRenderer.js +126 -0
  139. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatColorRenderer.js +255 -0
  140. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatNormalsRenderer.js +130 -0
  141. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesInstancingRenderer.js +32 -0
  142. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesNormalsRenderer.js +138 -0
  143. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesOcclusionRenderer.js +128 -0
  144. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPBRRenderer.js +561 -0
  145. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickDepthRenderer.js +149 -0
  146. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickMeshRenderer.js +136 -0
  147. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsFlatRenderer.js +130 -0
  148. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsRenderer.js +145 -0
  149. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesShadowRenderer.js +113 -0
  150. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSilhouetteRenderer.js +148 -0
  151. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js +319 -0
  152. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js +310 -0
  153. package/src/viewer/scene/scene/Scene.js +38 -21
  154. package/src/viewer/scene/webgl/ArrayBuf.js +20 -5
  155. package/src/viewer/scene/webgl/Attribute.js +23 -0
  156. package/src/viewer/scene/webgl/FrameContext.js +86 -14
  157. package/src/viewer/scene/webgl/Program.js +181 -0
  158. package/src/viewer/scene/webgl/RenderBuffer.js +262 -62
  159. package/src/viewer/scene/webgl/RenderBufferManager.js +34 -0
  160. package/src/viewer/scene/webgl/Renderer.js +843 -880
  161. package/src/viewer/scene/webgl/Sampler.js +18 -0
  162. package/src/viewer/scene/webgl/Shader.js +49 -0
  163. package/src/viewer/scene/webgl/occlusion/OcclusionLayer.js +132 -60
  164. package/src/viewer/scene/webgl/occlusion/OcclusionTester.js +328 -167
  165. package/src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js +324 -0
  166. package/src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js +384 -0
  167. package/src/plugins/CxConverterIFCLoaderPlugin/CxConverterIFCLoaderPlugin.js +0 -86
  168. package/src/plugins/CxConverterIFCLoaderPlugin/index.js +0 -1
  169. package/src/viewer/scene/mesh/draw/LambertShaderSource.js +0 -35
  170. package/src/viewer/scene/mesh/emphasis/EmphasisShaderSource.js +0 -34
  171. package/src/viewer/scene/model/layer/DTXLayer.js +0 -940
  172. package/src/viewer/scene/model/layer/Layer.js +0 -786
  173. package/src/viewer/scene/model/layer/VBOLayer.js +0 -1019
  174. package/src/viewer/scene/model/layer/programs/ColorProgram.js +0 -35
  175. package/src/viewer/scene/model/layer/programs/ColorTextureProgram.js +0 -46
  176. package/src/viewer/scene/model/layer/programs/DepthProgram.js +0 -11
  177. package/src/viewer/scene/model/layer/programs/EdgesProgram.js +0 -12
  178. package/src/viewer/scene/model/layer/programs/FlatColorProgram.js +0 -24
  179. package/src/viewer/scene/model/layer/programs/OcclusionProgram.js +0 -12
  180. package/src/viewer/scene/model/layer/programs/PBRProgram.js +0 -180
  181. package/src/viewer/scene/model/layer/programs/PickDepthProgram.js +0 -30
  182. package/src/viewer/scene/model/layer/programs/PickMeshProgram.js +0 -12
  183. package/src/viewer/scene/model/layer/programs/PickNormalsProgram.js +0 -18
  184. package/src/viewer/scene/model/layer/programs/ShadowProgram.js +0 -23
  185. package/src/viewer/scene/model/layer/programs/SilhouetteProgram.js +0 -15
  186. package/src/viewer/scene/model/layer/programs/SnapProgram.js +0 -28
  187. package/src/viewer/scene/webgl/WebGLRenderer.js +0 -612
@@ -1,86 +0,0 @@
1
- import { Plugin } from "../../viewer/Plugin.js";
2
- import { GLTFLoaderPlugin } from "../GLTFLoaderPlugin/GLTFLoaderPlugin.js";
3
- import { ifc2gltf } from "@creooxag/cxconverter";
4
-
5
- /**
6
- * Fetches a file from the given URL and returns its contents as text.
7
- *
8
- * @param {string} url - The URL to fetch the file from.
9
- * @returns {Promise<string>} A promise that resolves to the file contents.
10
- * @private
11
- */
12
- async function fetchFile(url) {
13
- try {
14
- const response = await fetch(url);
15
- if (!response.ok) {
16
- throw new Error(`HTTP error! Status: ${response.status}`);
17
- }
18
- return response.text();
19
- } catch (error) {
20
- console.error('Error fetching file:', error);
21
- }
22
- }
23
-
24
- /**
25
- * {@link Viewer} plugin that uses [CxConverter](https://github.com/Creoox/cxconverter) to load BIM models directly from IFC files, using its WebAssembly buid from [npm package](https://www.npmjs.com/package/@creooxag/cxconverter).
26
- *
27
- * ## Overview
28
- * The WebAssembly build of CxConverter is still in alfa stage, so it may not work as expected. This documentation will be updated as the library and the plugin evolve. The example below shows how to use the plugin:
29
- * ````javascript
30
- * import { CxConverterIFCLoaderPlugin, Viewer } from "../../dist/xeokit-sdk.es.js";
31
- * const cxConverterIFCLoaderPlugin = new CxConverterIFCLoaderPlugin(viewer);
32
- *
33
- * const sceneModel = await cxConverterIFCLoaderPlugin.load({
34
- * src: "../../assets/models/ifc/Duplex.ifc"
35
- * });
36
- * ````
37
- See the code in action [here](https://xeokit.github.io/xeokit-sdk/examples/buildings/#cxConverterIFC_vbo_Duplex).
38
- */
39
-
40
- class CxConverterIFCLoaderPlugin extends Plugin {
41
- /**
42
- * @constructor
43
- * @param {Viewer} viewer The Viewer.
44
- * @param {Object} [cfg={}] Plugin configuration.
45
- */
46
- constructor(viewer, cfg = {}) {
47
- super("ifcLoader", viewer, cfg);
48
-
49
- /**
50
- * The GLTFLoaderPlugin used internally to load the converted GLTF.
51
- * @type {GLTFLoaderPlugin}
52
- */
53
- this.gltfLoader = new GLTFLoaderPlugin(this.viewer);
54
- }
55
-
56
- /**
57
- * Loads an IFC model from the given source.
58
- *
59
- * @param {Object} [params={}] Loading parameters.
60
- * @param {string} params.src Path to an IFC file.
61
- * @param {Function} [params.progressCallback] Callback to track loading progress.
62
- * @param {Function} [params.progressTextCallback] Callback to track loading progress with text updates.
63
- * @returns {Promise<SceneModel>} A promise that resolves to the loaded SceneModel.
64
- */
65
- async load(params = {}) {
66
- if (!params.src) {
67
- this.error("load() param expected: src");
68
- }
69
- const data = await fetchFile(params.src);
70
- const { gltf, metaData } = await ifc2gltf(
71
- data,
72
- {
73
- remote: true,
74
- progressCallback: params.progressCallback,
75
- progressTextCallback: params.progressTextCallback
76
- }
77
- );
78
- const sceneModel = this.gltfLoader.load({
79
- id: "myModel",
80
- gltf: gltf,
81
- metaModelJSON: metaData
82
- });
83
- return sceneModel;
84
- }
85
- }
86
- export { CxConverterIFCLoaderPlugin };
@@ -1 +0,0 @@
1
- export * from "./CxConverterIFCLoaderPlugin.js";
@@ -1,35 +0,0 @@
1
- import {createLightSetup} from "../../webgl/WebGLRenderer.js";
2
-
3
- export const LambertShaderSource = function(meshDrawHash, programVariables, geometry, material, scene) {
4
- const lightSetup = createLightSetup(programVariables, scene._lightsState);
5
- const colorize = programVariables.createUniform("vec4", "colorize", (set, state) => set(state.meshColorize));
6
- const materialAlpha = programVariables.createUniform("float", "materialAlpha", (set, state) => set(state.material.alpha));
7
- const materialColor = programVariables.createUniform("vec3", "materialColor", (set, state) => set(state.material.color));
8
- const materialEmissive = programVariables.createUniform("vec3", "materialEmissive", (set, state) => set(state.material.emissive));
9
- const vColor = programVariables.createVarying("vec4", "vColor", () => {
10
- const attributes = geometry.attributes;
11
- const lightComponents = [
12
- lightSetup.getAmbientColor()
13
- ].concat(attributes.normal
14
- ? lightSetup.directionalLights.map(
15
- light => `(max(dot(${attributes.normal.view}, ${light.getDirection(geometry.viewMatrix, attributes.position.view)}), 0.0) * ${light.getColor()})`)
16
- : [ ]);
17
- return `${colorize} * vec4((${lightComponents.join(" + ")}) * ${materialColor} + ${materialEmissive}, ${materialAlpha});`; // TODO: How to have ambient bright enough for canvas BG but not too bright for scene?
18
- });
19
- const outColor = programVariables.createOutput("vec4", "outColor");
20
-
21
- return {
22
- getHash: () => [
23
- meshDrawHash,
24
- scene.gammaOutput ? "go" : "",
25
- lightSetup.getHash(),
26
- material._state.hash
27
- ],
28
- programName: "Lambert",
29
- canActAsBackground: true,
30
- discardPoints: true,
31
- setupPointSize: true,
32
- setsLineWidth: true,
33
- appendFragmentOutputs: (src, getGammaOutputExpression) => src.push(`${outColor} = ${getGammaOutputExpression ? getGammaOutputExpression(vColor) : vColor};`)
34
- };
35
- };
@@ -1,34 +0,0 @@
1
- import {createLightSetup} from "../../webgl/WebGLRenderer.js";
2
-
3
- export const EmphasisShaderSource = function(meshHash, programVariables, geometry, scene, isFill) {
4
- const lightSetup = isFill && createLightSetup(programVariables, scene._lightsState);
5
- const uColor = programVariables.createUniform("vec3", "uColor", (set, state) => set(isFill ? state.material.fillColor : state.material.edgeColor));
6
- const uAlpha = programVariables.createUniform("float", "uAlpha", (set, state) => set(isFill ? state.material.fillAlpha : state.material.edgeAlpha));
7
- const vColor = programVariables.createVarying("vec4", "vColor", () => {
8
- const attributes = geometry.attributes;
9
- const lightComponents = isFill && [
10
- lightSetup.getAmbientColor()
11
- ].concat(attributes.normal
12
- ? lightSetup.directionalLights.map(
13
- light => `(max(dot(${attributes.normal.view}, ${light.getDirection(geometry.viewMatrix, attributes.position.view)}), 0.0) * ${light.getColor()})`)
14
- : [ ]);
15
- // TODO: A blending mode for emphasis materials, to select add/multiply/mix
16
- // `vec4((mix(reflectedColor, ${uColor}, 0.7)), ${uAlpha})`
17
- return `vec4(${uColor}${lightComponents ? ` * (${lightComponents.join(" + ")})` : ""}, ${uAlpha})`;
18
- // `${vColor} = vec4(reflectedColor + ${uColor}, ${uAlpha})`
19
- });
20
-
21
- const outColor = programVariables.createOutput("vec4", "outColor");
22
- return {
23
- getHash: () => [
24
- meshHash,
25
- scene.gammaOutput ? "go" : "", // Gamma input not needed
26
- lightSetup && lightSetup.getHash()
27
- ],
28
- programName: isFill ? "EmphasisFill" : "EmphasisEdges",
29
- dontSetFrontFace: true,
30
- discardPoints: isFill,
31
- drawEdges: ! isFill,
32
- appendFragmentOutputs: (src, getGammaOutputExpression) => src.push(`${outColor} = ${getGammaOutputExpression ? getGammaOutputExpression(vColor) : vColor};`)
33
- };
34
- };