@meimu/mutracer 0.1.2 → 0.1.4
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/dist/assets/bvh.worker.js +1 -1
- package/dist/mutracer.umd.js +4475 -4337
- package/docs/api.md +11 -9
- package/docs/threejs.md +30 -4
- package/lib/Engine.js +18 -1
- package/lib/Engine.js.map +1 -1
- package/lib/main.d.ts +1 -1
- package/lib/main.js.map +1 -1
- package/lib/oidn.d.ts +1 -1
- package/lib/oidnBundledWeights.cdn.d.ts +2 -2
- package/lib/renderer/MaterialTable.d.ts +1 -0
- package/lib/renderer/MaterialTable.js +10 -4
- package/lib/renderer/MaterialTable.js.map +1 -1
- package/lib/renderer/WGPUBloomPass.js +18 -18
- package/lib/renderer/WGPUFullQuadPass.js +6 -6
- package/lib/renderer/WGPUJNLMDenoiser.js +68 -68
- package/lib/renderer/WGPURayTraceOutput.js +16 -14
- package/lib/renderer/WGPURayTraceOutput.js.map +1 -1
- package/lib/renderer/WGPURayTracePass.d.ts +2 -0
- package/lib/renderer/WGPURayTracePass.js +13 -7
- package/lib/renderer/WGPURayTracePass.js.map +1 -1
- package/lib/renderer/WGPURenderingPipeline.js +24 -22
- package/lib/renderer/WGPURenderingPipeline.js.map +1 -1
- package/lib/renderer/WebGLJNLMDenoiser.js +68 -68
- package/lib/renderer/WebGLRayTraceOutputPass.js +4 -4
- package/lib/renderer/WebGLRayTracePass.d.ts +1 -0
- package/lib/renderer/WebGLRayTracePass.js +7 -1
- package/lib/renderer/WebGLRayTracePass.js.map +1 -1
- package/lib/renderer/envMapCreation.d.ts +5 -1
- package/lib/renderer/envMapCreation.js +42 -5
- package/lib/renderer/envMapCreation.js.map +1 -1
- package/lib/renderer/geometryUpdates.js +1 -1
- package/lib/renderer/geometryUpdates.js.map +1 -1
- package/lib/renderer/glsl/chunks/cameraRay.glsl.js +12 -12
- package/lib/renderer/glsl/chunks/envMap.glsl.js +69 -57
- package/lib/renderer/glsl/chunks/envMap.glsl.js.map +1 -1
- package/lib/renderer/glsl/chunks/intersect.glsl.js +316 -310
- package/lib/renderer/glsl/chunks/intersect.glsl.js.map +1 -1
- package/lib/renderer/glsl/chunks/materialBuffer.glsl.js +153 -121
- package/lib/renderer/glsl/chunks/materialBuffer.glsl.js.map +1 -1
- package/lib/renderer/glsl/chunks/openPbrBsdf.glsl.js +540 -540
- package/lib/renderer/glsl/chunks/rand.glsl.js +3 -3
- package/lib/renderer/glsl/chunks/random.glsl.js +4 -4
- package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js +40 -39
- package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js.map +1 -1
- package/lib/renderer/glsl/chunks/sampleLight.glsl.js +71 -71
- package/lib/renderer/glsl/chunks/sampleMaterial.glsl.js +84 -84
- package/lib/renderer/glsl/chunks/sampleShadowCatcher.glsl.js +13 -13
- package/lib/renderer/glsl/chunks/sampling.glsl.js +77 -77
- package/lib/renderer/glsl/chunks/sobol.glsl.js +65 -65
- package/lib/renderer/glsl/chunks/textureLinear.glsl.js +5 -5
- package/lib/renderer/glsl/chunks/uvProjection.glsl.js +11 -11
- package/lib/renderer/glsl/depthQuery.frag.js +5 -5
- package/lib/renderer/glsl/depthQuery.frag.js.map +1 -1
- package/lib/renderer/glsl/normalizeRayTraceOutput.frag.js +8 -8
- package/lib/renderer/glsl/rayTrace.frag.js +165 -165
- package/lib/renderer/glsl/rayTrace.frag.js.map +1 -1
- package/lib/renderer/glsl/shadowCatcher.frag.js +14 -14
- package/lib/renderer/glsl/shadowCatcher.frag.js.map +1 -1
- package/lib/renderer/glsl/webglPipeline.frag.js +56 -56
- package/lib/renderer/lightsUtil.js +7 -5
- package/lib/renderer/lightsUtil.js.map +1 -1
- package/lib/renderer/materialChanges.js +1 -1
- package/lib/renderer/materialChanges.js.map +1 -1
- package/lib/renderer/materialComparison.generated.js +36 -18
- package/lib/renderer/materialComparison.generated.js.map +1 -1
- package/lib/renderer/prepareMeshBVH.js +2 -2
- package/lib/renderer/prepareMeshBVH.js.map +1 -1
- package/lib/renderer/sceneChangeDetector.js +4 -1
- package/lib/renderer/sceneChangeDetector.js.map +1 -1
- package/lib/renderer/sceneLightChanges.js +3 -2
- package/lib/renderer/sceneLightChanges.js.map +1 -1
- package/lib/renderer/scratchSampling.js +18 -18
- package/lib/renderer/wgsl/chunks/common.wgsl.js +4 -4
- package/lib/renderer/wgsl/chunks/envMap.wgsl.d.ts +1 -1
- package/lib/renderer/wgsl/chunks/envMap.wgsl.js +39 -31
- package/lib/renderer/wgsl/chunks/envMap.wgsl.js.map +1 -1
- package/lib/renderer/wgsl/chunks/intersect.wgsl.js +475 -469
- package/lib/renderer/wgsl/chunks/intersect.wgsl.js.map +1 -1
- package/lib/renderer/wgsl/chunks/intersectionAlpha.wgsl.js +8 -8
- package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js +95 -61
- package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js.map +1 -1
- package/lib/renderer/wgsl/chunks/openPbrBsdf.wgsl.js +562 -562
- package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.d.ts +1 -1
- package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.js +117 -120
- package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.js.map +1 -1
- package/lib/renderer/wgsl/chunks/rand.wgsl.js +3 -3
- package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.js +25 -22
- package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.js.map +1 -1
- package/lib/renderer/wgsl/chunks/sampleLight.wgsl.js +128 -128
- package/lib/renderer/wgsl/chunks/sampleMaterial.wgsl.js +143 -143
- package/lib/renderer/wgsl/chunks/sampleShadowCatcher.wgsl.js +6 -6
- package/lib/renderer/wgsl/chunks/sampling.wgsl.js +75 -75
- package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.d.ts +3 -3
- package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.js +2 -2
- package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.js.map +1 -1
- package/lib/renderer/wgsl/chunks/sobol.wgsl.js +69 -69
- package/lib/renderer/wgsl/chunks/uvProjection.wgsl.js +11 -11
- package/lib/renderer/wgsl/compose.frag.wgsl.d.ts +2 -2
- package/lib/renderer/wgsl/compose.frag.wgsl.js +130 -102
- package/lib/renderer/wgsl/compose.frag.wgsl.js.map +1 -1
- package/lib/renderer/wgsl/customDenoise.wgsl.js +10 -10
- package/lib/renderer/wgsl/depthQuery.wgsl.d.ts +1 -1
- package/lib/renderer/wgsl/depthQuery.wgsl.js +5 -5
- package/lib/renderer/wgsl/depthQuery.wgsl.js.map +1 -1
- package/lib/renderer/wgsl/offlineAdaptive.compute.js +28 -28
- package/lib/renderer/wgsl/rayTrace.compute.js +289 -277
- package/lib/renderer/wgsl/rayTrace.compute.js.map +1 -1
- package/lib/scene/EnvironmentLight.d.ts +9 -3
- package/lib/scene/EnvironmentLight.js +9 -2
- package/lib/scene/EnvironmentLight.js.map +1 -1
- package/lib/scene/Scene.d.ts +4 -0
- package/lib/scene/Scene.js.map +1 -1
- package/lib/scene/SpotLight.d.ts +2 -2
- package/lib/scene/SpotLight.js +1 -1
- package/lib/scene/SpotLight.js.map +1 -1
- package/lib/scene/Texture.d.ts +17 -6
- package/lib/scene/Texture.js +13 -4
- package/lib/scene/Texture.js.map +1 -1
- package/lib/util/fromTHREE.js +151 -29
- package/lib/util/fromTHREE.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/lib/version.js.map +1 -1
- package/package.json +5 -4
|
@@ -40,30 +40,30 @@ encoded / 12.92,
|
|
|
40
40
|
encoded <= vec3f(0.04045)
|
|
41
41
|
);
|
|
42
42
|
var result = linear;
|
|
43
|
-
let
|
|
43
|
+
let jg = textureLoad(in_rawAlbedo, vec2i(globalId.xy), 0).a;
|
|
44
44
|
if (preserveSurfaceTexture != 0u) {
|
|
45
45
|
|
|
46
46
|
|
|
47
47
|
|
|
48
|
-
let
|
|
49
|
-
let center = textureLoad(in_rawNormal,
|
|
48
|
+
let fP = vec2i(globalId.xy);
|
|
49
|
+
let center = textureLoad(in_rawNormal, fP, 0);
|
|
50
50
|
let n = normalize(center.rgb * 2.0 - 1.0 + vec3f(1e-8));
|
|
51
|
-
var
|
|
51
|
+
var ng = 0.0;
|
|
52
52
|
for (var y = -1; y <= 1; y++) {
|
|
53
53
|
for (var x = -1; x <= 1; x++) {
|
|
54
|
-
let
|
|
55
|
-
clamp(
|
|
56
|
-
let nn = normalize(
|
|
57
|
-
|
|
58
|
-
max(1.0 - dot(n, nn), abs(center.a -
|
|
54
|
+
let tV = textureLoad(in_rawNormal,
|
|
55
|
+
clamp(fP + vec2i(x, y), vec2i(0), imageSize - 1), 0);
|
|
56
|
+
let nn = normalize(tV.rgb * 2.0 - 1.0 + vec3f(1e-8));
|
|
57
|
+
ng = max(ng,
|
|
58
|
+
max(1.0 - dot(n, nn), abs(center.a - tV.a)));
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
|
-
let
|
|
62
|
-
let raw = clamp(textureLoad(in_rawAlbedo,
|
|
61
|
+
let un = smoothstep(0.02, 0.1, ng);
|
|
62
|
+
let raw = clamp(textureLoad(in_rawAlbedo, fP, 0).rgb,
|
|
63
63
|
vec3f(0.0), vec3f(1.0));
|
|
64
|
-
result = mix(raw, linear,
|
|
64
|
+
result = mix(raw, linear, un);
|
|
65
65
|
}
|
|
66
|
-
out_albedo[index] = vec4f(result,
|
|
66
|
+
out_albedo[index] = vec4f(result, jg);
|
|
67
67
|
`;
|
|
68
68
|
export const oidnNormalSanitizeMain = /* wgsl */ `
|
|
69
69
|
if (globalId.x >= u32(imageSize.x) || globalId.y >= u32(imageSize.y)) { return; }
|
|
@@ -314,7 +314,7 @@ output.color = color;
|
|
|
314
314
|
data: 0.25
|
|
315
315
|
}
|
|
316
316
|
],
|
|
317
|
-
outputs: ['color', 'denoiseColor'],
|
|
317
|
+
outputs: ['color', 'denoiseColor', 'denoiseAlbedo'],
|
|
318
318
|
inputs: [
|
|
319
319
|
'colorTex',
|
|
320
320
|
'foregroundTex',
|
|
@@ -329,7 +329,8 @@ output.color = color;
|
|
|
329
329
|
color: {
|
|
330
330
|
format: composeColorFormat
|
|
331
331
|
},
|
|
332
|
-
denoiseColor: { format: 'rgba32float' }
|
|
332
|
+
denoiseColor: { format: 'rgba32float' },
|
|
333
|
+
denoiseAlbedo: { format: 'rgba8unorm' }
|
|
333
334
|
});
|
|
334
335
|
const compositeDenoiseDisplayPass = scratch.get('compositeDenoiseDisplayPass', () => new WGPUFullQuadPass('OIDN composed display', device, {
|
|
335
336
|
textureWillBeRead: true,
|
|
@@ -374,11 +375,11 @@ output.color = color;
|
|
|
374
375
|
oidnNormalSanitizePass.setOutputParams({ normal: { channels: 4 } });
|
|
375
376
|
const outputPass = scratch.get('outputPass', () => new WGPUFullQuadPass('output', device, {
|
|
376
377
|
fsMain: /* wgsl */ `
|
|
377
|
-
let
|
|
378
|
+
let vM = min(
|
|
378
379
|
vec2i(uv2 * vec2f(colorTexRegion())),
|
|
379
380
|
vec2i(colorTexRegion()) - vec2i(1)
|
|
380
381
|
);
|
|
381
|
-
var color = load_colorTex(
|
|
382
|
+
var color = load_colorTex(vM, 0);
|
|
382
383
|
color = vec4(color.rgb * color.a, color.a);
|
|
383
384
|
output.color = color;
|
|
384
385
|
`,
|
|
@@ -488,7 +489,7 @@ output.color = color;
|
|
|
488
489
|
}
|
|
489
490
|
function prepareComposition() {
|
|
490
491
|
composePass.setSize(renderWidth, renderHeight);
|
|
491
|
-
composePass.setOutputParams({ color: { format: composeColorFormat }, denoiseColor: { format: 'rgba32float' } });
|
|
492
|
+
composePass.setOutputParams({ color: { format: composeColorFormat }, denoiseColor: { format: 'rgba32float' }, denoiseAlbedo: { format: 'rgba8unorm' } });
|
|
492
493
|
composePass.setUniform('exposure', exposure);
|
|
493
494
|
composePass.setUniform('toneMappingParams', [toneMappingMode, vignette]);
|
|
494
495
|
composePass.setUniform('colorGradingParams', [contrast, saturation, temperature, tint]);
|
|
@@ -847,7 +848,8 @@ output.color = color;
|
|
|
847
848
|
composeColorFormat = nextComposeColorFormat;
|
|
848
849
|
composePass.setOutputParams({
|
|
849
850
|
color: { format: composeColorFormat },
|
|
850
|
-
denoiseColor: { format: 'rgba32float' }
|
|
851
|
+
denoiseColor: { format: 'rgba32float' },
|
|
852
|
+
denoiseAlbedo: { format: 'rgba8unorm' }
|
|
851
853
|
});
|
|
852
854
|
}
|
|
853
855
|
if (wasActive !== hdrOutputActive) {
|
|
@@ -1001,7 +1003,7 @@ output.color = color;
|
|
|
1001
1003
|
if (!auxiliaryDenoisers) {
|
|
1002
1004
|
return {
|
|
1003
1005
|
albedo: {
|
|
1004
|
-
data: copyGuide('OIDN raw albedo',
|
|
1006
|
+
data: copyGuide('OIDN raw albedo', composePass.getOutput('denoiseAlbedo')),
|
|
1005
1007
|
...size
|
|
1006
1008
|
},
|
|
1007
1009
|
normal: {
|
|
@@ -1015,7 +1017,7 @@ output.color = color;
|
|
|
1015
1017
|
const encodeEncoder = device.createCommandEncoder();
|
|
1016
1018
|
oidnAlbedoEncodePass.createPass(encodeEncoder, {
|
|
1017
1019
|
albedo: {
|
|
1018
|
-
texture:
|
|
1020
|
+
texture: composePass.getOutput('denoiseAlbedo'),
|
|
1019
1021
|
channels: 4
|
|
1020
1022
|
}
|
|
1021
1023
|
});
|
|
@@ -1039,7 +1041,7 @@ output.color = color;
|
|
|
1039
1041
|
oidnAlbedoDecodePass.setUniform('preserveSurfaceTexture', +false);
|
|
1040
1042
|
oidnAlbedoDecodePass.createPass(decodeEncoder, {
|
|
1041
1043
|
albedo: { buffer: albedoOutput.data, channels: 4 },
|
|
1042
|
-
rawAlbedo: { texture:
|
|
1044
|
+
rawAlbedo: { texture: composePass.getOutput('denoiseAlbedo'), channels: 4 },
|
|
1043
1045
|
rawNormal: { texture: getFrameInput('normal'), channels: 4 }
|
|
1044
1046
|
});
|
|
1045
1047
|
device.queue.submit([decodeEncoder.finish()]);
|