@headless-three/renderer 0.1.9 → 0.2.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 (244) hide show
  1. package/README.md +44 -290
  2. package/dist/gpu-output.d.ts +81 -0
  3. package/dist/gpu-output.d.ts.map +1 -0
  4. package/dist/gpu-output.js +53 -0
  5. package/dist/gpu-output.js.map +1 -0
  6. package/dist/index.d.ts +26 -770
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +30 -6226
  9. package/dist/index.js.map +1 -1
  10. package/dist/index.part-001.d.ts +95 -0
  11. package/dist/index.part-001.d.ts.map +1 -0
  12. package/dist/index.part-001.js +273 -0
  13. package/dist/index.part-001.js.map +1 -0
  14. package/dist/index.part-002.d.ts +69 -0
  15. package/dist/index.part-002.d.ts.map +1 -0
  16. package/dist/index.part-002.js +211 -0
  17. package/dist/index.part-002.js.map +1 -0
  18. package/dist/index.part-003.d.ts +105 -0
  19. package/dist/index.part-003.d.ts.map +1 -0
  20. package/dist/index.part-003.js +270 -0
  21. package/dist/index.part-003.js.map +1 -0
  22. package/dist/index.part-004.d.ts +78 -0
  23. package/dist/index.part-004.d.ts.map +1 -0
  24. package/dist/index.part-004.js +390 -0
  25. package/dist/index.part-004.js.map +1 -0
  26. package/dist/index.part-005.d.ts +75 -0
  27. package/dist/index.part-005.d.ts.map +1 -0
  28. package/dist/index.part-005.js +236 -0
  29. package/dist/index.part-005.js.map +1 -0
  30. package/dist/index.part-006.d.ts +105 -0
  31. package/dist/index.part-006.d.ts.map +1 -0
  32. package/dist/index.part-006.js +262 -0
  33. package/dist/index.part-006.js.map +1 -0
  34. package/dist/index.part-007.d.ts +112 -0
  35. package/dist/index.part-007.d.ts.map +1 -0
  36. package/dist/index.part-007.js +358 -0
  37. package/dist/index.part-007.js.map +1 -0
  38. package/dist/index.part-008.d.ts +238 -0
  39. package/dist/index.part-008.d.ts.map +1 -0
  40. package/dist/index.part-008.js +454 -0
  41. package/dist/index.part-008.js.map +1 -0
  42. package/dist/index.part-009.d.ts +46 -0
  43. package/dist/index.part-009.d.ts.map +1 -0
  44. package/dist/index.part-009.js +379 -0
  45. package/dist/index.part-009.js.map +1 -0
  46. package/dist/index.part-010.d.ts +23 -0
  47. package/dist/index.part-010.d.ts.map +1 -0
  48. package/dist/index.part-010.js +245 -0
  49. package/dist/index.part-010.js.map +1 -0
  50. package/dist/index.part-011.d.ts +21 -0
  51. package/dist/index.part-011.d.ts.map +1 -0
  52. package/dist/index.part-011.js +361 -0
  53. package/dist/index.part-011.js.map +1 -0
  54. package/dist/index.part-012.d.ts +115 -0
  55. package/dist/index.part-012.d.ts.map +1 -0
  56. package/dist/index.part-012.js +298 -0
  57. package/dist/index.part-012.js.map +1 -0
  58. package/dist/index.part-013.d.ts +37 -0
  59. package/dist/index.part-013.d.ts.map +1 -0
  60. package/dist/index.part-013.js +341 -0
  61. package/dist/index.part-013.js.map +1 -0
  62. package/dist/index.part-014.d.ts +43 -0
  63. package/dist/index.part-014.d.ts.map +1 -0
  64. package/dist/index.part-014.js +441 -0
  65. package/dist/index.part-014.js.map +1 -0
  66. package/dist/index.part-015.d.ts +45 -0
  67. package/dist/index.part-015.d.ts.map +1 -0
  68. package/dist/index.part-015.js +432 -0
  69. package/dist/index.part-015.js.map +1 -0
  70. package/dist/index.part-016.d.ts +55 -0
  71. package/dist/index.part-016.d.ts.map +1 -0
  72. package/dist/index.part-016.js +382 -0
  73. package/dist/index.part-016.js.map +1 -0
  74. package/dist/index.part-017.d.ts +55 -0
  75. package/dist/index.part-017.d.ts.map +1 -0
  76. package/dist/index.part-017.js +436 -0
  77. package/dist/index.part-017.js.map +1 -0
  78. package/dist/index.part-018.d.ts +34 -0
  79. package/dist/index.part-018.d.ts.map +1 -0
  80. package/dist/index.part-018.js +365 -0
  81. package/dist/index.part-018.js.map +1 -0
  82. package/dist/index.part-019.d.ts +29 -0
  83. package/dist/index.part-019.d.ts.map +1 -0
  84. package/dist/index.part-019.js +261 -0
  85. package/dist/index.part-019.js.map +1 -0
  86. package/dist/index.part-020.d.ts +37 -0
  87. package/dist/index.part-020.d.ts.map +1 -0
  88. package/dist/index.part-020.js +388 -0
  89. package/dist/index.part-020.js.map +1 -0
  90. package/dist/index.part-021.d.ts +10 -0
  91. package/dist/index.part-021.d.ts.map +1 -0
  92. package/dist/index.part-021.js +142 -0
  93. package/dist/index.part-021.js.map +1 -0
  94. package/dist/loaders.d.ts +27 -91
  95. package/dist/loaders.d.ts.map +1 -1
  96. package/dist/loaders.js +22 -855
  97. package/dist/loaders.js.map +1 -1
  98. package/dist/loaders.part-001.d.ts +163 -0
  99. package/dist/loaders.part-001.d.ts.map +1 -0
  100. package/dist/loaders.part-001.js +277 -0
  101. package/dist/loaders.part-001.js.map +1 -0
  102. package/dist/loaders.part-002.d.ts +33 -0
  103. package/dist/loaders.part-002.d.ts.map +1 -0
  104. package/dist/loaders.part-002.js +511 -0
  105. package/dist/loaders.part-002.js.map +1 -0
  106. package/dist/loaders.part-003.d.ts +23 -0
  107. package/dist/loaders.part-003.d.ts.map +1 -0
  108. package/dist/loaders.part-003.js +138 -0
  109. package/dist/loaders.part-003.js.map +1 -0
  110. package/dist/materials.d.ts +33 -49
  111. package/dist/materials.d.ts.map +1 -1
  112. package/dist/materials.js +39 -4339
  113. package/dist/materials.js.map +1 -1
  114. package/dist/materials.part-001.d.ts +153 -0
  115. package/dist/materials.part-001.d.ts.map +1 -0
  116. package/dist/materials.part-001.js +347 -0
  117. package/dist/materials.part-001.js.map +1 -0
  118. package/dist/materials.part-002.d.ts +46 -0
  119. package/dist/materials.part-002.d.ts.map +1 -0
  120. package/dist/materials.part-002.js +299 -0
  121. package/dist/materials.part-002.js.map +1 -0
  122. package/dist/materials.part-003.d.ts +14 -0
  123. package/dist/materials.part-003.d.ts.map +1 -0
  124. package/dist/materials.part-003.js +438 -0
  125. package/dist/materials.part-003.js.map +1 -0
  126. package/dist/materials.part-004.d.ts +30 -0
  127. package/dist/materials.part-004.d.ts.map +1 -0
  128. package/dist/materials.part-004.js +464 -0
  129. package/dist/materials.part-004.js.map +1 -0
  130. package/dist/materials.part-005.d.ts +38 -0
  131. package/dist/materials.part-005.d.ts.map +1 -0
  132. package/dist/materials.part-005.js +366 -0
  133. package/dist/materials.part-005.js.map +1 -0
  134. package/dist/materials.part-006.d.ts +18 -0
  135. package/dist/materials.part-006.d.ts.map +1 -0
  136. package/dist/materials.part-006.js +391 -0
  137. package/dist/materials.part-006.js.map +1 -0
  138. package/dist/materials.part-007.d.ts +24 -0
  139. package/dist/materials.part-007.d.ts.map +1 -0
  140. package/dist/materials.part-007.js +467 -0
  141. package/dist/materials.part-007.js.map +1 -0
  142. package/dist/materials.part-008.d.ts +95 -0
  143. package/dist/materials.part-008.d.ts.map +1 -0
  144. package/dist/materials.part-008.js +404 -0
  145. package/dist/materials.part-008.js.map +1 -0
  146. package/dist/materials.part-009.d.ts +89 -0
  147. package/dist/materials.part-009.d.ts.map +1 -0
  148. package/dist/materials.part-009.js +412 -0
  149. package/dist/materials.part-009.js.map +1 -0
  150. package/dist/materials.part-010.d.ts +46 -0
  151. package/dist/materials.part-010.d.ts.map +1 -0
  152. package/dist/materials.part-010.js +375 -0
  153. package/dist/materials.part-010.js.map +1 -0
  154. package/dist/materials.part-011.d.ts +25 -0
  155. package/dist/materials.part-011.d.ts.map +1 -0
  156. package/dist/materials.part-011.js +435 -0
  157. package/dist/materials.part-011.js.map +1 -0
  158. package/dist/materials.part-012.d.ts +15 -0
  159. package/dist/materials.part-012.d.ts.map +1 -0
  160. package/dist/materials.part-012.js +229 -0
  161. package/dist/materials.part-012.js.map +1 -0
  162. package/dist/scene.d.ts +19 -279
  163. package/dist/scene.d.ts.map +1 -1
  164. package/dist/scene.js +21 -3931
  165. package/dist/scene.js.map +1 -1
  166. package/dist/scene.part-001.d.ts +375 -0
  167. package/dist/scene.part-001.d.ts.map +1 -0
  168. package/dist/scene.part-001.js +20 -0
  169. package/dist/scene.part-001.js.map +1 -0
  170. package/dist/scene.part-002.d.ts +28 -0
  171. package/dist/scene.part-002.d.ts.map +1 -0
  172. package/dist/scene.part-002.js +311 -0
  173. package/dist/scene.part-002.js.map +1 -0
  174. package/dist/scene.part-003.d.ts +26 -0
  175. package/dist/scene.part-003.d.ts.map +1 -0
  176. package/dist/scene.part-003.js +384 -0
  177. package/dist/scene.part-003.js.map +1 -0
  178. package/dist/scene.part-004.d.ts +24 -0
  179. package/dist/scene.part-004.d.ts.map +1 -0
  180. package/dist/scene.part-004.js +287 -0
  181. package/dist/scene.part-004.js.map +1 -0
  182. package/dist/scene.part-005.d.ts +37 -0
  183. package/dist/scene.part-005.d.ts.map +1 -0
  184. package/dist/scene.part-005.js +350 -0
  185. package/dist/scene.part-005.js.map +1 -0
  186. package/dist/scene.part-006.d.ts +25 -0
  187. package/dist/scene.part-006.d.ts.map +1 -0
  188. package/dist/scene.part-006.js +362 -0
  189. package/dist/scene.part-006.js.map +1 -0
  190. package/dist/scene.part-007.d.ts +36 -0
  191. package/dist/scene.part-007.d.ts.map +1 -0
  192. package/dist/scene.part-007.js +417 -0
  193. package/dist/scene.part-007.js.map +1 -0
  194. package/dist/scene.part-008.d.ts +78 -0
  195. package/dist/scene.part-008.d.ts.map +1 -0
  196. package/dist/scene.part-008.js +416 -0
  197. package/dist/scene.part-008.js.map +1 -0
  198. package/dist/scene.part-009.d.ts +25 -0
  199. package/dist/scene.part-009.d.ts.map +1 -0
  200. package/dist/scene.part-009.js +330 -0
  201. package/dist/scene.part-009.js.map +1 -0
  202. package/dist/scene.part-010.d.ts +32 -0
  203. package/dist/scene.part-010.d.ts.map +1 -0
  204. package/dist/scene.part-010.js +336 -0
  205. package/dist/scene.part-010.js.map +1 -0
  206. package/dist/scene.part-011.d.ts +100 -0
  207. package/dist/scene.part-011.d.ts.map +1 -0
  208. package/dist/scene.part-011.js +262 -0
  209. package/dist/scene.part-011.js.map +1 -0
  210. package/dist/scene.part-012.d.ts +48 -0
  211. package/dist/scene.part-012.d.ts.map +1 -0
  212. package/dist/scene.part-012.js +357 -0
  213. package/dist/scene.part-012.js.map +1 -0
  214. package/dist/scene.part-013.d.ts +51 -0
  215. package/dist/scene.part-013.d.ts.map +1 -0
  216. package/dist/scene.part-013.js +368 -0
  217. package/dist/scene.part-013.js.map +1 -0
  218. package/dist/scene.part-014.d.ts +16 -0
  219. package/dist/scene.part-014.d.ts.map +1 -0
  220. package/dist/scene.part-014.js +112 -0
  221. package/dist/scene.part-014.js.map +1 -0
  222. package/dist/types.d.ts +53 -1564
  223. package/dist/types.d.ts.map +1 -1
  224. package/dist/types.js +4 -1
  225. package/dist/types.js.map +1 -1
  226. package/dist/types.part-001.d.ts +386 -0
  227. package/dist/types.part-001.d.ts.map +1 -0
  228. package/dist/types.part-001.js +4 -0
  229. package/dist/types.part-001.js.map +1 -0
  230. package/dist/types.part-002.d.ts +407 -0
  231. package/dist/types.part-002.d.ts.map +1 -0
  232. package/dist/types.part-002.js +3 -0
  233. package/dist/types.part-002.js.map +1 -0
  234. package/dist/types.part-003.d.ts +427 -0
  235. package/dist/types.part-003.d.ts.map +1 -0
  236. package/dist/types.part-003.js +3 -0
  237. package/dist/types.part-003.js.map +1 -0
  238. package/dist/types.part-004.d.ts +351 -0
  239. package/dist/types.part-004.d.ts.map +1 -0
  240. package/dist/types.part-004.js +3 -0
  241. package/dist/types.part-004.js.map +1 -0
  242. package/native.d.ts +40 -0
  243. package/native.js +53 -52
  244. package/package.json +16 -8
