@headless-three/renderer 0.1.10 → 0.3.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.
- package/README.md +32 -0
- package/dist/gpu-output.d.ts +190 -0
- package/dist/gpu-output.d.ts.map +1 -0
- package/dist/gpu-output.js +114 -0
- package/dist/gpu-output.js.map +1 -0
- package/dist/index.d.ts +26 -770
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -6226
- package/dist/index.js.map +1 -1
- package/dist/index.part-001.d.ts +95 -0
- package/dist/index.part-001.d.ts.map +1 -0
- package/dist/index.part-001.js +273 -0
- package/dist/index.part-001.js.map +1 -0
- package/dist/index.part-002.d.ts +69 -0
- package/dist/index.part-002.d.ts.map +1 -0
- package/dist/index.part-002.js +211 -0
- package/dist/index.part-002.js.map +1 -0
- package/dist/index.part-003.d.ts +105 -0
- package/dist/index.part-003.d.ts.map +1 -0
- package/dist/index.part-003.js +270 -0
- package/dist/index.part-003.js.map +1 -0
- package/dist/index.part-004.d.ts +78 -0
- package/dist/index.part-004.d.ts.map +1 -0
- package/dist/index.part-004.js +390 -0
- package/dist/index.part-004.js.map +1 -0
- package/dist/index.part-005.d.ts +75 -0
- package/dist/index.part-005.d.ts.map +1 -0
- package/dist/index.part-005.js +236 -0
- package/dist/index.part-005.js.map +1 -0
- package/dist/index.part-006.d.ts +105 -0
- package/dist/index.part-006.d.ts.map +1 -0
- package/dist/index.part-006.js +262 -0
- package/dist/index.part-006.js.map +1 -0
- package/dist/index.part-007.d.ts +112 -0
- package/dist/index.part-007.d.ts.map +1 -0
- package/dist/index.part-007.js +358 -0
- package/dist/index.part-007.js.map +1 -0
- package/dist/index.part-008.d.ts +240 -0
- package/dist/index.part-008.d.ts.map +1 -0
- package/dist/index.part-008.js +458 -0
- package/dist/index.part-008.js.map +1 -0
- package/dist/index.part-009.d.ts +46 -0
- package/dist/index.part-009.d.ts.map +1 -0
- package/dist/index.part-009.js +379 -0
- package/dist/index.part-009.js.map +1 -0
- package/dist/index.part-010.d.ts +24 -0
- package/dist/index.part-010.d.ts.map +1 -0
- package/dist/index.part-010.js +277 -0
- package/dist/index.part-010.js.map +1 -0
- package/dist/index.part-011.d.ts +21 -0
- package/dist/index.part-011.d.ts.map +1 -0
- package/dist/index.part-011.js +361 -0
- package/dist/index.part-011.js.map +1 -0
- package/dist/index.part-012.d.ts +115 -0
- package/dist/index.part-012.d.ts.map +1 -0
- package/dist/index.part-012.js +298 -0
- package/dist/index.part-012.js.map +1 -0
- package/dist/index.part-013.d.ts +37 -0
- package/dist/index.part-013.d.ts.map +1 -0
- package/dist/index.part-013.js +341 -0
- package/dist/index.part-013.js.map +1 -0
- package/dist/index.part-014.d.ts +43 -0
- package/dist/index.part-014.d.ts.map +1 -0
- package/dist/index.part-014.js +441 -0
- package/dist/index.part-014.js.map +1 -0
- package/dist/index.part-015.d.ts +45 -0
- package/dist/index.part-015.d.ts.map +1 -0
- package/dist/index.part-015.js +432 -0
- package/dist/index.part-015.js.map +1 -0
- package/dist/index.part-016.d.ts +55 -0
- package/dist/index.part-016.d.ts.map +1 -0
- package/dist/index.part-016.js +382 -0
- package/dist/index.part-016.js.map +1 -0
- package/dist/index.part-017.d.ts +55 -0
- package/dist/index.part-017.d.ts.map +1 -0
- package/dist/index.part-017.js +436 -0
- package/dist/index.part-017.js.map +1 -0
- package/dist/index.part-018.d.ts +34 -0
- package/dist/index.part-018.d.ts.map +1 -0
- package/dist/index.part-018.js +365 -0
- package/dist/index.part-018.js.map +1 -0
- package/dist/index.part-019.d.ts +29 -0
- package/dist/index.part-019.d.ts.map +1 -0
- package/dist/index.part-019.js +261 -0
- package/dist/index.part-019.js.map +1 -0
- package/dist/index.part-020.d.ts +37 -0
- package/dist/index.part-020.d.ts.map +1 -0
- package/dist/index.part-020.js +388 -0
- package/dist/index.part-020.js.map +1 -0
- package/dist/index.part-021.d.ts +10 -0
- package/dist/index.part-021.d.ts.map +1 -0
- package/dist/index.part-021.js +142 -0
- package/dist/index.part-021.js.map +1 -0
- package/dist/loaders.d.ts +27 -91
- package/dist/loaders.d.ts.map +1 -1
- package/dist/loaders.js +22 -855
- package/dist/loaders.js.map +1 -1
- package/dist/loaders.part-001.d.ts +163 -0
- package/dist/loaders.part-001.d.ts.map +1 -0
- package/dist/loaders.part-001.js +277 -0
- package/dist/loaders.part-001.js.map +1 -0
- package/dist/loaders.part-002.d.ts +33 -0
- package/dist/loaders.part-002.d.ts.map +1 -0
- package/dist/loaders.part-002.js +511 -0
- package/dist/loaders.part-002.js.map +1 -0
- package/dist/loaders.part-003.d.ts +23 -0
- package/dist/loaders.part-003.d.ts.map +1 -0
- package/dist/loaders.part-003.js +138 -0
- package/dist/loaders.part-003.js.map +1 -0
- package/dist/materials.d.ts +33 -49
- package/dist/materials.d.ts.map +1 -1
- package/dist/materials.js +39 -4339
- package/dist/materials.js.map +1 -1
- package/dist/materials.part-001.d.ts +153 -0
- package/dist/materials.part-001.d.ts.map +1 -0
- package/dist/materials.part-001.js +347 -0
- package/dist/materials.part-001.js.map +1 -0
- package/dist/materials.part-002.d.ts +46 -0
- package/dist/materials.part-002.d.ts.map +1 -0
- package/dist/materials.part-002.js +299 -0
- package/dist/materials.part-002.js.map +1 -0
- package/dist/materials.part-003.d.ts +14 -0
- package/dist/materials.part-003.d.ts.map +1 -0
- package/dist/materials.part-003.js +438 -0
- package/dist/materials.part-003.js.map +1 -0
- package/dist/materials.part-004.d.ts +30 -0
- package/dist/materials.part-004.d.ts.map +1 -0
- package/dist/materials.part-004.js +464 -0
- package/dist/materials.part-004.js.map +1 -0
- package/dist/materials.part-005.d.ts +38 -0
- package/dist/materials.part-005.d.ts.map +1 -0
- package/dist/materials.part-005.js +366 -0
- package/dist/materials.part-005.js.map +1 -0
- package/dist/materials.part-006.d.ts +18 -0
- package/dist/materials.part-006.d.ts.map +1 -0
- package/dist/materials.part-006.js +391 -0
- package/dist/materials.part-006.js.map +1 -0
- package/dist/materials.part-007.d.ts +24 -0
- package/dist/materials.part-007.d.ts.map +1 -0
- package/dist/materials.part-007.js +467 -0
- package/dist/materials.part-007.js.map +1 -0
- package/dist/materials.part-008.d.ts +95 -0
- package/dist/materials.part-008.d.ts.map +1 -0
- package/dist/materials.part-008.js +404 -0
- package/dist/materials.part-008.js.map +1 -0
- package/dist/materials.part-009.d.ts +89 -0
- package/dist/materials.part-009.d.ts.map +1 -0
- package/dist/materials.part-009.js +412 -0
- package/dist/materials.part-009.js.map +1 -0
- package/dist/materials.part-010.d.ts +46 -0
- package/dist/materials.part-010.d.ts.map +1 -0
- package/dist/materials.part-010.js +375 -0
- package/dist/materials.part-010.js.map +1 -0
- package/dist/materials.part-011.d.ts +25 -0
- package/dist/materials.part-011.d.ts.map +1 -0
- package/dist/materials.part-011.js +435 -0
- package/dist/materials.part-011.js.map +1 -0
- package/dist/materials.part-012.d.ts +15 -0
- package/dist/materials.part-012.d.ts.map +1 -0
- package/dist/materials.part-012.js +229 -0
- package/dist/materials.part-012.js.map +1 -0
- package/dist/scene.d.ts +19 -279
- package/dist/scene.d.ts.map +1 -1
- package/dist/scene.js +21 -3931
- package/dist/scene.js.map +1 -1
- package/dist/scene.part-001.d.ts +375 -0
- package/dist/scene.part-001.d.ts.map +1 -0
- package/dist/scene.part-001.js +20 -0
- package/dist/scene.part-001.js.map +1 -0
- package/dist/scene.part-002.d.ts +28 -0
- package/dist/scene.part-002.d.ts.map +1 -0
- package/dist/scene.part-002.js +311 -0
- package/dist/scene.part-002.js.map +1 -0
- package/dist/scene.part-003.d.ts +26 -0
- package/dist/scene.part-003.d.ts.map +1 -0
- package/dist/scene.part-003.js +384 -0
- package/dist/scene.part-003.js.map +1 -0
- package/dist/scene.part-004.d.ts +24 -0
- package/dist/scene.part-004.d.ts.map +1 -0
- package/dist/scene.part-004.js +287 -0
- package/dist/scene.part-004.js.map +1 -0
- package/dist/scene.part-005.d.ts +37 -0
- package/dist/scene.part-005.d.ts.map +1 -0
- package/dist/scene.part-005.js +350 -0
- package/dist/scene.part-005.js.map +1 -0
- package/dist/scene.part-006.d.ts +25 -0
- package/dist/scene.part-006.d.ts.map +1 -0
- package/dist/scene.part-006.js +362 -0
- package/dist/scene.part-006.js.map +1 -0
- package/dist/scene.part-007.d.ts +36 -0
- package/dist/scene.part-007.d.ts.map +1 -0
- package/dist/scene.part-007.js +417 -0
- package/dist/scene.part-007.js.map +1 -0
- package/dist/scene.part-008.d.ts +78 -0
- package/dist/scene.part-008.d.ts.map +1 -0
- package/dist/scene.part-008.js +416 -0
- package/dist/scene.part-008.js.map +1 -0
- package/dist/scene.part-009.d.ts +25 -0
- package/dist/scene.part-009.d.ts.map +1 -0
- package/dist/scene.part-009.js +330 -0
- package/dist/scene.part-009.js.map +1 -0
- package/dist/scene.part-010.d.ts +32 -0
- package/dist/scene.part-010.d.ts.map +1 -0
- package/dist/scene.part-010.js +336 -0
- package/dist/scene.part-010.js.map +1 -0
- package/dist/scene.part-011.d.ts +100 -0
- package/dist/scene.part-011.d.ts.map +1 -0
- package/dist/scene.part-011.js +262 -0
- package/dist/scene.part-011.js.map +1 -0
- package/dist/scene.part-012.d.ts +48 -0
- package/dist/scene.part-012.d.ts.map +1 -0
- package/dist/scene.part-012.js +357 -0
- package/dist/scene.part-012.js.map +1 -0
- package/dist/scene.part-013.d.ts +51 -0
- package/dist/scene.part-013.d.ts.map +1 -0
- package/dist/scene.part-013.js +368 -0
- package/dist/scene.part-013.js.map +1 -0
- package/dist/scene.part-014.d.ts +16 -0
- package/dist/scene.part-014.d.ts.map +1 -0
- package/dist/scene.part-014.js +112 -0
- package/dist/scene.part-014.js.map +1 -0
- package/dist/types.d.ts +53 -1564
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -1
- package/dist/types.js.map +1 -1
- package/dist/types.part-001.d.ts +386 -0
- package/dist/types.part-001.d.ts.map +1 -0
- package/dist/types.part-001.js +4 -0
- package/dist/types.part-001.js.map +1 -0
- package/dist/types.part-002.d.ts +407 -0
- package/dist/types.part-002.d.ts.map +1 -0
- package/dist/types.part-002.js +3 -0
- package/dist/types.part-002.js.map +1 -0
- package/dist/types.part-003.d.ts +427 -0
- package/dist/types.part-003.d.ts.map +1 -0
- package/dist/types.part-003.js +3 -0
- package/dist/types.part-003.js.map +1 -0
- package/dist/types.part-004.d.ts +351 -0
- package/dist/types.part-004.d.ts.map +1 -0
- package/dist/types.part-004.js +3 -0
- package/dist/types.part-004.js.map +1 -0
- package/native.d.ts +130 -0
- package/native.js +56 -52
- package/package.json +11 -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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"}
|