@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.
Files changed (125) hide show
  1. package/dist/assets/bvh.worker.js +1 -1
  2. package/dist/mutracer.umd.js +4475 -4337
  3. package/docs/api.md +11 -9
  4. package/docs/threejs.md +30 -4
  5. package/lib/Engine.js +18 -1
  6. package/lib/Engine.js.map +1 -1
  7. package/lib/main.d.ts +1 -1
  8. package/lib/main.js.map +1 -1
  9. package/lib/oidn.d.ts +1 -1
  10. package/lib/oidnBundledWeights.cdn.d.ts +2 -2
  11. package/lib/renderer/MaterialTable.d.ts +1 -0
  12. package/lib/renderer/MaterialTable.js +10 -4
  13. package/lib/renderer/MaterialTable.js.map +1 -1
  14. package/lib/renderer/WGPUBloomPass.js +18 -18
  15. package/lib/renderer/WGPUFullQuadPass.js +6 -6
  16. package/lib/renderer/WGPUJNLMDenoiser.js +68 -68
  17. package/lib/renderer/WGPURayTraceOutput.js +16 -14
  18. package/lib/renderer/WGPURayTraceOutput.js.map +1 -1
  19. package/lib/renderer/WGPURayTracePass.d.ts +2 -0
  20. package/lib/renderer/WGPURayTracePass.js +13 -7
  21. package/lib/renderer/WGPURayTracePass.js.map +1 -1
  22. package/lib/renderer/WGPURenderingPipeline.js +24 -22
  23. package/lib/renderer/WGPURenderingPipeline.js.map +1 -1
  24. package/lib/renderer/WebGLJNLMDenoiser.js +68 -68
  25. package/lib/renderer/WebGLRayTraceOutputPass.js +4 -4
  26. package/lib/renderer/WebGLRayTracePass.d.ts +1 -0
  27. package/lib/renderer/WebGLRayTracePass.js +7 -1
  28. package/lib/renderer/WebGLRayTracePass.js.map +1 -1
  29. package/lib/renderer/envMapCreation.d.ts +5 -1
  30. package/lib/renderer/envMapCreation.js +42 -5
  31. package/lib/renderer/envMapCreation.js.map +1 -1
  32. package/lib/renderer/geometryUpdates.js +1 -1
  33. package/lib/renderer/geometryUpdates.js.map +1 -1
  34. package/lib/renderer/glsl/chunks/cameraRay.glsl.js +12 -12
  35. package/lib/renderer/glsl/chunks/envMap.glsl.js +69 -57
  36. package/lib/renderer/glsl/chunks/envMap.glsl.js.map +1 -1
  37. package/lib/renderer/glsl/chunks/intersect.glsl.js +316 -310
  38. package/lib/renderer/glsl/chunks/intersect.glsl.js.map +1 -1
  39. package/lib/renderer/glsl/chunks/materialBuffer.glsl.js +153 -121
  40. package/lib/renderer/glsl/chunks/materialBuffer.glsl.js.map +1 -1
  41. package/lib/renderer/glsl/chunks/openPbrBsdf.glsl.js +540 -540
  42. package/lib/renderer/glsl/chunks/rand.glsl.js +3 -3
  43. package/lib/renderer/glsl/chunks/random.glsl.js +4 -4
  44. package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js +40 -39
  45. package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js.map +1 -1
  46. package/lib/renderer/glsl/chunks/sampleLight.glsl.js +71 -71
  47. package/lib/renderer/glsl/chunks/sampleMaterial.glsl.js +84 -84
  48. package/lib/renderer/glsl/chunks/sampleShadowCatcher.glsl.js +13 -13
  49. package/lib/renderer/glsl/chunks/sampling.glsl.js +77 -77
  50. package/lib/renderer/glsl/chunks/sobol.glsl.js +65 -65
  51. package/lib/renderer/glsl/chunks/textureLinear.glsl.js +5 -5
  52. package/lib/renderer/glsl/chunks/uvProjection.glsl.js +11 -11
  53. package/lib/renderer/glsl/depthQuery.frag.js +5 -5
  54. package/lib/renderer/glsl/depthQuery.frag.js.map +1 -1
  55. package/lib/renderer/glsl/normalizeRayTraceOutput.frag.js +8 -8
  56. package/lib/renderer/glsl/rayTrace.frag.js +165 -165
  57. package/lib/renderer/glsl/rayTrace.frag.js.map +1 -1
  58. package/lib/renderer/glsl/shadowCatcher.frag.js +14 -14
  59. package/lib/renderer/glsl/shadowCatcher.frag.js.map +1 -1
  60. package/lib/renderer/glsl/webglPipeline.frag.js +56 -56
  61. package/lib/renderer/lightsUtil.js +7 -5
  62. package/lib/renderer/lightsUtil.js.map +1 -1
  63. package/lib/renderer/materialChanges.js +1 -1
  64. package/lib/renderer/materialChanges.js.map +1 -1
  65. package/lib/renderer/materialComparison.generated.js +36 -18
  66. package/lib/renderer/materialComparison.generated.js.map +1 -1
  67. package/lib/renderer/prepareMeshBVH.js +2 -2
  68. package/lib/renderer/prepareMeshBVH.js.map +1 -1
  69. package/lib/renderer/sceneChangeDetector.js +4 -1
  70. package/lib/renderer/sceneChangeDetector.js.map +1 -1
  71. package/lib/renderer/sceneLightChanges.js +3 -2
  72. package/lib/renderer/sceneLightChanges.js.map +1 -1
  73. package/lib/renderer/scratchSampling.js +18 -18
  74. package/lib/renderer/wgsl/chunks/common.wgsl.js +4 -4
  75. package/lib/renderer/wgsl/chunks/envMap.wgsl.d.ts +1 -1
  76. package/lib/renderer/wgsl/chunks/envMap.wgsl.js +39 -31
  77. package/lib/renderer/wgsl/chunks/envMap.wgsl.js.map +1 -1
  78. package/lib/renderer/wgsl/chunks/intersect.wgsl.js +475 -469
  79. package/lib/renderer/wgsl/chunks/intersect.wgsl.js.map +1 -1
  80. package/lib/renderer/wgsl/chunks/intersectionAlpha.wgsl.js +8 -8
  81. package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js +95 -61
  82. package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js.map +1 -1
  83. package/lib/renderer/wgsl/chunks/openPbrBsdf.wgsl.js +562 -562
  84. package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.d.ts +1 -1
  85. package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.js +117 -120
  86. package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.js.map +1 -1
  87. package/lib/renderer/wgsl/chunks/rand.wgsl.js +3 -3
  88. package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.js +25 -22
  89. package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.js.map +1 -1
  90. package/lib/renderer/wgsl/chunks/sampleLight.wgsl.js +128 -128
  91. package/lib/renderer/wgsl/chunks/sampleMaterial.wgsl.js +143 -143
  92. package/lib/renderer/wgsl/chunks/sampleShadowCatcher.wgsl.js +6 -6
  93. package/lib/renderer/wgsl/chunks/sampling.wgsl.js +75 -75
  94. package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.d.ts +3 -3
  95. package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.js +2 -2
  96. package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.js.map +1 -1
  97. package/lib/renderer/wgsl/chunks/sobol.wgsl.js +69 -69
  98. package/lib/renderer/wgsl/chunks/uvProjection.wgsl.js +11 -11
  99. package/lib/renderer/wgsl/compose.frag.wgsl.d.ts +2 -2
  100. package/lib/renderer/wgsl/compose.frag.wgsl.js +130 -102
  101. package/lib/renderer/wgsl/compose.frag.wgsl.js.map +1 -1
  102. package/lib/renderer/wgsl/customDenoise.wgsl.js +10 -10
  103. package/lib/renderer/wgsl/depthQuery.wgsl.d.ts +1 -1
  104. package/lib/renderer/wgsl/depthQuery.wgsl.js +5 -5
  105. package/lib/renderer/wgsl/depthQuery.wgsl.js.map +1 -1
  106. package/lib/renderer/wgsl/offlineAdaptive.compute.js +28 -28
  107. package/lib/renderer/wgsl/rayTrace.compute.js +289 -277
  108. package/lib/renderer/wgsl/rayTrace.compute.js.map +1 -1
  109. package/lib/scene/EnvironmentLight.d.ts +9 -3
  110. package/lib/scene/EnvironmentLight.js +9 -2
  111. package/lib/scene/EnvironmentLight.js.map +1 -1
  112. package/lib/scene/Scene.d.ts +4 -0
  113. package/lib/scene/Scene.js.map +1 -1
  114. package/lib/scene/SpotLight.d.ts +2 -2
  115. package/lib/scene/SpotLight.js +1 -1
  116. package/lib/scene/SpotLight.js.map +1 -1
  117. package/lib/scene/Texture.d.ts +17 -6
  118. package/lib/scene/Texture.js +13 -4
  119. package/lib/scene/Texture.js.map +1 -1
  120. package/lib/util/fromTHREE.js +151 -29
  121. package/lib/util/fromTHREE.js.map +1 -1
  122. package/lib/version.d.ts +1 -1
  123. package/lib/version.js +1 -1
  124. package/lib/version.js.map +1 -1
  125. 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 ja = textureLoad(in_rawAlbedo, vec2i(globalId.xy), 0).a;
43
+ let jg = textureLoad(in_rawAlbedo, vec2i(globalId.xy), 0).a;
44
44
  if (preserveSurfaceTexture != 0u) {
45
45
 
46
46
 
47
47
 
48
- let fM = vec2i(globalId.xy);
49
- let center = textureLoad(in_rawNormal, fM, 0);
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 mP = 0.0;
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 tJ = textureLoad(in_rawNormal,
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)));
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 ub = smoothstep(0.02, 0.1, mP);
62
- let raw = clamp(textureLoad(in_rawAlbedo, fM, 0).rgb,
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, ub);
64
+ result = mix(raw, linear, un);
65
65
  }
66
- out_albedo[index] = vec4f(result, ja);
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 vA = min(
378
+ let vM = min(
378
379
  vec2i(uv2 * vec2f(colorTexRegion())),
379
380
  vec2i(colorTexRegion()) - vec2i(1)
380
381
  );
381
- var color = load_colorTex(vA, 0);
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', 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()]);