@@ -0,0 +1,362 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.optionalSceneBoolean = optionalSceneBoolean;
4
+ exports.pointVertexColor = pointVertexColor;
5
+ exports.effectiveGroups = effectiveGroups;
6
+ exports.geometryDrawRangeStart = geometryDrawRangeStart;
7
+ exports.geometryDrawRangeCount = geometryDrawRangeCount;
8
+ exports.geometryGroupNonNegativeInteger = geometryGroupNonNegativeInteger;
9
+ exports.appendLineOrPoints = appendLineOrPoints;
10
+ exports.thickLineAttributes = thickLineAttributes;
11
+ exports.validPositionIndex = validPositionIndex;
12
+ exports.pushThickLineVertex = pushThickLineVertex;
13
+ exports.pushRepeatedVec2 = pushRepeatedVec2;
14
+ exports.pushRepeatedColor = pushRepeatedColor;
15
+ exports.linePixelWorldSize = linePixelWorldSize;
16
+ exports.thickLineCenter = thickLineCenter;
17
+ const math_1 = require("./math");
18
+ const attributes_1 = require("./attributes");
19
+ const materials_1 = require("./materials");
20
+ const scene_part_003_1 = require("./scene.part-003");
21
+ const scene_part_004_1 = require("./scene.part-004");
22
+ const scene_part_005_1 = require("./scene.part-005");
23
+ const scene_part_007_1 = require("./scene.part-007");
24
+ const scene_part_008_1 = require("./scene.part-008");
25
+ const scene_part_009_1 = require("./scene.part-009");
26
+ const scene_part_010_1 = require("./scene.part-010");
27
+ const scene_part_011_1 = require("./scene.part-011");
28
+ const scene_part_014_1 = require("./scene.part-014");
29
+ function optionalSceneBoolean(value, label) {
30
+ if (value == null)
31
+ return undefined;
32
+ if (typeof value === 'boolean')
33
+ return value;
34
+ throw new TypeError(`${label} must be a boolean.`);
35
+ }
36
+ function pointVertexColor(attribute, materialColor, pointIndex, instanceIndex, label = 'geometry.attributes.color') {
37
+ const sourceIndex = (0, scene_part_009_1.isInstancedAttribute)(attribute)
38
+ ? (0, scene_part_009_1.instancedAttributeIndex)(attribute, instanceIndex, label)
39
+ : pointIndex;
40
+ return [
41
+ (0, math_1.clamp01)((0, attributes_1.attributeComponent)(attribute, sourceIndex, 0, label) * materialColor[0]),
42
+ (0, math_1.clamp01)((0, attributes_1.attributeComponent)(attribute, sourceIndex, 1, label) * materialColor[1]),
43
+ (0, math_1.clamp01)((0, attributes_1.attributeComponent)(attribute, sourceIndex, 2, label) * materialColor[2]),
44
+ (0, math_1.clamp01)((attribute.itemSize && attribute.itemSize >= 4 ? (0, attributes_1.attributeComponent)(attribute, sourceIndex, 3, label) : 1) * materialColor[3]),
45
+ ];
46
+ }
47
+ function effectiveGroups(geometry, index, vertexCount) {
48
+ const range = geometry.drawRange ?? {};
49
+ if (range != null && (typeof range !== 'object' || Array.isArray(range))) {
50
+ throw new TypeError('geometry.drawRange must be an object.');
51
+ }
52
+ const maxCount = index ? index.length : vertexCount;
53
+ const drawStart = (0, math_1.clampInteger)(geometryDrawRangeStart(range.start), 0, maxCount);
54
+ const requestedCount = geometryDrawRangeCount(range.count, maxCount);
55
+ const drawEnd = (0, math_1.clampInteger)(drawStart + requestedCount, drawStart, maxCount);
56
+ if (geometry.groups != null && !Array.isArray(geometry.groups)) {
57
+ throw new TypeError('geometry.groups must be an array.');
58
+ }
59
+ const sourceGroups = Array.isArray(geometry.groups) && geometry.groups.length
60
+ ? geometry.groups
61
+ : null;
62
+ if (!sourceGroups) {
63
+ return [{ start: drawStart, count: drawEnd - drawStart, materialIndex: 0 }];
64
+ }
65
+ const groups = [];
66
+ for (let groupIndex = 0; groupIndex < sourceGroups.length; groupIndex += 1) {
67
+ const group = sourceGroups[groupIndex];
68
+ if (!group || typeof group !== 'object' || Array.isArray(group)) {
69
+ throw new TypeError(`geometry.groups[${groupIndex}] must be an object.`);
70
+ }
71
+ const groupStart = geometryGroupNonNegativeInteger(group.start, `geometry.groups[${groupIndex}].start`);
72
+ const groupCount = geometryGroupNonNegativeInteger(group.count, `geometry.groups[${groupIndex}].count`);
73
+ const groupMaterialIndex = group.materialIndex == null
74
+ ? 0
75
+ : geometryGroupNonNegativeInteger(group.materialIndex, `geometry.groups[${groupIndex}].materialIndex`);
76
+ const start = Math.max(drawStart, (0, math_1.clampInteger)(groupStart, 0, maxCount));
77
+ const end = Math.min(drawEnd, (0, math_1.clampInteger)(groupStart + groupCount, 0, maxCount));
78
+ if (end > start) {
79
+ groups.push({
80
+ start,
81
+ count: end - start,
82
+ materialIndex: groupMaterialIndex,
83
+ });
84
+ }
85
+ }
86
+ return groups;
87
+ }
88
+ function geometryDrawRangeStart(value) {
89
+ if (value == null)
90
+ return 0;
91
+ return geometryGroupNonNegativeInteger(value, 'geometry.drawRange.start');
92
+ }
93
+ function geometryDrawRangeCount(value, fallback) {
94
+ if (value == null || value === Infinity)
95
+ return fallback;
96
+ return geometryGroupNonNegativeInteger(value, 'geometry.drawRange.count');
97
+ }
98
+ function geometryGroupNonNegativeInteger(value, label) {
99
+ if (typeof value === 'number' && Number.isFinite(value) && Number.isInteger(value) && value >= 0) {
100
+ return value;
101
+ }
102
+ throw new TypeError(`${label} must be a non-negative integer.`);
103
+ }
104
+ /**
105
+ * Emit a `NativeSceneMesh` with `topology: 'lines'` or `'points'` for
106
+ * `THREE.Line` / `THREE.LineSegments` / `THREE.LineLoop` / `THREE.Points`.
107
+ * Lines are always expanded to a LineList (pairs of vertex indices) so the
108
+ * Rust side only has to deal with one line topology.
109
+ */
110
+ function appendLineOrPoints(object, camera, meshes, topology, groupOrder, viewportHeight, clippingContext, localClippingEnabled, materialContext, overrideMaterial, cache, callbackContext) {
111
+ (0, scene_part_005_1.validateObjectShadowFlags)(object);
112
+ const objectCastsShadow = topology === 'lines' && (0, scene_part_005_1.optionalObjectBoolean)(object.castShadow, 'object.castShadow') === true;
113
+ const geometry = object.geometry;
114
+ const geometryExtraction = (0, scene_part_003_1.meshGeometryExtraction)(geometry, cache);
115
+ if (!geometryExtraction)
116
+ return;
117
+ const { position, positions, uvChannels, uvs, vertexColors, index, sourceIndex, groups, instancedGeometryCount, instancedPositionOffset, instancedPositionScale, } = geometryExtraction;
118
+ const vertexCount = position.count;
119
+ const indexAttr = index;
120
+ for (const group of groups) {
121
+ const material = (0, scene_part_003_1.materialForObjectGroup)(object, group.materialIndex, overrideMaterial);
122
+ if (material?.visible === false)
123
+ continue;
124
+ (0, scene_part_004_1.invokeObjectRenderCallback)(object.onBeforeRender, 'onBeforeRender', callbackContext, object, camera, geometry, material, group);
125
+ const uvStreams = topology === 'lines'
126
+ ? (0, scene_part_010_1.textureUvStreamsForMapAlphaMaterial)(uvChannels, material)
127
+ : { uvs: uvChannels[0], uvs2: (0, scene_part_011_1.secondaryUvsForMaterial)(uvChannels, material) };
128
+ let indices = null;
129
+ let outputPositions = positions;
130
+ let outputUvs = topology === 'lines' ? uvStreams.uvs?.values : undefined;
131
+ let outputSecondaryUvs = topology === 'lines' ? uvStreams.uvs2?.values : undefined;
132
+ let outputColors;
133
+ let thickCenter;
134
+ const color = (0, materials_1.materialColor)(material, materialContext);
135
+ const useVertexColors = vertexColors && material?.vertexColors !== false;
136
+ const pbrProps = (0, materials_1.extractPbrProperties)(material, materialContext);
137
+ (0, scene_part_009_1.assertSupportedCustomFragmentInstancedAttributes)(geometry, pbrProps);
138
+ if (topology === 'lines') {
139
+ pbrProps.alphaMapUsesUv2 = uvStreams.alphaMapUsesUv2;
140
+ }
141
+ const textureInfo = (0, materials_1.extractTextureData)(material, materialContext);
142
+ const drawStart = group.start;
143
+ const drawEnd = group.start + group.count;
144
+ if (topology === 'lines') {
145
+ (0, scene_part_008_1.validateLineMaterialCompatibilityHints)(material);
146
+ }
147
+ const lineWidth = (0, scene_part_008_1.positiveMaterialOrObjectNumber)(material?.linewidth, 'material.linewidth', 1);
148
+ const thickLine = topology === 'lines' && lineWidth > 1;
149
+ if (topology === 'lines') {
150
+ const source = sourceIndex;
151
+ if (material?.isLineDashedMaterial === true) {
152
+ const lineDistance = (0, attributes_1.getAttribute)(geometry, 'lineDistance');
153
+ const dashed = instancedGeometryCount > 1 || instancedPositionOffset || instancedPositionScale
154
+ ? (0, scene_part_011_1.dashedLineAttributesForInstancesWithCache)(cache, geometry, position, positions, uvStreams.uvs, uvStreams.uvs2, useVertexColors ? vertexColors : undefined, color, source, drawStart, drawEnd, object, lineDistance, material, instancedGeometryCount, instancedPositionOffset, instancedPositionScale)
155
+ : (0, scene_part_011_1.dashedLineAttributesWithCache)(cache, geometry, position, positions, uvStreams.uvs, uvStreams.uvs2, useVertexColors ? (0, attributes_1.readColorAttribute)(vertexColors, color, 'geometry.attributes.color') : undefined, source, drawStart, drawEnd, object, lineDistance, material);
156
+ if (dashed.positions.length < 6)
157
+ continue;
158
+ outputPositions = dashed.positions;
159
+ outputUvs = dashed.uvs;
160
+ outputSecondaryUvs = dashed.uvs2;
161
+ outputColors = dashed.colors;
162
+ indices = (0, scene_part_014_1.rangeIndices)(dashed.positions.length / 3);
163
+ if (thickLine) {
164
+ const transform = (0, math_1.matrixElements)(object.matrixWorld, 'object.matrixWorld');
165
+ const thick = thickLineAttributes(outputPositions, outputUvs, outputSecondaryUvs, outputColors, indices, transform, camera, viewportHeight, lineWidth);
166
+ if (thick.positions.length < 12)
167
+ continue;
168
+ outputPositions = thick.positions;
169
+ outputUvs = thick.uvs;
170
+ outputSecondaryUvs = thick.uvs2;
171
+ outputColors = thick.colors;
172
+ indices = thick.indices;
173
+ thickCenter = thick.center;
174
+ }
175
+ else {
176
+ indices = null;
177
+ }
178
+ }
179
+ else {
180
+ indices = (0, scene_part_014_1.expandLineIndices)(source, drawStart, drawEnd, object);
181
+ if (indices.length < 2)
182
+ continue;
183
+ if (instancedGeometryCount > 1 || instancedPositionOffset || instancedPositionScale) {
184
+ outputPositions = (0, scene_part_009_1.expandVec3ValuesForInstancesWithCache)(cache, geometry, position, positions, 0, vertexCount, instancedGeometryCount, instancedPositionOffset, instancedPositionScale);
185
+ outputUvs = uvStreams.uvs ? (0, scene_part_009_1.expandUvChannelForInstancesWithCache)(cache, geometry, uvStreams.uvs, 0, vertexCount, instancedGeometryCount) : undefined;
186
+ outputSecondaryUvs = uvStreams.uvs2 ? (0, scene_part_009_1.expandUvChannelForInstancesWithCache)(cache, geometry, uvStreams.uvs2, 0, vertexCount, instancedGeometryCount) : undefined;
187
+ indices = (0, scene_part_010_1.expandIndicesForInstances)(indices, vertexCount, instancedGeometryCount);
188
+ }
189
+ if (thickLine) {
190
+ const transform = (0, math_1.matrixElements)(object.matrixWorld, 'object.matrixWorld');
191
+ const thick = thickLineAttributes(outputPositions, outputUvs, outputSecondaryUvs, useVertexColors ? outputColors ?? (0, scene_part_010_1.expandColorAttributeForInstancesWithCache)(cache, geometry, vertexColors, color, 0, vertexCount, instancedGeometryCount) : undefined, indices, transform, camera, viewportHeight, lineWidth);
192
+ if (thick.positions.length < 12)
193
+ continue;
194
+ outputPositions = thick.positions;
195
+ outputUvs = thick.uvs;
196
+ outputSecondaryUvs = thick.uvs2;
197
+ outputColors = thick.colors;
198
+ indices = thick.indices;
199
+ thickCenter = thick.center;
200
+ }
201
+ }
202
+ }
203
+ else if (indexAttr) {
204
+ indices = indexAttr.slice(drawStart, drawEnd);
205
+ if (indices.length === 0)
206
+ continue;
207
+ }
208
+ if (useVertexColors && material?.isLineDashedMaterial !== true && !thickLine) {
209
+ outputColors = (0, scene_part_010_1.expandColorAttributeForInstancesWithCache)(cache, geometry, vertexColors, color, 0, vertexCount, instancedGeometryCount);
210
+ }
211
+ const sortInfo = (0, scene_part_007_1.sortInfoForObject)(object, material, camera, meshes.length, groupOrder, undefined, geometry, group);
212
+ if (thickCenter && camera) {
213
+ sortInfo.keys.sortZ = (0, scene_part_007_1.projectedWorldPointZ)(thickCenter, camera);
214
+ sortInfo.item.z = sortInfo.keys.sortZ;
215
+ }
216
+ const clipping = (0, scene_part_007_1.clippingState)(clippingContext, material, localClippingEnabled);
217
+ (0, scene_part_007_1.pushMesh)(meshes, {
218
+ positions: outputPositions,
219
+ indices: indices ?? undefined,
220
+ uvs: topology === 'lines' ? outputUvs : undefined,
221
+ uvs2: topology === 'lines' ? outputSecondaryUvs : undefined,
222
+ color,
223
+ colors: outputColors,
224
+ texture: textureInfo?.data,
225
+ textureWidth: textureInfo?.width ?? undefined,
226
+ textureHeight: textureInfo?.height ?? undefined,
227
+ textureWrapS: textureInfo?.wrapS,
228
+ textureWrapT: textureInfo?.wrapT,
229
+ textureMagFilter: textureInfo?.magFilter,
230
+ textureMinFilter: textureInfo?.minFilter,
231
+ textureAnisotropy: textureInfo?.anisotropy,
232
+ textureTransform: textureInfo?.transform,
233
+ textureColorSpace: textureInfo?.colorSpace,
234
+ textureUsesUv2: topology === 'lines' ? uvStreams.textureUsesUv2 : textureInfo?.usesUv2,
235
+ transform: thickLine ? math_1.IDENTITY_4X4.slice() : (0, math_1.matrixElements)(object.matrixWorld, 'object.matrixWorld'),
236
+ transparent: material?.transparent === true || (material?.opacity != null && material.opacity < 1),
237
+ alphaTest: material && Number.isFinite(material.alphaTest) && material.alphaTest > 0 ? material.alphaTest : undefined,
238
+ clipShadows: (0, scene_part_007_1.clipShadowsForMaterial)(material, clippingContext),
239
+ ...pbrProps,
240
+ ...(thickLine ? { side: 'double' } : {}),
241
+ shadingModel: 'basic',
242
+ topology: thickLine ? 'triangles' : topology,
243
+ castShadow: objectCastsShadow ? true : undefined,
244
+ ...clipping,
245
+ ...sortInfo.keys,
246
+ }, sortInfo.item);
247
+ (0, scene_part_004_1.invokeObjectRenderCallback)(object.onAfterRender, 'onAfterRender', callbackContext, object, camera, geometry, material, group);
248
+ }
249
+ }
250
+ function thickLineAttributes(positions, uvs, uvs2, colors, lineIndices, transform, camera, viewportHeight, lineWidth) {
251
+ const axes = (0, scene_part_008_1.cameraBillboardAxes)(camera);
252
+ const outputPositions = [];
253
+ const outputUvs = uvs ? [] : undefined;
254
+ const outputUvs2 = uvs2 ? [] : undefined;
255
+ const outputColors = colors ? [] : undefined;
256
+ const outputIndices = [];
257
+ for (let i = 0; i + 1 < lineIndices.length; i += 2) {
258
+ const aIndex = lineIndices[i];
259
+ const bIndex = lineIndices[i + 1];
260
+ if (!validPositionIndex(positions, aIndex) || !validPositionIndex(positions, bIndex))
261
+ continue;
262
+ const a = (0, scene_part_008_1.transformPoint)(transform, [
263
+ positions[aIndex * 3],
264
+ positions[aIndex * 3 + 1],
265
+ positions[aIndex * 3 + 2],
266
+ ]);
267
+ const b = (0, scene_part_008_1.transformPoint)(transform, [
268
+ positions[bIndex * 3],
269
+ positions[bIndex * 3 + 1],
270
+ positions[bIndex * 3 + 2],
271
+ ]);
272
+ const dx = b[0] - a[0];
273
+ const dy = b[1] - a[1];
274
+ const dz = b[2] - a[2];
275
+ if (Math.hypot(dx, dy, dz) <= 1e-8)
276
+ continue;
277
+ const screenDx = dx * axes.right[0] + dy * axes.right[1] + dz * axes.right[2];
278
+ const screenDy = dx * axes.up[0] + dy * axes.up[1] + dz * axes.up[2];
279
+ const side = (0, scene_part_008_1.normalizeVec3)([
280
+ -screenDy * axes.right[0] + screenDx * axes.up[0],
281
+ -screenDy * axes.right[1] + screenDx * axes.up[1],
282
+ -screenDy * axes.right[2] + screenDx * axes.up[2],
283
+ ], axes.up);
284
+ const midpoint = [
285
+ (a[0] + b[0]) * 0.5,
286
+ (a[1] + b[1]) * 0.5,
287
+ (a[2] + b[2]) * 0.5,
288
+ ];
289
+ const halfWidth = linePixelWorldSize(lineWidth, midpoint, camera, viewportHeight) * 0.5;
290
+ if (halfWidth <= 0)
291
+ continue;
292
+ const vertexBase = outputPositions.length / 3;
293
+ pushThickLineVertex(outputPositions, a, side, -halfWidth);
294
+ pushThickLineVertex(outputPositions, a, side, halfWidth);
295
+ pushThickLineVertex(outputPositions, b, side, halfWidth);
296
+ pushThickLineVertex(outputPositions, b, side, -halfWidth);
297
+ outputIndices.push(vertexBase, vertexBase + 1, vertexBase + 2, vertexBase, vertexBase + 2, vertexBase + 3);
298
+ pushRepeatedVec2(outputUvs, uvs, aIndex);
299
+ pushRepeatedVec2(outputUvs, uvs, aIndex);
300
+ pushRepeatedVec2(outputUvs, uvs, bIndex);
301
+ pushRepeatedVec2(outputUvs, uvs, bIndex);
302
+ pushRepeatedVec2(outputUvs2, uvs2, aIndex);
303
+ pushRepeatedVec2(outputUvs2, uvs2, aIndex);
304
+ pushRepeatedVec2(outputUvs2, uvs2, bIndex);
305
+ pushRepeatedVec2(outputUvs2, uvs2, bIndex);
306
+ pushRepeatedColor(outputColors, colors, aIndex);
307
+ pushRepeatedColor(outputColors, colors, aIndex);
308
+ pushRepeatedColor(outputColors, colors, bIndex);
309
+ pushRepeatedColor(outputColors, colors, bIndex);
310
+ }
311
+ return {
312
+ center: thickLineCenter(outputPositions),
313
+ colors: outputColors,
314
+ indices: outputIndices,
315
+ positions: outputPositions,
316
+ uvs: outputUvs,
317
+ uvs2: outputUvs2,
318
+ };
319
+ }
320
+ function validPositionIndex(positions, index) {
321
+ return Number.isInteger(index) && index >= 0 && index * 3 + 2 < positions.length;
322
+ }
323
+ function pushThickLineVertex(positions, point, side, offset) {
324
+ positions.push(point[0] + side[0] * offset, point[1] + side[1] * offset, point[2] + side[2] * offset);
325
+ }
326
+ function pushRepeatedVec2(target, source, index) {
327
+ if (!target || !source || index * 2 + 1 >= source.length)
328
+ return;
329
+ target.push(source[index * 2], source[index * 2 + 1]);
330
+ }
331
+ function pushRepeatedColor(target, source, index) {
332
+ if (!target || !source || index * 4 + 3 >= source.length)
333
+ return;
334
+ target.push(source[index * 4], source[index * 4 + 1], source[index * 4 + 2], source[index * 4 + 3]);
335
+ }
336
+ function linePixelWorldSize(lineWidth, worldPosition, camera, viewportHeight) {
337
+ const projectionY = Math.abs((0, scene_part_008_1.finiteOrDefault)(camera?.projectionMatrix?.elements?.[5], 1));
338
+ if (projectionY <= 0)
339
+ return 0;
340
+ if (camera?.isPerspectiveCamera === true) {
341
+ const viewZ = (0, scene_part_008_1.viewSpaceZ)(worldPosition, camera);
342
+ const depth = Number.isFinite(viewZ) ? Math.max(0.0001, Math.abs(viewZ)) : 1;
343
+ return lineWidth * 2 * depth / Math.max(1, viewportHeight) / projectionY;
344
+ }
345
+ return lineWidth * 2 / Math.max(1, viewportHeight) / projectionY;
346
+ }
347
+ function thickLineCenter(positions) {
348
+ if (positions.length < 3)
349
+ return [0, 0, 0];
350
+ let x = 0;
351
+ let y = 0;
352
+ let z = 0;
353
+ let count = 0;
354
+ for (let i = 0; i + 2 < positions.length; i += 3) {
355
+ x += positions[i];
356
+ y += positions[i + 1];
357
+ z += positions[i + 2];
358
+ count += 1;
359
+ }
360
+ return count > 0 ? [x / count, y / count, z / count] : [0, 0, 0];
361
+ }
362
+ //# sourceMappingURL=scene.part-006.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scene.part-006.js","sourceRoot":"","sources":["../api/scene.part-006.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { ThreeObject3DLike, ThreeBufferGeometryLike, ThreeCameraLike, ThreeMaterialLike, NativeSceneMesh, GeometryGroup, PbrProperties, RenderSortFunction, RenderSortItem } from './types';
2
+ import { ClippingContext, FlattenedMesh, NativeMeshPayloadCache } from './scene.part-001';
3
+ import { MeshSortInfo, SceneSortOptions, SortKeyOverride } from './scene.part-002';
4
+ export declare function clippingState(clippingContext: ClippingContext, material: ThreeMaterialLike | undefined, localClippingEnabled: boolean): Pick<NativeSceneMesh, 'clippingPlanes' | 'clippingUnionCount'>;
5
+ export declare function clippingContextForObject(parent: ClippingContext, object: ThreeObject3DLike): ClippingContext;
6
+ export declare function clipShadowsForMaterial(material: ThreeMaterialLike | undefined, clippingContext: ClippingContext): boolean | undefined;
7
+ export declare function pushMesh(meshes: FlattenedMesh[], mesh: NativeSceneMesh, sortItem: RenderSortItem, transparentDoubleSidePass?: boolean): void;
8
+ export declare function needsTransparentDoubleSidePass(material: ThreeMaterialLike | undefined, props: PbrProperties, wireframe: boolean): boolean;
9
+ export declare function nativeMeshesFromSortedFlattened(meshes: FlattenedMesh[]): NativeSceneMesh[];
10
+ export declare const NativeMeshPayloadCacheLimit = 2048;
11
+ export declare function applyNativeMeshPayloadCache(meshes: NativeSceneMesh[], cache: NativeMeshPayloadCache): void;
12
+ export declare function nativeMeshPayloadSignature(mesh: NativeSceneMesh, cache: NativeMeshPayloadCache): string | null;
13
+ export declare function nativeMeshPayloadCacheable(mesh: NativeSceneMesh): boolean;
14
+ export declare function nativeMeshPayloadObjectId(cache: NativeMeshPayloadCache, value: object | null | undefined): string;
15
+ export declare function evictNativeMeshPayloads(cache: NativeMeshPayloadCache): void;
16
+ export declare function sortInfoForObject(object: ThreeObject3DLike, material: ThreeMaterialLike | undefined, camera: ThreeCameraLike | undefined, sortIndex: number, groupOrder: number, transform?: number[], geometry?: ThreeBufferGeometryLike, group?: GeometryGroup, sortItemObject?: ThreeObject3DLike, sortItemZOverride?: number): MeshSortInfo;
17
+ export declare function mergeSortKeys(keys: MeshSortInfo['keys'], override: SortKeyOverride | undefined): MeshSortInfo['keys'];
18
+ export declare function sortFlattenedMeshes(meshes: FlattenedMesh[], options: SceneSortOptions): FlattenedMesh[];
19
+ export declare function partitionFlattenedMeshes(meshes: FlattenedMesh[]): {
20
+ opaque: FlattenedMesh[];
21
+ transmissive: FlattenedMesh[];
22
+ transparent: FlattenedMesh[];
23
+ };
24
+ export declare function compareWithSort(sort: RenderSortFunction): (a: FlattenedMesh, b: FlattenedMesh) => number;
25
+ export declare function normalizeSortKeys(meshes: FlattenedMesh[]): void;
26
+ export declare function compareFlattenedMeshes(a: FlattenedMesh, b: FlattenedMesh): number;
27
+ export declare function compareTransparentFlattenedMeshes(a: FlattenedMesh, b: FlattenedMesh): number;
28
+ export declare function meshDefaultsTransparent(mesh: NativeSceneMesh): boolean;
29
+ export declare function materialAlpha(mesh: NativeSceneMesh): number;
30
+ export declare function finitePositive(value: unknown): boolean;
31
+ export declare function materialVariantForObject(object: ThreeObject3DLike): number;
32
+ export declare function projectedObjectZ(object: ThreeObject3DLike, camera: ThreeCameraLike, transform?: ArrayLike<number>): number;
33
+ export declare function projectedWorldPointZ(worldPoint: [number, number, number], camera: ThreeCameraLike): number;
34
+ export declare function objectSortCenter(object: ThreeObject3DLike): [number, number, number];
35
+ export declare function renderableObjectOutsideFrustum(object: ThreeObject3DLike, camera: ThreeCameraLike | undefined, viewportHeight?: number, overrideMaterial?: ThreeMaterialLike): boolean;
36
+ //# sourceMappingURL=scene.part-007.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scene.part-007.d.ts","sourceRoot":"","sources":["../api/scene.part-007.ts"],"names":[],"mappings":"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"}