@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,375 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.texturePayloadSignature = texturePayloadSignature;
|
|
4
|
+
exports.textureImageDataSignature = textureImageDataSignature;
|
|
5
|
+
exports.textureDataSignature = textureDataSignature;
|
|
6
|
+
exports.textureImageDimension = textureImageDimension;
|
|
7
|
+
exports.textureMipmapSignatures = textureMipmapSignatures;
|
|
8
|
+
exports.texturePayloadSignaturesEqual = texturePayloadSignaturesEqual;
|
|
9
|
+
exports.textureMipmapSignaturesEqual = textureMipmapSignaturesEqual;
|
|
10
|
+
exports.textureDataSignaturesEqual = textureDataSignaturesEqual;
|
|
11
|
+
exports.hasExplicitMipmaps = hasExplicitMipmaps;
|
|
12
|
+
exports.assertNoEncodedExplicitMipmaps = assertNoEncodedExplicitMipmaps;
|
|
13
|
+
exports.assertNoEncodedPremultiplyAlpha = assertNoEncodedPremultiplyAlpha;
|
|
14
|
+
exports.textureBytesWithExplicitMipmaps = textureBytesWithExplicitMipmaps;
|
|
15
|
+
exports.unsupportedRawTextureDataError = unsupportedRawTextureDataError;
|
|
16
|
+
exports.unsupportedTextureImageError = unsupportedTextureImageError;
|
|
17
|
+
exports.assertSupportedRawTextureType = assertSupportedRawTextureType;
|
|
18
|
+
exports.textureTypeName = textureTypeName;
|
|
19
|
+
exports.rawTextureChannelCount = rawTextureChannelCount;
|
|
20
|
+
exports.rawHalfFloatTextureDataToRgba = rawHalfFloatTextureDataToRgba;
|
|
21
|
+
exports.rawFloatTextureDataToRgba = rawFloatTextureDataToRgba;
|
|
22
|
+
exports.writeOneChannelRawRgba = writeOneChannelRawRgba;
|
|
23
|
+
exports.writeTwoChannelRawRgba = writeTwoChannelRawRgba;
|
|
24
|
+
exports.assertSupportedBackgroundTexture = assertSupportedBackgroundTexture;
|
|
25
|
+
exports.assertSupportedTwoDimensionalTextureSlot = assertSupportedTwoDimensionalTextureSlot;
|
|
26
|
+
exports.isRefractionEnvironmentMapping = isRefractionEnvironmentMapping;
|
|
27
|
+
exports.assertSupportedEnvironmentTexture = assertSupportedEnvironmentTexture;
|
|
28
|
+
exports.assertSupportedTextureInput = assertSupportedTextureInput;
|
|
29
|
+
const materials_part_001_1 = require("./materials.part-001");
|
|
30
|
+
const materials_part_008_1 = require("./materials.part-008");
|
|
31
|
+
const materials_part_009_1 = require("./materials.part-009");
|
|
32
|
+
const materials_part_011_1 = require("./materials.part-011");
|
|
33
|
+
function texturePayloadSignature(map, image, sourceData, label) {
|
|
34
|
+
const version = map.version;
|
|
35
|
+
if (typeof version !== 'number' || !Number.isFinite(version))
|
|
36
|
+
return null;
|
|
37
|
+
return {
|
|
38
|
+
version,
|
|
39
|
+
image,
|
|
40
|
+
sourceData,
|
|
41
|
+
imageData: textureImageDataSignature(image),
|
|
42
|
+
imageWidth: textureImageDimension(image, 'width'),
|
|
43
|
+
imageHeight: textureImageDimension(image, 'height'),
|
|
44
|
+
type: map.type,
|
|
45
|
+
format: map.format,
|
|
46
|
+
premultiplyAlpha: map.premultiplyAlpha,
|
|
47
|
+
generateMipmaps: map.generateMipmaps,
|
|
48
|
+
mipmaps: textureMipmapSignatures(map, label),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
function textureImageDataSignature(image) {
|
|
52
|
+
if (Buffer.isBuffer(image) || image instanceof Uint8Array) {
|
|
53
|
+
return textureDataSignature(image);
|
|
54
|
+
}
|
|
55
|
+
if (!image || typeof image !== 'object')
|
|
56
|
+
return undefined;
|
|
57
|
+
return textureDataSignature(image.data);
|
|
58
|
+
}
|
|
59
|
+
function textureDataSignature(data) {
|
|
60
|
+
if (data == null)
|
|
61
|
+
return undefined;
|
|
62
|
+
const arrayLike = data;
|
|
63
|
+
const view = ArrayBuffer.isView(data) ? data : undefined;
|
|
64
|
+
return {
|
|
65
|
+
data,
|
|
66
|
+
length: arrayLike.length,
|
|
67
|
+
buffer: view?.buffer,
|
|
68
|
+
byteOffset: view?.byteOffset,
|
|
69
|
+
byteLength: view?.byteLength,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
function textureImageDimension(image, key) {
|
|
73
|
+
if (!image || typeof image !== 'object')
|
|
74
|
+
return undefined;
|
|
75
|
+
return image[key];
|
|
76
|
+
}
|
|
77
|
+
function textureMipmapSignatures(map, label) {
|
|
78
|
+
const mipmaps = map.mipmaps;
|
|
79
|
+
if (mipmaps == null)
|
|
80
|
+
return [];
|
|
81
|
+
if (!Array.isArray(mipmaps)) {
|
|
82
|
+
throw new TypeError(`${label}.mipmaps must be an array of image-like mip levels.`);
|
|
83
|
+
}
|
|
84
|
+
return mipmaps.map((image) => ({
|
|
85
|
+
image,
|
|
86
|
+
data: image && typeof image === 'object' ? textureDataSignature(image.data) : undefined,
|
|
87
|
+
width: image && typeof image === 'object' ? image.width : undefined,
|
|
88
|
+
height: image && typeof image === 'object' ? image.height : undefined,
|
|
89
|
+
}));
|
|
90
|
+
}
|
|
91
|
+
function texturePayloadSignaturesEqual(a, b) {
|
|
92
|
+
return a.version === b.version
|
|
93
|
+
&& a.image === b.image
|
|
94
|
+
&& a.sourceData === b.sourceData
|
|
95
|
+
&& textureDataSignaturesEqual(a.imageData, b.imageData)
|
|
96
|
+
&& a.imageWidth === b.imageWidth
|
|
97
|
+
&& a.imageHeight === b.imageHeight
|
|
98
|
+
&& a.type === b.type
|
|
99
|
+
&& a.format === b.format
|
|
100
|
+
&& a.premultiplyAlpha === b.premultiplyAlpha
|
|
101
|
+
&& a.generateMipmaps === b.generateMipmaps
|
|
102
|
+
&& textureMipmapSignaturesEqual(a.mipmaps, b.mipmaps);
|
|
103
|
+
}
|
|
104
|
+
function textureMipmapSignaturesEqual(a, b) {
|
|
105
|
+
if (a.length !== b.length)
|
|
106
|
+
return false;
|
|
107
|
+
for (let i = 0; i < a.length; i += 1) {
|
|
108
|
+
if (a[i].image !== b[i].image ||
|
|
109
|
+
!textureDataSignaturesEqual(a[i].data, b[i].data) ||
|
|
110
|
+
a[i].width !== b[i].width ||
|
|
111
|
+
a[i].height !== b[i].height) {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
function textureDataSignaturesEqual(a, b) {
|
|
118
|
+
if (a === b)
|
|
119
|
+
return true;
|
|
120
|
+
if (!a || !b)
|
|
121
|
+
return false;
|
|
122
|
+
return a.data === b.data
|
|
123
|
+
&& a.length === b.length
|
|
124
|
+
&& a.buffer === b.buffer
|
|
125
|
+
&& a.byteOffset === b.byteOffset
|
|
126
|
+
&& a.byteLength === b.byteLength;
|
|
127
|
+
}
|
|
128
|
+
function hasExplicitMipmaps(texture, label = 'texture') {
|
|
129
|
+
const mipmaps = texture?.mipmaps;
|
|
130
|
+
if (mipmaps == null)
|
|
131
|
+
return false;
|
|
132
|
+
if (!Array.isArray(mipmaps)) {
|
|
133
|
+
throw new TypeError(`${label}.mipmaps must be an array of image-like mip levels.`);
|
|
134
|
+
}
|
|
135
|
+
return mipmaps.length > 0;
|
|
136
|
+
}
|
|
137
|
+
function assertNoEncodedExplicitMipmaps(map, label) {
|
|
138
|
+
if (!hasExplicitMipmaps(map, label))
|
|
139
|
+
return;
|
|
140
|
+
throw new Error(`${label} provides explicit texture mipmaps with an encoded base image. Explicit mipmap upload requires raw DataTexture-style base image data with raw mipmap levels.`);
|
|
141
|
+
}
|
|
142
|
+
function assertNoEncodedPremultiplyAlpha(map, label) {
|
|
143
|
+
if ((0, materials_part_011_1.optionalTextureBoolean)(map.premultiplyAlpha, `${label}.premultiplyAlpha`) !== true)
|
|
144
|
+
return;
|
|
145
|
+
throw new Error(`${label}.premultiplyAlpha is only supported for readable raw texture image data. Decode the encoded image to raw RGBA DataTexture-style data before rendering.`);
|
|
146
|
+
}
|
|
147
|
+
function textureBytesWithExplicitMipmaps(map, label, baseRgba, width, height) {
|
|
148
|
+
const premultiplyAlpha = (0, materials_part_011_1.optionalTextureBoolean)(map.premultiplyAlpha, `${label}.premultiplyAlpha`) === true;
|
|
149
|
+
const baseLevel = premultiplyAlpha ? (0, materials_part_009_1.premultiplyRgbaAlpha)(baseRgba) : baseRgba;
|
|
150
|
+
if (!hasExplicitMipmaps(map, label))
|
|
151
|
+
return baseLevel;
|
|
152
|
+
if (width <= 1 && height <= 1) {
|
|
153
|
+
throw new Error(`${label} provides explicit texture mipmaps for a ${width}x${height} base image, but no additional mip levels are valid after the 1x1 level.`);
|
|
154
|
+
}
|
|
155
|
+
const levels = [
|
|
156
|
+
baseLevel instanceof Uint8Array
|
|
157
|
+
? new Uint8Array(baseLevel.buffer, baseLevel.byteOffset, baseLevel.byteLength)
|
|
158
|
+
: new Uint8Array(baseLevel),
|
|
159
|
+
];
|
|
160
|
+
let expectedWidth = width;
|
|
161
|
+
let expectedHeight = height;
|
|
162
|
+
const mipmaps = map.mipmaps;
|
|
163
|
+
for (let i = 0; i < mipmaps.length; i += 1) {
|
|
164
|
+
expectedWidth = Math.max(1, Math.floor(expectedWidth / 2));
|
|
165
|
+
expectedHeight = Math.max(1, Math.floor(expectedHeight / 2));
|
|
166
|
+
const mip = mipmaps[i];
|
|
167
|
+
if (!mip || !mip.data || mip.width !== expectedWidth || mip.height !== expectedHeight) {
|
|
168
|
+
throw new Error(`${label}.mipmaps[${i}] must provide raw pixel data with size ${expectedWidth}x${expectedHeight} for explicit mipmap upload.`);
|
|
169
|
+
}
|
|
170
|
+
const rgba = (0, materials_part_011_1.toRgba8)(mip.data, expectedWidth, expectedHeight, { type: map.type, format: map.format });
|
|
171
|
+
if (!rgba) {
|
|
172
|
+
throw unsupportedRawTextureDataError(`${label}.mipmaps[${i}]`, 'texture rendering');
|
|
173
|
+
}
|
|
174
|
+
levels.push(premultiplyAlpha ? (0, materials_part_009_1.premultiplyRgbaAlpha)(rgba) : rgba);
|
|
175
|
+
if (expectedWidth === 1 && expectedHeight === 1 && i < mipmaps.length - 1) {
|
|
176
|
+
throw new Error(`${label} provides extra explicit mipmap levels after the 1x1 level.`);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
if (expectedWidth !== 1 || expectedHeight !== 1) {
|
|
180
|
+
throw new Error(`${label} explicit texture mipmaps must include the complete mip chain down to 1x1.`);
|
|
181
|
+
}
|
|
182
|
+
const byteLength = levels.reduce((total, level) => total + level.byteLength, 0);
|
|
183
|
+
const out = new Uint8Array(byteLength);
|
|
184
|
+
let offset = 0;
|
|
185
|
+
for (const level of levels) {
|
|
186
|
+
out.set(level, offset);
|
|
187
|
+
offset += level.byteLength;
|
|
188
|
+
}
|
|
189
|
+
return out;
|
|
190
|
+
}
|
|
191
|
+
function unsupportedRawTextureDataError(label, usage) {
|
|
192
|
+
const supported = 'one-channel, two-channel, RGB, or RGBA numeric pixel data';
|
|
193
|
+
const expected = 'mismatched data lengths must match width * height texels, width * height * 2 values, width * height * 3 values, or width * height * 4 values; packed color types use one value per texel';
|
|
194
|
+
return new Error(`${label} raw texture data must contain ${supported} for ${usage}; ${expected}.`);
|
|
195
|
+
}
|
|
196
|
+
function unsupportedTextureImageError(label, usage) {
|
|
197
|
+
return new Error(`${label} uses a texture image object that is not readable or drawable by @headless-three/renderer for ${usage}. Provide encoded PNG/JPEG/WebP bytes directly as texture.image or texture.source.data, a canvas-like object with getContext("2d").getImageData(), an image-like object drawable through an available OffscreenCanvas/2D canvas polyfill, or raw one-channel, two-channel, RGB, or RGBA numeric pixel data as { data, width, height } before rendering.`);
|
|
198
|
+
}
|
|
199
|
+
function assertSupportedRawTextureType(type, label, usage) {
|
|
200
|
+
if (type == null ||
|
|
201
|
+
type === materials_part_001_1.UnsignedByteType ||
|
|
202
|
+
type === materials_part_001_1.ByteType ||
|
|
203
|
+
type === materials_part_001_1.ShortType ||
|
|
204
|
+
type === materials_part_001_1.UnsignedShortType ||
|
|
205
|
+
type === materials_part_001_1.IntType ||
|
|
206
|
+
type === materials_part_001_1.UnsignedIntType ||
|
|
207
|
+
type === materials_part_001_1.HalfFloatType ||
|
|
208
|
+
type === materials_part_001_1.FloatType ||
|
|
209
|
+
type === materials_part_001_1.UnsignedShort4444Type ||
|
|
210
|
+
type === materials_part_001_1.UnsignedShort5551Type ||
|
|
211
|
+
type === materials_part_001_1.UnsignedInt5999Type ||
|
|
212
|
+
type === materials_part_001_1.UnsignedInt101111Type) {
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
throw new Error(`${label} raw texture type ${textureTypeName(type)} is not supported by @headless-three/renderer for ${usage}. Use UnsignedByteType, ByteType, ShortType, UnsignedShortType, IntType, UnsignedIntType, HalfFloatType, FloatType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedInt5999Type, or UnsignedInt101111Type raw data, or pre-convert the texture to RGBA8 before rendering.`);
|
|
216
|
+
}
|
|
217
|
+
function textureTypeName(type) {
|
|
218
|
+
switch (type) {
|
|
219
|
+
case materials_part_001_1.ByteType:
|
|
220
|
+
return 'ByteType';
|
|
221
|
+
case materials_part_001_1.ShortType:
|
|
222
|
+
return 'ShortType';
|
|
223
|
+
case materials_part_001_1.IntType:
|
|
224
|
+
return 'IntType';
|
|
225
|
+
case materials_part_001_1.UnsignedInt248Type:
|
|
226
|
+
return 'UnsignedInt248Type';
|
|
227
|
+
case materials_part_001_1.UnsignedInt5999Type:
|
|
228
|
+
return 'UnsignedInt5999Type';
|
|
229
|
+
case materials_part_001_1.UnsignedInt101111Type:
|
|
230
|
+
return 'UnsignedInt101111Type';
|
|
231
|
+
default:
|
|
232
|
+
return String(type);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
function rawTextureChannelCount(data, width, height, label, usage) {
|
|
236
|
+
const pixels = width * height;
|
|
237
|
+
const length = typeof data.length === 'number' ? data.length : Number.NaN;
|
|
238
|
+
const channels = length / pixels;
|
|
239
|
+
if (channels === 1 || channels === 2 || channels === 3 || channels === 4)
|
|
240
|
+
return channels;
|
|
241
|
+
throw unsupportedRawTextureDataError(label, usage);
|
|
242
|
+
}
|
|
243
|
+
function rawHalfFloatTextureDataToRgba(rawData, width, height, label, usage, options = {}) {
|
|
244
|
+
const channels = rawTextureChannelCount(rawData, width, height, label, usage);
|
|
245
|
+
if (channels === 4) {
|
|
246
|
+
const data = options.premultiplyAlpha === true ? (0, materials_part_009_1.premultiplyHalfFloatRgba)(rawData) : rawData;
|
|
247
|
+
return Buffer.from(data.buffer, data.byteOffset, data.byteLength);
|
|
248
|
+
}
|
|
249
|
+
const pixels = width * height;
|
|
250
|
+
const out = new Uint16Array(pixels * 4);
|
|
251
|
+
for (let i = 0; i < pixels; i += 1) {
|
|
252
|
+
if (channels === 1) {
|
|
253
|
+
writeOneChannelRawRgba(out, i, rawData[i], 0x3C00, options.format);
|
|
254
|
+
}
|
|
255
|
+
else if (channels === 2) {
|
|
256
|
+
writeTwoChannelRawRgba(out, i, rawData[i * channels], rawData[i * channels + 1], 0x3C00, options.format);
|
|
257
|
+
}
|
|
258
|
+
else {
|
|
259
|
+
out[i * 4] = rawData[i * channels];
|
|
260
|
+
out[i * 4 + 1] = rawData[i * channels + 1];
|
|
261
|
+
out[i * 4 + 2] = rawData[i * channels + 2];
|
|
262
|
+
out[i * 4 + 3] = 0x3C00;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
const data = options.premultiplyAlpha === true ? (0, materials_part_009_1.premultiplyHalfFloatRgba)(out) : out;
|
|
266
|
+
return Buffer.from(data.buffer, data.byteOffset, data.byteLength);
|
|
267
|
+
}
|
|
268
|
+
function rawFloatTextureDataToRgba(rawData, width, height, label, usage, options = {}) {
|
|
269
|
+
const channels = rawTextureChannelCount(rawData, width, height, label, usage);
|
|
270
|
+
if (channels === 4) {
|
|
271
|
+
const data = options.premultiplyAlpha === true ? (0, materials_part_009_1.premultiplyFloatRgba)(rawData) : rawData;
|
|
272
|
+
return Buffer.from(data.buffer, data.byteOffset, data.byteLength);
|
|
273
|
+
}
|
|
274
|
+
const pixels = width * height;
|
|
275
|
+
const out = new Float32Array(pixels * 4);
|
|
276
|
+
for (let i = 0; i < pixels; i += 1) {
|
|
277
|
+
if (channels === 1) {
|
|
278
|
+
writeOneChannelRawRgba(out, i, rawData[i], 1.0, options.format);
|
|
279
|
+
}
|
|
280
|
+
else if (channels === 2) {
|
|
281
|
+
writeTwoChannelRawRgba(out, i, rawData[i * channels], rawData[i * channels + 1], 1.0, options.format);
|
|
282
|
+
}
|
|
283
|
+
else {
|
|
284
|
+
out[i * 4] = rawData[i * channels];
|
|
285
|
+
out[i * 4 + 1] = rawData[i * channels + 1];
|
|
286
|
+
out[i * 4 + 2] = rawData[i * channels + 2];
|
|
287
|
+
out[i * 4 + 3] = 1.0;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
const data = options.premultiplyAlpha === true ? (0, materials_part_009_1.premultiplyFloatRgba)(out) : out;
|
|
291
|
+
return Buffer.from(data.buffer, data.byteOffset, data.byteLength);
|
|
292
|
+
}
|
|
293
|
+
function writeOneChannelRawRgba(out, pixelIndex, value, opaqueAlpha, format) {
|
|
294
|
+
const offset = pixelIndex * 4;
|
|
295
|
+
out[offset] = value;
|
|
296
|
+
out[offset + 1] = value;
|
|
297
|
+
out[offset + 2] = value;
|
|
298
|
+
out[offset + 3] = format === materials_part_001_1.AlphaFormat ? value : opaqueAlpha;
|
|
299
|
+
}
|
|
300
|
+
function writeTwoChannelRawRgba(out, pixelIndex, first, second, opaqueAlpha, format) {
|
|
301
|
+
const offset = pixelIndex * 4;
|
|
302
|
+
if (format === materials_part_001_1.LuminanceAlphaFormat) {
|
|
303
|
+
out[offset] = first;
|
|
304
|
+
out[offset + 1] = first;
|
|
305
|
+
out[offset + 2] = first;
|
|
306
|
+
out[offset + 3] = second;
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
309
|
+
out[offset] = first;
|
|
310
|
+
out[offset + 1] = second;
|
|
311
|
+
out[offset + 2] = 0;
|
|
312
|
+
out[offset + 3] = opaqueAlpha;
|
|
313
|
+
}
|
|
314
|
+
function assertSupportedBackgroundTexture(map, label) {
|
|
315
|
+
assertSupportedTextureInput(map, label, { allowMipmaps: true });
|
|
316
|
+
if (map.isCubeTexture === true ||
|
|
317
|
+
map.mapping === materials_part_001_1.CubeReflectionMapping ||
|
|
318
|
+
map.mapping === materials_part_001_1.CubeRefractionMapping ||
|
|
319
|
+
map.mapping === materials_part_001_1.CubeUVReflectionMapping) {
|
|
320
|
+
throw new Error(`${label} uses a cube or PMREM/CubeUV texture mapping in a 2D background texture path. Use a readable six-face CubeTexture, a 2D/equirectangular texture, or pre-render the background to a 2D image before rendering.`);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
function assertSupportedTwoDimensionalTextureSlot(map, label) {
|
|
324
|
+
if (map.isCubeTexture === true ||
|
|
325
|
+
map.mapping === materials_part_001_1.CubeReflectionMapping ||
|
|
326
|
+
map.mapping === materials_part_001_1.CubeRefractionMapping ||
|
|
327
|
+
map.mapping === materials_part_001_1.CubeUVReflectionMapping) {
|
|
328
|
+
throw new Error(`${label} uses a cube or PMREM/CubeUV texture mapping, which is not supported for 2D material texture slots. Use a 2D texture for material maps or move cube textures to scene.environment, scene.background, or material.envMap where supported.`);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
function isRefractionEnvironmentMapping(mapping) {
|
|
332
|
+
return mapping === materials_part_001_1.CubeRefractionMapping || mapping === materials_part_001_1.EquirectangularRefractionMapping;
|
|
333
|
+
}
|
|
334
|
+
function assertSupportedEnvironmentTexture(map, label, options = {}) {
|
|
335
|
+
assertSupportedTextureInput(map, label);
|
|
336
|
+
const usesRefraction = isRefractionEnvironmentMapping(map.mapping);
|
|
337
|
+
if (usesRefraction && options.allowRefraction !== true) {
|
|
338
|
+
throw new Error(`${label} uses refraction environment mapping, which is not supported by @headless-three/renderer yet. Provide an equirectangular or six-face cube reflection texture and let the renderer precompute IBL, or pre-convert the source before rendering.`);
|
|
339
|
+
}
|
|
340
|
+
if (map.mapping === materials_part_001_1.CubeUVReflectionMapping && !(0, materials_part_008_1.isCubeEnvironmentTexture)(map, label)) {
|
|
341
|
+
throw new Error(`${label} uses PMREM/CubeUV environment mapping without readable six-face cube images, which is not supported by @headless-three/renderer yet. Provide a CubeUV-mapped CubeTexture, an equirectangular texture, or a six-face cube reflection texture and let the renderer precompute IBL.`);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
function assertSupportedTextureInput(map, label, options = {}) {
|
|
345
|
+
if (map.isFramebufferTexture === true) {
|
|
346
|
+
throw new Error(`${label} uses a FramebufferTexture, which is not supported by @headless-three/renderer texture slots. Copy framebuffer output into a readable raw texture with Renderer.copyFramebufferToTexture(), or render into a target-like object and use its color texture data.`);
|
|
347
|
+
}
|
|
348
|
+
if (map.isDepthTexture === true) {
|
|
349
|
+
throw new Error(`${label} uses a DepthTexture, which is only supported as target.depthTexture for render-target depth readback. Use a readable color texture for material, background, or environment slots.`);
|
|
350
|
+
}
|
|
351
|
+
if (map.isVideoTexture === true) {
|
|
352
|
+
throw new Error(`${label} uses a VideoTexture, which is not supported by @headless-three/renderer in Node because live video frames are not directly readable. Provide a canvas-like image exposing getContext("2d").getImageData(), an encoded image, or raw DataTexture pixels before rendering.`);
|
|
353
|
+
}
|
|
354
|
+
if (map.isStorageTexture === true) {
|
|
355
|
+
throw new Error(`${label} uses a StorageTexture, which is not supported by @headless-three/renderer texture slots because WebGPU storage texture backing data is not directly readable. Provide a readable raw, encoded, or canvas-like texture before rendering.`);
|
|
356
|
+
}
|
|
357
|
+
if (map.isCompressedTexture === true ||
|
|
358
|
+
map.isCompressedArrayTexture === true ||
|
|
359
|
+
map.isCompressedCubeTexture === true) {
|
|
360
|
+
throw new Error(`${label} uses a compressed texture. KTX2, Basis, and THREE.CompressedTexture inputs are not decoded by @headless-three/renderer yet; pre-decode the texture to RGBA data or an encoded PNG/JPEG/WebP image before rendering.`);
|
|
361
|
+
}
|
|
362
|
+
if ((0, materials_part_001_1.isCompressedTextureFormat)(map.format)) {
|
|
363
|
+
throw new Error(`${label} uses a compressed texture format. KTX2, Basis, and compressed texture formats are not decoded by @headless-three/renderer yet; pre-decode the texture to RGBA data or an encoded PNG/JPEG/WebP image before rendering.`);
|
|
364
|
+
}
|
|
365
|
+
if (map.isDataArrayTexture === true ||
|
|
366
|
+
map.isData3DTexture === true ||
|
|
367
|
+
map.isArrayTexture === true ||
|
|
368
|
+
map.is3DTexture === true) {
|
|
369
|
+
throw new Error(`${label} uses an array or 3D texture, which is not supported by @headless-three/renderer yet. Provide a 2D texture image for this slot or render each layer separately.`);
|
|
370
|
+
}
|
|
371
|
+
if (!options.allowMipmaps && hasExplicitMipmaps(map, label)) {
|
|
372
|
+
throw new Error(`${label} provides explicit texture mipmaps, which are not uploaded by @headless-three/renderer yet. Provide only the base image level or prefilter/downsample the texture before rendering.`);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
//# sourceMappingURL=materials.part-010.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"materials.part-010.js","sourceRoot":"","sources":["../api/materials.part-010.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ThreeMaterialLike, ThreeTextureLike } from './types';
|
|
2
|
+
import { PhysicalMapFeatureGates } from './materials.part-010';
|
|
3
|
+
export declare function assertCompatiblePackedPhysicalMapSamplers(material: ThreeMaterialLike, features: PhysicalMapFeatureGates): void;
|
|
4
|
+
export declare function activePackedPhysicalScalarMapSlots(material: ThreeMaterialLike, features: PhysicalMapFeatureGates): Array<[string, ThreeTextureLike | null | undefined]>;
|
|
5
|
+
export declare function assertNoPackedPhysicalMapMipmaps(groupLabel: string, slots: Array<[string, ThreeTextureLike | null | undefined]>): void;
|
|
6
|
+
export declare function assertMatchingSamplerSettings(groupLabel: string, slots: Array<[string, ThreeTextureLike | null | undefined]>): void;
|
|
7
|
+
export declare function samplerSignature(texture: ThreeTextureLike, label: string): string;
|
|
8
|
+
export declare function textureAnisotropy(map: ThreeTextureLike | null | undefined, label: string): number | undefined;
|
|
9
|
+
export declare function textureUnpackAlignment(map: ThreeTextureLike | null | undefined, label: string): number | undefined;
|
|
10
|
+
export declare function textureTransform(map: ThreeTextureLike | null | undefined, label: string): number[] | undefined;
|
|
11
|
+
export declare function composeTextureTransformWithFlipY(transform: number[], flipY: boolean): number[];
|
|
12
|
+
export declare function optionalTextureBoolean(value: unknown, label: string): boolean | undefined;
|
|
13
|
+
export declare function textureVector2Component(value: unknown, label: string, component: 'x' | 'y', fallback: number): number;
|
|
14
|
+
export declare function textureColorSpace(map: ThreeTextureLike | null | undefined): string | undefined;
|
|
15
|
+
export declare function finiteOrDefault(value: unknown, fallback: number): number;
|
|
16
|
+
export declare function finiteTextureTransformNumber(value: unknown, label: string, fallback: number): number;
|
|
17
|
+
export declare function validateFiniteMatrix3(values: ArrayLike<unknown>, label: string): void;
|
|
18
|
+
export declare function toRgba8(data: ArrayLike<number>, width: number, height: number, options?: {
|
|
19
|
+
narrowChannels?: boolean;
|
|
20
|
+
type?: number;
|
|
21
|
+
format?: unknown;
|
|
22
|
+
}): Uint8Array | null;
|
|
23
|
+
export declare function normalizedUnsignedIntegerDataToRgba8(data: Uint16Array | Uint32Array, pixels: number, allowNarrowChannels: boolean, maxValue: number, format: unknown): Uint8Array | null;
|
|
24
|
+
export declare function normalizedUnsignedIntegerToByte(value: number, maxValue: number): number;
|
|
25
|
+
//# sourceMappingURL=materials.part-011.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"materials.part-011.d.ts","sourceRoot":"","sources":["../api/materials.part-011.ts"],"names":[],"mappings":"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"}
|