@meimu/mutracer 0.0.0-stage → 0.1.1
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/LICENSE +21 -0
- package/LICENSES/Apache-2.0.txt +202 -0
- package/LICENSES/GLSL-PathTracer-MIT.txt +21 -0
- package/LICENSES/GlMatrix-MIT.txt +19 -0
- package/LICENSES/KinoBloom-MIT.txt +21 -0
- package/LICENSES/OIDNWeb-MIT.txt +21 -0
- package/LICENSES/Octicons-MIT.txt +21 -0
- package/LICENSES/RayTracingRenderer-MIT.txt +21 -0
- package/LICENSES/TinyBVH-MIT.txt +21 -0
- package/LICENSES/WebGPUUtils-MIT.txt +21 -0
- package/LICENSES/ZetaRay-MIT.txt +21 -0
- package/README.md +240 -2
- package/THIRD_PARTY_NOTICES.md +160 -0
- package/dist/assets/bvh.worker.js +1 -0
- package/dist/mutracer.umd.js +14360 -0
- package/docs/api.md +394 -0
- package/docs/bvh.md +141 -0
- package/docs/denoising.md +301 -0
- package/docs/getting-started.md +308 -0
- package/docs/materials.md +281 -0
- package/docs/performance.md +85 -0
- package/docs/post-processing.md +87 -0
- package/docs/progressive-rendering.md +160 -0
- package/docs/sampling.md +40 -0
- package/docs/threejs.md +274 -0
- package/docs/todo.md +61 -0
- package/docs/updates.md +208 -0
- package/lib/Display.d.ts +72 -0
- package/lib/Display.js +123 -0
- package/lib/Display.js.map +1 -0
- package/lib/Engine.d.ts +161 -0
- package/lib/Engine.js +681 -0
- package/lib/Engine.js.map +1 -0
- package/lib/Render.d.ts +265 -0
- package/lib/Render.js +742 -0
- package/lib/Render.js.map +1 -0
- package/lib/RenderLoop.d.ts +79 -0
- package/lib/RenderLoop.js +236 -0
- package/lib/RenderLoop.js.map +1 -0
- package/lib/Sync.d.ts +19 -0
- package/lib/Sync.js +19 -0
- package/lib/Sync.js.map +1 -0
- package/lib/constants.d.ts +2 -0
- package/lib/constants.js +3 -0
- package/lib/constants.js.map +1 -0
- package/lib/main.d.ts +56 -0
- package/lib/main.js +43 -0
- package/lib/main.js.map +1 -0
- package/lib/math.d.ts +23 -0
- package/lib/math.js +56 -0
- package/lib/math.js.map +1 -0
- package/lib/oidn.d.ts +45 -0
- package/lib/oidn.js +42 -0
- package/lib/oidn.js.map +1 -0
- package/lib/oidnBundledWeights.cdn.d.ts +2 -0
- package/lib/oidnBundledWeights.cdn.js +5 -0
- package/lib/oidnBundledWeights.cdn.js.map +1 -0
- package/lib/oidnBundledWeights.d.ts +2 -0
- package/lib/oidnBundledWeights.js +4 -0
- package/lib/oidnBundledWeights.js.map +1 -0
- package/lib/renderer/DisplayPostProcess.d.ts +14 -0
- package/lib/renderer/DisplayPostProcess.js +41 -0
- package/lib/renderer/DisplayPostProcess.js.map +1 -0
- package/lib/renderer/MaterialTable.d.ts +119 -0
- package/lib/renderer/MaterialTable.js +550 -0
- package/lib/renderer/MaterialTable.js.map +1 -0
- package/lib/renderer/OfflineAdaptiveSampling.d.ts +47 -0
- package/lib/renderer/OfflineAdaptiveSampling.js +36 -0
- package/lib/renderer/OfflineAdaptiveSampling.js.map +1 -0
- package/lib/renderer/RenderingPipeline.d.ts +232 -0
- package/lib/renderer/RenderingPipeline.js +18 -0
- package/lib/renderer/RenderingPipeline.js.map +1 -0
- package/lib/renderer/ScratchPool.d.ts +13 -0
- package/lib/renderer/ScratchPool.js +21 -0
- package/lib/renderer/ScratchPool.js.map +1 -0
- package/lib/renderer/TileRender.d.ts +44 -0
- package/lib/renderer/TileRender.js +283 -0
- package/lib/renderer/TileRender.js.map +1 -0
- package/lib/renderer/WGPUBloomPass.d.ts +17 -0
- package/lib/renderer/WGPUBloomPass.js +243 -0
- package/lib/renderer/WGPUBloomPass.js.map +1 -0
- package/lib/renderer/WGPUCanvasSurface.d.ts +21 -0
- package/lib/renderer/WGPUCanvasSurface.js +48 -0
- package/lib/renderer/WGPUCanvasSurface.js.map +1 -0
- package/lib/renderer/WGPUComputePass.d.ts +73 -0
- package/lib/renderer/WGPUComputePass.js +317 -0
- package/lib/renderer/WGPUComputePass.js.map +1 -0
- package/lib/renderer/WGPUFullQuadPass.d.ts +73 -0
- package/lib/renderer/WGPUFullQuadPass.js +389 -0
- package/lib/renderer/WGPUFullQuadPass.js.map +1 -0
- package/lib/renderer/WGPUHDRPeakMeter.d.ts +19 -0
- package/lib/renderer/WGPUHDRPeakMeter.js +112 -0
- package/lib/renderer/WGPUHDRPeakMeter.js.map +1 -0
- package/lib/renderer/WGPUJNLMDenoiser.d.ts +61 -0
- package/lib/renderer/WGPUJNLMDenoiser.js +412 -0
- package/lib/renderer/WGPUJNLMDenoiser.js.map +1 -0
- package/lib/renderer/WGPURayTraceOutput.d.ts +44 -0
- package/lib/renderer/WGPURayTraceOutput.js +368 -0
- package/lib/renderer/WGPURayTraceOutput.js.map +1 -0
- package/lib/renderer/WGPURayTracePass.d.ts +284 -0
- package/lib/renderer/WGPURayTracePass.js +2323 -0
- package/lib/renderer/WGPURayTracePass.js.map +1 -0
- package/lib/renderer/WGPURenderingPipeline.d.ts +9 -0
- package/lib/renderer/WGPURenderingPipeline.js +1448 -0
- package/lib/renderer/WGPURenderingPipeline.js.map +1 -0
- package/lib/renderer/WGPUSceneFeatures.d.ts +3 -0
- package/lib/renderer/WGPUSceneFeatures.js +20 -0
- package/lib/renderer/WGPUSceneFeatures.js.map +1 -0
- package/lib/renderer/WGPUScratchBuffer.d.ts +9 -0
- package/lib/renderer/WGPUScratchBuffer.js +21 -0
- package/lib/renderer/WGPUScratchBuffer.js.map +1 -0
- package/lib/renderer/WGPUScratchTexture.d.ts +10 -0
- package/lib/renderer/WGPUScratchTexture.js +27 -0
- package/lib/renderer/WGPUScratchTexture.js.map +1 -0
- package/lib/renderer/WGPUShaderCache.d.ts +26 -0
- package/lib/renderer/WGPUShaderCache.js +103 -0
- package/lib/renderer/WGPUShaderCache.js.map +1 -0
- package/lib/renderer/WebGLBloomPass.d.ts +18 -0
- package/lib/renderer/WebGLBloomPass.js +113 -0
- package/lib/renderer/WebGLBloomPass.js.map +1 -0
- package/lib/renderer/WebGLFullQuadPass.d.ts +65 -0
- package/lib/renderer/WebGLFullQuadPass.js +208 -0
- package/lib/renderer/WebGLFullQuadPass.js.map +1 -0
- package/lib/renderer/WebGLJNLMDenoiser.d.ts +32 -0
- package/lib/renderer/WebGLJNLMDenoiser.js +328 -0
- package/lib/renderer/WebGLJNLMDenoiser.js.map +1 -0
- package/lib/renderer/WebGLRayTraceOutputPass.d.ts +20 -0
- package/lib/renderer/WebGLRayTraceOutputPass.js +106 -0
- package/lib/renderer/WebGLRayTraceOutputPass.js.map +1 -0
- package/lib/renderer/WebGLRayTracePass.d.ts +142 -0
- package/lib/renderer/WebGLRayTracePass.js +845 -0
- package/lib/renderer/WebGLRayTracePass.js.map +1 -0
- package/lib/renderer/WebGLReadback.d.ts +4 -0
- package/lib/renderer/WebGLReadback.js +75 -0
- package/lib/renderer/WebGLReadback.js.map +1 -0
- package/lib/renderer/WebGLRenderingPipeline.d.ts +4 -0
- package/lib/renderer/WebGLRenderingPipeline.js +510 -0
- package/lib/renderer/WebGLRenderingPipeline.js.map +1 -0
- package/lib/renderer/WebGLScratchCopy.d.ts +10 -0
- package/lib/renderer/WebGLScratchCopy.js +27 -0
- package/lib/renderer/WebGLScratchCopy.js.map +1 -0
- package/lib/renderer/accumulationTarget.d.ts +26 -0
- package/lib/renderer/accumulationTarget.js +2 -0
- package/lib/renderer/accumulationTarget.js.map +1 -0
- package/lib/renderer/binnedSahBvh.d.ts +31 -0
- package/lib/renderer/binnedSahBvh.js +263 -0
- package/lib/renderer/binnedSahBvh.js.map +1 -0
- package/lib/renderer/bvh.worker.d.ts +1 -0
- package/lib/renderer/bvh.worker.js +16 -0
- package/lib/renderer/bvh.worker.js.map +1 -0
- package/lib/renderer/bvhAccel.d.ts +81 -0
- package/lib/renderer/bvhAccel.js +621 -0
- package/lib/renderer/bvhAccel.js.map +1 -0
- package/lib/renderer/bvhWorkerBuild.d.ts +12 -0
- package/lib/renderer/bvhWorkerBuild.js +17 -0
- package/lib/renderer/bvhWorkerBuild.js.map +1 -0
- package/lib/renderer/bvhWorkerClient.d.ts +57 -0
- package/lib/renderer/bvhWorkerClient.js +166 -0
- package/lib/renderer/bvhWorkerClient.js.map +1 -0
- package/lib/renderer/cameraLens.d.ts +5 -0
- package/lib/renderer/cameraLens.js +15 -0
- package/lib/renderer/cameraLens.js.map +1 -0
- package/lib/renderer/cameraSnapshot.d.ts +3 -0
- package/lib/renderer/cameraSnapshot.js +7 -0
- package/lib/renderer/cameraSnapshot.js.map +1 -0
- package/lib/renderer/committedScene.d.ts +13 -0
- package/lib/renderer/committedScene.js +126 -0
- package/lib/renderer/committedScene.js.map +1 -0
- package/lib/renderer/dataTextureUtil.d.ts +32 -0
- package/lib/renderer/dataTextureUtil.js +46 -0
- package/lib/renderer/dataTextureUtil.js.map +1 -0
- package/lib/renderer/denoiser.d.ts +65 -0
- package/lib/renderer/denoiser.js +2 -0
- package/lib/renderer/denoiser.js.map +1 -0
- package/lib/renderer/depthQuery.d.ts +14 -0
- package/lib/renderer/depthQuery.js +14 -0
- package/lib/renderer/depthQuery.js.map +1 -0
- package/lib/renderer/deviceRequirements.d.ts +23 -0
- package/lib/renderer/deviceRequirements.js +50 -0
- package/lib/renderer/deviceRequirements.js.map +1 -0
- package/lib/renderer/envMapCreation.d.ts +10 -0
- package/lib/renderer/envMapCreation.js +96 -0
- package/lib/renderer/envMapCreation.js.map +1 -0
- package/lib/renderer/envMapDistribution.d.ts +9 -0
- package/lib/renderer/envMapDistribution.js +107 -0
- package/lib/renderer/envMapDistribution.js.map +1 -0
- package/lib/renderer/float16.d.ts +1 -0
- package/lib/renderer/float16.js +19 -0
- package/lib/renderer/float16.js.map +1 -0
- package/lib/renderer/geometryBvh.d.ts +11 -0
- package/lib/renderer/geometryBvh.js +24 -0
- package/lib/renderer/geometryBvh.js.map +1 -0
- package/lib/renderer/geometryUpdates.d.ts +28 -0
- package/lib/renderer/geometryUpdates.js +131 -0
- package/lib/renderer/geometryUpdates.js.map +1 -0
- package/lib/renderer/glsl/chunks/cameraRay.glsl.d.ts +2 -0
- package/lib/renderer/glsl/chunks/cameraRay.glsl.js +37 -0
- package/lib/renderer/glsl/chunks/cameraRay.glsl.js.map +1 -0
- package/lib/renderer/glsl/chunks/common.glsl.d.ts +2 -0
- package/lib/renderer/glsl/chunks/common.glsl.js +17 -0
- package/lib/renderer/glsl/chunks/common.glsl.js.map +1 -0
- package/lib/renderer/glsl/chunks/envMap.glsl.d.ts +2 -0
- package/lib/renderer/glsl/chunks/envMap.glsl.js +192 -0
- package/lib/renderer/glsl/chunks/envMap.glsl.js.map +1 -0
- package/lib/renderer/glsl/chunks/intersect.glsl.d.ts +2 -0
- package/lib/renderer/glsl/chunks/intersect.glsl.js +1091 -0
- package/lib/renderer/glsl/chunks/intersect.glsl.js.map +1 -0
- package/lib/renderer/glsl/chunks/materialBuffer.glsl.d.ts +2 -0
- package/lib/renderer/glsl/chunks/materialBuffer.glsl.js +371 -0
- package/lib/renderer/glsl/chunks/materialBuffer.glsl.js.map +1 -0
- package/lib/renderer/glsl/chunks/openPbrBsdf.glsl.d.ts +2 -0
- package/lib/renderer/glsl/chunks/openPbrBsdf.glsl.js +1767 -0
- package/lib/renderer/glsl/chunks/openPbrBsdf.glsl.js.map +1 -0
- package/lib/renderer/glsl/chunks/rand.glsl.d.ts +2 -0
- package/lib/renderer/glsl/chunks/rand.glsl.js +26 -0
- package/lib/renderer/glsl/chunks/rand.glsl.js.map +1 -0
- package/lib/renderer/glsl/chunks/random.glsl.d.ts +2 -0
- package/lib/renderer/glsl/chunks/random.glsl.js +27 -0
- package/lib/renderer/glsl/chunks/random.glsl.js.map +1 -0
- package/lib/renderer/glsl/chunks/rayTraceCore.glsl.d.ts +2 -0
- package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js +287 -0
- package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js.map +1 -0
- package/lib/renderer/glsl/chunks/sampleLight.glsl.d.ts +2 -0
- package/lib/renderer/glsl/chunks/sampleLight.glsl.js +254 -0
- package/lib/renderer/glsl/chunks/sampleLight.glsl.js.map +1 -0
- package/lib/renderer/glsl/chunks/sampleMaterial.glsl.d.ts +2 -0
- package/lib/renderer/glsl/chunks/sampleMaterial.glsl.js +279 -0
- package/lib/renderer/glsl/chunks/sampleMaterial.glsl.js.map +1 -0
- package/lib/renderer/glsl/chunks/sampleShadowCatcher.glsl.d.ts +2 -0
- package/lib/renderer/glsl/chunks/sampleShadowCatcher.glsl.js +48 -0
- package/lib/renderer/glsl/chunks/sampleShadowCatcher.glsl.js.map +1 -0
- package/lib/renderer/glsl/chunks/sampling.glsl.d.ts +2 -0
- package/lib/renderer/glsl/chunks/sampling.glsl.js +194 -0
- package/lib/renderer/glsl/chunks/sampling.glsl.js.map +1 -0
- package/lib/renderer/glsl/chunks/sobol.glsl.d.ts +2 -0
- package/lib/renderer/glsl/chunks/sobol.glsl.js +170 -0
- package/lib/renderer/glsl/chunks/sobol.glsl.js.map +1 -0
- package/lib/renderer/glsl/chunks/textureLinear.glsl.d.ts +2 -0
- package/lib/renderer/glsl/chunks/textureLinear.glsl.js +27 -0
- package/lib/renderer/glsl/chunks/textureLinear.glsl.js.map +1 -0
- package/lib/renderer/glsl/chunks/uvProjection.glsl.d.ts +2 -0
- package/lib/renderer/glsl/chunks/uvProjection.glsl.js +72 -0
- package/lib/renderer/glsl/chunks/uvProjection.glsl.js.map +1 -0
- package/lib/renderer/glsl/depthQuery.frag.d.ts +3 -0
- package/lib/renderer/glsl/depthQuery.frag.js +55 -0
- package/lib/renderer/glsl/depthQuery.frag.js.map +1 -0
- package/lib/renderer/glsl/normalizeRayTraceOutput.frag.d.ts +6 -0
- package/lib/renderer/glsl/normalizeRayTraceOutput.frag.js +46 -0
- package/lib/renderer/glsl/normalizeRayTraceOutput.frag.js.map +1 -0
- package/lib/renderer/glsl/rayTrace.frag.d.ts +2 -0
- package/lib/renderer/glsl/rayTrace.frag.js +623 -0
- package/lib/renderer/glsl/rayTrace.frag.js.map +1 -0
- package/lib/renderer/glsl/shadowCatcher.frag.d.ts +3 -0
- package/lib/renderer/glsl/shadowCatcher.frag.js +119 -0
- package/lib/renderer/glsl/shadowCatcher.frag.js.map +1 -0
- package/lib/renderer/glsl/webglPipeline.frag.d.ts +4 -0
- package/lib/renderer/glsl/webglPipeline.frag.js +208 -0
- package/lib/renderer/glsl/webglPipeline.frag.js.map +1 -0
- package/lib/renderer/gpuMemory.d.ts +2 -0
- package/lib/renderer/gpuMemory.js +10 -0
- package/lib/renderer/gpuMemory.js.map +1 -0
- package/lib/renderer/halton.d.ts +1 -0
- package/lib/renderer/halton.js +15 -0
- package/lib/renderer/halton.js.map +1 -0
- package/lib/renderer/jnlm.d.ts +85 -0
- package/lib/renderer/jnlm.js +87 -0
- package/lib/renderer/jnlm.js.map +1 -0
- package/lib/renderer/lightSampling.d.ts +75 -0
- package/lib/renderer/lightSampling.js +305 -0
- package/lib/renderer/lightSampling.js.map +1 -0
- package/lib/renderer/lightsUtil.d.ts +26 -0
- package/lib/renderer/lightsUtil.js +154 -0
- package/lib/renderer/lightsUtil.js.map +1 -0
- package/lib/renderer/materialChanges.d.ts +13 -0
- package/lib/renderer/materialChanges.js +59 -0
- package/lib/renderer/materialChanges.js.map +1 -0
- package/lib/renderer/materialComparison.generated.d.ts +5 -0
- package/lib/renderer/materialComparison.generated.js +655 -0
- package/lib/renderer/materialComparison.generated.js.map +1 -0
- package/lib/renderer/materialConstants.d.ts +6 -0
- package/lib/renderer/materialConstants.js +3 -0
- package/lib/renderer/materialConstants.js.map +1 -0
- package/lib/renderer/materialEmission.d.ts +9 -0
- package/lib/renderer/materialEmission.js +21 -0
- package/lib/renderer/materialEmission.js.map +1 -0
- package/lib/renderer/materialIndices.d.ts +7 -0
- package/lib/renderer/materialIndices.js +34 -0
- package/lib/renderer/materialIndices.js.map +1 -0
- package/lib/renderer/materialLayout.d.ts +102 -0
- package/lib/renderer/materialLayout.js +189 -0
- package/lib/renderer/materialLayout.js.map +1 -0
- package/lib/renderer/materialTextureSlots.d.ts +537 -0
- package/lib/renderer/materialTextureSlots.js +219 -0
- package/lib/renderer/materialTextureSlots.js.map +1 -0
- package/lib/renderer/mergeMeshesToGeometry.d.ts +8 -0
- package/lib/renderer/mergeMeshesToGeometry.js +236 -0
- package/lib/renderer/mergeMeshesToGeometry.js.map +1 -0
- package/lib/renderer/meshInstances.d.ts +23 -0
- package/lib/renderer/meshInstances.js +66 -0
- package/lib/renderer/meshInstances.js.map +1 -0
- package/lib/renderer/meshMembership.d.ts +10 -0
- package/lib/renderer/meshMembership.js +72 -0
- package/lib/renderer/meshMembership.js.map +1 -0
- package/lib/renderer/oidnNetwork.d.ts +20 -0
- package/lib/renderer/oidnNetwork.js +123 -0
- package/lib/renderer/oidnNetwork.js.map +1 -0
- package/lib/renderer/openPbrEnergyLut.d.ts +32 -0
- package/lib/renderer/openPbrEnergyLut.js +965 -0
- package/lib/renderer/openPbrEnergyLut.js.map +1 -0
- package/lib/renderer/pathLimits.d.ts +4 -0
- package/lib/renderer/pathLimits.js +7 -0
- package/lib/renderer/pathLimits.js.map +1 -0
- package/lib/renderer/prepareMeshBVH.d.ts +110 -0
- package/lib/renderer/prepareMeshBVH.js +857 -0
- package/lib/renderer/prepareMeshBVH.js.map +1 -0
- package/lib/renderer/progressiveScheduler.d.ts +11 -0
- package/lib/renderer/progressiveScheduler.js +19 -0
- package/lib/renderer/progressiveScheduler.js.map +1 -0
- package/lib/renderer/renderPipeline.d.ts +57 -0
- package/lib/renderer/renderPipeline.js +49 -0
- package/lib/renderer/renderPipeline.js.map +1 -0
- package/lib/renderer/sampling.d.ts +10 -0
- package/lib/renderer/sampling.js +28 -0
- package/lib/renderer/sampling.js.map +1 -0
- package/lib/renderer/sceneChangeDetector.d.ts +29 -0
- package/lib/renderer/sceneChangeDetector.js +232 -0
- package/lib/renderer/sceneChangeDetector.js.map +1 -0
- package/lib/renderer/sceneLightChanges.d.ts +14 -0
- package/lib/renderer/sceneLightChanges.js +34 -0
- package/lib/renderer/sceneLightChanges.js.map +1 -0
- package/lib/renderer/scratchSampling.d.ts +3 -0
- package/lib/renderer/scratchSampling.js +39 -0
- package/lib/renderer/scratchSampling.js.map +1 -0
- package/lib/renderer/shader.d.ts +37 -0
- package/lib/renderer/shader.js +41 -0
- package/lib/renderer/shader.js.map +1 -0
- package/lib/renderer/staticBvhPreparation.d.ts +24 -0
- package/lib/renderer/staticBvhPreparation.js +116 -0
- package/lib/renderer/staticBvhPreparation.js.map +1 -0
- package/lib/renderer/textureRegion.d.ts +8 -0
- package/lib/renderer/textureRegion.js +9 -0
- package/lib/renderer/textureRegion.js.map +1 -0
- package/lib/renderer/texturesFromMaterials.d.ts +6 -0
- package/lib/renderer/texturesFromMaterials.js +37 -0
- package/lib/renderer/texturesFromMaterials.js.map +1 -0
- package/lib/renderer/util.d.ts +17 -0
- package/lib/renderer/util.js +56 -0
- package/lib/renderer/util.js.map +1 -0
- package/lib/renderer/webgl.d.ts +131 -0
- package/lib/renderer/webgl.js +586 -0
- package/lib/renderer/webgl.js.map +1 -0
- package/lib/renderer/webglShaders.d.ts +4 -0
- package/lib/renderer/webglShaders.js +41 -0
- package/lib/renderer/webglShaders.js.map +1 -0
- package/lib/renderer/wgsl/chunks/common.wgsl.d.ts +2 -0
- package/lib/renderer/wgsl/chunks/common.wgsl.js +23 -0
- package/lib/renderer/wgsl/chunks/common.wgsl.js.map +1 -0
- package/lib/renderer/wgsl/chunks/envMap.wgsl.d.ts +2 -0
- package/lib/renderer/wgsl/chunks/envMap.wgsl.js +128 -0
- package/lib/renderer/wgsl/chunks/envMap.wgsl.js.map +1 -0
- package/lib/renderer/wgsl/chunks/intersect.wgsl.d.ts +6 -0
- package/lib/renderer/wgsl/chunks/intersect.wgsl.js +1441 -0
- package/lib/renderer/wgsl/chunks/intersect.wgsl.js.map +1 -0
- package/lib/renderer/wgsl/chunks/intersectionAlpha.wgsl.d.ts +8 -0
- package/lib/renderer/wgsl/chunks/intersectionAlpha.wgsl.js +85 -0
- package/lib/renderer/wgsl/chunks/intersectionAlpha.wgsl.js.map +1 -0
- package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.d.ts +7 -0
- package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js +315 -0
- package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js.map +1 -0
- package/lib/renderer/wgsl/chunks/openPbrBsdf.wgsl.d.ts +3 -0
- package/lib/renderer/wgsl/chunks/openPbrBsdf.wgsl.js +1737 -0
- package/lib/renderer/wgsl/chunks/openPbrBsdf.wgsl.js.map +1 -0
- package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.d.ts +4 -0
- package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.js +352 -0
- package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.js.map +1 -0
- package/lib/renderer/wgsl/chunks/rand.wgsl.d.ts +2 -0
- package/lib/renderer/wgsl/chunks/rand.wgsl.js +25 -0
- package/lib/renderer/wgsl/chunks/rand.wgsl.js.map +1 -0
- package/lib/renderer/wgsl/chunks/random.wgsl.d.ts +1 -0
- package/lib/renderer/wgsl/chunks/random.wgsl.js +2 -0
- package/lib/renderer/wgsl/chunks/random.wgsl.js.map +1 -0
- package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.d.ts +5 -0
- package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.js +328 -0
- package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.js.map +1 -0
- package/lib/renderer/wgsl/chunks/sampleLight.wgsl.d.ts +2 -0
- package/lib/renderer/wgsl/chunks/sampleLight.wgsl.js +400 -0
- package/lib/renderer/wgsl/chunks/sampleLight.wgsl.js.map +1 -0
- package/lib/renderer/wgsl/chunks/sampleMaterial.wgsl.d.ts +3 -0
- package/lib/renderer/wgsl/chunks/sampleMaterial.wgsl.js +439 -0
- package/lib/renderer/wgsl/chunks/sampleMaterial.wgsl.js.map +1 -0
- package/lib/renderer/wgsl/chunks/sampleShadowCatcher.wgsl.d.ts +2 -0
- package/lib/renderer/wgsl/chunks/sampleShadowCatcher.wgsl.js +40 -0
- package/lib/renderer/wgsl/chunks/sampleShadowCatcher.wgsl.js.map +1 -0
- package/lib/renderer/wgsl/chunks/sampling.wgsl.d.ts +2 -0
- package/lib/renderer/wgsl/chunks/sampling.wgsl.js +198 -0
- package/lib/renderer/wgsl/chunks/sampling.wgsl.js.map +1 -0
- package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.d.ts +8 -0
- package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.js +16 -0
- package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.js.map +1 -0
- package/lib/renderer/wgsl/chunks/sobol.wgsl.d.ts +2 -0
- package/lib/renderer/wgsl/chunks/sobol.wgsl.js +170 -0
- package/lib/renderer/wgsl/chunks/sobol.wgsl.js.map +1 -0
- package/lib/renderer/wgsl/chunks/uvProjection.wgsl.d.ts +2 -0
- package/lib/renderer/wgsl/chunks/uvProjection.wgsl.js +42 -0
- package/lib/renderer/wgsl/chunks/uvProjection.wgsl.js.map +1 -0
- package/lib/renderer/wgsl/compose.frag.wgsl.d.ts +5 -0
- package/lib/renderer/wgsl/compose.frag.wgsl.js +218 -0
- package/lib/renderer/wgsl/compose.frag.wgsl.js.map +1 -0
- package/lib/renderer/wgsl/customDenoise.wgsl.d.ts +4 -0
- package/lib/renderer/wgsl/customDenoise.wgsl.js +28 -0
- package/lib/renderer/wgsl/customDenoise.wgsl.js.map +1 -0
- package/lib/renderer/wgsl/depthQuery.wgsl.d.ts +3 -0
- package/lib/renderer/wgsl/depthQuery.wgsl.js +34 -0
- package/lib/renderer/wgsl/depthQuery.wgsl.js.map +1 -0
- package/lib/renderer/wgsl/offlineAdaptive.compute.d.ts +2 -0
- package/lib/renderer/wgsl/offlineAdaptive.compute.js +108 -0
- package/lib/renderer/wgsl/offlineAdaptive.compute.js.map +1 -0
- package/lib/renderer/wgsl/rayTrace.compute.d.ts +16 -0
- package/lib/renderer/wgsl/rayTrace.compute.js +927 -0
- package/lib/renderer/wgsl/rayTrace.compute.js.map +1 -0
- package/lib/scene/AmbientLight.d.ts +17 -0
- package/lib/scene/AmbientLight.js +15 -0
- package/lib/scene/AmbientLight.js.map +1 -0
- package/lib/scene/Camera.d.ts +78 -0
- package/lib/scene/Camera.js +111 -0
- package/lib/scene/Camera.js.map +1 -0
- package/lib/scene/DirectionalLight.d.ts +18 -0
- package/lib/scene/DirectionalLight.js +17 -0
- package/lib/scene/DirectionalLight.js.map +1 -0
- package/lib/scene/EnvironmentLight.d.ts +14 -0
- package/lib/scene/EnvironmentLight.js +14 -0
- package/lib/scene/EnvironmentLight.js.map +1 -0
- package/lib/scene/Geometry.d.ts +87 -0
- package/lib/scene/Geometry.js +108 -0
- package/lib/scene/Geometry.js.map +1 -0
- package/lib/scene/IESProfile.d.ts +19 -0
- package/lib/scene/IESProfile.js +165 -0
- package/lib/scene/IESProfile.js.map +1 -0
- package/lib/scene/InstancedMesh.d.ts +43 -0
- package/lib/scene/InstancedMesh.js +79 -0
- package/lib/scene/InstancedMesh.js.map +1 -0
- package/lib/scene/Mesh.d.ts +14 -0
- package/lib/scene/Mesh.js +17 -0
- package/lib/scene/Mesh.js.map +1 -0
- package/lib/scene/OpenPBRMaterial.d.ts +224 -0
- package/lib/scene/OpenPBRMaterial.js +240 -0
- package/lib/scene/OpenPBRMaterial.js.map +1 -0
- package/lib/scene/RectLight.d.ts +31 -0
- package/lib/scene/RectLight.js +26 -0
- package/lib/scene/RectLight.js.map +1 -0
- package/lib/scene/Scene.d.ts +55 -0
- package/lib/scene/Scene.js +2 -0
- package/lib/scene/Scene.js.map +1 -0
- package/lib/scene/SceneNode.d.ts +16 -0
- package/lib/scene/SceneNode.js +33 -0
- package/lib/scene/SceneNode.js.map +1 -0
- package/lib/scene/SphereLight.d.ts +22 -0
- package/lib/scene/SphereLight.js +20 -0
- package/lib/scene/SphereLight.js.map +1 -0
- package/lib/scene/SpotLight.d.ts +35 -0
- package/lib/scene/SpotLight.js +29 -0
- package/lib/scene/SpotLight.js.map +1 -0
- package/lib/scene/Texture.d.ts +38 -0
- package/lib/scene/Texture.js +37 -0
- package/lib/scene/Texture.js.map +1 -0
- package/lib/scene/anisotropyParameters.d.ts +1 -0
- package/lib/scene/anisotropyParameters.js +13 -0
- package/lib/scene/anisotropyParameters.js.map +1 -0
- package/lib/scene/geometryChanges.d.ts +5 -0
- package/lib/scene/geometryChanges.js +18 -0
- package/lib/scene/geometryChanges.js.map +1 -0
- package/lib/scene/materialTextureNames.d.ts +2 -0
- package/lib/scene/materialTextureNames.js +9 -0
- package/lib/scene/materialTextureNames.js.map +1 -0
- package/lib/scene/openPbrSchema.d.ts +400 -0
- package/lib/scene/openPbrSchema.js +149 -0
- package/lib/scene/openPbrSchema.js.map +1 -0
- package/lib/scene/thinFilmParameters.d.ts +4 -0
- package/lib/scene/thinFilmParameters.js +12 -0
- package/lib/scene/thinFilmParameters.js.map +1 -0
- package/lib/settings/display.d.ts +118 -0
- package/lib/settings/display.js +34 -0
- package/lib/settings/display.js.map +1 -0
- package/lib/settings/engine.d.ts +37 -0
- package/lib/settings/engine.js +26 -0
- package/lib/settings/engine.js.map +1 -0
- package/lib/settings/render.d.ts +178 -0
- package/lib/settings/render.js +36 -0
- package/lib/settings/render.js.map +1 -0
- package/lib/tinybvh/LICENSE +21 -0
- package/lib/tinybvh/TinyBvhBuilder.d.ts +17 -0
- package/lib/tinybvh/TinyBvhBuilder.js +211 -0
- package/lib/tinybvh/TinyBvhBuilder.js.map +1 -0
- package/lib/tinybvh/tinybvh.wasm +0 -0
- package/lib/types.d.ts +13 -0
- package/lib/types.js +2 -0
- package/lib/types.js.map +1 -0
- package/lib/util/canvas.d.ts +2 -0
- package/lib/util/canvas.js +13 -0
- package/lib/util/canvas.js.map +1 -0
- package/lib/util/commonGeometry.d.ts +15 -0
- package/lib/util/commonGeometry.js +240 -0
- package/lib/util/commonGeometry.js.map +1 -0
- package/lib/util/events.d.ts +7 -0
- package/lib/util/events.js +23 -0
- package/lib/util/events.js.map +1 -0
- package/lib/util/frame.d.ts +2 -0
- package/lib/util/frame.js +10 -0
- package/lib/util/frame.js.map +1 -0
- package/lib/util/fromTHREE.d.ts +105 -0
- package/lib/util/fromTHREE.js +1111 -0
- package/lib/util/fromTHREE.js.map +1 -0
- package/lib/util/geometry.d.ts +13 -0
- package/lib/util/geometry.js +292 -0
- package/lib/util/geometry.js.map +1 -0
- package/lib/util/loadRGBE.d.ts +7 -0
- package/lib/util/loadRGBE.js +168 -0
- package/lib/util/loadRGBE.js.map +1 -0
- package/lib/util/math.d.ts +8 -0
- package/lib/util/math.js +64 -0
- package/lib/util/math.js.map +1 -0
- package/lib/util/mesh.d.ts +7 -0
- package/lib/util/mesh.js +20 -0
- package/lib/util/mesh.js.map +1 -0
- package/lib/util/threeDeformation.d.ts +20 -0
- package/lib/util/threeDeformation.js +218 -0
- package/lib/util/threeDeformation.js.map +1 -0
- package/lib/version.d.ts +2 -0
- package/lib/version.js +3 -0
- package/lib/version.js.map +1 -0
- package/llms.txt +62 -0
- package/oidn/weights/LICENSE.txt +202 -0
- package/oidn/weights/README.md +43 -0
- package/oidn/weights/rt_hdr_alb_nrm.tza +0 -0
- package/oidn/weights/rt_hdr_alb_nrm_small.tza +0 -0
- package/package.json +124 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meshInstances.js","sourceRoot":"","sources":["../../src/renderer/meshInstances.ts"],"names":[],"mappings":"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","sourcesContent":["import Mesh from '../scene/Mesh.js';\nimport InstancedMesh from '../scene/InstancedMesh.js';\nimport { mat4 } from '../math.js';\nimport type { TLASInstance } from './bvhAccel.js';\n\nexport function meshInstanceCount(mesh: Mesh) { return mesh instanceof InstancedMesh ? mesh.count : 1; }\n/** Writes a world matrix without allocating per-instance Mesh objects or views. */\nexport function meshInstanceTransform(mesh: Mesh, index: number, out: mat4.Mat4Array): mat4.Mat4Array {\n if (!(mesh instanceof InstancedMesh)) return mat4.copy(out, mesh.transform);\n const local = mesh.transforms, offset = index * 16, parent = mesh.transform;\n for (let column = 0; column < 4; column++) {\n const o = offset + column * 4;\n const x = local[o], y = local[o + 1], z = local[o + 2], w = local[o + 3];\n for (let row = 0; row < 4; row++) out[column * 4 + row] = parent[row] * x + parent[row + 4] * y + parent[row + 8] * z + parent[row + 12] * w;\n }\n return out;\n}\n\n/** CPU instance records in numeric storage; one reusable synchronous read view. */\nexport class PackedMeshInstances {\n length = 0;\n readonly transforms: Float64Array;\n readonly colors: Float32Array;\n readonly bounds: Float32Array;\n readonly blasIndices: Uint32Array;\n readonly materials: Int32Array;\n readonly displacement: Float64Array;\n readonly sourceIndices: Uint32Array;\n private readonly view: TLASInstance = {blasIndex: 0, bounds: {min: [0,0,0], max: [0,0,0]}, transform: Array(16).fill(0), materialsIndices: [0], color: [1,1,1]};\n constructor(capacity: number) {\n this.colors = new Float32Array(capacity * 3);\n this.transforms = new Float64Array(capacity * 16); this.bounds = new Float32Array(capacity * 6);\n this.blasIndices = new Uint32Array(capacity); this.materials = new Int32Array(capacity); this.displacement = new Float64Array(capacity); this.sourceIndices = new Uint32Array(capacity);\n }\n read(index: number): TLASInstance {\n const v = this.view;\n v.blasIndex = this.blasIndices[index]; v.materialsIndices[0] = this.materials[index]; v.displacementScale = this.displacement[index];\n for (let i = 0; i < 16; i++) v.transform[i] = this.transforms[index * 16 + i];\n for (let i = 0; i < 3; i++) v.color![i] = this.colors[index * 3 + i];\n for (let i = 0; i < 3; i++) {v.bounds.min[i] = this.bounds[index * 6 + i]; v.bounds.max[i] = this.bounds[index * 6 + i + 3];}\n return v;\n }\n}\nexport type MeshInstances = TLASInstance[] | PackedMeshInstances;\nexport function readMeshInstance(instances: MeshInstances, index: number) {\n return instances instanceof PackedMeshInstances ? instances.read(index) : instances[index];\n}\n\nexport function sameInstanceMembership(a: MeshInstances, b: MeshInstances) {\n if (a.length !== b.length) return false;\n if (a instanceof PackedMeshInstances && b instanceof PackedMeshInstances) {\n for (let i = 0; i < a.length; i++) if (a.sourceIndices[i] !== b.sourceIndices[i]) return false;\n }\n return true;\n}\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import Mesh from '../scene/Mesh.js';
|
|
2
|
+
import { updateMeshInstances } from './prepareMeshBVH.js';
|
|
3
|
+
type Prepared = ReturnType<typeof updateMeshInstances>;
|
|
4
|
+
/** Reuses resident vertex/BLAS data when only single-material instances change. */
|
|
5
|
+
export declare class MeshMembershipCache {
|
|
6
|
+
private _states;
|
|
7
|
+
capture(res: Prepared): void;
|
|
8
|
+
update(res: Prepared, meshes: readonly Mesh[]): Prepared | undefined;
|
|
9
|
+
}
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import InstancedMesh from '../scene/InstancedMesh.js';
|
|
2
|
+
import { getGeometryBvh } from './geometryBvh.js';
|
|
3
|
+
import { materialIsEmissive } from './materialChanges.js';
|
|
4
|
+
import { getBvhBounds, updateMeshInstanceTransforms } from './prepareMeshBVH.js';
|
|
5
|
+
const attributes = ['position', 'normal', 'tangent', 'color', 'uv', 'uv1', 'indices', 'materialIndex'];
|
|
6
|
+
function geometryState(geometry) {
|
|
7
|
+
return [geometry.version, geometry.dynamic, getGeometryBvh(geometry), ...attributes.flatMap(key => {
|
|
8
|
+
const attribute = geometry[key];
|
|
9
|
+
return [attribute?.array, attribute?.array.length, attribute?.itemSize];
|
|
10
|
+
})];
|
|
11
|
+
}
|
|
12
|
+
/** Reuses resident vertex/BLAS data when only single-material instances change. */
|
|
13
|
+
export class MeshMembershipCache {
|
|
14
|
+
_states = new Map();
|
|
15
|
+
capture(res) {
|
|
16
|
+
this._states.clear();
|
|
17
|
+
for (const binding of res.instanceBindings)
|
|
18
|
+
if (binding.mesh.geometry === binding.geometry) {
|
|
19
|
+
this._states.set(binding.geometry, geometryState(binding.geometry));
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
update(res, meshes) {
|
|
23
|
+
const geometries = new Map(res.geometries.map((geometry, i) => [geometry, i]));
|
|
24
|
+
// Multiple-material vertex indices, displacement have
|
|
25
|
+
// geometry-dependent packing; their structural edits require preparation.
|
|
26
|
+
const checked = new Set();
|
|
27
|
+
for (const mesh of meshes) {
|
|
28
|
+
const previous = this._states.get(mesh.geometry);
|
|
29
|
+
if (!previous || mesh.materials.length !== 1 || mesh.geometry.materialIndex ||
|
|
30
|
+
mesh.materials[0].displacementMap)
|
|
31
|
+
return;
|
|
32
|
+
if (!checked.has(mesh.geometry)) {
|
|
33
|
+
const next = geometryState(mesh.geometry);
|
|
34
|
+
if (next.some((value, i) => value !== previous[i]))
|
|
35
|
+
return;
|
|
36
|
+
checked.add(mesh.geometry);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// Rebuild active material slots when batches are added, removed or reassigned.
|
|
40
|
+
// Retired material identities must not remain in the active table.
|
|
41
|
+
const materials = [];
|
|
42
|
+
const materialIndices = new Map();
|
|
43
|
+
const templates = new Map(res.instanceBindings.map(binding => [binding.geometry, binding]));
|
|
44
|
+
const instanceBindings = meshes.filter(mesh => mesh.geometry.position.array.length > 0).map(mesh => {
|
|
45
|
+
const material = mesh.materials[0];
|
|
46
|
+
let index = materialIndices.get(material);
|
|
47
|
+
if (index == null) {
|
|
48
|
+
index = materials.length;
|
|
49
|
+
materials.push(material);
|
|
50
|
+
materialIndices.set(material, index);
|
|
51
|
+
}
|
|
52
|
+
const template = templates.get(mesh.geometry);
|
|
53
|
+
// Bounds remain valid even after every instance of a geometry was removed.
|
|
54
|
+
// Use the resident geometry bounds for all supported BVH layouts.
|
|
55
|
+
return { mesh, geometry: mesh.geometry, blasIndex: geometries.get(mesh.geometry),
|
|
56
|
+
materialIndices: [index], displacementScale: 0,
|
|
57
|
+
bvhBounds: template?.bvhBounds ?? getBvhBounds(mesh.geometry) };
|
|
58
|
+
});
|
|
59
|
+
const instances = updateMeshInstanceTransforms(instanceBindings);
|
|
60
|
+
if (meshes.some(mesh => mesh instanceof InstancedMesh))
|
|
61
|
+
return { ...res, materials, instances, instanceBindings,
|
|
62
|
+
emissiveBindings: instanceBindings.filter(binding => materialIsEmissive(materials[binding.materialIndices[0]])) };
|
|
63
|
+
const ordinary = instances;
|
|
64
|
+
// Match full preparation's exclusion of invalid transforms/bounds.
|
|
65
|
+
const valid = ordinary.map((instance, i) => instance.bounds.min.every(Number.isFinite) &&
|
|
66
|
+
instance.bounds.max.every(Number.isFinite) && instance.transform.every(Number.isFinite) ? i : -1).filter(i => i >= 0);
|
|
67
|
+
const bindings = valid.map(i => instanceBindings[i]);
|
|
68
|
+
return { ...res, materials, instances: valid.map(i => ordinary[i]), instanceBindings: bindings,
|
|
69
|
+
emissiveBindings: bindings.filter(binding => materialIsEmissive(materials[binding.materialIndices[0]])) };
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=meshMembership.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meshMembership.js","sourceRoot":"","sources":["../../src/renderer/meshMembership.ts"],"names":[],"mappings":"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","sourcesContent":["import InstancedMesh from '../scene/InstancedMesh.js';\nimport { getGeometryBvh } from './geometryBvh.js';\nimport Geometry from '../scene/Geometry.js';\nimport Mesh from '../scene/Mesh.js';\nimport { materialIsEmissive } from './materialChanges.js';\nimport { getBvhBounds, updateMeshInstances, updateMeshInstanceTransforms } from './prepareMeshBVH.js';\n\ntype Prepared = ReturnType<typeof updateMeshInstances>;\nconst attributes = ['position', 'normal', 'tangent', 'color', 'uv', 'uv1', 'indices', 'materialIndex'] as const;\nfunction geometryState(geometry: Geometry): unknown[] {\n return [geometry.version, geometry.dynamic, getGeometryBvh(geometry), ...attributes.flatMap(key => {\n const attribute = geometry[key];\n return [attribute?.array, attribute?.array.length, attribute?.itemSize];\n })];\n}\n\n/** Reuses resident vertex/BLAS data when only single-material instances change. */\nexport class MeshMembershipCache {\n private _states = new Map<Geometry, unknown[]>();\n capture(res: Prepared) {\n this._states.clear();\n for (const binding of res.instanceBindings) if (binding.mesh.geometry === binding.geometry) {\n this._states.set(binding.geometry, geometryState(binding.geometry));\n }\n }\n update(res: Prepared, meshes: readonly Mesh[]): Prepared | undefined {\n const geometries = new Map(res.geometries.map((geometry, i) => [geometry, i]));\n // Multiple-material vertex indices, displacement have\n // geometry-dependent packing; their structural edits require preparation.\n const checked = new Set<Geometry>();\n for (const mesh of meshes) {\n const previous = this._states.get(mesh.geometry);\n if (!previous || mesh.materials.length !== 1 || mesh.geometry.materialIndex ||\n mesh.materials[0].displacementMap) return;\n if (!checked.has(mesh.geometry)) {\n const next = geometryState(mesh.geometry);\n if (next.some((value, i) => value !== previous[i])) return;\n checked.add(mesh.geometry);\n }\n }\n // Rebuild active material slots when batches are added, removed or reassigned.\n // Retired material identities must not remain in the active table.\n const materials: Prepared['materials'] = [];\n const materialIndices = new Map<Prepared['materials'][number], number>();\n const templates = new Map(res.instanceBindings.map(binding => [binding.geometry, binding]));\n const instanceBindings = meshes.filter(mesh => mesh.geometry.position.array.length > 0).map(mesh => {\n const material = mesh.materials[0];\n let index = materialIndices.get(material);\n if (index == null) { index = materials.length; materials.push(material); materialIndices.set(material, index); }\n const template = templates.get(mesh.geometry);\n // Bounds remain valid even after every instance of a geometry was removed.\n // Use the resident geometry bounds for all supported BVH layouts.\n return { mesh, geometry: mesh.geometry, blasIndex: geometries.get(mesh.geometry)!,\n materialIndices: [index], displacementScale: 0,\n bvhBounds: template?.bvhBounds ?? getBvhBounds(mesh.geometry) };\n });\n const instances = updateMeshInstanceTransforms(instanceBindings);\n if (meshes.some(mesh => mesh instanceof InstancedMesh)) return {...res, materials, instances, instanceBindings,\n emissiveBindings: instanceBindings.filter(binding => materialIsEmissive(materials[binding.materialIndices[0]]))};\n const ordinary = instances as import('./bvhAccel.js').TLASInstance[];\n // Match full preparation's exclusion of invalid transforms/bounds.\n const valid = ordinary.map((instance, i) => instance.bounds.min.every(Number.isFinite) &&\n instance.bounds.max.every(Number.isFinite) && instance.transform.every(Number.isFinite) ? i : -1).filter(i => i >= 0);\n const bindings = valid.map(i => instanceBindings[i]);\n return { ...res, materials, instances: valid.map(i => ordinary[i]), instanceBindings: bindings,\n emissiveBindings: bindings.filter(binding => materialIsEmissive(materials[binding.materialIndices[0]])) };\n }\n}"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/// <reference types="@webgpu/types" preserve="true" />
|
|
2
|
+
import { type UNet } from 'oidn-web';
|
|
3
|
+
import type Engine from '../Engine.js';
|
|
4
|
+
import type { OIDNDenoiserOptions } from '../Render.js';
|
|
5
|
+
export interface OIDNAuxiliaryDenoisers {
|
|
6
|
+
/** Loaded albedo prefilter; supplied by the clean-aux loader. */
|
|
7
|
+
albedo: OIDNDenoiser;
|
|
8
|
+
/** Loaded normal prefilter; supplied by the clean-aux loader. */
|
|
9
|
+
normal: OIDNDenoiser;
|
|
10
|
+
}
|
|
11
|
+
export type OIDNDenoiser = UNet & {
|
|
12
|
+
/** Optional RT auxiliary filters used before a clean-aux beauty model. */
|
|
13
|
+
auxiliaryDenoisers?: OIDNAuxiliaryDenoisers;
|
|
14
|
+
/** Optional shape preparation supported by newer oidn-web runtimes. */
|
|
15
|
+
prepareForImage?: (width: number, height: number, options?: {
|
|
16
|
+
tileOverlap?: number;
|
|
17
|
+
}) => Promise<void>;
|
|
18
|
+
};
|
|
19
|
+
/** Internal lazy loader; both public OIDN option branches use this path. */
|
|
20
|
+
export declare function loadOIDNNetwork(engine: Engine, options: Readonly<OIDNDenoiserOptions>): Promise<OIDNDenoiser>;
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/// <reference types="@webgpu/types" preserve="true" />
|
|
2
|
+
import { initUNetFromBuffer } from 'oidn-web';
|
|
3
|
+
import { resolveOIDNModelUrl, resolveOIDNAuxiliaryModelUrls, DEFAULT_OIDN_WEIGHTS_BASE_URL, OIDN_WEIGHTS_PACKAGE } from '../oidn.js';
|
|
4
|
+
async function fetchOIDNWeights(url, signal) {
|
|
5
|
+
const response = await fetch(String(url), { signal });
|
|
6
|
+
if (!response.ok) {
|
|
7
|
+
throw new Error(`Failed to load OIDN weights from ${url}: ${response.status} ${response.statusText}`);
|
|
8
|
+
}
|
|
9
|
+
const buffer = await response.arrayBuffer();
|
|
10
|
+
const bytes = new Uint8Array(buffer);
|
|
11
|
+
if (bytes[0] !== 0xD7 || bytes[1] !== 0x41) {
|
|
12
|
+
throw new Error(`Invalid OIDN TZA weights from ${url}: expected magic D7 41 (received non-TZA content).`);
|
|
13
|
+
}
|
|
14
|
+
return buffer;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Loads an HDR OIDN model with albedo/normal guides on the engine's WebGPU
|
|
18
|
+
* device and returns it without attaching it to a render.
|
|
19
|
+
*/
|
|
20
|
+
async function loadOIDN(engine, weightsUrl, options = {}, fetchWeights = fetchOIDNWeights) {
|
|
21
|
+
await engine.init();
|
|
22
|
+
const device = engine.device;
|
|
23
|
+
if (engine.backend !== 'webgpu' || !device) {
|
|
24
|
+
throw new Error('OIDN requires a WebGPU engine.');
|
|
25
|
+
}
|
|
26
|
+
const auxiliaryUrls = options.auxiliaryModelUrls;
|
|
27
|
+
const weightBuffers = await Promise.all([
|
|
28
|
+
engine._getWeights(String(weightsUrl), () => fetchWeights(weightsUrl, options.signal)),
|
|
29
|
+
...(auxiliaryUrls
|
|
30
|
+
? [
|
|
31
|
+
engine._getWeights(String(auxiliaryUrls.albedo), () => fetchWeights(auxiliaryUrls.albedo, options.signal)),
|
|
32
|
+
engine._getWeights(String(auxiliaryUrls.normal), () => fetchWeights(auxiliaryUrls.normal, options.signal))
|
|
33
|
+
]
|
|
34
|
+
: [])
|
|
35
|
+
]);
|
|
36
|
+
const backend = { device };
|
|
37
|
+
const runtimeOptions = {
|
|
38
|
+
hdrTransfer: options.hdrTransfer ?? 'pu',
|
|
39
|
+
maxTileSize: options.maxTileSize,
|
|
40
|
+
engine: options.engine,
|
|
41
|
+
precision: options.precision,
|
|
42
|
+
dynamicTile: options.dynamicTile
|
|
43
|
+
};
|
|
44
|
+
let denoiser;
|
|
45
|
+
let albedoDenoiser;
|
|
46
|
+
try {
|
|
47
|
+
denoiser = await initUNetFromBuffer(weightBuffers[0], backend, {
|
|
48
|
+
aux: options.aux ?? true,
|
|
49
|
+
hdr: options.hdr ?? true,
|
|
50
|
+
...runtimeOptions
|
|
51
|
+
});
|
|
52
|
+
if (auxiliaryUrls) {
|
|
53
|
+
// Auxiliary RT networks are color-only three-channel UNets. The render
|
|
54
|
+
// pipeline supplies their feature-specific transfer functions.
|
|
55
|
+
albedoDenoiser = await initUNetFromBuffer(weightBuffers[1], backend, {
|
|
56
|
+
aux: false,
|
|
57
|
+
hdr: false,
|
|
58
|
+
...runtimeOptions
|
|
59
|
+
});
|
|
60
|
+
const normalDenoiser = await initUNetFromBuffer(weightBuffers[2], backend, {
|
|
61
|
+
aux: false,
|
|
62
|
+
hdr: false,
|
|
63
|
+
...runtimeOptions
|
|
64
|
+
});
|
|
65
|
+
denoiser.auxiliaryDenoisers = {
|
|
66
|
+
albedo: albedoDenoiser,
|
|
67
|
+
normal: normalDenoiser
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
albedoDenoiser?.dispose();
|
|
73
|
+
denoiser?.dispose();
|
|
74
|
+
throw error;
|
|
75
|
+
}
|
|
76
|
+
return denoiser;
|
|
77
|
+
}
|
|
78
|
+
/** Loads an explicit HDR network URL; download failures never fall back to a CDN. */
|
|
79
|
+
function initializeOIDNFromURL(engine, weightsUrl, options = {}) {
|
|
80
|
+
return loadOIDN(engine, weightsUrl, options);
|
|
81
|
+
}
|
|
82
|
+
let warnedBundledWeights = false;
|
|
83
|
+
/** Loads one of the packaged OIDN models. */
|
|
84
|
+
function initializeOIDN(engine, options = {}) {
|
|
85
|
+
const { model = 'standard', weightsBaseUrl, auxiliaryModelUrls, ...loadOptions } = options;
|
|
86
|
+
const mainUrl = resolveOIDNModelUrl(model, weightsBaseUrl);
|
|
87
|
+
const defaultBundled = weightsBaseUrl === undefined && model !== 'cleanAuxLarge';
|
|
88
|
+
const defaultLarge = new Set(weightsBaseUrl === undefined && model === 'cleanAuxLarge'
|
|
89
|
+
? [mainUrl, ...(!auxiliaryModelUrls ? Object.values(resolveOIDNAuxiliaryModelUrls()).map(String) : [])]
|
|
90
|
+
: []);
|
|
91
|
+
const fetchWeights = async (url, signal) => {
|
|
92
|
+
try {
|
|
93
|
+
return await fetchOIDNWeights(url, signal);
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
if (signal?.aborted)
|
|
97
|
+
throw error;
|
|
98
|
+
if (defaultBundled && String(url) === mainUrl) {
|
|
99
|
+
if (!warnedBundledWeights) {
|
|
100
|
+
warnedBundledWeights = true;
|
|
101
|
+
console.warn('Bundled OIDN weights failed to load; falling back to jsDelivr. In Vite development add optimizeDeps: { exclude: ["@meimu/mutracer"] }, or pass weightsBaseUrl to self-host the weights.', error);
|
|
102
|
+
}
|
|
103
|
+
return fetchOIDNWeights(resolveOIDNModelUrl(model, DEFAULT_OIDN_WEIGHTS_BASE_URL), signal);
|
|
104
|
+
}
|
|
105
|
+
if (defaultLarge.has(String(url))) {
|
|
106
|
+
throw new Error(`Failed to load ${OIDN_WEIGHTS_PACKAGE} network from ${url}. Self-host node_modules/oidn-weights/*.tza and pass weightsBaseUrl. ${error instanceof Error ? error.message : String(error)}`);
|
|
107
|
+
}
|
|
108
|
+
throw error;
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
return loadOIDN(engine, mainUrl, {
|
|
112
|
+
...loadOptions,
|
|
113
|
+
auxiliaryModelUrls: auxiliaryModelUrls ?? (model === 'cleanAuxLarge'
|
|
114
|
+
? resolveOIDNAuxiliaryModelUrls(weightsBaseUrl) : undefined)
|
|
115
|
+
}, fetchWeights);
|
|
116
|
+
}
|
|
117
|
+
/** Internal lazy loader; both public OIDN option branches use this path. */
|
|
118
|
+
export function loadOIDNNetwork(engine, options) {
|
|
119
|
+
if (options.weightsUrl !== undefined)
|
|
120
|
+
return initializeOIDNFromURL(engine, options.weightsUrl, options);
|
|
121
|
+
return initializeOIDN(engine, options);
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=oidnNetwork.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oidnNetwork.js","sourceRoot":"","sources":["../../src/renderer/oidnNetwork.ts"],"names":[],"mappings":"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","sourcesContent":["/// <reference types=\"@webgpu/types\" preserve=\"true\" />\nimport { initUNetFromBuffer, type UNet } from 'oidn-web';\nimport type Engine from '../Engine.js';\nimport type { OIDNDenoiserOptions } from '../Render.js';\nimport {\n resolveOIDNModelUrl, resolveOIDNAuxiliaryModelUrls, DEFAULT_OIDN_WEIGHTS_BASE_URL,\n OIDN_WEIGHTS_PACKAGE\n} from '../oidn.js';\nimport type {\n OIDNModel, OIDNEngine, OIDNPrecision, OIDNHDRTransfer,\n OIDNDynamicTileSetting, OIDNAuxiliaryModelUrls\n} from '../oidn.js';\n\nexport interface OIDNAuxiliaryDenoisers {\n /** Loaded albedo prefilter; supplied by the clean-aux loader. */\n albedo: OIDNDenoiser;\n /** Loaded normal prefilter; supplied by the clean-aux loader. */\n normal: OIDNDenoiser;\n}\nexport type OIDNDenoiser = UNet & {\n /** Optional RT auxiliary filters used before a clean-aux beauty model. */\n auxiliaryDenoisers?: OIDNAuxiliaryDenoisers;\n /** Optional shape preparation supported by newer oidn-web runtimes. */\n prepareForImage?: (\n width: number,\n height: number,\n options?: { tileOverlap?: number }\n ) => Promise<void>;\n};\n\ninterface OIDNLoadOptions {\n /** Maximum OIDN tile size. By default oidn-web chooses the tile size. */\n maxTileSize?: number;\n /** Optional signal used while downloading the weights. */\n signal?: AbortSignal;\n /** OIDN execution engine. `webnn` enables the experimental WebNN FP16 path. */\n engine?: OIDNEngine;\n /** Native WGSL precision. `auto` uses FP16 when shader-f16 is available. */\n precision?: OIDNPrecision;\n /** Adaptive tile controller settings, or false for fixed tiles. */\n dynamicTile?: OIDNDynamicTileSetting;\n}\n\ninterface InitializeOIDNOptions extends OIDNLoadOptions {\n /** Packaged model to load. Defaults to the standard model. */\n model?: OIDNModel;\n /** Override directory for all weights. Defaults to bundled standard/small assets and the oidn-weights CDN for large networks. */\n weightsBaseUrl?: string | URL;\n /** Override the packaged albedo/normal prefilter weights for a clean-aux model. */\n auxiliaryModelUrls?: OIDNAuxiliaryModelUrls;\n}\n\ninterface CustomOIDNModelOptions extends OIDNLoadOptions {\n /** Whether the custom model consumes albedo and normal guides. Defaults to true. */\n aux?: boolean;\n /** Whether the custom model consumes HDR color. Defaults to true. */\n hdr?: boolean;\n /** HDR encoding expected by the weights. OIDN's RT models use PU. */\n hdrTransfer?: OIDNHDRTransfer;\n /** Optional albedo/normal filters to run before the custom clean-aux model. */\n auxiliaryModelUrls?: OIDNAuxiliaryModelUrls;\n}\n\nasync function fetchOIDNWeights(url: string | URL, signal?: AbortSignal) {\n const response = await fetch(String(url), { signal });\n if (!response.ok) {\n throw new Error(\n `Failed to load OIDN weights from ${url}: ${response.status} ${response.statusText}`\n );\n }\n const buffer = await response.arrayBuffer();\n const bytes = new Uint8Array(buffer);\n if (bytes[0] !== 0xD7 || bytes[1] !== 0x41) {\n throw new Error(`Invalid OIDN TZA weights from ${url}: expected magic D7 41 (received non-TZA content).`);\n }\n return buffer;\n}\n\n/**\n * Loads an HDR OIDN model with albedo/normal guides on the engine's WebGPU\n * device and returns it without attaching it to a render.\n */\nasync function loadOIDN(\n engine: Engine,\n weightsUrl: string | URL,\n options: CustomOIDNModelOptions = {},\n fetchWeights = fetchOIDNWeights\n): Promise<OIDNDenoiser> {\n await engine.init();\n const device = engine.device;\n if (engine.backend !== 'webgpu' || !device) {\n throw new Error('OIDN requires a WebGPU engine.');\n }\n\n const auxiliaryUrls = options.auxiliaryModelUrls;\n const weightBuffers = await Promise.all([\n engine._getWeights(String(weightsUrl), () => fetchWeights(weightsUrl, options.signal)),\n ...(auxiliaryUrls\n ? [\n engine._getWeights(String(auxiliaryUrls.albedo), () => fetchWeights(auxiliaryUrls.albedo, options.signal)),\n engine._getWeights(String(auxiliaryUrls.normal), () => fetchWeights(auxiliaryUrls.normal, options.signal))\n ]\n : [])\n ]);\n const backend = { device };\n const runtimeOptions = {\n hdrTransfer: options.hdrTransfer ?? 'pu',\n maxTileSize: options.maxTileSize,\n engine: options.engine,\n precision: options.precision,\n dynamicTile: options.dynamicTile\n };\n let denoiser: OIDNDenoiser | undefined;\n let albedoDenoiser: OIDNDenoiser | undefined;\n try {\n denoiser = await initUNetFromBuffer(weightBuffers[0], backend, {\n aux: options.aux ?? true,\n hdr: options.hdr ?? true,\n ...runtimeOptions\n });\n if (auxiliaryUrls) {\n // Auxiliary RT networks are color-only three-channel UNets. The render\n // pipeline supplies their feature-specific transfer functions.\n albedoDenoiser = await initUNetFromBuffer(weightBuffers[1], backend, {\n aux: false,\n hdr: false,\n ...runtimeOptions\n });\n const normalDenoiser = await initUNetFromBuffer(\n weightBuffers[2],\n backend,\n {\n aux: false,\n hdr: false,\n ...runtimeOptions\n }\n );\n denoiser.auxiliaryDenoisers = {\n albedo: albedoDenoiser,\n normal: normalDenoiser\n };\n }\n } catch (error) {\n albedoDenoiser?.dispose();\n denoiser?.dispose();\n throw error;\n }\n return denoiser;\n}\n\n/** Loads an explicit HDR network URL; download failures never fall back to a CDN. */\nfunction initializeOIDNFromURL(\n engine: Engine,\n weightsUrl: string | URL,\n options: CustomOIDNModelOptions = {}\n): Promise<OIDNDenoiser> {\n return loadOIDN(engine, weightsUrl, options);\n}\n\nlet warnedBundledWeights = false;\n\n/** Loads one of the packaged OIDN models. */\nfunction initializeOIDN(\n engine: Engine,\n options: InitializeOIDNOptions = {}\n) {\n const {\n model = 'standard',\n weightsBaseUrl,\n auxiliaryModelUrls,\n ...loadOptions\n } = options;\n const mainUrl = resolveOIDNModelUrl(model, weightsBaseUrl);\n const defaultBundled = weightsBaseUrl === undefined && model !== 'cleanAuxLarge';\n const defaultLarge = new Set<string>(weightsBaseUrl === undefined && model === 'cleanAuxLarge'\n ? [mainUrl, ...(!auxiliaryModelUrls ? Object.values(resolveOIDNAuxiliaryModelUrls()).map(String) : [])]\n : []);\n const fetchWeights = async (url: string | URL, signal?: AbortSignal) => {\n try {\n return await fetchOIDNWeights(url, signal);\n } catch (error) {\n if (signal?.aborted) throw error;\n if (defaultBundled && String(url) === mainUrl) {\n if (!warnedBundledWeights) {\n warnedBundledWeights = true;\n console.warn('Bundled OIDN weights failed to load; falling back to jsDelivr. In Vite development add optimizeDeps: { exclude: [\"@meimu/mutracer\"] }, or pass weightsBaseUrl to self-host the weights.', error);\n }\n return fetchOIDNWeights(resolveOIDNModelUrl(model, DEFAULT_OIDN_WEIGHTS_BASE_URL), signal);\n }\n if (defaultLarge.has(String(url))) {\n throw new Error(`Failed to load ${OIDN_WEIGHTS_PACKAGE} network from ${url}. Self-host node_modules/oidn-weights/*.tza and pass weightsBaseUrl. ${error instanceof Error ? error.message : String(error)}`);\n }\n throw error;\n }\n };\n return loadOIDN(\n engine,\n mainUrl,\n {\n ...loadOptions,\n auxiliaryModelUrls:\n auxiliaryModelUrls ?? (model === 'cleanAuxLarge'\n ? resolveOIDNAuxiliaryModelUrls(weightsBaseUrl) : undefined)\n },\n fetchWeights\n );\n}\n\n/** Internal lazy loader; both public OIDN option branches use this path. */\nexport function loadOIDNNetwork(engine: Engine, options: Readonly<OIDNDenoiserOptions>): Promise<OIDNDenoiser> {\n if (options.weightsUrl !== undefined) return initializeOIDNFromURL(engine, options.weightsUrl, options);\n return initializeOIDN(engine, options);\n}\n"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenPBR opaque-dielectric, ideal-metal and ideal-dielectric energy compensation tables.
|
|
3
|
+
*
|
|
4
|
+
* Copyright 2026 Adobe
|
|
5
|
+
* Licensed under the Apache License, Version 2.0.
|
|
6
|
+
* Derived from adobe/openpbr-bsdf commit
|
|
7
|
+
* 9edf806740d2140846d9bef76e4342fc458e2ef5.
|
|
8
|
+
* This repository re-quantized the Adobe data to 8-bit row-normalized values.
|
|
9
|
+
* Directional rows store Uint16 min/max followed by 32 Uint8 samples.
|
|
10
|
+
* Metal and ideal-dielectric averages store exact little-endian Uint16 values.
|
|
11
|
+
* They decode directly to Float32 without row quantization or repeated texels.
|
|
12
|
+
* Storage uses differences from the previous row: little-endian min/max
|
|
13
|
+
* modulo 65536 and samples modulo 256. The first row is relative to zero;
|
|
14
|
+
* differences continue across all concatenated energy tables.
|
|
15
|
+
* Decoded UNORM value: (min + (max - min) * sample / 255) / 65535.
|
|
16
|
+
* https://github.com/adobe/openpbr-bsdf
|
|
17
|
+
*/
|
|
18
|
+
export declare const OPENPBR_ENERGY_LUT_SIZE = 32;
|
|
19
|
+
export declare const OPENPBR_ENERGY_LUT_AVERAGE_ROW = 1024;
|
|
20
|
+
export declare const OPENPBR_ENERGY_LUT_WIDTH = 32;
|
|
21
|
+
/** Ideal-metal complement: roughness rows, cosine columns. */
|
|
22
|
+
export declare const OPENPBR_METAL_ENERGY_LUT_ROW = 1056;
|
|
23
|
+
/** Ideal-metal cosine-weighted average: roughness columns, one row. */
|
|
24
|
+
export declare const OPENPBR_METAL_ENERGY_LUT_AVERAGE_ROW = 1088;
|
|
25
|
+
/** Ideal-dielectric loss: IOR-major, roughness rows, cosine columns. */
|
|
26
|
+
export declare const OPENPBR_DIELECTRIC_ENERGY_LUT_ROW = 1089;
|
|
27
|
+
/** Exact u16 averages: IOR rows, roughness columns. */
|
|
28
|
+
export declare const OPENPBR_DIELECTRIC_ENERGY_LUT_AVERAGE_ROW = 2113;
|
|
29
|
+
/** Multiple-scattering reflection ratio: IOR rows, roughness columns. */
|
|
30
|
+
export declare const OPENPBR_DIELECTRIC_REFLECTION_RATIO_LUT_ROW = 2145;
|
|
31
|
+
export declare const OPENPBR_ENERGY_LUT_HEIGHT = 2177;
|
|
32
|
+
export declare function getOpenPbrEnergyLutData(): Float32Array;
|