@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.
Files changed (95) hide show
  1. package/dist/assets/bvh.worker.js +1 -1
  2. package/dist/mutracer.umd.js +3525 -3484
  3. package/docs/materials.md +27 -7
  4. package/docs/threejs.md +13 -2
  5. package/docs/viewer.md +53 -0
  6. package/lib/oidn.d.ts +1 -1
  7. package/lib/oidnBundledWeights.cdn.d.ts +2 -2
  8. package/lib/renderer/MaterialTable.d.ts +1 -0
  9. package/lib/renderer/MaterialTable.js +2 -1
  10. package/lib/renderer/MaterialTable.js.map +1 -1
  11. package/lib/renderer/WGPUBloomPass.js +18 -18
  12. package/lib/renderer/WGPUFullQuadPass.js +3 -3
  13. package/lib/renderer/WGPUJNLMDenoiser.js +62 -62
  14. package/lib/renderer/WGPURayTraceOutput.js +14 -12
  15. package/lib/renderer/WGPURayTraceOutput.js.map +1 -1
  16. package/lib/renderer/WGPURayTracePass.js +2 -2
  17. package/lib/renderer/WGPURayTracePass.js.map +1 -1
  18. package/lib/renderer/WGPURenderingPipeline.js +20 -18
  19. package/lib/renderer/WGPURenderingPipeline.js.map +1 -1
  20. package/lib/renderer/WebGLJNLMDenoiser.js +61 -61
  21. package/lib/renderer/WebGLRayTraceOutputPass.js +4 -4
  22. package/lib/renderer/WebGLRayTracePass.js +3 -1
  23. package/lib/renderer/WebGLRayTracePass.js.map +1 -1
  24. package/lib/renderer/glsl/chunks/cameraRay.glsl.js +9 -9
  25. package/lib/renderer/glsl/chunks/envMap.glsl.js +45 -45
  26. package/lib/renderer/glsl/chunks/intersect.glsl.js +262 -262
  27. package/lib/renderer/glsl/chunks/materialBuffer.glsl.js +111 -111
  28. package/lib/renderer/glsl/chunks/openPbrBsdf.glsl.js +436 -436
  29. package/lib/renderer/glsl/chunks/rand.glsl.js +3 -3
  30. package/lib/renderer/glsl/chunks/random.glsl.js +3 -3
  31. package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js +32 -32
  32. package/lib/renderer/glsl/chunks/sampleLight.glsl.js +54 -54
  33. package/lib/renderer/glsl/chunks/sampleMaterial.glsl.js +71 -71
  34. package/lib/renderer/glsl/chunks/sampleShadowCatcher.glsl.js +12 -12
  35. package/lib/renderer/glsl/chunks/sampling.glsl.js +64 -64
  36. package/lib/renderer/glsl/chunks/sobol.glsl.js +49 -49
  37. package/lib/renderer/glsl/chunks/textureLinear.glsl.js +5 -5
  38. package/lib/renderer/glsl/chunks/uvProjection.glsl.js +5 -5
  39. package/lib/renderer/glsl/depthQuery.frag.js +2 -2
  40. package/lib/renderer/glsl/normalizeRayTraceOutput.frag.js +8 -8
  41. package/lib/renderer/glsl/rayTrace.frag.js +128 -128
  42. package/lib/renderer/glsl/shadowCatcher.frag.js +12 -12
  43. package/lib/renderer/glsl/webglPipeline.frag.js +49 -49
  44. package/lib/renderer/lightsUtil.js +1 -1
  45. package/lib/renderer/lightsUtil.js.map +1 -1
  46. package/lib/renderer/materialComparison.generated.js +5 -0
  47. package/lib/renderer/materialComparison.generated.js.map +1 -1
  48. package/lib/renderer/materialLayout.js +2 -1
  49. package/lib/renderer/materialLayout.js.map +1 -1
  50. package/lib/renderer/prepareMeshBVH.d.ts +4 -2
  51. package/lib/renderer/prepareMeshBVH.js +44 -20
  52. package/lib/renderer/prepareMeshBVH.js.map +1 -1
  53. package/lib/renderer/scratchSampling.js +6 -6
  54. package/lib/renderer/wgsl/chunks/common.wgsl.js +4 -4
  55. package/lib/renderer/wgsl/chunks/envMap.wgsl.js +29 -29
  56. package/lib/renderer/wgsl/chunks/intersect.wgsl.js +376 -379
  57. package/lib/renderer/wgsl/chunks/intersect.wgsl.js.map +1 -1
  58. package/lib/renderer/wgsl/chunks/intersectionAlpha.wgsl.js +5 -5
  59. package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js +51 -51
  60. package/lib/renderer/wgsl/chunks/openPbrBsdf.wgsl.js +453 -453
  61. package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.d.ts +1 -1
  62. package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.js +122 -117
  63. package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.js.map +1 -1
  64. package/lib/renderer/wgsl/chunks/rand.wgsl.js +3 -3
  65. package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.js +13 -13
  66. package/lib/renderer/wgsl/chunks/sampleLight.wgsl.js +94 -94
  67. package/lib/renderer/wgsl/chunks/sampleMaterial.wgsl.js +119 -119
  68. package/lib/renderer/wgsl/chunks/sampleShadowCatcher.wgsl.js +5 -5
  69. package/lib/renderer/wgsl/chunks/sampling.wgsl.js +62 -62
  70. package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.d.ts +3 -3
  71. package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.js +2 -2
  72. package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.js.map +1 -1
  73. package/lib/renderer/wgsl/chunks/sobol.wgsl.js +53 -53
  74. package/lib/renderer/wgsl/chunks/uvProjection.wgsl.js +5 -5
  75. package/lib/renderer/wgsl/compose.frag.wgsl.d.ts +2 -2
  76. package/lib/renderer/wgsl/compose.frag.wgsl.js +120 -92
  77. package/lib/renderer/wgsl/compose.frag.wgsl.js.map +1 -1
  78. package/lib/renderer/wgsl/customDenoise.wgsl.js +10 -10
  79. package/lib/renderer/wgsl/depthQuery.wgsl.js +3 -3
  80. package/lib/renderer/wgsl/offlineAdaptive.compute.js +26 -26
  81. package/lib/renderer/wgsl/rayTrace.compute.js +220 -211
  82. package/lib/renderer/wgsl/rayTrace.compute.js.map +1 -1
  83. package/lib/scene/OpenPBRMaterial.d.ts +4 -2
  84. package/lib/scene/OpenPBRMaterial.js +4 -2
  85. package/lib/scene/OpenPBRMaterial.js.map +1 -1
  86. package/lib/scene/openPbrSchema.d.ts +7 -2
  87. package/lib/scene/openPbrSchema.js +2 -1
  88. package/lib/scene/openPbrSchema.js.map +1 -1
  89. package/lib/util/fromTHREE.d.ts +1 -0
  90. package/lib/util/fromTHREE.js +24 -6
  91. package/lib/util/fromTHREE.js.map +1 -1
  92. package/lib/version.d.ts +1 -1
  93. package/lib/version.js +1 -1
  94. package/lib/version.js.map +1 -1
  95. 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 ja = textureLoad(in_rawAlbedo, vec2i(globalId.xy), 0).a;
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 mP = 0.0;
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 tJ = textureLoad(in_rawNormal,
54
+ let tO = textureLoad(in_rawNormal,
55
55
  clamp(fM + vec2i(x, y), vec2i(0), imageSize - 1), 0);
56
- let nn = normalize(tJ.rgb * 2.0 - 1.0 + vec3f(1e-8));
57
- mP = max(mP,
58
- max(1.0 - dot(n, nn), abs(center.a - tJ.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 ua = smoothstep(0.02, 0.1, mP);
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, ua);
64
+ result = mix(raw, linear, ug);
65
65
  }
66
- out_albedo[index] = vec4f(result, ja);
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 vy = min(
378
+ let vF = min(
378
379
  vec2i(uv2 * vec2f(colorTexRegion())),
379
380
  vec2i(colorTexRegion()) - vec2i(1)
380
381
  );
381
- var color = load_colorTex(vy, 0);
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', getFrameInput('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: getFrameInput('albedo'),
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: getFrameInput('albedo'), channels: 4 },
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()]);