@meimu/mutracer 0.0.0-stage → 0.1.0
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 +195 -2
- package/THIRD_PARTY_NOTICES.md +160 -0
- package/dist/assets/bvh.worker.js +1 -0
- package/dist/mutracer.umd.js +14352 -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 +144 -0
- package/docs/sampling.md +40 -0
- package/docs/threejs.md +273 -0
- package/docs/todo.md +61 -0
- package/docs/updates.md +208 -0
- package/lib/Display.d.ts +72 -0
- package/lib/Display.js +121 -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 +256 -0
- package/lib/Render.js +671 -0
- package/lib/Render.js.map +1 -0
- package/lib/RenderLoop.d.ts +76 -0
- package/lib/RenderLoop.js +204 -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 +1446 -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 +121 -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 +619 -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 +923 -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 +100 -0
- package/lib/util/fromTHREE.js +1063 -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":"staticBvhPreparation.js","sourceRoot":"","sources":["../../src/renderer/staticBvhPreparation.ts"],"names":[],"mappings":"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","sourcesContent":["import { setGeometryBvh, type BvhBuildConfig } from './geometryBvh.js';\nimport type Mesh from '../scene/Mesh.js';\nimport type Geometry from '../scene/Geometry.js';\nimport type { TinyBvhLayout } from '../tinybvh/TinyBvhBuilder.js';\nimport { buildBLAS, type FlattendBVH } from './bvhAccel.js';\nimport {\n buildBvhInWorker, BvhWorkerPool, BvhWorkerUnavailableError, BvhWorkerDisposedError\n} from './bvhWorkerClient.js';\nimport {\n captureMeshBlasSnapshot,\n getMeshBlasInput,\n getPreparedMeshGeometry,\n meshNeedsStaticBvh,\n meshBlasSnapshotIsCurrent\n} from './prepareMeshBVH.js';\n\nexport interface StaticBvhPreparationOptions {\n config?: BvhBuildConfig;\n builder: 'builtin' | 'tinybvh';\n layout: TinyBvhLayout;\n spatialSplits: boolean;\n useWorker: boolean;\n workerPool?: BvhWorkerPool;\n isCancelled?: () => boolean;\n rebuild: boolean;\n onProgress?: (progress: number) => void;\n}\n\nexport interface StaticBvhPreparationResult {\n geometryCount: number;\n bvhTimeMs: number;\n failedMeshes: Mesh[];\n workerUnavailable: boolean;\n tinyBvhUnavailable: boolean;\n}\n\n/** Build static BLASes once per target geometry, preserving old BVHs until writeback. */\nexport async function prepareStaticBvhs(\n meshes: readonly Mesh[], options: StaticBvhPreparationOptions\n): Promise<StaticBvhPreparationResult> {\n const result: StaticBvhPreparationResult = {\n geometryCount: 0, bvhTimeMs: 0, failedMeshes: [],\n workerUnavailable: false, tinyBvhUnavailable: false\n };\n const jobs = new Map<Geometry, {\n mesh: Mesh;\n snapshot: ReturnType<typeof captureMeshBlasSnapshot>;\n }>();\n for (const mesh of meshes) {\n if (!mesh.geometry.position?.array.length || mesh.geometry.dynamic) continue;\n const target = getPreparedMeshGeometry(mesh);\n if (jobs.has(target) || (!meshNeedsStaticBvh(mesh, options.config ?? options) && !options.rebuild)) continue;\n try {\n jobs.set(target, { mesh, snapshot: captureMeshBlasSnapshot(mesh, target) });\n } catch {\n result.failedMeshes.push(mesh);\n }\n }\n const pool = options.useWorker ? options.workerPool ?? new BvhWorkerPool(1) : undefined;\n\n async function build(\n input: ReturnType<typeof getMeshBlasInput>, builder: StaticBvhPreparationOptions['builder'], useWorker: boolean\n ): Promise<FlattendBVH> {\n const { geometry, displacementScale, trianglesDisplacement } = input;\n let bvh: FlattendBVH & { bvhTimeMs?: number };\n if (useWorker) {\n bvh = await buildBvhInWorker(geometry, displacementScale, trianglesDisplacement,\n builder, builder === 'tinybvh' ? options.layout : 'bvh2', options.spatialSplits, pool);\n } else if (builder === 'tinybvh') {\n const { buildTinyBvh } = await import('../tinybvh/TinyBvhBuilder.js');\n bvh = await buildTinyBvh(geometry, displacementScale, trianglesDisplacement,\n options.layout, options.spatialSplits);\n } else {\n const start = performance.now();\n bvh = { ...buildBLAS(geometry, displacementScale, trianglesDisplacement),\n bvhTimeMs: performance.now() - start };\n }\n if (builder === 'tinybvh' && (bvh.builder !== 'tinybvh' || !bvh.buffer.byteLength)) {\n throw new Error('TinyBVH did not build every scene geometry.');\n }\n result.bvhTimeMs += bvh.bvhTimeMs ?? 0;\n return bvh;\n }\n\n async function buildWithFallback(input: ReturnType<typeof getMeshBlasInput>) {\n let builder = options.builder;\n let useWorker = options.useWorker && !result.workerUnavailable;\n for (;;) {\n if (options.isCancelled?.()) throw new BvhWorkerDisposedError();\n try {\n return await build(input, builder, useWorker);\n } catch (error) {\n if (error instanceof BvhWorkerDisposedError) throw error;\n if (error instanceof BvhWorkerUnavailableError && useWorker) {\n result.workerUnavailable = true;\n useWorker = false;\n } else if (builder === 'tinybvh') {\n result.tinyBvhUnavailable = true;\n builder = 'builtin';\n useWorker = options.useWorker && !result.workerUnavailable;\n } else {\n throw error;\n }\n }\n }\n }\n\n let completed = 0;\n // Large BLASes start first to reduce the tail. Only active lanes prepare\n // attributes/displacement inputs and submit geometry to Workers.\n const pending = [...jobs].sort(([a], [b]) =>\n (b.indices?.array.length ?? 0) - (a.indices?.array.length ?? 0));\n let next = 0;\n async function runLane() {\n while (next < pending.length && !options.isCancelled?.()) {\n const [target, { mesh, snapshot }] = pending[next++];\n try {\n if (!meshBlasSnapshotIsCurrent(mesh, target, snapshot)) continue;\n const input = getMeshBlasInput(mesh);\n const bvh = await buildWithFallback(input);\n if (!options.isCancelled?.() && meshBlasSnapshotIsCurrent(mesh, target, snapshot)) {\n setGeometryBvh(target, bvh, options.config ?? options);\n result.geometryCount++;\n }\n } catch (error) {\n if (!(error instanceof BvhWorkerDisposedError)) result.failedMeshes.push(mesh);\n } finally {\n if (!options.isCancelled?.()) {\n // A loading-screen callback must not stop a lane and strand jobs.\n try { options.onProgress?.(++completed / jobs.size); } catch { /* Keep building. */ }\n }\n }\n }\n }\n try {\n await Promise.allSettled(Array.from({ length: Math.min(pool?.size ?? 1, jobs.size) }, runLane));\n } finally {\n if (!options.workerPool) pool?.dispose();\n }\n return result;\n}\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Logical image region of a reusable, larger physical scratch texture. */
|
|
2
|
+
const regions = new WeakMap();
|
|
3
|
+
export function setTextureRegion(texture, width, height) {
|
|
4
|
+
regions.set(texture, { width, height });
|
|
5
|
+
}
|
|
6
|
+
export function textureRegion(texture) {
|
|
7
|
+
return regions.get(texture) ?? { width: texture.width, height: texture.height };
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=textureRegion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textureRegion.js","sourceRoot":"","sources":["../../src/renderer/textureRegion.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,MAAM,OAAO,GAAG,IAAI,OAAO,EAA2C,CAAC;AACvE,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,KAAa,EAAE,MAAc;IAC7E,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,EAAC,KAAK,EAAE,MAAM,EAAC,CAAC,CAAC;AACxC,CAAC;AACD,MAAM,UAAU,aAAa,CAAC,OAAwC;IACpE,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAC,CAAC;AAChF,CAAC","sourcesContent":["/** Logical image region of a reusable, larger physical scratch texture. */\nconst regions = new WeakMap<object, {width: number; height: number}>();\nexport function setTextureRegion(texture: object, width: number, height: number) {\n regions.set(texture, {width, height});\n}\nexport function textureRegion(texture: {width: number; height: number}) {\n return regions.get(texture) ?? {width: texture.width, height: texture.height};\n}\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import OpenPBRMaterial, { MaterialTextureName } from '../scene/OpenPBRMaterial.js';
|
|
2
|
+
import Texture from '../scene/Texture.js';
|
|
3
|
+
export declare function mergeTexturesFromMaterials<T extends MaterialTextureName>(materials: OpenPBRMaterial[], textureNames: readonly T[]): {
|
|
4
|
+
textures: Texture[];
|
|
5
|
+
indices: Record<T, number[]>;
|
|
6
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// Portions adapted from ray-tracing-renderer@0.10.15
|
|
2
|
+
// (https://github.com/hoverinc/ray-tracing-renderer).
|
|
3
|
+
// Copyright (c) 2019 HOVER, MIT license; see LICENSES/RayTracingRenderer-MIT.txt.
|
|
4
|
+
// retrieve textures used by meshes, grouping textures from meshes shared *across all* mesh properties
|
|
5
|
+
export function mergeTexturesFromMaterials(materials, textureNames) {
|
|
6
|
+
const textureMap = {
|
|
7
|
+
textures: [],
|
|
8
|
+
indices: {}
|
|
9
|
+
};
|
|
10
|
+
for (const name of textureNames) {
|
|
11
|
+
textureMap.indices[name] = texturesFromMaterials(materials, name, textureMap.textures);
|
|
12
|
+
}
|
|
13
|
+
return textureMap;
|
|
14
|
+
}
|
|
15
|
+
function texturesFromMaterials(materials, textureName, textures) {
|
|
16
|
+
const indices = [];
|
|
17
|
+
for (const material of materials) {
|
|
18
|
+
const isTextureLoaded = material[textureName] &&
|
|
19
|
+
material[textureName].image;
|
|
20
|
+
if (!isTextureLoaded) {
|
|
21
|
+
indices.push(-1);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
let existsIndex = textures.indexOf(material[textureName]);
|
|
25
|
+
if (existsIndex >= 0) {
|
|
26
|
+
// Reuse existing duplicate texture.
|
|
27
|
+
indices.push(existsIndex);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
indices.push(textures.length);
|
|
31
|
+
textures.push(material[textureName]);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return indices;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=texturesFromMaterials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texturesFromMaterials.js","sourceRoot":"","sources":["../../src/renderer/texturesFromMaterials.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,sDAAsD;AACtD,kFAAkF;AAOlF,sGAAsG;AACtG,MAAM,UAAU,0BAA0B,CACxC,SAA4B,EAC5B,YAA0B;IAE1B,MAAM,UAAU,GAGZ;QACF,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,EAAyB;KACnC,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAC9C,SAAS,EACT,IAAI,EACJ,UAAU,CAAC,QAAQ,CACpB,CAAC;IACJ,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,qBAAqB,CAC5B,SAA4B,EAC5B,WAAgC,EAChC,QAAmB;IAEnB,MAAM,OAAO,GAAG,EAAE,CAAC;IAEnB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,eAAe,GACnB,QAAQ,CAAC,WAAW,CAAC;YACrB,QAAQ,CAAC,WAAW,CAAE,CAAC,KAAK,CAAC;QAE/B,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,IAAI,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAE,CAAC,CAAC;YAC3D,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;gBACrB,oCAAoC;gBACpC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC9B,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAE,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC","sourcesContent":["// Portions adapted from ray-tracing-renderer@0.10.15\n// (https://github.com/hoverinc/ray-tracing-renderer).\n// Copyright (c) 2019 HOVER, MIT license; see LICENSES/RayTracingRenderer-MIT.txt.\n\nimport OpenPBRMaterial, {\n MaterialTextureName\n} from '../scene/OpenPBRMaterial.js';\nimport Texture from '../scene/Texture.js';\n\n// retrieve textures used by meshes, grouping textures from meshes shared *across all* mesh properties\nexport function mergeTexturesFromMaterials<T extends MaterialTextureName>(\n materials: OpenPBRMaterial[],\n textureNames: readonly T[]\n) {\n const textureMap: {\n textures: Texture[];\n indices: Record<T, number[]>;\n } = {\n textures: [],\n indices: {} as Record<T, number[]>\n };\n\n for (const name of textureNames) {\n textureMap.indices[name] = texturesFromMaterials(\n materials,\n name,\n textureMap.textures\n );\n }\n\n return textureMap;\n}\n\nfunction texturesFromMaterials(\n materials: OpenPBRMaterial[],\n textureName: MaterialTextureName,\n textures: Texture[]\n) {\n const indices = [];\n\n for (const material of materials) {\n const isTextureLoaded =\n material[textureName] &&\n material[textureName]!.image;\n\n if (!isTextureLoaded) {\n indices.push(-1);\n } else {\n let existsIndex = textures.indexOf(material[textureName]!);\n if (existsIndex >= 0) {\n // Reuse existing duplicate texture.\n indices.push(existsIndex);\n } else {\n indices.push(textures.length);\n textures.push(material[textureName]!);\n }\n }\n }\n\n return indices;\n}\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { WritableArrayLike } from '../types.js';
|
|
2
|
+
export declare function clamp(x: number, min: number, max: number): number;
|
|
3
|
+
export declare function shuffle(arr: WritableArrayLike<number>, rand: () => number): WritableArrayLike<number>;
|
|
4
|
+
export declare function numberArraysEqual(a: ArrayLike<number>, b: ArrayLike<number>, eps?: number): boolean;
|
|
5
|
+
export declare const isMac: false | RegExpMatchArray | null;
|
|
6
|
+
/** Detect the WebGL workaround platform only when the WebGL backend needs it. */
|
|
7
|
+
export declare function isIntelMac(): boolean;
|
|
8
|
+
/** Lowest resolution scale interactive preview adapts down to. */
|
|
9
|
+
export declare const MIN_PREVIEW_SCALE = 0.25;
|
|
10
|
+
/**
|
|
11
|
+
* Next interactive-preview resolution scale from a preview frame time measured
|
|
12
|
+
* at `measuredScale`. Tracing and denoising cost grow with the pixel count
|
|
13
|
+
* (scale²), so the scale follows the square root of the time ratio. Steps are
|
|
14
|
+
* 1/16 (1/32 below 0.25); a change of less than 15% from `currentScale` keeps
|
|
15
|
+
* it, because every resolution change restarts sampling.
|
|
16
|
+
*/
|
|
17
|
+
export declare function nextPreviewScale(measuredScale: number, frameTimeMs: number, targetTimeMs: number, maxScale: number, currentScale?: number, minScale?: number): number;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { createCanvas } from '../util/canvas.js';
|
|
2
|
+
export function clamp(x, min, max) {
|
|
3
|
+
return Math.min(Math.max(x, min), max);
|
|
4
|
+
}
|
|
5
|
+
export function shuffle(arr, rand) {
|
|
6
|
+
for (let i = arr.length - 1; i > 0; i--) {
|
|
7
|
+
const j = Math.floor(rand() * (i + 1));
|
|
8
|
+
const x = arr[i];
|
|
9
|
+
arr[i] = arr[j];
|
|
10
|
+
arr[j] = x;
|
|
11
|
+
}
|
|
12
|
+
return arr;
|
|
13
|
+
}
|
|
14
|
+
export function numberArraysEqual(a, b, eps = 1e-4) {
|
|
15
|
+
for (let i = 0; i < a.length; i++) {
|
|
16
|
+
if (Math.abs(a[i] - b[i]) > eps) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
export const isMac = typeof navigator !== 'undefined' && navigator.userAgent.match('Macintosh');
|
|
23
|
+
let cachedIntelMac;
|
|
24
|
+
/** Detect the WebGL workaround platform only when the WebGL backend needs it. */
|
|
25
|
+
export function isIntelMac() {
|
|
26
|
+
if (cachedIntelMac !== undefined)
|
|
27
|
+
return cachedIntelMac;
|
|
28
|
+
cachedIntelMac = false;
|
|
29
|
+
if (isMac) {
|
|
30
|
+
try {
|
|
31
|
+
const ctx = createCanvas().getContext('webgl');
|
|
32
|
+
const d = ctx && ctx.getExtension('WEBGL_debug_renderer_info');
|
|
33
|
+
const g = (d && ctx.getParameter(d.UNMASKED_RENDERER_WEBGL)) || '';
|
|
34
|
+
if (!(g.match(/Apple M/) || g.match(/Apple GPU/)))
|
|
35
|
+
cachedIntelMac = true;
|
|
36
|
+
}
|
|
37
|
+
catch (e) { }
|
|
38
|
+
}
|
|
39
|
+
return cachedIntelMac;
|
|
40
|
+
}
|
|
41
|
+
/** Lowest resolution scale interactive preview adapts down to. */
|
|
42
|
+
export const MIN_PREVIEW_SCALE = 0.25;
|
|
43
|
+
/**
|
|
44
|
+
* Next interactive-preview resolution scale from a preview frame time measured
|
|
45
|
+
* at `measuredScale`. Tracing and denoising cost grow with the pixel count
|
|
46
|
+
* (scale²), so the scale follows the square root of the time ratio. Steps are
|
|
47
|
+
* 1/16 (1/32 below 0.25); a change of less than 15% from `currentScale` keeps
|
|
48
|
+
* it, because every resolution change restarts sampling.
|
|
49
|
+
*/
|
|
50
|
+
export function nextPreviewScale(measuredScale, frameTimeMs, targetTimeMs, maxScale, currentScale = measuredScale, minScale = MIN_PREVIEW_SCALE) {
|
|
51
|
+
const raw = measuredScale * Math.sqrt(targetTimeMs / Math.max(frameTimeMs, 0.1));
|
|
52
|
+
const steps = raw < 0.25 ? 32 : 16;
|
|
53
|
+
const next = clamp(Math.round(raw * steps) / steps, minScale, Math.max(minScale, maxScale));
|
|
54
|
+
return Math.abs(Math.log(next / currentScale)) >= Math.log(1.15) ? next : currentScale;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/renderer/util.ts"],"names":[],"mappings":"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","sourcesContent":["import {createCanvas} from '../util/canvas.js';\n// Portions adapted from ray-tracing-renderer@0.10.15\n// (https://github.com/hoverinc/ray-tracing-renderer).\n// Copyright (c) 2019 HOVER, MIT license; see LICENSES/RayTracingRenderer-MIT.txt.\n\nimport { WritableArrayLike } from '../types.js';\n\nexport function clamp(x: number, min: number, max: number) {\n return Math.min(Math.max(x, min), max);\n}\n\nexport function shuffle(arr: WritableArrayLike<number>, rand: () => number) {\n for (let i = arr.length - 1; i > 0; i--) {\n const j = Math.floor(rand() * (i + 1));\n const x = arr[i];\n arr[i] = arr[j];\n arr[j] = x;\n }\n return arr;\n}\n\nexport function numberArraysEqual(\n a: ArrayLike<number>,\n b: ArrayLike<number>,\n eps = 1e-4\n) {\n for (let i = 0; i < a.length; i++) {\n if (Math.abs(a[i] - b[i]) > eps) {\n return false;\n }\n }\n\n return true;\n}\nexport const isMac =\n typeof navigator !== 'undefined' && navigator.userAgent.match('Macintosh');\n\nlet cachedIntelMac: boolean | undefined;\n\n/** Detect the WebGL workaround platform only when the WebGL backend needs it. */\nexport function isIntelMac() {\n if (cachedIntelMac !== undefined) return cachedIntelMac;\n cachedIntelMac = false;\n if (isMac) {\n try {\n const ctx = createCanvas().getContext('webgl') as WebGLRenderingContext | null;\n const d = ctx && ctx.getExtension('WEBGL_debug_renderer_info');\n const g = (d && ctx.getParameter(d.UNMASKED_RENDERER_WEBGL)) || '';\n if (!(g.match(/Apple M/) || g.match(/Apple GPU/))) cachedIntelMac = true;\n } catch (e) {}\n }\n return cachedIntelMac;\n}\n\n/** Lowest resolution scale interactive preview adapts down to. */\nexport const MIN_PREVIEW_SCALE = 0.25;\n\n/**\n * Next interactive-preview resolution scale from a preview frame time measured\n * at `measuredScale`. Tracing and denoising cost grow with the pixel count\n * (scale²), so the scale follows the square root of the time ratio. Steps are\n * 1/16 (1/32 below 0.25); a change of less than 15% from `currentScale` keeps\n * it, because every resolution change restarts sampling.\n */\nexport function nextPreviewScale(\n measuredScale: number,\n frameTimeMs: number,\n targetTimeMs: number,\n maxScale: number,\n currentScale = measuredScale,\n minScale = MIN_PREVIEW_SCALE\n) {\n const raw = measuredScale * Math.sqrt(targetTimeMs / Math.max(frameTimeMs, 0.1));\n const steps = raw < 0.25 ? 32 : 16;\n const next = clamp(Math.round(raw * steps) / steps, minScale, Math.max(minScale, maxScale));\n return Math.abs(Math.log(next / currentScale)) >= Math.log(1.15) ? next : currentScale;\n}\n"]}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import type { ShaderCompilationDiagnostics } from './RenderingPipeline.js';
|
|
2
|
+
import { FragmentShader, ShaderDefineValue, ShaderUniform } from './shader.js';
|
|
3
|
+
export { FragmentShader, Shader, createShaderMixin, glsl } from './shader.js';
|
|
4
|
+
export declare const constants: {
|
|
5
|
+
readonly FLOAT: 5126;
|
|
6
|
+
readonly HALF_FLOAT: 5131;
|
|
7
|
+
readonly UNSIGNED_BYTE: 5121;
|
|
8
|
+
readonly RGBA: 6408;
|
|
9
|
+
readonly LINEAR: 9729;
|
|
10
|
+
readonly NEAREST: 9728;
|
|
11
|
+
readonly REPEAT: 10497;
|
|
12
|
+
readonly CLAMP_TO_EDGE: 33071;
|
|
13
|
+
readonly SCISSOR_TEST: 3089;
|
|
14
|
+
readonly COLOR_BUFFER_BIT: 16384;
|
|
15
|
+
readonly DEPTH_BUFFER_BIT: 256;
|
|
16
|
+
readonly LINES: 1;
|
|
17
|
+
readonly TEXTURE_2D: 3553;
|
|
18
|
+
readonly TEXTURE_2D_ARRAY: 35866;
|
|
19
|
+
};
|
|
20
|
+
export type TextureImageSource = any;
|
|
21
|
+
export interface TexturePixelSource {
|
|
22
|
+
data: Float32Array | Int32Array | Uint8Array | Uint8ClampedArray | Uint16Array;
|
|
23
|
+
width: number;
|
|
24
|
+
height: number;
|
|
25
|
+
}
|
|
26
|
+
type TextureSource = TextureImageSource | TexturePixelSource;
|
|
27
|
+
export interface TextureOptions {
|
|
28
|
+
source?: TextureSource | TextureImageSource[];
|
|
29
|
+
width?: number;
|
|
30
|
+
height?: number;
|
|
31
|
+
type?: number;
|
|
32
|
+
minFilter?: number;
|
|
33
|
+
magFilter?: number;
|
|
34
|
+
wrapS?: number;
|
|
35
|
+
wrapT?: number;
|
|
36
|
+
flipY?: boolean;
|
|
37
|
+
flipYArray?: boolean[];
|
|
38
|
+
useMipmap?: boolean;
|
|
39
|
+
premultiplyAlpha?: boolean;
|
|
40
|
+
sRGB?: boolean;
|
|
41
|
+
}
|
|
42
|
+
export declare class Texture2D {
|
|
43
|
+
private _source?;
|
|
44
|
+
width: number;
|
|
45
|
+
height: number;
|
|
46
|
+
target: number;
|
|
47
|
+
protected _options: TextureOptions;
|
|
48
|
+
protected _texture?: WebGLTexture;
|
|
49
|
+
protected _dirty: boolean;
|
|
50
|
+
protected _allocated: boolean;
|
|
51
|
+
constructor(options?: TextureOptions);
|
|
52
|
+
get storageType(): number;
|
|
53
|
+
get isByteEncoded(): boolean;
|
|
54
|
+
/** Allocated 2D render-target payload, excluding driver/FBO overhead. */
|
|
55
|
+
getMemoryBytes(): number;
|
|
56
|
+
get source(): any;
|
|
57
|
+
set source(value: any);
|
|
58
|
+
dirty(): void;
|
|
59
|
+
resize(width: number, height: number): void;
|
|
60
|
+
ensureStorage(gl: WebGL2RenderingContext, width: number, height: number, options?: TextureOptions): this;
|
|
61
|
+
bind(gl: WebGL2RenderingContext, unit: number): void;
|
|
62
|
+
/** Copies a byte range into a data texture's CPU image and uploads its covering rows. */
|
|
63
|
+
updateDataRange(gl: WebGL2RenderingContext, data: Float32Array | Int32Array | Uint8Array, offset: number, size: number): void;
|
|
64
|
+
getWebGLTexture(gl: WebGL2RenderingContext): WebGLTexture;
|
|
65
|
+
dispose(gl: WebGL2RenderingContext): void;
|
|
66
|
+
protected _ensureTexture(gl: WebGL2RenderingContext): void;
|
|
67
|
+
protected _bindAndConfigure(gl: WebGL2RenderingContext): void;
|
|
68
|
+
protected _format(gl: WebGL2RenderingContext, channels?: number): {
|
|
69
|
+
type: number;
|
|
70
|
+
format: 6408 | 6403 | 33319 | 6407;
|
|
71
|
+
internalFormat: 33326 | 33328 | 34837 | 34836 | 33325 | 33327 | 34843 | 34842 | 35907 | 32856;
|
|
72
|
+
};
|
|
73
|
+
protected _upload(gl: WebGL2RenderingContext): void;
|
|
74
|
+
}
|
|
75
|
+
export declare class Texture2DArray extends Texture2D {
|
|
76
|
+
target: number;
|
|
77
|
+
get flipYArray(): boolean[];
|
|
78
|
+
protected _bindAndConfigure(gl: WebGL2RenderingContext): void;
|
|
79
|
+
protected _upload(gl: WebGL2RenderingContext): void;
|
|
80
|
+
bind(gl: WebGL2RenderingContext, unit: number): void;
|
|
81
|
+
}
|
|
82
|
+
/** Compiled GLSL program plus its current bind-group-like values. */
|
|
83
|
+
export declare class WebGLProgramBindings {
|
|
84
|
+
readonly shader: FragmentShader;
|
|
85
|
+
readonly uniforms: Record<string, ShaderUniform>;
|
|
86
|
+
readonly defines: Record<string, ShaderDefineValue>;
|
|
87
|
+
private _programs;
|
|
88
|
+
constructor(shader: FragmentShader);
|
|
89
|
+
set(name: string, value: unknown): boolean;
|
|
90
|
+
setUniforms(values: Record<string, unknown>): void;
|
|
91
|
+
get(name: string): any;
|
|
92
|
+
setDefine(name: string, value: ShaderDefineValue): void;
|
|
93
|
+
deleteDefine(name: string): void;
|
|
94
|
+
getProgram(renderer: WebGLDevice): WebGLProgram;
|
|
95
|
+
bind(renderer: WebGLDevice): void;
|
|
96
|
+
}
|
|
97
|
+
export interface RendererOptions extends WebGLContextAttributes {
|
|
98
|
+
canvas: HTMLCanvasElement | OffscreenCanvas;
|
|
99
|
+
pixelRatio?: number;
|
|
100
|
+
parallelShaderCompile?: boolean;
|
|
101
|
+
}
|
|
102
|
+
export declare class WebGLDevice {
|
|
103
|
+
readonly canvas: HTMLCanvasElement | OffscreenCanvas;
|
|
104
|
+
readonly gl: WebGL2RenderingContext;
|
|
105
|
+
readonly emptyTexture: Texture2D;
|
|
106
|
+
private _viewport;
|
|
107
|
+
private _viewportStack;
|
|
108
|
+
private _programs;
|
|
109
|
+
private _parallel?;
|
|
110
|
+
private _compilationStart;
|
|
111
|
+
private _compilationRecords;
|
|
112
|
+
constructor(options: RendererOptions);
|
|
113
|
+
createProgram(shader: FragmentShader, defines: Record<string, ShaderDefineValue>): WebGLProgram;
|
|
114
|
+
/** Cumulative program compilation measurements used by preparation progress. */
|
|
115
|
+
getShaderCompilationDiagnostics(): ShaderCompilationDiagnostics;
|
|
116
|
+
isAllProgramCompiled(): boolean;
|
|
117
|
+
resize(width: number, height: number): void;
|
|
118
|
+
getWidth(): number;
|
|
119
|
+
getHeight(): number;
|
|
120
|
+
saveViewport(): void;
|
|
121
|
+
restoreViewport(): void;
|
|
122
|
+
setViewport(x: number, y: number, width: number, height: number): void;
|
|
123
|
+
dispose(): void;
|
|
124
|
+
}
|
|
125
|
+
export declare class FrameBuffer {
|
|
126
|
+
private _frameBuffer?;
|
|
127
|
+
private _attachments;
|
|
128
|
+
attach(texture: Texture2D): void;
|
|
129
|
+
bind(renderer: WebGLDevice, textures?: Texture2D[], target?: number): void;
|
|
130
|
+
dispose(renderer: WebGLDevice): void;
|
|
131
|
+
}
|