@meimu/mutracer 0.1.1 → 0.1.3
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 +3525 -3484
- package/docs/materials.md +27 -7
- package/docs/threejs.md +13 -2
- package/docs/viewer.md +53 -0
- 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 +2 -1
- package/lib/renderer/MaterialTable.js.map +1 -1
- package/lib/renderer/WGPUBloomPass.js +18 -18
- package/lib/renderer/WGPUFullQuadPass.js +3 -3
- package/lib/renderer/WGPUJNLMDenoiser.js +62 -62
- package/lib/renderer/WGPURayTraceOutput.js +14 -12
- package/lib/renderer/WGPURayTraceOutput.js.map +1 -1
- package/lib/renderer/WGPURayTracePass.js +2 -2
- package/lib/renderer/WGPURayTracePass.js.map +1 -1
- package/lib/renderer/WGPURenderingPipeline.js +20 -18
- package/lib/renderer/WGPURenderingPipeline.js.map +1 -1
- package/lib/renderer/WebGLJNLMDenoiser.js +61 -61
- package/lib/renderer/WebGLRayTraceOutputPass.js +4 -4
- package/lib/renderer/WebGLRayTracePass.js +3 -1
- package/lib/renderer/WebGLRayTracePass.js.map +1 -1
- package/lib/renderer/glsl/chunks/cameraRay.glsl.js +9 -9
- package/lib/renderer/glsl/chunks/envMap.glsl.js +45 -45
- package/lib/renderer/glsl/chunks/intersect.glsl.js +262 -262
- package/lib/renderer/glsl/chunks/materialBuffer.glsl.js +111 -111
- package/lib/renderer/glsl/chunks/openPbrBsdf.glsl.js +436 -436
- package/lib/renderer/glsl/chunks/rand.glsl.js +3 -3
- package/lib/renderer/glsl/chunks/random.glsl.js +3 -3
- package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js +32 -32
- package/lib/renderer/glsl/chunks/sampleLight.glsl.js +54 -54
- package/lib/renderer/glsl/chunks/sampleMaterial.glsl.js +71 -71
- package/lib/renderer/glsl/chunks/sampleShadowCatcher.glsl.js +12 -12
- package/lib/renderer/glsl/chunks/sampling.glsl.js +64 -64
- package/lib/renderer/glsl/chunks/sobol.glsl.js +49 -49
- package/lib/renderer/glsl/chunks/textureLinear.glsl.js +5 -5
- package/lib/renderer/glsl/chunks/uvProjection.glsl.js +5 -5
- package/lib/renderer/glsl/depthQuery.frag.js +2 -2
- package/lib/renderer/glsl/normalizeRayTraceOutput.frag.js +8 -8
- package/lib/renderer/glsl/rayTrace.frag.js +128 -128
- package/lib/renderer/glsl/shadowCatcher.frag.js +12 -12
- package/lib/renderer/glsl/webglPipeline.frag.js +49 -49
- package/lib/renderer/lightsUtil.js +1 -1
- package/lib/renderer/lightsUtil.js.map +1 -1
- package/lib/renderer/materialComparison.generated.js +5 -0
- package/lib/renderer/materialComparison.generated.js.map +1 -1
- package/lib/renderer/materialLayout.js +2 -1
- package/lib/renderer/materialLayout.js.map +1 -1
- package/lib/renderer/prepareMeshBVH.d.ts +4 -2
- package/lib/renderer/prepareMeshBVH.js +44 -20
- package/lib/renderer/prepareMeshBVH.js.map +1 -1
- package/lib/renderer/scratchSampling.js +6 -6
- package/lib/renderer/wgsl/chunks/common.wgsl.js +4 -4
- package/lib/renderer/wgsl/chunks/envMap.wgsl.js +29 -29
- package/lib/renderer/wgsl/chunks/intersect.wgsl.js +376 -379
- package/lib/renderer/wgsl/chunks/intersect.wgsl.js.map +1 -1
- package/lib/renderer/wgsl/chunks/intersectionAlpha.wgsl.js +5 -5
- package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js +51 -51
- package/lib/renderer/wgsl/chunks/openPbrBsdf.wgsl.js +453 -453
- package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.d.ts +1 -1
- package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.js +122 -117
- 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 +13 -13
- package/lib/renderer/wgsl/chunks/sampleLight.wgsl.js +94 -94
- package/lib/renderer/wgsl/chunks/sampleMaterial.wgsl.js +119 -119
- package/lib/renderer/wgsl/chunks/sampleShadowCatcher.wgsl.js +5 -5
- package/lib/renderer/wgsl/chunks/sampling.wgsl.js +62 -62
- 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 +53 -53
- package/lib/renderer/wgsl/chunks/uvProjection.wgsl.js +5 -5
- package/lib/renderer/wgsl/compose.frag.wgsl.d.ts +2 -2
- package/lib/renderer/wgsl/compose.frag.wgsl.js +120 -92
- 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.js +3 -3
- package/lib/renderer/wgsl/offlineAdaptive.compute.js +26 -26
- package/lib/renderer/wgsl/rayTrace.compute.js +220 -211
- package/lib/renderer/wgsl/rayTrace.compute.js.map +1 -1
- package/lib/scene/OpenPBRMaterial.d.ts +4 -2
- package/lib/scene/OpenPBRMaterial.js +4 -2
- package/lib/scene/OpenPBRMaterial.js.map +1 -1
- package/lib/scene/openPbrSchema.d.ts +7 -2
- package/lib/scene/openPbrSchema.js +2 -1
- package/lib/scene/openPbrSchema.js.map +1 -1
- package/lib/util/fromTHREE.d.ts +1 -0
- package/lib/util/fromTHREE.js +24 -6
- 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,7 +40,7 @@ encoded / 12.92,
|
|
|
40
40
|
encoded <= vec3f(0.04045)
|
|
41
41
|
);
|
|
42
42
|
var result = linear;
|
|
43
|
-
let
|
|
43
|
+
let jc = textureLoad(in_rawAlbedo, vec2i(globalId.xy), 0).a;
|
|
44
44
|
if (preserveSurfaceTexture != 0u) {
|
|
45
45
|
|
|
46
46
|
|
|
@@ -48,22 +48,22 @@ if (preserveSurfaceTexture != 0u) {
|
|
|
48
48
|
let fM = vec2i(globalId.xy);
|
|
49
49
|
let center = textureLoad(in_rawNormal, fM, 0);
|
|
50
50
|
let n = normalize(center.rgb * 2.0 - 1.0 + vec3f(1e-8));
|
|
51
|
-
var
|
|
51
|
+
var mS = 0.0;
|
|
52
52
|
for (var y = -1; y <= 1; y++) {
|
|
53
53
|
for (var x = -1; x <= 1; x++) {
|
|
54
|
-
let
|
|
54
|
+
let tO = textureLoad(in_rawNormal,
|
|
55
55
|
clamp(fM + vec2i(x, y), vec2i(0), imageSize - 1), 0);
|
|
56
|
-
let nn = normalize(
|
|
57
|
-
|
|
58
|
-
max(1.0 - dot(n, nn), abs(center.a -
|
|
56
|
+
let nn = normalize(tO.rgb * 2.0 - 1.0 + vec3f(1e-8));
|
|
57
|
+
mS = max(mS,
|
|
58
|
+
max(1.0 - dot(n, nn), abs(center.a - tO.a)));
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
|
-
let
|
|
61
|
+
let ug = smoothstep(0.02, 0.1, mS);
|
|
62
62
|
let raw = clamp(textureLoad(in_rawAlbedo, fM, 0).rgb,
|
|
63
63
|
vec3f(0.0), vec3f(1.0));
|
|
64
|
-
result = mix(raw, linear,
|
|
64
|
+
result = mix(raw, linear, ug);
|
|
65
65
|
}
|
|
66
|
-
out_albedo[index] = vec4f(result,
|
|
66
|
+
out_albedo[index] = vec4f(result, jc);
|
|
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 vF = 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(vF, 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()]);
|