rayzee 11.7.0 → 11.9.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 +31 -6
- package/dist/{ArchiveImporter-DYcRXeKE.js → ArchiveImporter-BJxszU_k.js} +2353 -1356
- package/dist/{BidirectionalIntegrator-BvjRpbTP.js → BidirectionalIntegrator-DWg66vAd.js} +302 -301
- package/dist/{BufferLayout-xPRH9jYD.js → BufferLayout-Bzgccg1o.js} +1 -0
- package/dist/{ColorManagement-oeEk7oSu.js → ColorManagement-B_HjAiy2.js} +1 -1
- package/dist/{EngineIssues-CIZnXHsF.js → EngineIssues-CfJiBaNj.js} +19 -8
- package/dist/{NeuralRetouch-ClaMiKYg.js → NeuralRetouch-BD9E-Yht.js} +2 -2
- package/dist/{NeuralSuperRes-WNEXun9s.js → NeuralSuperRes-C8Mf3tJX.js} +2 -2
- package/dist/{PathTracer-B9wZPPVL.js → PathTracer-DeE9UJ1n.js} +3530 -3402
- package/dist/{PhysicalSky-DcjItqKi.js → PhysicalSky-cKy75-oR.js} +45 -45
- package/dist/{RayzeeRenderer-p-NeE6E2.js → RayzeeRenderer-CzLyBA3G.js} +378 -374
- package/dist/SceneMetadata-C17UfOEp.js +183 -0
- package/dist/{SolarLimb-bZE6y63S.js → SolarLimb-DRYy8tln.js} +184 -172
- package/dist/{ToneMapGPU-sAs8wdgI.js → ToneMapGPU-4GPwoG_c.js} +13 -6
- package/dist/addons/archives.es.js +1 -1
- package/dist/addons/bidirectional.es.js +1 -1
- package/dist/addons/color.es.js +1 -1
- package/dist/addons/physical-sky.es.js +1 -1
- package/dist/addons/storage.es.js +1 -1
- package/dist/{openStorage-Fe9BoS1_.js → openStorage-CdyVjmps.js} +1 -1
- package/dist/rayzee-core.es.js +7 -7
- package/dist/rayzee.es.js +821 -794
- package/dist/rayzee.umd.js +112 -103
- package/dist/{sceneCachePolicy-B9w3BnaP.js → sceneCachePolicy-ywbGKHD3.js} +9 -6
- package/package.json +1 -1
- package/src/EngineDefaults.js +1 -0
- package/src/EngineIssues.js +21 -6
- package/src/Passes/AIUpscaler.js +4 -0
- package/src/Passes/OIDNDenoiser.js +8 -6
- package/src/Passes/OIDNTemporalHistory.js +1 -1
- package/src/PathTracerApp.js +10 -1
- package/src/Processor/ArchiveImporter.js +106 -27
- package/src/Processor/AssetLoader.js +22 -0
- package/src/Processor/BufferLayout.js +3 -3
- package/src/Processor/GeometryExtractor.js +12 -4
- package/src/Processor/LightSerializer.js +6 -2
- package/src/Processor/MaterialPacking.js +2 -2
- package/src/Processor/PBRT/PBRTMaterials.js +49 -13
- package/src/Processor/PBRT/PBRTParser.js +144 -22
- package/src/Processor/PBRT/PBRTSceneBuilder.js +287 -67
- package/src/Processor/PBRT/PBRTTextureBake.js +191 -9
- package/src/Processor/PBRT/index.js +19 -4
- package/src/Processor/PlatformImageLoader.js +9 -0
- package/src/Processor/SceneProcessor.js +42 -26
- package/src/Processor/TextureCreator.js +44 -4
- package/src/Processor/ToneMapCPU.js +34 -5
- package/src/Processor/ToneMapGPU.js +15 -9
- package/src/Processor/USD/USDScene.js +981 -17
- package/src/RayzeeRenderer.js +85 -28
- package/src/Stages/AutoExposure.js +21 -8
- package/src/Stages/Compositor.js +39 -1
- package/src/Stages/DenoiserSettings.js +0 -4
- package/src/Stages/LocalExposure.js +44 -18
- package/src/Stages/NRD.js +53 -24
- package/src/Stages/NormalDepth.js +12 -6
- package/src/Stages/PathTracer.js +27 -1
- package/src/Stages/PathTracerStage.js +14 -2
- package/src/Storage/SceneGraphCodec.js +6 -3
- package/src/TSL/BVHTraversal.js +33 -20
- package/src/TSL/CameraRay.js +12 -1
- package/src/TSL/Common.js +25 -8
- package/src/TSL/DebugKernel.js +3 -2
- package/src/TSL/Displacement.js +66 -113
- package/src/TSL/FinalWriteKernel.js +4 -7
- package/src/TSL/GenerateKernel.js +6 -2
- package/src/TSL/LightSplatKernel.js +7 -4
- package/src/TSL/LightsCore.js +6 -2
- package/src/TSL/LightsDirect.js +33 -11
- package/src/TSL/LightsSampling.js +45 -12
- package/src/TSL/SceneResources.js +19 -0
- package/src/TSL/ShadeKernel.js +3 -4
- package/src/TSL/Struct.js +1 -0
- package/src/integrators/BidirectionalIntegrator.js +1 -0
- package/src/managers/CameraManager.js +9 -0
- package/src/managers/DenoisingManager.js +1 -0
- package/src/managers/InteractionManager.js +6 -0
- package/src/managers/MaterialDataManager.js +11 -0
- package/src/managers/UniformManager.js +3 -1
- package/dist/SceneMetadata-D2Sh-0e-.js +0 -110
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { i as e, r as t } from "./Logger-dDDGj9Av.js";
|
|
2
|
-
import { l as n } from "./BufferLayout-
|
|
2
|
+
import { l as n } from "./BufferLayout-Bzgccg1o.js";
|
|
3
3
|
import { ContextNode as r, StorageInstancedBufferAttribute as i, WebGPUBackend as a } from "three/webgpu";
|
|
4
|
-
import { Fn as o, If as s, bool as c, clamp as l, dot as u, exp2 as d, float as f, floatBitsToUint as p, floor as m, int as h, log2 as g, mat3 as _, max as v, packSnorm2x16 as y, packUnorm2x16 as b, select as x, storage as S, struct as ee, uint as C, uintBitsToFloat as w, unpackSnorm2x16 as
|
|
4
|
+
import { Fn as o, If as s, bool as c, clamp as l, dot as u, exp2 as d, float as f, floatBitsToUint as p, floor as m, int as h, log2 as g, mat3 as _, max as v, packSnorm2x16 as y, packUnorm2x16 as b, select as x, storage as S, struct as ee, uint as C, uintBitsToFloat as w, unpackSnorm2x16 as te, unpackUnorm2x16 as T, uvec2 as ne, uvec4 as E, vec2 as D, vec3 as O, vec4 as k, wgslFn as A } from "three/tsl";
|
|
5
5
|
//#region src/TSL/patches.js
|
|
6
|
-
var
|
|
6
|
+
var re = a.prototype.createNodeBuilder;
|
|
7
7
|
a.prototype.createNodeBuilder = function(e, t) {
|
|
8
|
-
let n =
|
|
8
|
+
let n = re.call(this, e, t);
|
|
9
9
|
return Object.defineProperty(n, "allowGlobalVariables", {
|
|
10
10
|
get() {
|
|
11
11
|
return this.material !== null;
|
|
@@ -14,14 +14,14 @@ a.prototype.createNodeBuilder = function(e, t) {
|
|
|
14
14
|
configurable: !0
|
|
15
15
|
}), n;
|
|
16
16
|
};
|
|
17
|
-
function
|
|
17
|
+
function j(e, t, n = Float32Array) {
|
|
18
18
|
let r = new i(new n(0), t);
|
|
19
19
|
return r.count = e, r.gpuByteLength = e * t * n.BYTES_PER_ELEMENT, r.isGPUOnly = !0, r;
|
|
20
20
|
}
|
|
21
|
-
var
|
|
21
|
+
var M = a.prototype.createStorageAttribute;
|
|
22
22
|
a.prototype.createStorageAttribute = function(e) {
|
|
23
23
|
let t = this.attributeUtils._getBufferAttribute(e);
|
|
24
|
-
if (!t.isGPUOnly) return
|
|
24
|
+
if (!t.isGPUOnly) return M.call(this, e);
|
|
25
25
|
let n = this.get(t);
|
|
26
26
|
n.buffer === void 0 && (n.buffer = this.device.createBuffer({
|
|
27
27
|
label: t.name,
|
|
@@ -29,12 +29,12 @@ a.prototype.createStorageAttribute = function(e) {
|
|
|
29
29
|
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST
|
|
30
30
|
}));
|
|
31
31
|
};
|
|
32
|
-
var
|
|
32
|
+
var N = class {
|
|
33
33
|
constructor(e, t, n, r = Float32Array, i = 4) {
|
|
34
34
|
this.LaneType = r, this.itemSize = i, this.lanesPerPart = Math.max(1, Math.floor(n / (t * r.BYTES_PER_ELEMENT))) * t, this.totalLanes = e, this.attrs = [];
|
|
35
35
|
for (let n = 0; n < e || this.attrs.length === 0; n += this.lanesPerPart) {
|
|
36
36
|
let a = Math.max(t, Math.min(this.lanesPerPart, e - n));
|
|
37
|
-
this.attrs.push(
|
|
37
|
+
this.attrs.push(j(a / i, i, r));
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
get elementsPerPart() {
|
|
@@ -59,39 +59,39 @@ var F = class {
|
|
|
59
59
|
this.write(e, a, r, s, c), a += c;
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
|
-
},
|
|
62
|
+
}, ie = a.prototype.updateAttribute;
|
|
63
63
|
a.prototype.updateAttribute = function(e) {
|
|
64
|
-
if (!this.attributeUtils._getBufferAttribute(e).isGPUOnly) return
|
|
64
|
+
if (!this.attributeUtils._getBufferAttribute(e).isGPUOnly) return ie.call(this, e);
|
|
65
65
|
};
|
|
66
|
-
var
|
|
67
|
-
function
|
|
66
|
+
var P = 4096;
|
|
67
|
+
function ae(e) {
|
|
68
68
|
if (!this.trackTimestamp || this.isDisposed || this.currentQueryIndex + 2 > this.maxQueries) return null;
|
|
69
69
|
let t = this.currentQueryIndex;
|
|
70
70
|
return this.currentQueryIndex += 2, this.queryOffsets.set(e, t), t;
|
|
71
71
|
}
|
|
72
|
-
var
|
|
72
|
+
var oe = a.prototype.initTimestampQuery;
|
|
73
73
|
a.prototype.initTimestampQuery = function(e, t, n) {
|
|
74
74
|
let r = this.trackTimestamp && !this.timestampQueryPool[e];
|
|
75
|
-
if (
|
|
75
|
+
if (oe.call(this, e, t, n), r) {
|
|
76
76
|
let r = this.timestampQueryPool[e];
|
|
77
|
-
if (r && r.maxQueries <
|
|
78
|
-
let i = r.constructor, a = new i(this.device, e,
|
|
79
|
-
a.allocateQueriesForContext =
|
|
77
|
+
if (r && r.maxQueries < P && n.timestampWrites) {
|
|
78
|
+
let i = r.constructor, a = new i(this.device, e, P);
|
|
79
|
+
a.allocateQueriesForContext = ae, a.allocateQueriesForContext(t), this.timestampQueryPool[e] = a, n.timestampWrites.querySet = a.querySet, r.dispose();
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
let i = n.timestampWrites;
|
|
83
83
|
i && i.beginningOfPassWriteIndex == null && (n.timestampWrites = void 0);
|
|
84
84
|
};
|
|
85
|
-
function
|
|
85
|
+
function F(e, t) {
|
|
86
86
|
return new Proxy(e, { get(e, n, r) {
|
|
87
87
|
if (typeof n == "string" && t.has(n)) return e.get(n);
|
|
88
88
|
let i = Reflect.get(e, n, r);
|
|
89
|
-
return n === "toVar" && typeof i == "function" ? (...n) =>
|
|
89
|
+
return n === "toVar" && typeof i == "function" ? (...n) => F(i.apply(e, n), t) : i;
|
|
90
90
|
} });
|
|
91
91
|
}
|
|
92
|
-
function
|
|
93
|
-
let n = ee(e, t), r = new Set(Object.keys(e)), i = (...e) =>
|
|
94
|
-
return i.layout = n.layout, i.isStruct = !0, i.wrap = (e) =>
|
|
92
|
+
function I(e, t = null) {
|
|
93
|
+
let n = ee(e, t), r = new Set(Object.keys(e)), i = (...e) => F(n(...e), r);
|
|
94
|
+
return i.layout = n.layout, i.isStruct = !0, i.wrap = (e) => F(e, r), i;
|
|
95
95
|
}
|
|
96
96
|
r.prototype.setup = function(e) {
|
|
97
97
|
let t = e.addContext(this.value);
|
|
@@ -99,10 +99,10 @@ r.prototype.setup = function(e) {
|
|
|
99
99
|
};
|
|
100
100
|
//#endregion
|
|
101
101
|
//#region src/TSL/Struct.js
|
|
102
|
-
var
|
|
102
|
+
var se = I({
|
|
103
103
|
origin: "vec3",
|
|
104
104
|
direction: "vec3"
|
|
105
|
-
}),
|
|
105
|
+
}), L = I({
|
|
106
106
|
color: "vec4",
|
|
107
107
|
emissive: "vec3",
|
|
108
108
|
emissiveIntensity: "float",
|
|
@@ -133,6 +133,7 @@ var ae = R({
|
|
|
133
133
|
bumpMapIndex: "int",
|
|
134
134
|
bumpScale: "float",
|
|
135
135
|
displacementScale: "float",
|
|
136
|
+
displacementBias: "float",
|
|
136
137
|
metalnessMapIndex: "int",
|
|
137
138
|
roughnessMapIndex: "int",
|
|
138
139
|
displacementMapIndex: "int",
|
|
@@ -168,7 +169,7 @@ var ae = R({
|
|
|
168
169
|
diffuseTransmissionColor: "vec3",
|
|
169
170
|
diffuseTransmissionMapIndex: "int",
|
|
170
171
|
diffuseTransmissionColorMapIndex: "int"
|
|
171
|
-
}),
|
|
172
|
+
}), ce = I({
|
|
172
173
|
transmission: "float",
|
|
173
174
|
clearcoat: "float",
|
|
174
175
|
clearcoatRoughness: "float",
|
|
@@ -180,7 +181,7 @@ var ae = R({
|
|
|
180
181
|
specularColor: "vec3",
|
|
181
182
|
diffuseTransmission: "float",
|
|
182
183
|
diffuseTransmissionColor: "vec3"
|
|
183
|
-
}),
|
|
184
|
+
}), le = I({
|
|
184
185
|
color: "vec4",
|
|
185
186
|
ior: "float",
|
|
186
187
|
transmission: "float",
|
|
@@ -192,16 +193,16 @@ var ae = R({
|
|
|
192
193
|
alphaTest: "float",
|
|
193
194
|
alphaMode: "int",
|
|
194
195
|
albedoTransform: "mat3"
|
|
195
|
-
}),
|
|
196
|
+
}), ue = I({
|
|
196
197
|
shadowed: "vec3",
|
|
197
198
|
unoccluded: "vec3"
|
|
198
199
|
});
|
|
199
|
-
|
|
200
|
+
I({
|
|
200
201
|
position: "vec3",
|
|
201
202
|
radius: "float",
|
|
202
|
-
material:
|
|
203
|
+
material: L
|
|
203
204
|
});
|
|
204
|
-
var
|
|
205
|
+
var de = I({
|
|
205
206
|
didHit: "bool",
|
|
206
207
|
dst: "float",
|
|
207
208
|
hitPoint: "vec3",
|
|
@@ -214,7 +215,7 @@ var le = R({
|
|
|
214
215
|
boxTests: "int",
|
|
215
216
|
triTests: "int"
|
|
216
217
|
});
|
|
217
|
-
|
|
218
|
+
I({
|
|
218
219
|
posA: "vec3",
|
|
219
220
|
posB: "vec3",
|
|
220
221
|
posC: "vec3",
|
|
@@ -224,21 +225,21 @@ R({
|
|
|
224
225
|
normalA: "vec3",
|
|
225
226
|
normalB: "vec3",
|
|
226
227
|
normalC: "vec3",
|
|
227
|
-
material:
|
|
228
|
+
material: L,
|
|
228
229
|
materialIndex: "int",
|
|
229
230
|
meshIndex: "int"
|
|
230
|
-
}),
|
|
231
|
+
}), I({
|
|
231
232
|
color: "vec4",
|
|
232
233
|
samples: "int"
|
|
233
234
|
});
|
|
234
|
-
var
|
|
235
|
+
var fe = I({
|
|
235
236
|
direction: "vec3",
|
|
236
237
|
value: "vec3",
|
|
237
238
|
pdf: "float",
|
|
238
239
|
isTransmission: "bool",
|
|
239
240
|
colorWeight: "vec3",
|
|
240
241
|
isDiffuseTransmission: "bool"
|
|
241
|
-
}),
|
|
242
|
+
}), pe = I({
|
|
242
243
|
specular: "float",
|
|
243
244
|
diffuse: "float",
|
|
244
245
|
sheen: "float",
|
|
@@ -246,10 +247,10 @@ var ue = R({
|
|
|
246
247
|
transmission: "float",
|
|
247
248
|
iridescence: "float",
|
|
248
249
|
diffuseTransmission: "float"
|
|
249
|
-
}),
|
|
250
|
+
}), R = I({
|
|
250
251
|
Ta: "vec3",
|
|
251
252
|
Ba: "vec3"
|
|
252
|
-
}),
|
|
253
|
+
}), z = I({
|
|
253
254
|
NoL: "float",
|
|
254
255
|
NoV: "float",
|
|
255
256
|
NoH: "float",
|
|
@@ -261,23 +262,23 @@ var ue = R({
|
|
|
261
262
|
BoV: "float",
|
|
262
263
|
ToL: "float",
|
|
263
264
|
BoL: "float"
|
|
264
|
-
}),
|
|
265
|
+
}), me = I({
|
|
265
266
|
compensation: "vec3",
|
|
266
267
|
E_total: "vec3"
|
|
267
|
-
}),
|
|
268
|
+
}), he = I({
|
|
268
269
|
f0: "vec3",
|
|
269
270
|
f90: "float",
|
|
270
271
|
eta: "float",
|
|
271
272
|
F0m: "vec3",
|
|
272
273
|
F0: "vec3"
|
|
273
|
-
}),
|
|
274
|
+
}), ge = I({
|
|
274
275
|
albedo: "vec4",
|
|
275
276
|
emissive: "vec3",
|
|
276
277
|
metalness: "float",
|
|
277
278
|
roughness: "float",
|
|
278
279
|
normal: "vec3",
|
|
279
280
|
hasTextures: "bool"
|
|
280
|
-
}),
|
|
281
|
+
}), _e = I({
|
|
281
282
|
isMetallic: "bool",
|
|
282
283
|
isRough: "bool",
|
|
283
284
|
isSmooth: "bool",
|
|
@@ -285,7 +286,7 @@ var ue = R({
|
|
|
285
286
|
hasClearcoat: "bool",
|
|
286
287
|
isEmissive: "bool",
|
|
287
288
|
complexityScore: "float"
|
|
288
|
-
}),
|
|
289
|
+
}), ve = I({
|
|
289
290
|
albedoUV: "vec2",
|
|
290
291
|
normalUV: "vec2",
|
|
291
292
|
metalnessUV: "vec2",
|
|
@@ -296,13 +297,13 @@ var ue = R({
|
|
|
296
297
|
metalRoughSameUV: "bool",
|
|
297
298
|
albedoEmissiveSameUV: "bool",
|
|
298
299
|
allSameUV: "bool"
|
|
299
|
-
}),
|
|
300
|
+
}), ye = I({
|
|
300
301
|
invRoughness: "float",
|
|
301
302
|
metalFactor: "float",
|
|
302
303
|
iorFactor: "float",
|
|
303
304
|
maxSheenColor: "float"
|
|
304
305
|
});
|
|
305
|
-
|
|
306
|
+
I({
|
|
306
307
|
traversals: "int",
|
|
307
308
|
transmissiveTraversals: "int",
|
|
308
309
|
rayType: "int",
|
|
@@ -311,30 +312,30 @@ R({
|
|
|
311
312
|
});
|
|
312
313
|
//#endregion
|
|
313
314
|
//#region src/TSL/Common.js
|
|
314
|
-
var
|
|
315
|
-
|
|
316
|
-
var je =
|
|
317
|
-
|
|
318
|
-
var Me =
|
|
315
|
+
var be = /* @__PURE__ */ A("\n fn offsetRayOrigin( p: vec3f, n: vec3f ) -> vec3f {\n let step = select( vec3<i32>( 32 ), vec3<i32>( -32 ), ( p < vec3f( 0.0 ) ) != ( n < vec3f( 0.0 ) ) );\n let far = bitcast<vec3f>( bitcast<vec3<i32>>( p ) + step );\n return select( far, p + n * 1e-5, abs( p ) < vec3f( 1.0 ) );\n }\n"), xe = .9999, B = 3.14159, Se = 1 / B, Ce = 2 * B, V = 1e-6, we = .05, Te = .089, H = .001, Ee = O(.2126, .7152, .0722), De = 65504, U = (e, t = 1e7) => x(e.equal(e), e, f(0)).clamp(0, t), Oe = (e, t = 1e7) => O(U(e.x, t), U(e.y, t), U(e.z, t)), W = n.SLOTS_PER_MATERIAL, ke = n.SLOT, G = ke, Ae = _(3.2404542, -.969266, .0556434, -1.5371385, 1.8760108, -.2040259, -.4985314, .041556, 1.0572252);
|
|
316
|
+
A("\n fn sRGBToLinear( srgbColor: vec3f ) -> vec3f {\n\n return pow( srgbColor, vec3f( 2.2 ) );\n\n }\n"), A("\n fn gammaCorrection( color: vec3f ) -> vec3f {\n\n return pow( color, vec3f( 1.0 / 2.2 ) );\n\n }\n");
|
|
317
|
+
var je = A("\n fn square( x: f32 ) -> f32 {\n\n return x * x;\n\n }\n");
|
|
318
|
+
A("\n fn squareVec3( x: vec3f ) -> vec3f {\n\n return x * x;\n\n }\n"), A("\n fn maxComponent( v: vec3f ) -> f32 {\n\n return max( max( v.r, v.g ), v.b );\n\n }\n"), A("\n fn minComponent( v: vec3f ) -> f32 {\n\n return min( min( v.r, v.g ), v.b );\n\n }\n");
|
|
319
|
+
var Me = A("\n fn luminance( color: vec3f ) -> f32 {\n\n return dot( color, vec3f( 0.2126, 0.7152, 0.0722 ) );\n\n }\n"), Ne = A(`
|
|
319
320
|
fn powerHeuristic( pdf1: f32, pdf2: f32 ) -> f32 {
|
|
320
321
|
|
|
321
322
|
let p1 = pdf1 * pdf1;
|
|
322
323
|
let p2 = pdf2 * pdf2;
|
|
323
|
-
return p1 / max( p1 + p2, ${
|
|
324
|
+
return p1 / max( p1 + p2, ${H} );
|
|
324
325
|
|
|
325
326
|
}
|
|
326
|
-
`), Pe =
|
|
327
|
+
`), Pe = A(`
|
|
327
328
|
fn balanceHeuristic( pdf1: f32, pdf2: f32 ) -> f32 {
|
|
328
329
|
|
|
329
|
-
return pdf1 / max( pdf1 + pdf2, ${
|
|
330
|
+
return pdf1 / max( pdf1 + pdf2, ${H} );
|
|
330
331
|
|
|
331
332
|
}
|
|
332
333
|
`);
|
|
333
|
-
|
|
334
|
-
var Fe =
|
|
334
|
+
A("\n fn applyDithering( color: vec3f, uv: vec2f, ditheringAmount: f32, resolution: vec2f ) -> vec3f {\n\n let bayerRow0 = vec4f( 0.0 / 16.0, 8.0 / 16.0, 2.0 / 16.0, 10.0 / 16.0 );\n let bayerRow1 = vec4f( 12.0 / 16.0, 4.0 / 16.0, 14.0 / 16.0, 6.0 / 16.0 );\n let bayerRow2 = vec4f( 3.0 / 16.0, 11.0 / 16.0, 1.0 / 16.0, 9.0 / 16.0 );\n let bayerRow3 = vec4f( 15.0 / 16.0, 7.0 / 16.0, 13.0 / 16.0, 5.0 / 16.0 );\n let bayer = mat4x4f( bayerRow0, bayerRow1, bayerRow2, bayerRow3 );\n\n let pixelCoord = vec2i( uv * resolution );\n let dither = bayer[ pixelCoord.x % 4 ][ pixelCoord.y % 4 ];\n\n return color + ( dither - 0.5 ) * ditheringAmount / 255.0;\n\n }\n");
|
|
335
|
+
var Fe = A("\n fn constructTBN( N: vec3f ) -> mat3x3f {\n\n var majorAxis: vec3f;\n if ( abs( N.x ) < 0.999 ) {\n majorAxis = vec3f( 1.0, 0.0, 0.0 );\n } else {\n majorAxis = vec3f( 0.0, 1.0, 0.0 );\n }\n let T = normalize( cross( N, majorAxis ) );\n let B = normalize( cross( N, T ) );\n return mat3x3f( T, B, N );\n\n }\n");
|
|
335
336
|
o(([e, t, n]) => {
|
|
336
337
|
let r = t.add(n).toVar(), i = u(r, r).toVar();
|
|
337
|
-
return r.assign(i.greaterThan(
|
|
338
|
+
return r.assign(i.greaterThan(V).select(r.div(i.sqrt()), O(0, 0, 1))), z({
|
|
338
339
|
NoL: v(u(e, n), .001),
|
|
339
340
|
NoV: v(u(e, t), .001),
|
|
340
341
|
NoH: v(u(e, r), .001),
|
|
@@ -349,19 +350,19 @@ o(([e, t, n]) => {
|
|
|
349
350
|
});
|
|
350
351
|
});
|
|
351
352
|
var Ie = o(([e, t]) => {
|
|
352
|
-
let n = e.x.abs().lessThan(.999).select(
|
|
353
|
-
return
|
|
353
|
+
let n = e.x.abs().lessThan(.999).select(O(1, 0, 0), O(0, 1, 0)), r = e.cross(n).normalize(), i = e.cross(r).normalize(), a = t.cos(), o = t.sin();
|
|
354
|
+
return R({
|
|
354
355
|
Ta: r.mul(a).add(i.mul(o)),
|
|
355
356
|
Ba: i.mul(a).sub(r.mul(o))
|
|
356
357
|
});
|
|
357
358
|
}), Le = o(([e, t, n, r]) => {
|
|
358
359
|
let i = t.add(n).toVar(), a = u(i, i).toVar();
|
|
359
|
-
i.assign(a.greaterThan(
|
|
360
|
+
i.assign(a.greaterThan(V).select(i.div(a.sqrt()), O(0, 0, 1)));
|
|
360
361
|
let o = f(0).toVar(), c = f(0).toVar(), l = f(0).toVar(), d = f(0).toVar(), p = f(0).toVar(), m = f(0).toVar();
|
|
361
362
|
return s(r.anisotropy.greaterThan(0), () => {
|
|
362
|
-
let a =
|
|
363
|
+
let a = R.wrap(Ie(e, r.anisotropyRotation));
|
|
363
364
|
o.assign(u(a.Ta, i)), c.assign(u(a.Ba, i)), l.assign(u(a.Ta, t)), d.assign(u(a.Ba, t)), p.assign(u(a.Ta, n)), m.assign(u(a.Ba, n));
|
|
364
|
-
}),
|
|
365
|
+
}), z({
|
|
365
366
|
NoL: v(u(e, n), .001),
|
|
366
367
|
NoV: v(u(e, t), .001),
|
|
367
368
|
NoH: v(u(e, i), .001),
|
|
@@ -374,7 +375,7 @@ var Ie = o(([e, t]) => {
|
|
|
374
375
|
ToL: p,
|
|
375
376
|
BoL: m
|
|
376
377
|
});
|
|
377
|
-
}), Re =
|
|
378
|
+
}), Re = A("\n fn calculateFireflyThreshold( baseThreshold: f32, bounceIndex: i32, frame: i32 ) -> f32 {\n\n let depthFactor = 1.0 / ( 1.0 + f32( bounceIndex ) * 0.1 );\n let relaxation = sqrt( f32( frame + 1 ) );\n return baseThreshold * depthFactor * relaxation;\n\n }\n"), ze = A("\n fn applySoftSuppression( value: f32, threshold: f32, dampingFactor: f32 ) -> f32 {\n\n if ( value <= threshold ) {\n return value;\n }\n let excess = value - threshold;\n let suppressionFactor = threshold / ( threshold + excess * dampingFactor );\n return value * suppressionFactor;\n\n }\n"), Be = A(`
|
|
378
379
|
fn applySoftSuppressionRGB( color: vec3f, threshold: f32, dampingFactor: f32 ) -> vec3f {
|
|
379
380
|
|
|
380
381
|
let lum = dot( color, vec3f( 0.2126, 0.7152, 0.0722 ) );
|
|
@@ -382,7 +383,7 @@ var Ie = o(([e, t]) => {
|
|
|
382
383
|
return color;
|
|
383
384
|
}
|
|
384
385
|
let suppressedLum = applySoftSuppression( lum, threshold, dampingFactor );
|
|
385
|
-
if ( lum > ${
|
|
386
|
+
if ( lum > ${V} ) {
|
|
386
387
|
return color * ( suppressedLum / lum );
|
|
387
388
|
}
|
|
388
389
|
return color;
|
|
@@ -396,7 +397,7 @@ var Ie = o(([e, t]) => {
|
|
|
396
397
|
_.addAssign(.2);
|
|
397
398
|
}), s(h.and(d.or(o)), () => {
|
|
398
399
|
_.addAssign(.1);
|
|
399
|
-
}),
|
|
400
|
+
}), _e({
|
|
400
401
|
isMetallic: o,
|
|
401
402
|
isRough: c,
|
|
402
403
|
isSmooth: u,
|
|
@@ -415,27 +416,32 @@ function He(e, t, n) {
|
|
|
415
416
|
value: e[0].value
|
|
416
417
|
};
|
|
417
418
|
}
|
|
418
|
-
function Ue(e, t) {
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
419
|
+
function Ue(e, t, n) {
|
|
420
|
+
let { parts: r, perPart: i } = e, a = h(t).toVar(), o = n.map(() => ({
|
|
421
|
+
uvec4: E,
|
|
422
|
+
uvec2: ne
|
|
423
|
+
}[e.type] ?? k)(0).toVar()), c = (e) => () => {
|
|
424
|
+
let t = e === 0 ? a : a.sub(h(i * e));
|
|
425
|
+
n.forEach((n, i) => o[i].assign(r[e].element(n === 0 ? t : t.add(h(n)))));
|
|
426
|
+
}, l = s(a.lessThan(h(i)), c(0));
|
|
427
|
+
for (let e = 1; e < r.length - 1; e++) l = l.ElseIf(a.lessThan(h(i * (e + 1))), c(e));
|
|
428
|
+
return l.Else(c(r.length - 1)), o;
|
|
429
|
+
}
|
|
430
|
+
function We(e, t) {
|
|
431
|
+
return e.isSplitStorage ? Ue(e, t, [0])[0] : e.element(t);
|
|
426
432
|
}
|
|
427
|
-
var K = (e) => e?.isNode ? e : h(e), q = (e, t, n, r) =>
|
|
433
|
+
var K = (e) => e?.isNode ? e : h(e), q = (e, t, n, r) => We(e, K(r).mul(K(t)).add(K(n))), Ge = (e, t, n) => {
|
|
428
434
|
if (n < 3) return q(e.geo, t, h(n), h(3));
|
|
429
435
|
if (!e.withoutUV) return q(e.shade, t, h(n - 3), h(2));
|
|
430
|
-
if (n === 3) return
|
|
431
|
-
let r =
|
|
432
|
-
return
|
|
433
|
-
}, J = /* @__PURE__ */
|
|
434
|
-
let n = q(t, e, h(G.COLOR_METALNESS), h(W)).toVar(), r = q(t, e, h(G.EMISSIVE_ROUGHNESS), h(W)).toVar(), i = q(t, e, h(G.IOR_TRANSMISSION), h(W)).toVar(), a = q(t, e, h(G.ATTENUATION), h(W)).toVar(), o = q(t, e, h(G.DISPERSION_SHEEN), h(W)).toVar(), c = q(t, e, h(G.SHEEN_COLOR), h(W)).toVar(), l = q(t, e, h(G.SPECULAR), h(W)).toVar(), u = q(t, e, h(G.IRIDESCENCE), h(W)).toVar(), d = q(t, e, h(G.MAP_INDICES_A), h(W)).toVar(), f = q(t, e, h(G.MAP_INDICES_B), h(W)).toVar(), p = q(t, e, h(G.OPACITY_ALPHA), h(W)).toVar(), m = q(t, e, h(G.ALPHA_MODE), h(W)).toVar(), g = q(t, e, h(G.BUMP_DISPLACEMENT), h(W)).toVar(), _ = q(t, e, h(G.ALBEDO_TRANSFORM_A), h(W)).toVar(), v = q(t, e, h(G.ALBEDO_TRANSFORM_B), h(W)).toVar(), y = q(t, e, h(G.NORMAL_TRANSFORM_A), h(W)).toVar(), b = q(t, e, h(G.NORMAL_TRANSFORM_B), h(W)).toVar(), x = q(t, e, h(G.ROUGHNESS_TRANSFORM_A), h(W)).toVar(), S = q(t, e, h(G.ROUGHNESS_TRANSFORM_B), h(W)).toVar(), ee = q(t, e, h(G.METALNESS_TRANSFORM_A), h(W)).toVar(), C = q(t, e, h(G.METALNESS_TRANSFORM_B), h(W)).toVar(), w = q(t, e, h(G.EMISSIVE_TRANSFORM_A), h(W)).toVar(),
|
|
436
|
+
if (n === 3) return E(0);
|
|
437
|
+
let r = We(e.shade, K(t));
|
|
438
|
+
return E(0, 0, r.x, r.y);
|
|
439
|
+
}, J = /* @__PURE__ */ A("\n fn packNormalOct( n: vec3f ) -> u32 {\n\n let s = abs( n.x ) + abs( n.y ) + abs( n.z );\n var p = n.xy / max( s, 1e-20 );\n\n if ( n.z < 0.0 ) {\n\n let px = ( 1.0 - abs( p.y ) ) * select( -1.0, 1.0, p.x >= 0.0 );\n let py = ( 1.0 - abs( p.x ) ) * select( -1.0, 1.0, p.y >= 0.0 );\n p = vec2f( px, py );\n\n }\n\n return pack2x16snorm( p );\n\n }\n"), Y = /* @__PURE__ */ A("\n fn unpackTriangleNormal( packed: u32 ) -> vec3f {\n\n let e = unpack2x16snorm( packed );\n var nx = e.x;\n var ny = e.y;\n let nz = 1.0 - abs( e.x ) - abs( e.y );\n\n if ( nz < 0.0 ) {\n\n let tx = ( 1.0 - abs( ny ) ) * select( -1.0, 1.0, nx >= 0.0 );\n let ty = ( 1.0 - abs( nx ) ) * select( -1.0, 1.0, ny >= 0.0 );\n nx = tx;\n ny = ty;\n\n }\n\n return normalize( vec3f( nx, ny, nz ) );\n\n }\n"), X = A("\n fn arrayToMat3( data1: vec4f, data2: vec4f ) -> mat3x3f {\n\n return mat3x3f(\n data1.xyz,\n vec3f( data1.w, data2.xy ),\n vec3f( data2.zw, 1.0 )\n );\n\n }\n"), Ke = o(([e, t]) => {
|
|
440
|
+
let n = q(t, e, h(G.COLOR_METALNESS), h(W)).toVar(), r = q(t, e, h(G.EMISSIVE_ROUGHNESS), h(W)).toVar(), i = q(t, e, h(G.IOR_TRANSMISSION), h(W)).toVar(), a = q(t, e, h(G.ATTENUATION), h(W)).toVar(), o = q(t, e, h(G.DISPERSION_SHEEN), h(W)).toVar(), c = q(t, e, h(G.SHEEN_COLOR), h(W)).toVar(), l = q(t, e, h(G.SPECULAR), h(W)).toVar(), u = q(t, e, h(G.IRIDESCENCE), h(W)).toVar(), d = q(t, e, h(G.MAP_INDICES_A), h(W)).toVar(), f = q(t, e, h(G.MAP_INDICES_B), h(W)).toVar(), p = q(t, e, h(G.OPACITY_ALPHA), h(W)).toVar(), m = q(t, e, h(G.ALPHA_MODE), h(W)).toVar(), g = q(t, e, h(G.BUMP_DISPLACEMENT), h(W)).toVar(), _ = q(t, e, h(G.ALBEDO_TRANSFORM_A), h(W)).toVar(), v = q(t, e, h(G.ALBEDO_TRANSFORM_B), h(W)).toVar(), y = q(t, e, h(G.NORMAL_TRANSFORM_A), h(W)).toVar(), b = q(t, e, h(G.NORMAL_TRANSFORM_B), h(W)).toVar(), x = q(t, e, h(G.ROUGHNESS_TRANSFORM_A), h(W)).toVar(), S = q(t, e, h(G.ROUGHNESS_TRANSFORM_B), h(W)).toVar(), ee = q(t, e, h(G.METALNESS_TRANSFORM_A), h(W)).toVar(), C = q(t, e, h(G.METALNESS_TRANSFORM_B), h(W)).toVar(), w = q(t, e, h(G.EMISSIVE_TRANSFORM_A), h(W)).toVar(), te = q(t, e, h(G.EMISSIVE_TRANSFORM_B), h(W)).toVar(), T = q(t, e, h(G.BUMP_TRANSFORM_A), h(W)).toVar(), ne = q(t, e, h(G.BUMP_TRANSFORM_B), h(W)).toVar(), E = q(t, e, h(G.DISPLACEMENT_TRANSFORM_A), h(W)).toVar(), O = q(t, e, h(G.DISPLACEMENT_TRANSFORM_B), h(W)).toVar(), A = q(t, e, h(G.SUBSURFACE_A), h(W)).toVar(), re = q(t, e, h(G.SUBSURFACE_B), h(W)).toVar(), j = q(t, e, h(G.SUBSURFACE_C), h(W)).toVar(), M = q(t, e, h(G.EXT_MAP_INDICES_A), h(W)).toVar(), N = q(t, e, h(G.EXT_MAP_INDICES_B), h(W)).toVar(), ie = q(t, e, h(G.EXT_MAP_INDICES_C), h(W)).toVar(), P = k(-1, -1, 0, 0).toVar();
|
|
435
441
|
return s(c.a.greaterThan(0), () => {
|
|
436
|
-
|
|
437
|
-
}),
|
|
438
|
-
color:
|
|
442
|
+
P.assign(q(t, e, h(G.EXT_MAP_INDICES_D), h(W)));
|
|
443
|
+
}), L({
|
|
444
|
+
color: k(n.rgb, 1),
|
|
439
445
|
metalness: n.a,
|
|
440
446
|
emissive: r.rgb,
|
|
441
447
|
roughness: r.a,
|
|
@@ -454,27 +460,27 @@ var K = (e) => e?.isNode ? e : h(e), q = (e, t, n, r) => Ue(e, K(r).mul(K(t)).ad
|
|
|
454
460
|
iridescence: u.r,
|
|
455
461
|
iridescenceIOR: u.g,
|
|
456
462
|
iridescenceThicknessRange: u.ba,
|
|
457
|
-
subsurfaceColor:
|
|
458
|
-
subsurface:
|
|
459
|
-
subsurfaceRadius:
|
|
460
|
-
subsurfaceRadiusScale:
|
|
461
|
-
subsurfaceAnisotropy:
|
|
462
|
-
anisotropy:
|
|
463
|
-
anisotropyRotation:
|
|
464
|
-
anisotropyMapIndex: h(
|
|
465
|
-
transmissionMapIndex: h(
|
|
466
|
-
clearcoatMapIndex: h(
|
|
467
|
-
clearcoatRoughnessMapIndex: h(
|
|
468
|
-
sheenColorMapIndex: h(
|
|
469
|
-
sheenRoughnessMapIndex: h(
|
|
470
|
-
iridescenceMapIndex: h(
|
|
471
|
-
iridescenceThicknessMapIndex: h(
|
|
472
|
-
specularIntensityMapIndex: h(
|
|
473
|
-
specularColorMapIndex: h(
|
|
463
|
+
subsurfaceColor: A.rgb,
|
|
464
|
+
subsurface: A.a,
|
|
465
|
+
subsurfaceRadius: re.rgb,
|
|
466
|
+
subsurfaceRadiusScale: re.a,
|
|
467
|
+
subsurfaceAnisotropy: j.r,
|
|
468
|
+
anisotropy: j.g,
|
|
469
|
+
anisotropyRotation: j.b,
|
|
470
|
+
anisotropyMapIndex: h(j.a),
|
|
471
|
+
transmissionMapIndex: h(M.r),
|
|
472
|
+
clearcoatMapIndex: h(M.g),
|
|
473
|
+
clearcoatRoughnessMapIndex: h(M.b),
|
|
474
|
+
sheenColorMapIndex: h(M.a),
|
|
475
|
+
sheenRoughnessMapIndex: h(N.r),
|
|
476
|
+
iridescenceMapIndex: h(N.g),
|
|
477
|
+
iridescenceThicknessMapIndex: h(N.b),
|
|
478
|
+
specularIntensityMapIndex: h(N.a),
|
|
479
|
+
specularColorMapIndex: h(ie.r),
|
|
474
480
|
diffuseTransmission: c.a,
|
|
475
|
-
diffuseTransmissionColor:
|
|
476
|
-
diffuseTransmissionMapIndex: h(
|
|
477
|
-
diffuseTransmissionColorMapIndex: h(
|
|
481
|
+
diffuseTransmissionColor: ie.gba,
|
|
482
|
+
diffuseTransmissionMapIndex: h(P.r),
|
|
483
|
+
diffuseTransmissionColorMapIndex: h(P.g),
|
|
478
484
|
albedoMapIndex: h(d.r),
|
|
479
485
|
normalMapIndex: h(d.g),
|
|
480
486
|
roughnessMapIndex: h(d.b),
|
|
@@ -489,10 +495,11 @@ var K = (e) => e?.isNode ? e : h(e), q = (e, t, n, r) => Ue(e, K(r).mul(K(t)).ad
|
|
|
489
495
|
alphaTest: p.a,
|
|
490
496
|
alphaMode: h(m.r),
|
|
491
497
|
depthWrite: h(m.g),
|
|
492
|
-
normalScale:
|
|
498
|
+
normalScale: D(m.b, m.b),
|
|
493
499
|
bumpScale: g.r,
|
|
494
500
|
displacementScale: g.g,
|
|
495
501
|
displacementMapIndex: h(g.b),
|
|
502
|
+
displacementBias: g.a,
|
|
496
503
|
albedoTransform: X({
|
|
497
504
|
data1: _,
|
|
498
505
|
data2: v
|
|
@@ -511,22 +518,22 @@ var K = (e) => e?.isNode ? e : h(e), q = (e, t, n, r) => Ue(e, K(r).mul(K(t)).ad
|
|
|
511
518
|
}),
|
|
512
519
|
emissiveTransform: X({
|
|
513
520
|
data1: w,
|
|
514
|
-
data2:
|
|
521
|
+
data2: te
|
|
515
522
|
}),
|
|
516
523
|
bumpTransform: X({
|
|
517
|
-
data1:
|
|
518
|
-
data2:
|
|
524
|
+
data1: T,
|
|
525
|
+
data2: ne
|
|
519
526
|
}),
|
|
520
527
|
displacementTransform: X({
|
|
521
|
-
data1:
|
|
522
|
-
data2:
|
|
528
|
+
data1: E,
|
|
529
|
+
data2: O
|
|
523
530
|
})
|
|
524
531
|
});
|
|
525
|
-
}),
|
|
532
|
+
}), qe = o(() => {
|
|
526
533
|
let e = _(1, 0, 0, 0, 1, 0, 0, 0, 1);
|
|
527
|
-
return
|
|
528
|
-
color:
|
|
529
|
-
emissive:
|
|
534
|
+
return L({
|
|
535
|
+
color: k(1, 1, 1, 1),
|
|
536
|
+
emissive: O(0),
|
|
530
537
|
emissiveIntensity: f(0),
|
|
531
538
|
roughness: f(1),
|
|
532
539
|
metalness: f(0),
|
|
@@ -537,14 +544,14 @@ var K = (e) => e?.isNode ? e : h(e), q = (e, t, n, r) => Ue(e, K(r).mul(K(t)).ad
|
|
|
537
544
|
clearcoatRoughness: f(0),
|
|
538
545
|
opacity: f(1),
|
|
539
546
|
transparent: f(0),
|
|
540
|
-
attenuationColor:
|
|
547
|
+
attenuationColor: O(1),
|
|
541
548
|
attenuationDistance: f(0),
|
|
542
549
|
dispersion: f(0),
|
|
543
550
|
sheen: f(0),
|
|
544
551
|
sheenRoughness: f(1),
|
|
545
|
-
sheenColor:
|
|
552
|
+
sheenColor: O(0),
|
|
546
553
|
specularIntensity: f(1),
|
|
547
|
-
specularColor:
|
|
554
|
+
specularColor: O(1),
|
|
548
555
|
alphaTest: f(0),
|
|
549
556
|
alphaMode: h(0),
|
|
550
557
|
side: h(0),
|
|
@@ -555,10 +562,11 @@ var K = (e) => e?.isNode ? e : h(e), q = (e, t, n, r) => Ue(e, K(r).mul(K(t)).ad
|
|
|
555
562
|
bumpMapIndex: h(-1),
|
|
556
563
|
bumpScale: f(1),
|
|
557
564
|
displacementScale: f(0),
|
|
565
|
+
displacementBias: f(0),
|
|
558
566
|
metalnessMapIndex: h(-1),
|
|
559
567
|
roughnessMapIndex: h(-1),
|
|
560
568
|
displacementMapIndex: h(-1),
|
|
561
|
-
normalScale:
|
|
569
|
+
normalScale: D(1, 1),
|
|
562
570
|
albedoTransform: e,
|
|
563
571
|
emissiveTransform: e,
|
|
564
572
|
normalTransform: e,
|
|
@@ -568,10 +576,10 @@ var K = (e) => e?.isNode ? e : h(e), q = (e, t, n, r) => Ue(e, K(r).mul(K(t)).ad
|
|
|
568
576
|
displacementTransform: e,
|
|
569
577
|
iridescence: f(0),
|
|
570
578
|
iridescenceIOR: f(1.3),
|
|
571
|
-
iridescenceThicknessRange:
|
|
579
|
+
iridescenceThicknessRange: D(100, 400),
|
|
572
580
|
subsurface: f(0),
|
|
573
|
-
subsurfaceColor:
|
|
574
|
-
subsurfaceRadius:
|
|
581
|
+
subsurfaceColor: O(1),
|
|
582
|
+
subsurfaceRadius: O(1, .2, .1),
|
|
575
583
|
subsurfaceRadiusScale: f(1),
|
|
576
584
|
subsurfaceAnisotropy: f(0),
|
|
577
585
|
anisotropy: f(0),
|
|
@@ -587,14 +595,14 @@ var K = (e) => e?.isNode ? e : h(e), q = (e, t, n, r) => Ue(e, K(r).mul(K(t)).ad
|
|
|
587
595
|
specularIntensityMapIndex: h(-1),
|
|
588
596
|
specularColorMapIndex: h(-1),
|
|
589
597
|
diffuseTransmission: f(0),
|
|
590
|
-
diffuseTransmissionColor:
|
|
598
|
+
diffuseTransmissionColor: O(1),
|
|
591
599
|
diffuseTransmissionMapIndex: h(-1),
|
|
592
600
|
diffuseTransmissionColorMapIndex: h(-1)
|
|
593
601
|
});
|
|
594
|
-
}),
|
|
602
|
+
}), Je = o(([e, t]) => {
|
|
595
603
|
let n = q(t, e, h(G.IOR_TRANSMISSION), h(W)).toVar(), r = q(t, e, h(G.ATTENUATION), h(W)).toVar(), i = q(t, e, h(G.MAP_INDICES_A), h(W)).toVar(), a = q(t, e, h(G.OPACITY_ALPHA), h(W)).toVar(), o = q(t, e, h(G.ALPHA_MODE), h(W)).toVar(), s = q(t, e, h(G.ALBEDO_TRANSFORM_A), h(W)).toVar(), c = q(t, e, h(G.ALBEDO_TRANSFORM_B), h(W)).toVar();
|
|
596
|
-
return
|
|
597
|
-
color:
|
|
604
|
+
return le({
|
|
605
|
+
color: k(1),
|
|
598
606
|
ior: n.r,
|
|
599
607
|
transmission: n.g,
|
|
600
608
|
attenuationColor: r.rgb,
|
|
@@ -609,12 +617,16 @@ var K = (e) => e?.isNode ? e : h(e), q = (e, t, n, r) => Ue(e, K(r).mul(K(t)).ad
|
|
|
609
617
|
data2: c
|
|
610
618
|
})
|
|
611
619
|
});
|
|
612
|
-
}),
|
|
620
|
+
}), Ye = (e, t) => {
|
|
613
621
|
let n = (t) => e.shiftRight(C(t)).bitAnd(C(1)).equal(C(1)), r = t ? t.equal(h(0)) : c(!0);
|
|
614
622
|
return n(26).or(n(27).and(r));
|
|
615
|
-
},
|
|
623
|
+
}, Xe = (e, t) => {
|
|
616
624
|
let n = e.value?.copyRecordBase;
|
|
617
|
-
return n === void 0 ? [
|
|
625
|
+
return n === void 0 ? e.isSplitStorage ? Ue(e, h(t).mul(4), [
|
|
626
|
+
1,
|
|
627
|
+
2,
|
|
628
|
+
3
|
|
629
|
+
]) : [
|
|
618
630
|
q(e, t, h(1), h(4)),
|
|
619
631
|
q(e, t, h(2), h(4)),
|
|
620
632
|
q(e, t, h(3), h(4))
|
|
@@ -623,15 +635,15 @@ var K = (e) => e?.isNode ? e : h(e), q = (e, t, n, r) => Ue(e, K(r).mul(K(t)).ad
|
|
|
623
635
|
1,
|
|
624
636
|
2
|
|
625
637
|
].map((r) => q(e, t, h(n + r), h(3)));
|
|
626
|
-
},
|
|
638
|
+
}, Ze = (e, t) => O(O(e[0].x, e[1].x, e[2].x).dot(t), O(e[0].y, e[1].y, e[2].y).dot(t), O(e[0].z, e[1].z, e[2].z).dot(t)), Qe = (e, t) => {
|
|
627
639
|
let n = e[0].xyz.dot(e[1].xyz.cross(e[2].xyz));
|
|
628
|
-
return
|
|
629
|
-
},
|
|
640
|
+
return Ze(e, t).mul(n.sign());
|
|
641
|
+
}, $e = /* @__PURE__ */ A("\n fn instanceDirToWorld( r0: vec3f, r1: vec3f, r2: vec3f, v: vec3f ) -> vec3f {\n\n // Rows of world-to-object; its inverse has columns cross(r1,r2), cross(r2,r0), cross(r0,r1).\n let c0 = cross( r1, r2 );\n let det = dot( r0, c0 );\n // Relative: for a uniform scale s this determinant is s⁻³, so a fixed floor would call a\n // heavily scaled-up instance singular and leave the direction untransformed.\n let magnitude = length( r0 ) * length( r1 ) * length( r2 );\n if ( abs( det ) <= 1e-12f * magnitude ) { return v; }\n\n let inv = 1.0f / det;\n return ( c0 * v.x + cross( r2, r0 ) * v.y + cross( r0, r1 ) * v.z ) * inv;\n\n }\n"), et = (e, t) => $e({
|
|
630
642
|
r0: e[0].xyz,
|
|
631
643
|
r1: e[1].xyz,
|
|
632
644
|
r2: e[2].xyz,
|
|
633
|
-
v: t.sub(
|
|
634
|
-
}),
|
|
645
|
+
v: t.sub(O(e[0].w, e[1].w, e[2].w))
|
|
646
|
+
}), tt = t("gpu"), Z = {
|
|
635
647
|
ORIGIN_META: 0,
|
|
636
648
|
DIR_FLAGS: 1,
|
|
637
649
|
THROUGHPUT_PDF: 2,
|
|
@@ -644,60 +656,60 @@ var K = (e) => e?.isNode ? e : h(e), q = (e, t, n, r) => Ue(e, K(r).mul(K(t)).ad
|
|
|
644
656
|
NORMAL_MAT: 1,
|
|
645
657
|
RNG: 2,
|
|
646
658
|
VERTEX: 3
|
|
647
|
-
},
|
|
648
|
-
function
|
|
659
|
+
}, nt = 0, rt = 0, it = 0, $ = (e, t) => t === 0 ? e : e.add(t * nt);
|
|
660
|
+
function at(e, t) {
|
|
649
661
|
t && e?._attributes?.delete?.(t);
|
|
650
662
|
}
|
|
651
|
-
var
|
|
663
|
+
var ot = class {
|
|
652
664
|
constructor(e = 0, t = null, n = 0) {
|
|
653
665
|
this.capacity = 0, this.lightVertices = 0, this._renderer = t, this._attrs = {}, this.rayBuffer = null, this.hitBuffer = null, e > 0 && this.allocate(e, n);
|
|
654
666
|
}
|
|
655
667
|
allocate(t, n = 0) {
|
|
656
|
-
this.dispose(), this.capacity = t, this.lightVertices = n,
|
|
657
|
-
let r = t * 7, i =
|
|
668
|
+
this.dispose(), this.capacity = t, this.lightVertices = n, nt = t, rt = t * (n > 0 ? 7 : 3), it = rt + n * 4;
|
|
669
|
+
let r = t * 7, i = j(r, 4);
|
|
658
670
|
this._attrs.ray = i, this.rayBuffer = {
|
|
659
671
|
rw: S(i, "vec4"),
|
|
660
672
|
ro: S(i, "vec4").toReadOnly()
|
|
661
673
|
};
|
|
662
|
-
let a =
|
|
674
|
+
let a = it + t * 1, o = j(a, 4, Uint32Array);
|
|
663
675
|
this._attrs.hit = o, this.hitBuffer = {
|
|
664
676
|
rw: S(o, "uvec4"),
|
|
665
677
|
ro: S(o, "uvec4").toReadOnly()
|
|
666
|
-
}, this.rayBytes = r * 16, this.hitBytes = a * 16, this.totalBytes = this.rayBytes + this.hitBytes,
|
|
678
|
+
}, this.rayBytes = r * 16, this.hitBytes = a * 16, this.totalBytes = this.rayBytes + this.hitBytes, tt.debug(`ray pool capacity ${e.n(t)} · ${e.mb(this.totalBytes)} (rays ${e.mb(this.rayBytes)} · hits ${e.mb(this.hitBytes)})`);
|
|
667
679
|
}
|
|
668
680
|
resize(e, t = 0) {
|
|
669
681
|
return e <= this.capacity && this.capacity > 0 && t === this.lightVertices ? !1 : (this.allocate(e, t), !0);
|
|
670
682
|
}
|
|
671
683
|
dispose() {
|
|
672
|
-
|
|
684
|
+
at(this._renderer, this._attrs.ray), at(this._renderer, this._attrs.hit), this._attrs = {}, this.rayBuffer = null, this.hitBuffer = null, this.capacity = 0, this.lightVertices = 0;
|
|
673
685
|
}
|
|
674
|
-
},
|
|
675
|
-
let o =
|
|
676
|
-
return e.element(o).assign(
|
|
677
|
-
},
|
|
678
|
-
let r =
|
|
679
|
-
return e.element(r).assign(
|
|
680
|
-
},
|
|
681
|
-
let t =
|
|
682
|
-
return
|
|
683
|
-
},
|
|
686
|
+
}, st = (e, t) => e.element($(t, Z.ORIGIN_META)).xyz, ct = (e, t) => e.element($(t, Z.DIR_FLAGS)).xyz, lt = (e, t) => p(e.element($(t, Z.DIR_FLAGS)).w), ut = (e, t) => e.element($(t, Z.THROUGHPUT_PDF)).xyz, dt = (e, t) => e.element($(t, Z.THROUGHPUT_PDF)).w, ft = (e, t) => e.element($(t, Z.RADIANCE_ALPHA)), pt = (e) => C(e).mul(1).add(it), mt = (e, t, n, r, i, a = null) => {
|
|
687
|
+
let o = pt(t), s = a === null ? T(e.element(o).w).y : f(a);
|
|
688
|
+
return e.element(o).assign(E(y(D(n.x, n.y)), y(D(n.z, r)), b(D(i.x, i.y)), b(D(i.z, s))));
|
|
689
|
+
}, ht = (e, t, n) => {
|
|
690
|
+
let r = pt(t), i = e.element(r).toVar();
|
|
691
|
+
return e.element(r).assign(E(i.x, i.y, i.z, b(D(T(i.w).x, n))));
|
|
692
|
+
}, gt = (e, t) => e.element(pt(t)), _t = (e) => T(e.w).y, vt = (e) => {
|
|
693
|
+
let t = te(e.x), n = te(e.y);
|
|
694
|
+
return k(O(t.x, t.y, n.x).mul(.5).add(.5), n.y);
|
|
695
|
+
}, yt = (e) => O(T(e.z), T(e.w).x), bt = (e) => {
|
|
684
696
|
let t = l(m(g(v(e, 1e-6))), -8, 7), n = l(f(e).mul(d(t.negate())).sub(1).mul(64), 0, 63);
|
|
685
697
|
return x(f(e).lessThan(.004), C(0), C(t.add(8)).shiftLeft(6).bitOr(C(n)));
|
|
686
|
-
},
|
|
698
|
+
}, xt = (e, t) => {
|
|
687
699
|
let n = p(e.element($(t, Z.ORIGIN_META)).w).shiftRight(22), r = f(n.shiftRight(6).bitAnd(C(15))).sub(8), i = f(n.bitAnd(C(63))).div(64).add(1);
|
|
688
700
|
return x(n.equal(C(0)), f(0), i.mul(d(r)));
|
|
689
|
-
},
|
|
701
|
+
}, St = (e, t, n, r, i, a = C(0), o = null) => {
|
|
690
702
|
let s = C(r).bitAnd(C(255)).bitOr(C(i).bitAnd(C(255)).shiftLeft(8)).bitOr(C(a).bitAnd(C(63)).shiftLeft(16));
|
|
691
|
-
return o !== null && (s = s.bitOr(
|
|
692
|
-
},
|
|
703
|
+
return o !== null && (s = s.bitOr(bt(o).shiftLeft(22))), e.element($(t, Z.ORIGIN_META)).assign(k(n, w(s)));
|
|
704
|
+
}, Ct = (e, t, n, r) => e.element($(t, Z.DIR_FLAGS)).assign(k(n, w(r))), wt = (e, t, n, r) => e.element($(t, Z.THROUGHPUT_PDF)).assign(k(n, r)), Tt = (e, t, n) => e.element($(t, Z.RADIANCE_ALPHA)).assign(n), Et = (e, t) => w(e.element($(t, Q.DIST_TRI_BARY)).x), Dt = (e, t) => e.element($(t, Q.DIST_TRI_BARY)).y, Ot = (e, t) => w(e.element($(t, Q.DIST_TRI_BARY)).zw), kt = (e, t) => Y(e.element($(t, Q.NORMAL_MAT)).x), At = (e, t) => C(e.element($(t, Q.NORMAL_MAT)).y), jt = (e, t) => h(e.element($(t, Q.NORMAL_MAT)).z).sub(h(1)), Mt = (e, t) => e.element($(t, Q.NORMAL_MAT)).w, Nt = (e, t) => e.element($(t, Q.RNG)).x, Pt = (e, t, n) => e.element($(t, Q.RNG)).assign(E(n, 0, 0, 0)), Ft = (e, t) => {
|
|
693
705
|
let n = e.element($(t, Q.RNG));
|
|
694
706
|
return {
|
|
695
707
|
dVCM: w(n.y),
|
|
696
708
|
dVC: w(n.z)
|
|
697
709
|
};
|
|
698
|
-
},
|
|
699
|
-
e.element(t(0)).assign(
|
|
700
|
-
},
|
|
710
|
+
}, It = (e, t, n, r, i) => e.element($(t, Q.RNG)).assign(E(n, p(r), p(i), C(0))), Lt = (e) => (t) => $(e, Q.VERTEX + t), Rt = (e) => (t) => C(e).mul(4).add(rt + t), zt = (e, t, n) => {
|
|
711
|
+
e.element(t(0)).assign(E(p(n.position), n.tag)), e.element(t(1)).assign(E(p(n.throughput), J(n.V))), e.element(t(2)).assign(E(J(n.N), J(n.facetN), C(n.materialIndex).bitOr(C(n.extra).bitAnd(C(255)).shiftLeft(C(24))), p(n.uv.x))), e.element(t(3)).assign(E(p(n.uv.y), p(n.dVCM), p(n.dVC), C(0)));
|
|
712
|
+
}, Bt = (e, t) => e.element(t(0)).w, Vt = (e, t) => w(e.element(t(0)).xyz), Ht = (e, t) => e.element(t(3)).w, Ut = (e, t, n) => e.element(t(3)).w.assign(n), Wt = (e, t) => {
|
|
701
713
|
let n = e.element(t(0)).toVar(), r = e.element(t(1)).toVar(), i = e.element(t(2)).toVar(), a = e.element(t(3)).toVar();
|
|
702
714
|
return {
|
|
703
715
|
position: w(n.xyz),
|
|
@@ -707,18 +719,18 @@ var at = class {
|
|
|
707
719
|
N: Y(i.x),
|
|
708
720
|
facetN: Y(i.y),
|
|
709
721
|
materialIndex: i.z.bitAnd(C(16777215)),
|
|
710
|
-
uv:
|
|
722
|
+
uv: D(w(i.w), w(a.x)),
|
|
711
723
|
dVCM: w(a.y),
|
|
712
724
|
dVC: w(a.z),
|
|
713
725
|
extra: i.z.shiftRight(C(24))
|
|
714
726
|
};
|
|
715
|
-
},
|
|
727
|
+
}, Gt = (e, t, n) => {
|
|
716
728
|
let r = e.element(t(0)).w;
|
|
717
729
|
return x(r.shiftRight(C(8)).equal(n), r.bitAnd(C(255)), C(0));
|
|
718
|
-
},
|
|
730
|
+
}, Kt = (e, t, n, r) => {
|
|
719
731
|
let i = e.element(t(0)).xyz.toVar();
|
|
720
|
-
e.element(t(0)).assign(
|
|
721
|
-
},
|
|
732
|
+
e.element(t(0)).assign(E(i, n.shiftLeft(C(8)).bitOr(C(r))));
|
|
733
|
+
}, qt = (e, t, n, r, i, a) => e.element($(t, Q.VERTEX)).assign(E(C(n), C(h(r).add(h(1))), p(i), p(a))), Jt = (e, t) => {
|
|
722
734
|
let n = e.element($(t, Q.VERTEX)).toVar();
|
|
723
735
|
return {
|
|
724
736
|
triangle: h(n.x),
|
|
@@ -726,9 +738,9 @@ var at = class {
|
|
|
726
738
|
cosLight: w(n.z),
|
|
727
739
|
scale: w(n.w)
|
|
728
740
|
};
|
|
729
|
-
},
|
|
730
|
-
e.element($(t, Q.DIST_TRI_BARY)).assign(
|
|
731
|
-
},
|
|
741
|
+
}, Yt = (e, t, n, r, i, a, o, s, c, l = C(0)) => {
|
|
742
|
+
e.element($(t, Q.DIST_TRI_BARY)).assign(E(p(n), r, p(i), p(a))), e.element($(t, Q.NORMAL_MAT)).assign(E(J(o), s, c, l));
|
|
743
|
+
}, Xt = (e, t) => {
|
|
732
744
|
let n = e.element($(t, Z.MEDIUM_STACK)), r = p(n.x);
|
|
733
745
|
return {
|
|
734
746
|
stackDepth: r.bitAnd(255),
|
|
@@ -738,25 +750,25 @@ var at = class {
|
|
|
738
750
|
ior2: n.z,
|
|
739
751
|
ior3: n.w
|
|
740
752
|
};
|
|
741
|
-
},
|
|
753
|
+
}, Zt = (e, t, n, r, i, a, o, s = C(0)) => e.element($(t, Z.MEDIUM_STACK)).assign(k(w(n.bitOr(r.shiftLeft(8)).bitOr(s.shiftLeft(16))), i, a, o)), Qt = (e, t) => e.element($(t, Z.MEDIUM_SIGMA_A)).xyz, $t = (e, t, n) => {
|
|
742
754
|
let r = e.element($(t, Z.MEDIUM_SIGMA_A)).w.toVar();
|
|
743
|
-
e.element($(t, Z.MEDIUM_SIGMA_A)).assign(
|
|
744
|
-
},
|
|
745
|
-
let t = l(e,
|
|
755
|
+
e.element($(t, Z.MEDIUM_SIGMA_A)).assign(k(n, r));
|
|
756
|
+
}, en = (e) => {
|
|
757
|
+
let t = l(e, O(0), O(1)).mul(1023).add(.5);
|
|
746
758
|
return C(t.x).bitOr(C(t.y).shiftLeft(10)).bitOr(C(t.z).shiftLeft(20));
|
|
747
|
-
},
|
|
759
|
+
}, tn = (e) => O(f(e.bitAnd(C(1023))), f(e.shiftRight(10).bitAnd(C(1023))), f(e.shiftRight(20).bitAnd(C(1023)))).div(1023), nn = (e, t) => tn(p(e.element($(t, Z.MEDIUM_SIGMA_A)).w)), rn = (e, t, n) => {
|
|
748
760
|
let r = e.element($(t, Z.MEDIUM_SIGMA_A)).xyz.toVar();
|
|
749
|
-
e.element($(t, Z.MEDIUM_SIGMA_A)).assign(
|
|
750
|
-
},
|
|
761
|
+
e.element($(t, Z.MEDIUM_SIGMA_A)).assign(k(r, w(en(n))));
|
|
762
|
+
}, an = (e, t) => h(p(e.element($(t, Z.ORIGIN_META)).w).bitAnd(255)), on = (e, t) => h(p(e.element($(t, Z.ORIGIN_META)).w).shiftRight(8).bitAnd(255)), sn = (e, t) => h(p(e.element($(t, Z.ORIGIN_META)).w).shiftRight(16).bitAnd(C(63))), cn = (e, t) => {
|
|
751
763
|
let n = e.element($(t, Z.SSS_SIGMA_S));
|
|
752
764
|
return {
|
|
753
765
|
sigmaS: n.xyz,
|
|
754
766
|
g: n.w
|
|
755
767
|
};
|
|
756
|
-
},
|
|
768
|
+
}, ln = (e, t, n, r) => e.element($(t, Z.SSS_SIGMA_S)).assign(k(n, r)), un = [
|
|
757
769
|
610,
|
|
758
770
|
550,
|
|
759
771
|
465
|
|
760
772
|
].map((e) => -.023 + .292 / (e / 1e3));
|
|
761
773
|
//#endregion
|
|
762
|
-
export {
|
|
774
|
+
export { ln as $, ge as $t, ut as A, Xe as At, mt as B, Ge as Bt, Ft as C, q as Ct, st as D, Qe as Dt, ct as E, $e as Et, Ht as F, Oe as Ft, $t as G, me as Gt, Yt as H, R as Ht, Vt as I, Ye as It, St as J, z as Jt, Zt as K, ue as Kt, Wt as L, He as Lt, cn as M, be as Mt, on as N, Ne as Nt, dt as O, Ze as Ot, sn as P, U as Pt, Pt as Q, _e as Qt, Bt as R, je as Rt, xt as S, qe as St, lt as T, Je as Tt, qt as U, pe as Ut, ht as V, Y as Vt, Kt as W, he as Wt, wt as X, de as Xt, Tt as Y, ce as Yt, It as Z, ye as Zt, Dt as _, Pe as _t, yt as a, j as an, W as at, Qt as b, Le as bt, Lt as c, we as ct, Ot as d, Ee as dt, se as en, Ut as et, Et as f, xe as ft, kt as g, Be as gt, At as h, Ie as ht, at as i, N as in, ke as it, Nt as j, Me as jt, ft as k, et as kt, nn as l, B as lt, jt as m, Ae as mt, ot as n, le as nn, V as nt, _t as o, I as on, Te as ot, Mt as p, Ce as pt, Ct as q, fe as qt, Rt as r, ve as rn, De as rt, vt as s, H as st, un as t, L as tn, zt as tt, gt as u, Se as ut, Jt as v, Re as vt, an as w, Ke as wt, Xt as x, Fe as xt, Gt as y, Ve as yt, rn as z, Ue as zt };
|