@meimu/mutracer 0.1.5 → 0.3.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/LICENSES/Classroom-CC0.txt +121 -0
- package/README.md +10 -7
- package/THIRD_PARTY_NOTICES.md +13 -8
- package/dist/assets/bvh.worker.js +1 -1
- package/dist/mutracer.umd.js +12316 -9228
- package/docs/api.md +232 -21
- package/docs/caustics.md +80 -0
- package/docs/denoising.md +30 -15
- package/docs/materials.md +6 -5
- package/docs/performance.md +5 -2
- package/docs/progressive-rendering.md +73 -1
- package/docs/technical/continuous-spectrum.md +93 -0
- package/docs/threejs.md +14 -5
- package/docs/updates.md +46 -2
- package/docs/viewer-checklist.md +65 -0
- package/docs/viewer.md +15 -8
- package/lib/Display.d.ts +13 -2
- package/lib/Display.js +28 -7
- package/lib/Display.js.map +1 -1
- package/lib/Engine.d.ts +4 -0
- package/lib/Engine.js +99 -37
- package/lib/Engine.js.map +1 -1
- package/lib/Render.d.ts +98 -15
- package/lib/Render.js +275 -27
- package/lib/Render.js.map +1 -1
- package/lib/RenderLoop.d.ts +11 -1
- package/lib/RenderLoop.js +120 -15
- package/lib/RenderLoop.js.map +1 -1
- package/lib/main.d.ts +6 -3
- package/lib/main.js +1 -0
- package/lib/main.js.map +1 -1
- package/lib/math/access.d.ts +4 -0
- package/lib/math/access.js +10 -0
- package/lib/math/access.js.map +1 -0
- package/lib/math/mat3.d.ts +4 -0
- package/lib/math/mat3.js +54 -0
- package/lib/math/mat3.js.map +1 -0
- package/lib/math/mat4.d.ts +19 -0
- package/lib/math/mat4.js +413 -0
- package/lib/math/mat4.js.map +1 -0
- package/lib/math/storage.d.ts +6 -0
- package/lib/math/storage.js +22 -0
- package/lib/math/storage.js.map +1 -0
- package/lib/math/types.d.ts +3 -0
- package/lib/math/types.js +2 -0
- package/lib/math/types.js.map +1 -0
- package/lib/math/vec2.d.ts +13 -0
- package/lib/math/vec2.js +52 -0
- package/lib/math/vec2.js.map +1 -0
- package/lib/math/vec3.d.ts +23 -0
- package/lib/math/vec3.js +139 -0
- package/lib/math/vec3.js.map +1 -0
- package/lib/math.d.ts +5 -17
- package/lib/math.js +5 -55
- package/lib/math.js.map +1 -1
- package/lib/oidn.d.ts +1 -1
- package/lib/oidn.js +4 -2
- package/lib/oidn.js.map +1 -1
- package/lib/oidnBundledWeights.cdn.d.ts +2 -2
- package/lib/renderer/AovPrimitiveCache.d.ts +10 -0
- package/lib/renderer/AovPrimitiveCache.js +48 -0
- package/lib/renderer/AovPrimitiveCache.js.map +1 -0
- package/lib/renderer/Box3.d.ts +5 -0
- package/lib/renderer/Box3.js +9 -0
- package/lib/renderer/Box3.js.map +1 -0
- package/lib/renderer/GPUTraceQueue.d.ts +11 -0
- package/lib/renderer/GPUTraceQueue.js +33 -0
- package/lib/renderer/GPUTraceQueue.js.map +1 -0
- package/lib/renderer/MaterialData.d.ts +15 -0
- package/lib/renderer/MaterialData.js +61 -0
- package/lib/renderer/MaterialData.js.map +1 -0
- package/lib/renderer/MaterialTable.d.ts +11 -98
- package/lib/renderer/MaterialTable.js +34 -412
- package/lib/renderer/MaterialTable.js.map +1 -1
- package/lib/renderer/RenderingPipeline.d.ts +36 -13
- package/lib/renderer/RenderingPipeline.js +1 -17
- package/lib/renderer/RenderingPipeline.js.map +1 -1
- package/lib/renderer/TileRender.d.ts +0 -1
- package/lib/renderer/TileRender.js +14 -1
- package/lib/renderer/TileRender.js.map +1 -1
- package/lib/renderer/WGPUAov.d.ts +39 -0
- package/lib/renderer/WGPUAov.js +239 -0
- package/lib/renderer/WGPUAov.js.map +1 -0
- package/lib/renderer/WGPUBindlessMaterialData.d.ts +17 -0
- package/lib/renderer/WGPUBindlessMaterialData.js +48 -0
- package/lib/renderer/WGPUBindlessMaterialData.js.map +1 -0
- package/lib/renderer/WGPUBindlessTextures.d.ts +47 -0
- package/lib/renderer/WGPUBindlessTextures.js +180 -0
- package/lib/renderer/WGPUBindlessTextures.js.map +1 -0
- package/lib/renderer/WGPUBloomPass.js +17 -97
- package/lib/renderer/WGPUBloomPass.js.map +1 -1
- package/lib/renderer/WGPUCausticLightPass.d.ts +48 -0
- package/lib/renderer/WGPUCausticLightPass.js +217 -0
- package/lib/renderer/WGPUCausticLightPass.js.map +1 -0
- package/lib/renderer/WGPUComputePass.d.ts +1 -1
- package/lib/renderer/WGPUComputePass.js.map +1 -1
- package/lib/renderer/WGPUEnvMapDistribution.d.ts +12 -0
- package/lib/renderer/WGPUEnvMapDistribution.js +150 -0
- package/lib/renderer/WGPUEnvMapDistribution.js.map +1 -0
- package/lib/renderer/WGPUFullQuadPass.js +10 -9
- package/lib/renderer/WGPUFullQuadPass.js.map +1 -1
- package/lib/renderer/WGPUJNLMDenoiser.d.ts +1 -20
- package/lib/renderer/WGPUJNLMDenoiser.js +4 -267
- package/lib/renderer/WGPUJNLMDenoiser.js.map +1 -1
- package/lib/renderer/WGPUPhotonMap.d.ts +37 -0
- package/lib/renderer/WGPUPhotonMap.js +191 -0
- package/lib/renderer/WGPUPhotonMap.js.map +1 -0
- package/lib/renderer/WGPURayTraceOutput.d.ts +13 -1
- package/lib/renderer/WGPURayTraceOutput.js +132 -29
- package/lib/renderer/WGPURayTraceOutput.js.map +1 -1
- package/lib/renderer/WGPURayTracePass.d.ts +83 -56
- package/lib/renderer/WGPURayTracePass.js +884 -837
- package/lib/renderer/WGPURayTracePass.js.map +1 -1
- package/lib/renderer/WGPURenderingPipeline.d.ts +5 -3
- package/lib/renderer/WGPURenderingPipeline.js +297 -82
- package/lib/renderer/WGPURenderingPipeline.js.map +1 -1
- package/lib/renderer/WGPUShaderCache.d.ts +2 -2
- package/lib/renderer/WGPUShaderCache.js +10 -5
- package/lib/renderer/WGPUShaderCache.js.map +1 -1
- package/lib/renderer/WGPUShaderCapabilities.d.ts +10 -0
- package/lib/renderer/WGPUShaderCapabilities.js +54 -0
- package/lib/renderer/WGPUShaderCapabilities.js.map +1 -0
- package/lib/renderer/WGPUSkyBaker.d.ts +13 -0
- package/lib/renderer/WGPUSkyBaker.js +85 -0
- package/lib/renderer/WGPUSkyBaker.js.map +1 -0
- package/lib/renderer/WebGLAov.d.ts +41 -0
- package/lib/renderer/WebGLAov.js +106 -0
- package/lib/renderer/WebGLAov.js.map +1 -0
- package/lib/renderer/WebGLFullQuadPass.d.ts +7 -4
- package/lib/renderer/WebGLFullQuadPass.js +22 -2
- package/lib/renderer/WebGLFullQuadPass.js.map +1 -1
- package/lib/renderer/WebGLJNLMDenoiser.d.ts +1 -1
- package/lib/renderer/WebGLJNLMDenoiser.js +83 -74
- package/lib/renderer/WebGLJNLMDenoiser.js.map +1 -1
- package/lib/renderer/WebGLRayTraceOutputPass.js +7 -4
- package/lib/renderer/WebGLRayTraceOutputPass.js.map +1 -1
- package/lib/renderer/WebGLRayTracePass.d.ts +18 -3
- package/lib/renderer/WebGLRayTracePass.js +121 -9
- package/lib/renderer/WebGLRayTracePass.js.map +1 -1
- package/lib/renderer/WebGLRenderingPipeline.js +126 -22
- package/lib/renderer/WebGLRenderingPipeline.js.map +1 -1
- package/lib/renderer/WebGLSkyBaker.d.ts +39 -0
- package/lib/renderer/WebGLSkyBaker.js +422 -0
- package/lib/renderer/WebGLSkyBaker.js.map +1 -0
- package/lib/renderer/WebGLSkySource.d.ts +9 -0
- package/lib/renderer/WebGLSkySource.js +28 -0
- package/lib/renderer/WebGLSkySource.js.map +1 -0
- package/lib/renderer/accumulationTarget.d.ts +6 -0
- package/lib/renderer/accumulationTarget.js.map +1 -1
- package/lib/renderer/aov.d.ts +42 -0
- package/lib/renderer/aov.js +50 -0
- package/lib/renderer/aov.js.map +1 -0
- package/lib/renderer/aovDisplay.d.ts +14 -0
- package/lib/renderer/aovDisplay.js +32 -0
- package/lib/renderer/aovDisplay.js.map +1 -0
- package/lib/renderer/aovScene.d.ts +21 -0
- package/lib/renderer/aovScene.js +139 -0
- package/lib/renderer/aovScene.js.map +1 -0
- package/lib/renderer/binnedSahBvh.js +2 -1
- package/lib/renderer/binnedSahBvh.js.map +1 -1
- package/lib/renderer/bvhAccel.d.ts +20 -10
- package/lib/renderer/bvhAccel.js +168 -58
- package/lib/renderer/bvhAccel.js.map +1 -1
- package/lib/renderer/bvhWorkerBuild.d.ts +1 -0
- package/lib/renderer/cameraSnapshot.js +2 -1
- package/lib/renderer/cameraSnapshot.js.map +1 -1
- package/lib/renderer/cameraUniform.d.ts +2 -0
- package/lib/renderer/cameraUniform.js +12 -0
- package/lib/renderer/cameraUniform.js.map +1 -0
- package/lib/renderer/causticDiagnostics.d.ts +31 -0
- package/lib/renderer/causticDiagnostics.js +5 -0
- package/lib/renderer/causticDiagnostics.js.map +1 -0
- package/lib/renderer/causticEmission.d.ts +10 -0
- package/lib/renderer/causticEmission.js +40 -0
- package/lib/renderer/causticEmission.js.map +1 -0
- package/lib/renderer/causticUniform.d.ts +12 -0
- package/lib/renderer/causticUniform.js +22 -0
- package/lib/renderer/causticUniform.js.map +1 -0
- package/lib/renderer/caustics.d.ts +16 -0
- package/lib/renderer/caustics.js +93 -0
- package/lib/renderer/caustics.js.map +1 -0
- package/lib/renderer/committedScene.js +4 -0
- package/lib/renderer/committedScene.js.map +1 -1
- package/lib/renderer/denoiser.d.ts +3 -11
- package/lib/renderer/denoiser.js.map +1 -1
- package/lib/renderer/depthQuery.js +4 -1
- package/lib/renderer/depthQuery.js.map +1 -1
- package/lib/renderer/displacementPreparation.d.ts +11 -0
- package/lib/renderer/displacementPreparation.js +351 -0
- package/lib/renderer/displacementPreparation.js.map +1 -0
- package/lib/renderer/displacementRange.d.ts +1 -0
- package/lib/renderer/displacementRange.js +9 -0
- package/lib/renderer/displacementRange.js.map +1 -0
- package/lib/renderer/displayParityDiagnostics.d.ts +11 -0
- package/lib/renderer/displayParityDiagnostics.js +2 -0
- package/lib/renderer/displayParityDiagnostics.js.map +1 -0
- package/lib/renderer/envMapCreation.d.ts +9 -8
- package/lib/renderer/envMapCreation.js +36 -12
- package/lib/renderer/envMapCreation.js.map +1 -1
- package/lib/renderer/envMapDistribution.d.ts +12 -2
- package/lib/renderer/envMapDistribution.js +43 -34
- package/lib/renderer/envMapDistribution.js.map +1 -1
- package/lib/renderer/geometryBvhBounds.d.ts +4 -0
- package/lib/renderer/geometryBvhBounds.js +82 -0
- package/lib/renderer/geometryBvhBounds.js.map +1 -0
- package/lib/renderer/geometryUpdateState.d.ts +32 -0
- package/lib/renderer/geometryUpdateState.js +2 -0
- package/lib/renderer/geometryUpdateState.js.map +1 -0
- package/lib/renderer/geometryUpdates.d.ts +17 -9
- package/lib/renderer/geometryUpdates.js +92 -33
- package/lib/renderer/geometryUpdates.js.map +1 -1
- package/lib/renderer/glsl/aovDisplay.frag.d.ts +3 -0
- package/lib/renderer/glsl/aovDisplay.frag.js +54 -0
- package/lib/renderer/glsl/aovDisplay.frag.js.map +1 -0
- package/lib/renderer/glsl/aovReflectance.glsl.d.ts +2 -0
- package/lib/renderer/glsl/aovReflectance.glsl.js +87 -0
- package/lib/renderer/glsl/aovReflectance.glsl.js.map +1 -0
- package/lib/renderer/glsl/aovReflectanceSamples.glsl.d.ts +2 -0
- package/lib/renderer/glsl/aovReflectanceSamples.glsl.js +135 -0
- package/lib/renderer/glsl/aovReflectanceSamples.glsl.js.map +1 -0
- package/lib/renderer/glsl/aovTrace.frag.d.ts +2 -0
- package/lib/renderer/glsl/aovTrace.frag.js +121 -0
- package/lib/renderer/glsl/aovTrace.frag.js.map +1 -0
- package/lib/renderer/glsl/chunks/cameraRay.glsl.js +12 -12
- package/lib/renderer/glsl/chunks/emissiveLight.glsl.d.ts +2 -0
- package/lib/renderer/glsl/chunks/emissiveLight.glsl.js +35 -0
- package/lib/renderer/glsl/chunks/emissiveLight.glsl.js.map +1 -0
- package/lib/renderer/glsl/chunks/envMap.glsl.js +73 -67
- package/lib/renderer/glsl/chunks/envMap.glsl.js.map +1 -1
- package/lib/renderer/glsl/chunks/intersect.glsl.js +432 -434
- package/lib/renderer/glsl/chunks/intersect.glsl.js.map +1 -1
- package/lib/renderer/glsl/chunks/materialBuffer.glsl.d.ts +1 -0
- package/lib/renderer/glsl/chunks/materialBuffer.glsl.js +160 -157
- package/lib/renderer/glsl/chunks/materialBuffer.glsl.js.map +1 -1
- package/lib/renderer/glsl/chunks/openPbrBsdf.glsl.js +802 -802
- package/lib/renderer/glsl/chunks/rand.glsl.js +3 -3
- package/lib/renderer/glsl/chunks/random.glsl.js +6 -6
- package/lib/renderer/glsl/chunks/rayTraceCore.glsl.d.ts +1 -0
- package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js +72 -67
- package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js.map +1 -1
- package/lib/renderer/glsl/chunks/sampleLight.glsl.js +94 -76
- package/lib/renderer/glsl/chunks/sampleLight.glsl.js.map +1 -1
- package/lib/renderer/glsl/chunks/sampleMaterial.glsl.d.ts +1 -0
- package/lib/renderer/glsl/chunks/sampleMaterial.glsl.js +143 -120
- package/lib/renderer/glsl/chunks/sampleMaterial.glsl.js.map +1 -1
- package/lib/renderer/glsl/chunks/sampleShadowCatcher.glsl.js +21 -18
- package/lib/renderer/glsl/chunks/sampleShadowCatcher.glsl.js.map +1 -1
- package/lib/renderer/glsl/chunks/sampling.glsl.js +91 -94
- package/lib/renderer/glsl/chunks/sampling.glsl.js.map +1 -1
- package/lib/renderer/glsl/chunks/sobol.glsl.js +79 -79
- package/lib/renderer/glsl/chunks/textureLinear.glsl.js +5 -5
- package/lib/renderer/glsl/chunks/uvProjection.glsl.js +12 -12
- package/lib/renderer/glsl/chunks/uvProjection.glsl.js.map +1 -1
- package/lib/renderer/glsl/depthQuery.frag.js +7 -7
- package/lib/renderer/glsl/normalizeRayTraceOutput.frag.js +17 -9
- package/lib/renderer/glsl/normalizeRayTraceOutput.frag.js.map +1 -1
- package/lib/renderer/glsl/rayTrace.frag.d.ts +1 -1
- package/lib/renderer/glsl/rayTrace.frag.js +271 -248
- package/lib/renderer/glsl/rayTrace.frag.js.map +1 -1
- package/lib/renderer/glsl/shadowCatcher.frag.js +37 -32
- package/lib/renderer/glsl/shadowCatcher.frag.js.map +1 -1
- package/lib/renderer/glsl/webglPipeline.frag.js +65 -60
- package/lib/renderer/glsl/webglPipeline.frag.js.map +1 -1
- package/lib/renderer/lightConstants.d.ts +10 -0
- package/lib/renderer/lightConstants.js +11 -0
- package/lib/renderer/lightConstants.js.map +1 -0
- package/lib/renderer/lightCore.d.ts +12 -0
- package/lib/renderer/lightCore.js +13 -0
- package/lib/renderer/lightCore.js.map +1 -0
- package/lib/renderer/lightSampling.d.ts +22 -18
- package/lib/renderer/lightSampling.js +135 -62
- package/lib/renderer/lightSampling.js.map +1 -1
- package/lib/renderer/lightsData.d.ts +21 -0
- package/lib/renderer/lightsData.js +192 -0
- package/lib/renderer/lightsData.js.map +1 -0
- package/lib/renderer/lightsUtil.d.ts +3 -26
- package/lib/renderer/lightsUtil.js +3 -153
- package/lib/renderer/lightsUtil.js.map +1 -1
- package/lib/renderer/materialBufferData.d.ts +70 -0
- package/lib/renderer/materialBufferData.js +2 -0
- package/lib/renderer/materialBufferData.js.map +1 -0
- package/lib/renderer/materialConstants.d.ts +11 -0
- package/lib/renderer/materialConstants.js +11 -0
- package/lib/renderer/materialConstants.js.map +1 -1
- package/lib/renderer/materialCore.d.ts +8 -0
- package/lib/renderer/materialCore.js +9 -0
- package/lib/renderer/materialCore.js.map +1 -0
- package/lib/renderer/materialEmission.d.ts +2 -2
- package/lib/renderer/materialEmission.js +3 -3
- package/lib/renderer/materialEmission.js.map +1 -1
- package/lib/renderer/materialLayout.d.ts +2 -101
- package/lib/renderer/materialLayout.js +110 -172
- package/lib/renderer/materialLayout.js.map +1 -1
- package/lib/renderer/materialLayoutSchema.d.ts +26 -0
- package/lib/renderer/materialLayoutSchema.js +172 -0
- package/lib/renderer/materialLayoutSchema.js.map +1 -0
- package/lib/renderer/materialParams.d.ts +69 -0
- package/lib/renderer/materialParams.js +272 -0
- package/lib/renderer/materialParams.js.map +1 -0
- package/lib/renderer/materialTextureSlots.d.ts +14 -324
- package/lib/renderer/materialTextureSlots.js +21 -8
- package/lib/renderer/materialTextureSlots.js.map +1 -1
- package/lib/renderer/materialTextures.d.ts +6 -0
- package/lib/renderer/{texturesFromMaterials.js → materialTextures.js} +1 -2
- package/lib/renderer/materialTextures.js.map +1 -0
- package/lib/renderer/mergeMeshesToGeometry.js +6 -147
- package/lib/renderer/mergeMeshesToGeometry.js.map +1 -1
- package/lib/renderer/meshInstances.d.ts +4 -21
- package/lib/renderer/meshInstances.js +10 -56
- package/lib/renderer/meshInstances.js.map +1 -1
- package/lib/renderer/oidnNetwork.d.ts +2 -2
- package/lib/renderer/oidnNetwork.js +1 -1
- package/lib/renderer/oidnNetwork.js.map +1 -1
- package/lib/renderer/openPbrEnergyLut.js +850 -846
- package/lib/renderer/openPbrEnergyLut.js.map +1 -1
- package/lib/renderer/ownedDenoiser.d.ts +9 -0
- package/lib/renderer/ownedDenoiser.js +2 -0
- package/lib/renderer/ownedDenoiser.js.map +1 -0
- package/lib/renderer/packedMeshInstances.d.ts +23 -0
- package/lib/renderer/packedMeshInstances.js +80 -0
- package/lib/renderer/packedMeshInstances.js.map +1 -0
- package/lib/renderer/prepareMeshBVH.d.ts +12 -47
- package/lib/renderer/prepareMeshBVH.js +21 -642
- package/lib/renderer/prepareMeshBVH.js.map +1 -1
- package/lib/renderer/proceduralEnvironmentPower.d.ts +3 -0
- package/lib/renderer/proceduralEnvironmentPower.js +8 -0
- package/lib/renderer/proceduralEnvironmentPower.js.map +1 -0
- package/lib/renderer/progressiveScheduler.d.ts +1 -0
- package/lib/renderer/progressiveScheduler.js +7 -3
- package/lib/renderer/progressiveScheduler.js.map +1 -1
- package/lib/renderer/renderPipeline.d.ts +4 -1
- package/lib/renderer/renderPipeline.js.map +1 -1
- package/lib/renderer/renderingLimits.d.ts +9 -0
- package/lib/renderer/renderingLimits.js +18 -0
- package/lib/renderer/renderingLimits.js.map +1 -0
- package/lib/renderer/researchTransport.d.ts +31 -0
- package/lib/renderer/researchTransport.js +5 -0
- package/lib/renderer/researchTransport.js.map +1 -0
- package/lib/renderer/sceneAssembly.d.ts +73 -0
- package/lib/renderer/sceneAssembly.js +109 -0
- package/lib/renderer/sceneAssembly.js.map +1 -0
- package/lib/renderer/sceneChangeCore.d.ts +39 -0
- package/lib/renderer/sceneChangeCore.js +307 -0
- package/lib/renderer/sceneChangeCore.js.map +1 -0
- package/lib/renderer/sceneChangeDetector.d.ts +3 -6
- package/lib/renderer/sceneChangeDetector.js +24 -150
- package/lib/renderer/sceneChangeDetector.js.map +1 -1
- package/lib/renderer/sceneLayoutSchema.d.ts +119 -0
- package/lib/renderer/sceneLayoutSchema.js +111 -0
- package/lib/renderer/sceneLayoutSchema.js.map +1 -0
- package/lib/renderer/sceneLightChanges.d.ts +3 -3
- package/lib/renderer/sceneLightChanges.js.map +1 -1
- package/lib/renderer/scenePreparation.d.ts +55 -0
- package/lib/renderer/scenePreparation.js +360 -0
- package/lib/renderer/scenePreparation.js.map +1 -0
- package/lib/renderer/scratchSampling.js +18 -18
- package/lib/renderer/scratchSampling.js.map +1 -1
- package/lib/renderer/shader.d.ts +2 -0
- package/lib/renderer/shader.js +2 -0
- package/lib/renderer/shader.js.map +1 -1
- package/lib/renderer/shaderCapabilities.d.ts +23 -0
- package/lib/renderer/shaderCapabilities.js +55 -0
- package/lib/renderer/shaderCapabilities.js.map +1 -0
- package/lib/renderer/shaderCapacity.d.ts +2 -0
- package/lib/renderer/shaderCapacity.js +5 -0
- package/lib/renderer/shaderCapacity.js.map +1 -0
- package/lib/renderer/skyModel.d.ts +9 -0
- package/lib/renderer/skyModel.js +10 -0
- package/lib/renderer/skyModel.js.map +1 -0
- package/lib/renderer/spectrum.d.ts +21 -0
- package/lib/renderer/spectrum.js +154 -0
- package/lib/renderer/spectrum.js.map +1 -0
- package/lib/renderer/textureAtlas.d.ts +60 -0
- package/lib/renderer/textureAtlas.js +145 -0
- package/lib/renderer/textureAtlas.js.map +1 -0
- package/lib/renderer/textureAtlasPixels.d.ts +7 -0
- package/lib/renderer/textureAtlasPixels.js +68 -0
- package/lib/renderer/textureAtlasPixels.js.map +1 -0
- package/lib/renderer/util.d.ts +1 -1
- package/lib/renderer/util.js.map +1 -1
- package/lib/renderer/webgl.d.ts +9 -2
- package/lib/renderer/webgl.js +54 -9
- package/lib/renderer/webgl.js.map +1 -1
- package/lib/renderer/webglLightSampling.d.ts +39 -0
- package/lib/renderer/webglLightSampling.js +15 -0
- package/lib/renderer/webglLightSampling.js.map +1 -0
- package/lib/renderer/wgpuBindless.d.ts +26 -0
- package/lib/renderer/wgpuBindless.js +95 -0
- package/lib/renderer/wgpuBindless.js.map +1 -0
- package/lib/renderer/wgpuBindlessSource.d.ts +2 -0
- package/lib/renderer/wgpuBindlessSource.js +51 -0
- package/lib/renderer/wgpuBindlessSource.js.map +1 -0
- package/lib/renderer/wgpuMaterialConstants.d.ts +4 -0
- package/lib/renderer/wgpuMaterialConstants.js +52 -0
- package/lib/renderer/wgpuMaterialConstants.js.map +1 -0
- package/lib/renderer/wgpuSceneUniform.d.ts +42 -0
- package/lib/renderer/wgpuSceneUniform.js +125 -0
- package/lib/renderer/wgpuSceneUniform.js.map +1 -0
- package/lib/renderer/wgpuShaderSource.d.ts +22 -0
- package/lib/renderer/wgpuShaderSource.js +33 -0
- package/lib/renderer/wgpuShaderSource.js.map +1 -0
- package/lib/renderer/wgsl/aovDisplay.wgsl.d.ts +1 -0
- package/lib/renderer/wgsl/aovDisplay.wgsl.js +70 -0
- package/lib/renderer/wgsl/aovDisplay.wgsl.js.map +1 -0
- package/lib/renderer/wgsl/aovReflectance.wgsl.d.ts +2 -0
- package/lib/renderer/wgsl/aovReflectance.wgsl.js +98 -0
- package/lib/renderer/wgsl/aovReflectance.wgsl.js.map +1 -0
- package/lib/renderer/wgsl/aovReflectanceSamples.wgsl.d.ts +2 -0
- package/lib/renderer/wgsl/aovReflectanceSamples.wgsl.js +135 -0
- package/lib/renderer/wgsl/aovReflectanceSamples.wgsl.js.map +1 -0
- package/lib/renderer/wgsl/aovResolve.wgsl.d.ts +5 -0
- package/lib/renderer/wgsl/aovResolve.wgsl.js +38 -0
- package/lib/renderer/wgsl/aovResolve.wgsl.js.map +1 -0
- package/lib/renderer/wgsl/aovSnapshot.wgsl.d.ts +4 -0
- package/lib/renderer/wgsl/aovSnapshot.wgsl.js +21 -0
- package/lib/renderer/wgsl/aovSnapshot.wgsl.js.map +1 -0
- package/lib/renderer/wgsl/aovTrace.wgsl.d.ts +2 -0
- package/lib/renderer/wgsl/aovTrace.wgsl.js +115 -0
- package/lib/renderer/wgsl/aovTrace.wgsl.js.map +1 -0
- package/lib/renderer/wgsl/bloom.wgsl.d.ts +13 -0
- package/lib/renderer/wgsl/bloom.wgsl.js +92 -0
- package/lib/renderer/wgsl/bloom.wgsl.js.map +1 -0
- package/lib/renderer/wgsl/causticLight.compute.d.ts +6 -0
- package/lib/renderer/wgsl/causticLight.compute.js +537 -0
- package/lib/renderer/wgsl/causticLight.compute.js.map +1 -0
- package/lib/renderer/wgsl/chunks/background.wgsl.d.ts +2 -0
- package/lib/renderer/wgsl/chunks/background.wgsl.js +102 -0
- package/lib/renderer/wgsl/chunks/background.wgsl.js.map +1 -0
- package/lib/renderer/wgsl/chunks/causticAdjoint.wgsl.d.ts +2 -0
- package/lib/renderer/wgsl/chunks/causticAdjoint.wgsl.js +12 -0
- package/lib/renderer/wgsl/chunks/causticAdjoint.wgsl.js.map +1 -0
- package/lib/renderer/wgsl/chunks/causticAtomic.wgsl.d.ts +2 -0
- package/lib/renderer/wgsl/chunks/causticAtomic.wgsl.js +16 -0
- package/lib/renderer/wgsl/chunks/causticAtomic.wgsl.js.map +1 -0
- package/lib/renderer/wgsl/chunks/caustics.wgsl.d.ts +1 -0
- package/lib/renderer/wgsl/chunks/caustics.wgsl.js +62 -0
- package/lib/renderer/wgsl/chunks/caustics.wgsl.js.map +1 -0
- package/lib/renderer/wgsl/chunks/common.wgsl.js +4 -4
- package/lib/renderer/wgsl/chunks/envMap.wgsl.d.ts +1 -1
- package/lib/renderer/wgsl/chunks/envMap.wgsl.js +41 -35
- package/lib/renderer/wgsl/chunks/envMap.wgsl.js.map +1 -1
- package/lib/renderer/wgsl/chunks/intersect.wgsl.d.ts +13 -1
- package/lib/renderer/wgsl/chunks/intersect.wgsl.js +747 -704
- package/lib/renderer/wgsl/chunks/intersect.wgsl.js.map +1 -1
- package/lib/renderer/wgsl/chunks/intersectionAlpha.wgsl.js +16 -16
- package/lib/renderer/wgsl/chunks/intersectionAlpha.wgsl.js.map +1 -1
- package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.d.ts +4 -1
- package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js +83 -79
- package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js.map +1 -1
- package/lib/renderer/wgsl/chunks/openPbrBsdf.wgsl.js +855 -857
- package/lib/renderer/wgsl/chunks/openPbrBsdf.wgsl.js.map +1 -1
- package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.js +137 -137
- package/lib/renderer/wgsl/chunks/rand.wgsl.js +3 -3
- package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.d.ts +3 -1
- package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.js +52 -32
- package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.js.map +1 -1
- package/lib/renderer/wgsl/chunks/sampleLight.wgsl.d.ts +1 -1
- package/lib/renderer/wgsl/chunks/sampleLight.wgsl.js +152 -144
- package/lib/renderer/wgsl/chunks/sampleLight.wgsl.js.map +1 -1
- package/lib/renderer/wgsl/chunks/sampleMaterial.wgsl.d.ts +1 -1
- package/lib/renderer/wgsl/chunks/sampleMaterial.wgsl.js +269 -245
- package/lib/renderer/wgsl/chunks/sampleMaterial.wgsl.js.map +1 -1
- package/lib/renderer/wgsl/chunks/sampleShadowCatcher.wgsl.d.ts +1 -1
- package/lib/renderer/wgsl/chunks/sampleShadowCatcher.wgsl.js +27 -14
- package/lib/renderer/wgsl/chunks/sampleShadowCatcher.wgsl.js.map +1 -1
- package/lib/renderer/wgsl/chunks/sampling.wgsl.d.ts +1 -1
- package/lib/renderer/wgsl/chunks/sampling.wgsl.js +91 -95
- package/lib/renderer/wgsl/chunks/sampling.wgsl.js.map +1 -1
- package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.d.ts +1 -1
- package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.js +1 -0
- package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.js.map +1 -1
- package/lib/renderer/wgsl/chunks/sobol.wgsl.js +83 -83
- package/lib/renderer/wgsl/chunks/uvProjection.wgsl.js +12 -12
- package/lib/renderer/wgsl/chunks/uvProjection.wgsl.js.map +1 -1
- package/lib/renderer/wgsl/compose.frag.wgsl.d.ts +8 -3
- package/lib/renderer/wgsl/compose.frag.wgsl.js +143 -118
- package/lib/renderer/wgsl/compose.frag.wgsl.js.map +1 -1
- package/lib/renderer/wgsl/customDenoise.wgsl.js +10 -10
- package/lib/renderer/wgsl/depthQuery.wgsl.js +7 -7
- package/lib/renderer/wgsl/jnlm.compute.d.ts +25 -0
- package/lib/renderer/wgsl/jnlm.compute.js +315 -0
- package/lib/renderer/wgsl/jnlm.compute.js.map +1 -0
- package/lib/renderer/wgsl/offlineAdaptive.compute.js +28 -28
- package/lib/renderer/wgsl/oidnAuxiliary.wgsl.d.ts +1 -0
- package/lib/renderer/wgsl/oidnAuxiliary.wgsl.js +17 -0
- package/lib/renderer/wgsl/oidnAuxiliary.wgsl.js.map +1 -0
- package/lib/renderer/wgsl/photonMap.compute.d.ts +29 -0
- package/lib/renderer/wgsl/photonMap.compute.js +352 -0
- package/lib/renderer/wgsl/photonMap.compute.js.map +1 -0
- package/lib/renderer/wgsl/proceduralSky.compute.d.ts +1 -0
- package/lib/renderer/wgsl/proceduralSky.compute.js +198 -0
- package/lib/renderer/wgsl/proceduralSky.compute.js.map +1 -0
- package/lib/renderer/wgsl/rayTrace.compute.d.ts +25 -1
- package/lib/renderer/wgsl/rayTrace.compute.js +645 -500
- package/lib/renderer/wgsl/rayTrace.compute.js.map +1 -1
- package/lib/scene/Camera.js +7 -3
- package/lib/scene/Camera.js.map +1 -1
- package/lib/scene/EnvironmentLight.d.ts +5 -9
- package/lib/scene/EnvironmentLight.js +4 -14
- package/lib/scene/EnvironmentLight.js.map +1 -1
- package/lib/scene/EnvironmentLightState.d.ts +18 -0
- package/lib/scene/EnvironmentLightState.js +19 -0
- package/lib/scene/EnvironmentLightState.js.map +1 -0
- package/lib/scene/Geometry.d.ts +12 -6
- package/lib/scene/Geometry.js +37 -13
- package/lib/scene/Geometry.js.map +1 -1
- package/lib/scene/InstanceState.d.ts +39 -0
- package/lib/scene/InstanceState.js +77 -0
- package/lib/scene/InstanceState.js.map +1 -0
- package/lib/scene/InstancedMesh.d.ts +1 -1
- package/lib/scene/InstancedMesh.js +3 -0
- package/lib/scene/InstancedMesh.js.map +1 -1
- package/lib/scene/MaterialState.d.ts +209 -0
- package/lib/scene/MaterialState.js +231 -0
- package/lib/scene/MaterialState.js.map +1 -0
- package/lib/scene/Mesh.d.ts +4 -6
- package/lib/scene/Mesh.js +3 -11
- package/lib/scene/Mesh.js.map +1 -1
- package/lib/scene/MeshState.d.ts +20 -0
- package/lib/scene/MeshState.js +35 -0
- package/lib/scene/MeshState.js.map +1 -0
- package/lib/scene/OpenPBRMaterial.d.ts +6 -168
- package/lib/scene/OpenPBRMaterial.js +5 -223
- package/lib/scene/OpenPBRMaterial.js.map +1 -1
- package/lib/scene/PixelTexture.d.ts +6 -0
- package/lib/scene/PixelTexture.js +10 -0
- package/lib/scene/PixelTexture.js.map +1 -0
- package/lib/scene/ProceduralSky.d.ts +24 -0
- package/lib/scene/ProceduralSky.js +40 -0
- package/lib/scene/ProceduralSky.js.map +1 -0
- package/lib/scene/RectLight.d.ts +2 -13
- package/lib/scene/RectLight.js +3 -21
- package/lib/scene/RectLight.js.map +1 -1
- package/lib/scene/RectLightState.d.ts +31 -0
- package/lib/scene/RectLightState.js +26 -0
- package/lib/scene/RectLightState.js.map +1 -0
- package/lib/scene/Scene.d.ts +15 -4
- package/lib/scene/Scene.js.map +1 -1
- package/lib/scene/SceneNode.js +7 -6
- package/lib/scene/SceneNode.js.map +1 -1
- package/lib/scene/Texture.d.ts +10 -41
- package/lib/scene/Texture.js +4 -33
- package/lib/scene/Texture.js.map +1 -1
- package/lib/scene/TextureState.d.ts +35 -0
- package/lib/scene/TextureState.js +35 -0
- package/lib/scene/TextureState.js.map +1 -0
- package/lib/scene/attributeData.d.ts +4 -0
- package/lib/scene/attributeData.js +10 -0
- package/lib/scene/attributeData.js.map +1 -0
- package/lib/scene/lightState.d.ts +8 -0
- package/lib/scene/lightState.js +2 -0
- package/lib/scene/lightState.js.map +1 -0
- package/lib/scene/openPbrSchema.d.ts +7 -12
- package/lib/scene/openPbrSchema.js +273 -28
- package/lib/scene/openPbrSchema.js.map +1 -1
- package/lib/scene/skyParameters.d.ts +20 -0
- package/lib/scene/skyParameters.js +28 -0
- package/lib/scene/skyParameters.js.map +1 -0
- package/lib/scene/textureData.d.ts +9 -0
- package/lib/scene/textureData.js +2 -0
- package/lib/scene/textureData.js.map +1 -0
- package/lib/scene/texturePixels.d.ts +6 -0
- package/lib/scene/texturePixels.js +10 -0
- package/lib/scene/texturePixels.js.map +1 -0
- package/lib/settings/display.d.ts +33 -0
- package/lib/settings/display.js +7 -0
- package/lib/settings/display.js.map +1 -1
- package/lib/settings/render.d.ts +36 -3
- package/lib/settings/render.js +4 -1
- package/lib/settings/render.js.map +1 -1
- package/lib/tinybvh/tinybvh.wasm +0 -0
- package/lib/util/commonGeometry.js +7 -7
- package/lib/util/commonGeometry.js.map +1 -1
- package/lib/util/fromTHREE.d.ts +4 -1
- package/lib/util/fromTHREE.js +20 -7
- package/lib/util/fromTHREE.js.map +1 -1
- package/lib/util/geometry.js +42 -29
- package/lib/util/geometry.js.map +1 -1
- package/lib/util/loadRGBE.js +3 -4
- package/lib/util/loadRGBE.js.map +1 -1
- package/lib/util/studioLighting.d.ts +18 -0
- package/lib/util/studioLighting.js +36 -0
- package/lib/util/studioLighting.js.map +1 -0
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/lib/version.js.map +1 -1
- package/llms.txt +5 -0
- package/package.json +33 -7
- package/lib/renderer/texturesFromMaterials.d.ts +0 -6
- package/lib/renderer/texturesFromMaterials.js.map +0 -1
package/lib/math/vec3.js
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
export function clone(a) {
|
|
2
|
+
var out = new Float32Array(3);
|
|
3
|
+
out[0] = a[0];
|
|
4
|
+
out[1] = a[1];
|
|
5
|
+
out[2] = a[2];
|
|
6
|
+
return out;
|
|
7
|
+
}
|
|
8
|
+
export function copy(out, a) {
|
|
9
|
+
out[0] = a[0];
|
|
10
|
+
out[1] = a[1];
|
|
11
|
+
out[2] = a[2];
|
|
12
|
+
return out;
|
|
13
|
+
}
|
|
14
|
+
export function create() {
|
|
15
|
+
var out = new Float32Array(3);
|
|
16
|
+
return out;
|
|
17
|
+
}
|
|
18
|
+
export function cross(out, a, b) {
|
|
19
|
+
var ax = a[0], ay = a[1], az = a[2];
|
|
20
|
+
var bx = b[0], by = b[1], bz = b[2];
|
|
21
|
+
out[0] = ay * bz - az * by;
|
|
22
|
+
out[1] = az * bx - ax * bz;
|
|
23
|
+
out[2] = ax * by - ay * bx;
|
|
24
|
+
return out;
|
|
25
|
+
}
|
|
26
|
+
export const dist = distance;
|
|
27
|
+
export function distance(a, b) {
|
|
28
|
+
var x = b[0] - a[0];
|
|
29
|
+
var y = b[1] - a[1];
|
|
30
|
+
var z = b[2] - a[2];
|
|
31
|
+
return Math.sqrt(x * x + y * y + z * z);
|
|
32
|
+
}
|
|
33
|
+
export function fromValues(x, y, z) {
|
|
34
|
+
var out = new Float32Array(3);
|
|
35
|
+
out[0] = x;
|
|
36
|
+
out[1] = y;
|
|
37
|
+
out[2] = z;
|
|
38
|
+
return out;
|
|
39
|
+
}
|
|
40
|
+
export function length(a) {
|
|
41
|
+
var x = a[0];
|
|
42
|
+
var y = a[1];
|
|
43
|
+
var z = a[2];
|
|
44
|
+
return Math.sqrt(x * x + y * y + z * z);
|
|
45
|
+
}
|
|
46
|
+
export function lerp(out, a, b, t) {
|
|
47
|
+
var ax = a[0];
|
|
48
|
+
var ay = a[1];
|
|
49
|
+
var az = a[2];
|
|
50
|
+
out[0] = ax + t * (b[0] - ax);
|
|
51
|
+
out[1] = ay + t * (b[1] - ay);
|
|
52
|
+
out[2] = az + t * (b[2] - az);
|
|
53
|
+
return out;
|
|
54
|
+
}
|
|
55
|
+
export function max(out, a, b) {
|
|
56
|
+
out[0] = Math.max(a[0], b[0]);
|
|
57
|
+
out[1] = Math.max(a[1], b[1]);
|
|
58
|
+
out[2] = Math.max(a[2], b[2]);
|
|
59
|
+
return out;
|
|
60
|
+
}
|
|
61
|
+
export function min(out, a, b) {
|
|
62
|
+
out[0] = Math.min(a[0], b[0]);
|
|
63
|
+
out[1] = Math.min(a[1], b[1]);
|
|
64
|
+
out[2] = Math.min(a[2], b[2]);
|
|
65
|
+
return out;
|
|
66
|
+
}
|
|
67
|
+
export function normalize(out, a) {
|
|
68
|
+
var x = a[0];
|
|
69
|
+
var y = a[1];
|
|
70
|
+
var z = a[2];
|
|
71
|
+
var len = x * x + y * y + z * z;
|
|
72
|
+
if (len > 0) {
|
|
73
|
+
//TODO: evaluate use of glm_invsqrt here?
|
|
74
|
+
len = 1 / Math.sqrt(len);
|
|
75
|
+
}
|
|
76
|
+
out[0] = a[0] * len;
|
|
77
|
+
out[1] = a[1] * len;
|
|
78
|
+
out[2] = a[2] * len;
|
|
79
|
+
return out;
|
|
80
|
+
}
|
|
81
|
+
export const len = length;
|
|
82
|
+
export function scale(out, a, b) {
|
|
83
|
+
out[0] = a[0] * b;
|
|
84
|
+
out[1] = a[1] * b;
|
|
85
|
+
out[2] = a[2] * b;
|
|
86
|
+
return out;
|
|
87
|
+
}
|
|
88
|
+
export function scaleAndAdd(out, a, b, scale) {
|
|
89
|
+
out[0] = a[0] + b[0] * scale;
|
|
90
|
+
out[1] = a[1] + b[1] * scale;
|
|
91
|
+
out[2] = a[2] + b[2] * scale;
|
|
92
|
+
return out;
|
|
93
|
+
}
|
|
94
|
+
export function set(out, x, y, z) {
|
|
95
|
+
out[0] = x;
|
|
96
|
+
out[1] = y;
|
|
97
|
+
out[2] = z;
|
|
98
|
+
return out;
|
|
99
|
+
}
|
|
100
|
+
export const sub = subtract;
|
|
101
|
+
export function subtract(out, a, b) {
|
|
102
|
+
out[0] = a[0] - b[0];
|
|
103
|
+
out[1] = a[1] - b[1];
|
|
104
|
+
out[2] = a[2] - b[2];
|
|
105
|
+
return out;
|
|
106
|
+
}
|
|
107
|
+
export function transformMat3(out, a, m) {
|
|
108
|
+
var x = a[0], y = a[1], z = a[2];
|
|
109
|
+
out[0] = x * m[0] + y * m[3] + z * m[6];
|
|
110
|
+
out[1] = x * m[1] + y * m[4] + z * m[7];
|
|
111
|
+
out[2] = x * m[2] + y * m[5] + z * m[8];
|
|
112
|
+
return out;
|
|
113
|
+
}
|
|
114
|
+
export function transformMat4(out, a, m) {
|
|
115
|
+
var x = a[0], y = a[1], z = a[2];
|
|
116
|
+
var w = m[3] * x + m[7] * y + m[11] * z + m[15];
|
|
117
|
+
w = w || 1.0;
|
|
118
|
+
out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;
|
|
119
|
+
out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;
|
|
120
|
+
out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;
|
|
121
|
+
return out;
|
|
122
|
+
}
|
|
123
|
+
const forEachVector = create();
|
|
124
|
+
export function forEach(a, stride, offset, count, fn, arg) {
|
|
125
|
+
stride = stride || 3;
|
|
126
|
+
offset = offset || 0;
|
|
127
|
+
const end = count ? Math.min(count * stride + offset, a.length) : a.length;
|
|
128
|
+
for (let i = offset; i < end; i += stride) {
|
|
129
|
+
forEachVector[0] = a[i];
|
|
130
|
+
forEachVector[1] = a[i + 1];
|
|
131
|
+
forEachVector[2] = a[i + 2];
|
|
132
|
+
fn(forEachVector, forEachVector, arg);
|
|
133
|
+
a[i] = forEachVector[0];
|
|
134
|
+
a[i + 1] = forEachVector[1];
|
|
135
|
+
a[i + 2] = forEachVector[2];
|
|
136
|
+
}
|
|
137
|
+
return a;
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=vec3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vec3.js","sourceRoot":"","sources":["../../src/math/vec3.ts"],"names":[],"mappings":"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","sourcesContent":["// Adapted from gl-matrix 3.4.4, https://github.com/toji/gl-matrix/tree/v3.4.4/src\n// Copyright (c) 2015-2025 Brandon Jones and Colin MacKenzie IV, MIT.\n// See LICENSES/GlMatrix-MIT.txt. Arithmetic/order retained; creators use Float32Array.\nimport type { MathArray, ReadonlyMathArray } from './types.js';\n\nexport function clone<T0 extends ReadonlyMathArray>(a: T0): Float32Array {\n var out = new Float32Array(3);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n\nexport function copy<T0 extends MathArray, T1 extends ReadonlyMathArray>(out: T0, a: T1): T0 {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n\nexport function create(): Float32Array {\n var out = new Float32Array(3);\n return out;\n}\n\nexport function cross<T0 extends MathArray, T1 extends ReadonlyMathArray, T2 extends ReadonlyMathArray>(out: T0, a: T1, b: T2): T0 {\n var ax = a[0],\n ay = a[1],\n az = a[2];\n var bx = b[0],\n by = b[1],\n bz = b[2];\n out[0] = ay * bz - az * by;\n out[1] = az * bx - ax * bz;\n out[2] = ax * by - ay * bx;\n return out;\n}\n\nexport const dist = distance;\n\nexport function distance<T0 extends ReadonlyMathArray, T1 extends ReadonlyMathArray>(a: T0, b: T1): number {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return Math.sqrt(x * x + y * y + z * z);\n}\n\nexport function fromValues(x: number, y: number, z: number): Float32Array {\n var out = new Float32Array(3);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n\nexport function length<T0 extends ReadonlyMathArray>(a: T0): number {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return Math.sqrt(x * x + y * y + z * z);\n}\n\nexport function lerp<T0 extends MathArray, T1 extends ReadonlyMathArray, T2 extends ReadonlyMathArray>(out: T0, a: T1, b: T2, t: number): T0 {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n return out;\n}\n\nexport function max<T0 extends MathArray, T1 extends ReadonlyMathArray, T2 extends ReadonlyMathArray>(out: T0, a: T1, b: T2): T0 {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n return out;\n}\n\nexport function min<T0 extends MathArray, T1 extends ReadonlyMathArray, T2 extends ReadonlyMathArray>(out: T0, a: T1, b: T2): T0 {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n return out;\n}\n\nexport function normalize<T0 extends MathArray, T1 extends ReadonlyMathArray>(out: T0, a: T1): T0 {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var len = x * x + y * y + z * z;\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n out[2] = a[2] * len;\n return out;\n}\n\nexport const len = length;\n\nexport function scale<T0 extends MathArray, T1 extends ReadonlyMathArray>(out: T0, a: T1, b: number): T0 {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n return out;\n}\n\nexport function scaleAndAdd<T0 extends MathArray, T1 extends ReadonlyMathArray, T2 extends ReadonlyMathArray>(out: T0, a: T1, b: T2, scale: number): T0 {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n return out;\n}\n\nexport function set<T0 extends MathArray>(out: T0, x: number, y: number, z: number): T0 {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n\nexport const sub = subtract;\n\nexport function subtract<T0 extends MathArray, T1 extends ReadonlyMathArray, T2 extends ReadonlyMathArray>(out: T0, a: T1, b: T2): T0 {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n return out;\n}\n\nexport function transformMat3<T0 extends MathArray, T1 extends ReadonlyMathArray, T2 extends ReadonlyMathArray>(out: T0, a: T1, m: T2): T0 {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x * m[0] + y * m[3] + z * m[6];\n out[1] = x * m[1] + y * m[4] + z * m[7];\n out[2] = x * m[2] + y * m[5] + z * m[8];\n return out;\n}\n\nexport function transformMat4<T0 extends MathArray, T1 extends ReadonlyMathArray, T2 extends ReadonlyMathArray>(out: T0, a: T1, m: T2): T0 {\n var x = a[0],\n y = a[1],\n z = a[2];\n var w = m[3] * x + m[7] * y + m[11] * z + m[15];\n w = w || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n return out;\n}\n\nconst forEachVector = create();\nexport function forEach<T extends MathArray, A = undefined>(a: T, stride: number | undefined, offset: number | undefined, count: number | undefined, fn: (out: Float32Array, input: Float32Array, arg: A) => unknown, arg?: A): T {\n stride = stride || 3; offset = offset || 0;\n const end = count ? Math.min(count * stride + offset, a.length) : a.length;\n for (let i = offset; i < end; i += stride) {\n forEachVector[0] = a[i]; forEachVector[1] = a[i + 1]; forEachVector[2] = a[i + 2];\n fn(forEachVector, forEachVector, arg as A);\n a[i] = forEachVector[0]; a[i + 1] = forEachVector[1]; a[i + 2] = forEachVector[2];\n }\n return a;\n}\n\nexport type Vec3Array = Float32Array | Float64Array | number[];\n"]}
|
package/lib/math.d.ts
CHANGED
|
@@ -1,20 +1,8 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export
|
|
6
|
-
export declare namespace mat4 {
|
|
7
|
-
type Mat4Array = Float32Array | number[];
|
|
8
|
-
}
|
|
9
|
-
export declare const vec2: any;
|
|
10
|
-
export declare namespace vec2 {
|
|
11
|
-
type Vec2Array = Float32Array | number[];
|
|
12
|
-
}
|
|
13
|
-
export declare const vec3: any;
|
|
14
|
-
export declare namespace vec3 {
|
|
15
|
-
type Vec3Array = Float32Array | number[];
|
|
16
|
-
}
|
|
17
|
-
export type Mat4Array = Float32Array | number[];
|
|
1
|
+
export * as mat3 from './math/mat3.js';
|
|
2
|
+
export * as mat4 from './math/mat4.js';
|
|
3
|
+
export * as vec2 from './math/vec2.js';
|
|
4
|
+
export * as vec3 from './math/vec3.js';
|
|
5
|
+
export type Mat4Array = Float32Array | Float64Array | number[];
|
|
18
6
|
export type TextureImageSource = any;
|
|
19
7
|
export interface TexturePixelSource {
|
|
20
8
|
data: Float32Array | Int32Array | Uint8Array | Uint8ClampedArray;
|
package/lib/math.js
CHANGED
|
@@ -1,56 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
fromMat4: glMat3.fromMat4,
|
|
7
|
-
normalFromMat4: glMat3.normalFromMat4
|
|
8
|
-
};
|
|
9
|
-
export const mat4 = {
|
|
10
|
-
copy: glMat4.copy,
|
|
11
|
-
create: glMat4.create,
|
|
12
|
-
invert: glMat4.invert,
|
|
13
|
-
lookAt: glMat4.lookAt,
|
|
14
|
-
targetTo: glMat4.targetTo,
|
|
15
|
-
getScaling: glMat4.getScaling,
|
|
16
|
-
mul: glMat4.mul,
|
|
17
|
-
multiply: glMat4.multiply,
|
|
18
|
-
ortho: glMat4.ortho,
|
|
19
|
-
perspective: glMat4.perspective,
|
|
20
|
-
scale: glMat4.scale,
|
|
21
|
-
rotateZ: glMat4.rotateZ,
|
|
22
|
-
fromScaling: glMat4.fromScaling,
|
|
23
|
-
translate: glMat4.translate
|
|
24
|
-
};
|
|
25
|
-
export const vec2 = {
|
|
26
|
-
copy: glVec2.copy,
|
|
27
|
-
create: glVec2.create,
|
|
28
|
-
len: glVec2.len,
|
|
29
|
-
max: glVec2.max,
|
|
30
|
-
min: glVec2.min,
|
|
31
|
-
normalize: glVec2.normalize,
|
|
32
|
-
scale: glVec2.scale,
|
|
33
|
-
set: glVec2.set,
|
|
34
|
-
sub: glVec2.sub
|
|
35
|
-
};
|
|
36
|
-
export const vec3 = {
|
|
37
|
-
clone: glVec3.clone,
|
|
38
|
-
copy: glVec3.copy,
|
|
39
|
-
create: glVec3.create,
|
|
40
|
-
cross: glVec3.cross,
|
|
41
|
-
dist: glVec3.dist,
|
|
42
|
-
forEach: glVec3.forEach,
|
|
43
|
-
fromValues: glVec3.fromValues,
|
|
44
|
-
length: glVec3.length,
|
|
45
|
-
lerp: glVec3.lerp,
|
|
46
|
-
max: glVec3.max,
|
|
47
|
-
min: glVec3.min,
|
|
48
|
-
normalize: glVec3.normalize,
|
|
49
|
-
scale: glVec3.scale,
|
|
50
|
-
scaleAndAdd: glVec3.scaleAndAdd,
|
|
51
|
-
set: glVec3.set,
|
|
52
|
-
sub: glVec3.sub,
|
|
53
|
-
transformMat3: glVec3.transformMat3,
|
|
54
|
-
transformMat4: glVec3.transformMat4
|
|
55
|
-
};
|
|
1
|
+
// Internal numeric modules adapted from gl-matrix; see LICENSES/GlMatrix-MIT.txt.
|
|
2
|
+
export * as mat3 from './math/mat3.js';
|
|
3
|
+
export * as mat4 from './math/mat4.js';
|
|
4
|
+
export * as vec2 from './math/vec2.js';
|
|
5
|
+
export * as vec3 from './math/vec3.js';
|
|
56
6
|
//# sourceMappingURL=math.js.map
|
package/lib/math.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"math.js","sourceRoot":"","sources":["../src/math.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"math.js","sourceRoot":"","sources":["../src/math.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC","sourcesContent":["// Internal numeric modules adapted from gl-matrix; see LICENSES/GlMatrix-MIT.txt.\nexport * as mat3 from './math/mat3.js';\nexport * as mat4 from './math/mat4.js';\nexport * as vec2 from './math/vec2.js';\nexport * as vec3 from './math/vec3.js';\n\nexport type Mat4Array = Float32Array | Float64Array | number[];\nexport type TextureImageSource = any;\nexport interface TexturePixelSource {\n data: Float32Array | Int32Array | Uint8Array | Uint8ClampedArray;\n width: number;\n height: number;\n}\n"]}
|
package/lib/oidn.d.ts
CHANGED
|
@@ -40,6 +40,6 @@ export declare const DEFAULT_OIDN_WEIGHTS_PACKAGE_BASE_URL = "https://cdn.jsdeli
|
|
|
40
40
|
* Fallback for bundled standard/small weights when application assets fail.
|
|
41
41
|
* Defaults to jsDelivr's `@meimu/mutracer@VERSION/oidn/weights/` directory.
|
|
42
42
|
*/
|
|
43
|
-
export declare const DEFAULT_OIDN_WEIGHTS_BASE_URL = "https://cdn.jsdelivr.net/npm/@meimu/mutracer@0.
|
|
43
|
+
export declare const DEFAULT_OIDN_WEIGHTS_BASE_URL = "https://cdn.jsdelivr.net/npm/@meimu/mutracer@0.3.0/oidn/weights/";
|
|
44
44
|
export declare function resolveOIDNModelUrl(model: OIDNModel, weightsBaseUrl?: string | URL): string;
|
|
45
45
|
export declare function resolveOIDNAuxiliaryModelUrls(weightsBaseUrl?: string | URL): OIDNAuxiliaryModelUrls;
|
package/lib/oidn.js
CHANGED
|
@@ -28,11 +28,13 @@ export function resolveOIDNModelUrl(model, weightsBaseUrl) {
|
|
|
28
28
|
if (model === 'small')
|
|
29
29
|
return String(smallWeightsUrl);
|
|
30
30
|
}
|
|
31
|
-
const
|
|
31
|
+
const base = weightsBaseUrl ?? DEFAULT_OIDN_WEIGHTS_PACKAGE_BASE_URL;
|
|
32
|
+
// Narrow before coercion so native compilers see one representation at a time.
|
|
33
|
+
const baseUrl = typeof base === 'string' ? base : String(base);
|
|
32
34
|
return `${baseUrl}${baseUrl.endsWith('/') ? '' : '/'}${OIDN_MODEL_FILENAMES[model]}`;
|
|
33
35
|
}
|
|
34
36
|
export function resolveOIDNAuxiliaryModelUrls(weightsBaseUrl = DEFAULT_OIDN_WEIGHTS_PACKAGE_BASE_URL) {
|
|
35
|
-
const baseUrl = String(weightsBaseUrl);
|
|
37
|
+
const baseUrl = typeof weightsBaseUrl === 'string' ? weightsBaseUrl : String(weightsBaseUrl);
|
|
36
38
|
const prefix = `${baseUrl}${baseUrl.endsWith('/') ? '' : '/'}`;
|
|
37
39
|
return {
|
|
38
40
|
albedo: `${prefix}${OIDN_AUXILIARY_MODEL_FILENAMES.albedo}`,
|
package/lib/oidn.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oidn.js","sourceRoot":"","sources":["../src/oidn.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAkB9E,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,KAAK,EAAE,0BAA0B;IACjC,QAAQ,EAAE,oBAAoB;IAC9B,aAAa,EAAE,4BAA4B;CACnC,CAAC;AACX,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,MAAM,EAAE,kBAAkB;IAC1B,MAAM,EAAE,kBAAkB;CAClB,CAAC;AASX,wEAAwE;AACxE,MAAM,CAAC,MAAM,oBAAoB,GAAG,cAAc,CAAC;AACnD,2FAA2F;AAC3F,MAAM,CAAC,MAAM,4BAA4B,GAAG,SAAS,CAAC;AACtD,2EAA2E;AAC3E,MAAM,CAAC,MAAM,qCAAqC,GAChD,gCAAgC,oBAAoB,IAAI,4BAA4B,GAAG,CAAC;AAC1F;;;GAGG;AACH,MAAM,CAAC,MAAM,6BAA6B,GACxC,gDAAgD,OAAO,gBAAgB,CAAC;AAE1E,MAAM,UAAU,mBAAmB,CACjC,KAAgB,EAChB,cAA6B;IAE7B,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,IAAI,KAAK,KAAK,UAAU;YAAE,OAAO,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC5D,IAAI,KAAK,KAAK,OAAO;YAAE,OAAO,MAAM,CAAC,eAAe,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,
|
|
1
|
+
{"version":3,"file":"oidn.js","sourceRoot":"","sources":["../src/oidn.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAkB9E,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,KAAK,EAAE,0BAA0B;IACjC,QAAQ,EAAE,oBAAoB;IAC9B,aAAa,EAAE,4BAA4B;CACnC,CAAC;AACX,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,MAAM,EAAE,kBAAkB;IAC1B,MAAM,EAAE,kBAAkB;CAClB,CAAC;AASX,wEAAwE;AACxE,MAAM,CAAC,MAAM,oBAAoB,GAAG,cAAc,CAAC;AACnD,2FAA2F;AAC3F,MAAM,CAAC,MAAM,4BAA4B,GAAG,SAAS,CAAC;AACtD,2EAA2E;AAC3E,MAAM,CAAC,MAAM,qCAAqC,GAChD,gCAAgC,oBAAoB,IAAI,4BAA4B,GAAG,CAAC;AAC1F;;;GAGG;AACH,MAAM,CAAC,MAAM,6BAA6B,GACxC,gDAAgD,OAAO,gBAAgB,CAAC;AAE1E,MAAM,UAAU,mBAAmB,CACjC,KAAgB,EAChB,cAA6B;IAE7B,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,IAAI,KAAK,KAAK,UAAU;YAAE,OAAO,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC5D,IAAI,KAAK,KAAK,OAAO;YAAE,OAAO,MAAM,CAAC,eAAe,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,IAAI,GAAG,cAAc,IAAI,qCAAqC,CAAC;IACrE,+EAA+E;IAC/E,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/D,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;AACvF,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,iBAA+B,qCAAqC;IAEpE,MAAM,OAAO,GAAG,OAAO,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAC7F,MAAM,MAAM,GAAG,GAAG,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAC/D,OAAO;QACL,MAAM,EAAE,GAAG,MAAM,GAAG,8BAA8B,CAAC,MAAM,EAAE;QAC3D,MAAM,EAAE,GAAG,MAAM,GAAG,8BAA8B,CAAC,MAAM,EAAE;KAC5D,CAAC;AACJ,CAAC","sourcesContent":["/// <reference types=\"@webgpu/types\" preserve=\"true\" />\n\nimport { VERSION } from './version.js';\nimport { standardWeightsUrl, smallWeightsUrl } from './oidnBundledWeights.js';\n\nexport type OIDNEngine = 'auto' | 'wgsl' | 'webnn';\nexport type OIDNPrecision = 'auto' | 'fp32' | 'fp16';\nexport type OIDNHDRTransfer = 'pu' | 'log';\nexport interface OIDNDynamicTileOptions {\n /** Smallest output tile edge in pixels. Default `256`, clamped to maxTileSize. */\n minTileSize?: number;\n /** Initial output tile edge in pixels. Default `432`, clamped to tile limits. */\n initialTileSize?: number;\n /** Target upper bound for one tile GPU latency in milliseconds. Default `16`. */\n targetTileTimeMs?: number;\n /** Tile edge adjustment in pixels per completed execution. Default `16`. */\n adjustmentStep?: number;\n}\n/** Adaptive tiles. Default true; false selects fixed tiles. */\nexport type OIDNDynamicTileSetting = boolean | OIDNDynamicTileOptions;\n\nexport const OIDN_MODEL_FILENAMES = {\n small: 'rt_hdr_alb_nrm_small.tza',\n standard: 'rt_hdr_alb_nrm.tza',\n cleanAuxLarge: 'rt_hdr_calb_cnrm_large.tza'\n} as const;\nexport const OIDN_AUXILIARY_MODEL_FILENAMES = {\n albedo: 'rt_alb_large.tza',\n normal: 'rt_nrm_large.tza'\n} as const;\n\nexport type OIDNModel = keyof typeof OIDN_MODEL_FILENAMES;\nexport interface OIDNAuxiliaryModelUrls {\n /** Required when overriding auxiliary networks. Default packaged cleanAuxLarge albedo weights. */\n albedo: string | URL;\n /** Required when overriding auxiliary networks. Default packaged cleanAuxLarge normal weights. */\n normal: string | URL;\n}\n/** Package containing all OIDN RT networks. Default: `oidn-weights`. */\nexport const OIDN_WEIGHTS_PACKAGE = 'oidn-weights';\n/** Weights package version for OIDN 2.3.0, independent of MuTracer. Default: `2.3.0-1`. */\nexport const OIDN_WEIGHTS_PACKAGE_VERSION = '2.3.0-1';\n/** Default large-network directory: jsDelivr's `oidn-weights@2.3.0-1/`. */\nexport const DEFAULT_OIDN_WEIGHTS_PACKAGE_BASE_URL =\n `https://cdn.jsdelivr.net/npm/${OIDN_WEIGHTS_PACKAGE}@${OIDN_WEIGHTS_PACKAGE_VERSION}/`;\n/**\n * Fallback for bundled standard/small weights when application assets fail.\n * Defaults to jsDelivr's `@meimu/mutracer@VERSION/oidn/weights/` directory.\n */\nexport const DEFAULT_OIDN_WEIGHTS_BASE_URL =\n `https://cdn.jsdelivr.net/npm/@meimu/mutracer@${VERSION}/oidn/weights/`;\n\nexport function resolveOIDNModelUrl(\n model: OIDNModel,\n weightsBaseUrl?: string | URL\n) {\n if (weightsBaseUrl === undefined) {\n if (model === 'standard') return String(standardWeightsUrl);\n if (model === 'small') return String(smallWeightsUrl);\n }\n const base = weightsBaseUrl ?? DEFAULT_OIDN_WEIGHTS_PACKAGE_BASE_URL;\n // Narrow before coercion so native compilers see one representation at a time.\n const baseUrl = typeof base === 'string' ? base : String(base);\n return `${baseUrl}${baseUrl.endsWith('/') ? '' : '/'}${OIDN_MODEL_FILENAMES[model]}`;\n}\n\nexport function resolveOIDNAuxiliaryModelUrls(\n weightsBaseUrl: string | URL = DEFAULT_OIDN_WEIGHTS_PACKAGE_BASE_URL\n): OIDNAuxiliaryModelUrls {\n const baseUrl = typeof weightsBaseUrl === 'string' ? weightsBaseUrl : String(weightsBaseUrl);\n const prefix = `${baseUrl}${baseUrl.endsWith('/') ? '' : '/'}`;\n return {\n albedo: `${prefix}${OIDN_AUXILIARY_MODEL_FILENAMES.albedo}`,\n normal: `${prefix}${OIDN_AUXILIARY_MODEL_FILENAMES.normal}`\n };\n}\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const standardWeightsUrl = "https://cdn.jsdelivr.net/npm/@meimu/mutracer@0.
|
|
2
|
-
export declare const smallWeightsUrl = "https://cdn.jsdelivr.net/npm/@meimu/mutracer@0.
|
|
1
|
+
export declare const standardWeightsUrl = "https://cdn.jsdelivr.net/npm/@meimu/mutracer@0.3.0/oidn/weights/rt_hdr_alb_nrm.tza";
|
|
2
|
+
export declare const smallWeightsUrl = "https://cdn.jsdelivr.net/npm/@meimu/mutracer@0.3.0/oidn/weights/rt_hdr_alb_nrm_small.tza";
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { AovSceneSource } from './aovScene.js';
|
|
2
|
+
import type { FlattendBVH } from './bvhAccel.js';
|
|
3
|
+
/** Web AOV identity data is independent of camera, transforms and materials. */
|
|
4
|
+
export declare class AovPrimitiveCache {
|
|
5
|
+
private blases;
|
|
6
|
+
private parts;
|
|
7
|
+
private tlasRecords;
|
|
8
|
+
private combined?;
|
|
9
|
+
get(source: Pick<AovSceneSource, 'blases' | 'geometries'>, tlas: FlattendBVH): Uint32Array<ArrayBufferLike>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { AOV_BACKGROUND_ID } from './aov.js';
|
|
2
|
+
/** Web AOV identity data is independent of camera, transforms and materials. */
|
|
3
|
+
export class AovPrimitiveCache {
|
|
4
|
+
blases = new WeakMap();
|
|
5
|
+
parts = [];
|
|
6
|
+
tlasRecords = -1;
|
|
7
|
+
combined;
|
|
8
|
+
get(source, tlas) {
|
|
9
|
+
const parts = source.blases.map((blas, index) => {
|
|
10
|
+
const geometry = source.geometries[index], indices = geometry.indexArray;
|
|
11
|
+
const buffer = blas.bvh.buffer, triangleIds = blas.bvh.triangleIds;
|
|
12
|
+
const cached = this.blases.get(buffer);
|
|
13
|
+
if (cached && cached.geometry === geometry && cached.indices === indices &&
|
|
14
|
+
cached.topology === geometry.topologyVersion && cached.triangleIds === triangleIds)
|
|
15
|
+
return cached.ids;
|
|
16
|
+
const bvh = new Uint32Array(buffer), ids = new Uint32Array(bvh.length / 4).fill(AOV_BACKGROUND_ID);
|
|
17
|
+
const triangles = new Map();
|
|
18
|
+
for (let t = 0; t < indices.length / 3; t++)
|
|
19
|
+
triangles.set(`${indices[t * 3]},${indices[t * 3 + 1]},${indices[t * 3 + 2]}`, t);
|
|
20
|
+
for (let record = 0; record < ids.length; record++) {
|
|
21
|
+
const triangle = triangles.get(`${bvh[record * 4]},${bvh[record * 4 + 1]},${bvh[record * 4 + 2]}`);
|
|
22
|
+
if (triangle !== undefined)
|
|
23
|
+
ids[record] = triangle;
|
|
24
|
+
}
|
|
25
|
+
// Builder metadata distinguishes displaced/duplicate index triples.
|
|
26
|
+
if (triangleIds)
|
|
27
|
+
for (let i = 0; i < triangleIds.length; i += 2)
|
|
28
|
+
ids[triangleIds[i]] = triangleIds[i + 1];
|
|
29
|
+
this.blases.set(buffer, { geometry, indices, topology: geometry.topologyVersion, triangleIds, ids });
|
|
30
|
+
return ids;
|
|
31
|
+
});
|
|
32
|
+
const tlasRecords = tlas.buffer.byteLength / 16;
|
|
33
|
+
if (!this.combined || this.tlasRecords !== tlasRecords || parts.length !== this.parts.length ||
|
|
34
|
+
parts.some((part, i) => part !== this.parts[i])) {
|
|
35
|
+
const combined = new Uint32Array(tlasRecords + parts.reduce((count, part) => count + part.length, 0)).fill(AOV_BACKGROUND_ID);
|
|
36
|
+
let offset = tlasRecords;
|
|
37
|
+
for (const part of parts) {
|
|
38
|
+
combined.set(part, offset);
|
|
39
|
+
offset += part.length;
|
|
40
|
+
}
|
|
41
|
+
this.combined = combined;
|
|
42
|
+
this.parts = parts;
|
|
43
|
+
this.tlasRecords = tlasRecords;
|
|
44
|
+
}
|
|
45
|
+
return this.combined;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=AovPrimitiveCache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AovPrimitiveCache.js","sourceRoot":"","sources":["../../src/renderer/AovPrimitiveCache.ts"],"names":[],"mappings":"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","sourcesContent":["import type {AovSceneSource} from './aovScene.js';\nimport type {FlattendBVH} from './bvhAccel.js';\nimport type Geometry from '../scene/Geometry.js';\nimport {AOV_BACKGROUND_ID} from './aov.js';\n\n/** Web AOV identity data is independent of camera, transforms and materials. */\nexport class AovPrimitiveCache {\n private blases = new WeakMap<ArrayBuffer, {\n geometry: Geometry; indices: Uint16Array | Uint32Array; topology: number;\n triangleIds?: Uint32Array; ids: Uint32Array;\n }>();\n private parts: Uint32Array[] = [];\n private tlasRecords = -1;\n private combined?: Uint32Array;\n\n get(source: Pick<AovSceneSource, 'blases' | 'geometries'>, tlas: FlattendBVH) {\n const parts = source.blases.map((blas, index) => {\n const geometry = source.geometries[index], indices = geometry.indexArray;\n const buffer = blas.bvh.buffer, triangleIds = blas.bvh.triangleIds;\n const cached = this.blases.get(buffer);\n if (cached && cached.geometry === geometry && cached.indices === indices &&\n cached.topology === geometry.topologyVersion && cached.triangleIds === triangleIds) return cached.ids;\n const bvh = new Uint32Array(buffer), ids = new Uint32Array(bvh.length / 4).fill(AOV_BACKGROUND_ID);\n const triangles = new Map<string, number>();\n for (let t = 0; t < indices.length / 3; t++) triangles.set(`${indices[t*3]},${indices[t*3+1]},${indices[t*3+2]}`, t);\n for (let record = 0; record < ids.length; record++) {\n const triangle = triangles.get(`${bvh[record*4]},${bvh[record*4+1]},${bvh[record*4+2]}`);\n if (triangle !== undefined) ids[record] = triangle;\n }\n // Builder metadata distinguishes displaced/duplicate index triples.\n if (triangleIds) for (let i = 0; i < triangleIds.length; i += 2) ids[triangleIds[i]] = triangleIds[i+1];\n this.blases.set(buffer, {geometry, indices, topology: geometry.topologyVersion, triangleIds, ids});\n return ids;\n });\n const tlasRecords = tlas.buffer.byteLength / 16;\n if (!this.combined || this.tlasRecords !== tlasRecords || parts.length !== this.parts.length ||\n parts.some((part, i) => part !== this.parts[i])) {\n const combined = new Uint32Array(tlasRecords + parts.reduce((count, part) => count + part.length, 0)).fill(AOV_BACKGROUND_ID);\n let offset = tlasRecords;\n for (const part of parts) { combined.set(part, offset); offset += part.length; }\n this.combined = combined; this.parts = parts; this.tlasRecords = tlasRecords;\n }\n return this.combined;\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Box3.js","sourceRoot":"","sources":["../../src/renderer/Box3.ts"],"names":[],"mappings":"AACA,MAAM,OAAO,IAAI;IACf,GAAG,CAAe;IAClB,GAAG,CAAe;IAElB;QACE,IAAI,CAAC,GAAG,GAAG,IAAI,YAAY,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,GAAG,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjE,CAAC;CACF","sourcesContent":["\nexport class Box3 {\n min: Float64Array;\n max: Float64Array;\n\n constructor() {\n this.min = new Float64Array([Infinity, Infinity, Infinity]);\n this.max = new Float64Array([-Infinity, -Infinity, -Infinity]);\n }\n}\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Shared by resident targets so switching images cannot reset queued work. */
|
|
2
|
+
export declare class GPUTraceQueue {
|
|
3
|
+
private queue;
|
|
4
|
+
private pendingMs;
|
|
5
|
+
private pending;
|
|
6
|
+
constructor(queue: GPUQueue);
|
|
7
|
+
get hasPending(): boolean;
|
|
8
|
+
available(budgetMs: number): number;
|
|
9
|
+
whenAvailable(): Promise<boolean>;
|
|
10
|
+
track(estimatedMs: number): void;
|
|
11
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/** Shared by resident targets so switching images cannot reset queued work. */
|
|
2
|
+
export class GPUTraceQueue {
|
|
3
|
+
queue;
|
|
4
|
+
pendingMs = 0;
|
|
5
|
+
pending = new Set();
|
|
6
|
+
constructor(queue) {
|
|
7
|
+
this.queue = queue;
|
|
8
|
+
}
|
|
9
|
+
get hasPending() { return this.pending.size > 0; }
|
|
10
|
+
available(budgetMs) {
|
|
11
|
+
return Math.max(0, budgetMs - this.pendingMs);
|
|
12
|
+
}
|
|
13
|
+
whenAvailable() {
|
|
14
|
+
const pending = this.pending.values().next().value;
|
|
15
|
+
return pending ? pending.then(() => true) : Promise.resolve(false);
|
|
16
|
+
}
|
|
17
|
+
track(estimatedMs) {
|
|
18
|
+
this.pendingMs += estimatedMs;
|
|
19
|
+
// Fence each sample, rather than the entire batch: a later display tick can
|
|
20
|
+
// replace completed samples while the tail of the previous batch still runs.
|
|
21
|
+
const retire = () => {
|
|
22
|
+
this.pendingMs = Math.max(0, this.pendingMs - estimatedMs);
|
|
23
|
+
this.pending.delete(completion);
|
|
24
|
+
// Subtracting estimates leaves rounding residue. An empty queue must
|
|
25
|
+
// admit a sample as long as the budget, or nothing would wake it again.
|
|
26
|
+
if (!this.pending.size)
|
|
27
|
+
this.pendingMs = 0;
|
|
28
|
+
};
|
|
29
|
+
const completion = this.queue.onSubmittedWorkDone().then(retire, retire);
|
|
30
|
+
this.pending.add(completion);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=GPUTraceQueue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GPUTraceQueue.js","sourceRoot":"","sources":["../../src/renderer/GPUTraceQueue.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,MAAM,OAAO,aAAa;IAIJ;IAHZ,SAAS,GAAG,CAAC,CAAC;IACd,OAAO,GAAG,IAAI,GAAG,EAAiB,CAAC;IAE3C,YAAoB,KAAe;QAAf,UAAK,GAAL,KAAK,CAAU;IAAG,CAAC;IAEvC,IAAI,UAAU,KAAc,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;IAE3D,SAAS,CAAC,QAAgB;QACxB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;IAED,aAAa;QACX,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QACnD,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,WAAmB;QACvB,IAAI,CAAC,SAAS,IAAI,WAAW,CAAC;QAC9B,4EAA4E;QAC5E,6EAA6E;QAC7E,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC;YAC3D,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAChC,qEAAqE;YACrE,wEAAwE;YACxE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI;gBAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QAC7C,CAAC,CAAC;QACF,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC;CACF","sourcesContent":["/** Shared by resident targets so switching images cannot reset queued work. */\nexport class GPUTraceQueue {\n private pendingMs = 0;\n private pending = new Set<Promise<void>>();\n\n constructor(private queue: GPUQueue) {}\n\n get hasPending(): boolean { return this.pending.size > 0; }\n\n available(budgetMs: number): number {\n return Math.max(0, budgetMs - this.pendingMs);\n }\n\n whenAvailable(): Promise<boolean> {\n const pending = this.pending.values().next().value;\n return pending ? pending.then(() => true) : Promise.resolve(false);\n }\n\n track(estimatedMs: number): void {\n this.pendingMs += estimatedMs;\n // Fence each sample, rather than the entire batch: a later display tick can\n // replace completed samples while the tail of the previous batch still runs.\n const retire = () => {\n this.pendingMs = Math.max(0, this.pendingMs - estimatedMs);\n this.pending.delete(completion);\n // Subtracting estimates leaves rounding residue. An empty queue must\n // admit a sample as long as the budget, or nothing would wake it again.\n if (!this.pending.size) this.pendingMs = 0;\n };\n const completion = this.queue.onSubmittedWorkDone().then(retire, retire);\n this.pending.add(completion);\n }\n}\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type MaterialState from '../scene/MaterialState.js';
|
|
2
|
+
import type TextureState from '../scene/TextureState.js';
|
|
3
|
+
import { type MaterialTableOptions, type TextureAtlasPlan } from './textureAtlas.js';
|
|
4
|
+
import type { BufferData } from './materialBufferData.js';
|
|
5
|
+
export default class MaterialData {
|
|
6
|
+
bufferData: BufferData;
|
|
7
|
+
textures: TextureState[];
|
|
8
|
+
displacementMaps: TextureState[];
|
|
9
|
+
lightTexturesIndices: number[];
|
|
10
|
+
defines: Record<string, number>;
|
|
11
|
+
atlas: TextureAtlasPlan;
|
|
12
|
+
constructor(materials: MaterialState[], lightTextures: (TextureState | undefined)[], colorLinear: (texture: TextureState) => number, options?: MaterialTableOptions, floatStorage?: (texture: TextureState) => boolean);
|
|
13
|
+
repackParams(materials: MaterialState[]): void;
|
|
14
|
+
getBufferArray(): Float32Array<ArrayBufferLike>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { MATERIAL_TEXTURE_NAMES, MATERIAL_TEXTURE_SLOTS } from './materialTextureSlots.js';
|
|
2
|
+
import { mergeTexturesFromMaterials } from './materialTextures.js';
|
|
3
|
+
import { createMaterialBufferData, repackMaterialParams } from './materialParams.js';
|
|
4
|
+
import { packMaterialBuffer } from './materialLayout.js';
|
|
5
|
+
import { planTextureAtlas } from './textureAtlas.js';
|
|
6
|
+
// CPU material preparation shared by browser uploads and native command generation.
|
|
7
|
+
// The adapter describes source encoding; the core never decodes DOM/GPU resources.
|
|
8
|
+
export default class MaterialData {
|
|
9
|
+
bufferData;
|
|
10
|
+
textures;
|
|
11
|
+
displacementMaps;
|
|
12
|
+
lightTexturesIndices = [];
|
|
13
|
+
defines = {};
|
|
14
|
+
atlas;
|
|
15
|
+
constructor(materials, lightTextures, colorLinear, options = {}, floatStorage) {
|
|
16
|
+
const maps = mergeTexturesFromMaterials(materials, MATERIAL_TEXTURE_NAMES);
|
|
17
|
+
this.displacementMaps = maps.indices.displacementMap.map(index => maps.textures[index]).filter(texture => !!texture);
|
|
18
|
+
this.textures = maps.textures.slice();
|
|
19
|
+
for (const texture of lightTextures) {
|
|
20
|
+
if (texture) {
|
|
21
|
+
this.lightTexturesIndices.push(this.textures.length);
|
|
22
|
+
this.textures.push(texture);
|
|
23
|
+
}
|
|
24
|
+
else
|
|
25
|
+
this.lightTexturesIndices.push(-1);
|
|
26
|
+
}
|
|
27
|
+
this.bufferData = createMaterialBufferData(materials);
|
|
28
|
+
this.bufferData.diffuseMapIndex = maps.indices.map;
|
|
29
|
+
this.bufferData.alphaMapIndex = maps.indices.alphaMap;
|
|
30
|
+
this.bufferData.normalMapIndex = maps.indices.normalMap;
|
|
31
|
+
this.bufferData.emissiveMapIndex = maps.indices.emissiveMap;
|
|
32
|
+
this.bufferData.metallicRoughnessMapIndex = maps.indices.metallicRoughnessMap;
|
|
33
|
+
this.bufferData.roughnessMapIndex = maps.indices.roughnessMap;
|
|
34
|
+
this.bufferData.metalnessMapIndex = maps.indices.metalnessMap;
|
|
35
|
+
this.bufferData.transmissionMapIndex = maps.indices.transmissionMap;
|
|
36
|
+
this.bufferData.thinFilmMapIndex = maps.indices.thinFilmMap;
|
|
37
|
+
this.bufferData.displacementMapIndex = maps.indices.displacementMap;
|
|
38
|
+
this.bufferData.coatWeightMapIndex = maps.indices.coatWeightMap;
|
|
39
|
+
this.bufferData.coatRoughnessMapIndex = maps.indices.coatRoughnessMap;
|
|
40
|
+
this.bufferData.fuzzColorMapIndex = maps.indices.fuzzColorMap;
|
|
41
|
+
this.bufferData.fuzzRoughnessMapIndex = maps.indices.fuzzRoughnessMap;
|
|
42
|
+
this.bufferData.specularWeightMapIndex = maps.indices.specularWeightMap;
|
|
43
|
+
this.bufferData.specularColorMapIndex = maps.indices.specularColorMap;
|
|
44
|
+
this.bufferData.anisotropyMapIndex = maps.indices.anisotropyMap;
|
|
45
|
+
this.bufferData.coatNormalMapIndex = maps.indices.coatNormalMap;
|
|
46
|
+
this.atlas = planTextureAtlas(this.textures, this.textures.map(colorLinear), options, floatStorage ? this.textures.some(floatStorage) : undefined);
|
|
47
|
+
this.bufferData.mapInfo = this.atlas.mapInfo;
|
|
48
|
+
this.bufferData.mapTransform = this.atlas.mapTransform;
|
|
49
|
+
this.bufferData.mapWrap = this.atlas.mapWrap;
|
|
50
|
+
this.bufferData.mapUvChannel = this.atlas.mapUvChannel;
|
|
51
|
+
this.bufferData.mapColorLinear = this.atlas.mapColorLinear;
|
|
52
|
+
this.defines = { NUM_MAPS: this.textures.length };
|
|
53
|
+
for (const slot of MATERIAL_TEXTURE_SLOTS) {
|
|
54
|
+
if (slot.define)
|
|
55
|
+
this.defines[slot.define] = maps.indices[slot.property].filter(index => index >= 0).length;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
repackParams(materials) { repackMaterialParams(this.bufferData, materials); }
|
|
59
|
+
getBufferArray() { return packMaterialBuffer(this.bufferData); }
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=MaterialData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MaterialData.js","sourceRoot":"","sources":["../../src/renderer/MaterialData.ts"],"names":[],"mappings":"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","sourcesContent":["import type MaterialState from '../scene/MaterialState.js';\nimport type TextureState from '../scene/TextureState.js';\nimport { MATERIAL_TEXTURE_NAMES, MATERIAL_TEXTURE_SLOTS } from './materialTextureSlots.js';\nimport { mergeTexturesFromMaterials } from './materialTextures.js';\nimport { createMaterialBufferData, repackMaterialParams } from './materialParams.js';\nimport { packMaterialBuffer } from './materialLayout.js';\nimport { planTextureAtlas, type MaterialTableOptions, type TextureAtlasPlan } from './textureAtlas.js';\nimport type { BufferData } from './materialBufferData.js';\n\n// CPU material preparation shared by browser uploads and native command generation.\n// The adapter describes source encoding; the core never decodes DOM/GPU resources.\nexport default class MaterialData {\n bufferData: BufferData;\n textures: TextureState[];\n displacementMaps: TextureState[];\n lightTexturesIndices: number[] = [];\n defines: Record<string, number> = {};\n atlas: TextureAtlasPlan;\n constructor(materials: MaterialState[], lightTextures: (TextureState | undefined)[],\n colorLinear: (texture: TextureState) => number, options: MaterialTableOptions = {},\n floatStorage?: (texture: TextureState) => boolean) {\n const maps = mergeTexturesFromMaterials(materials, MATERIAL_TEXTURE_NAMES);\n this.displacementMaps = maps.indices.displacementMap.map(index => maps.textures[index]).filter(texture => !!texture);\n this.textures = maps.textures.slice();\n for (const texture of lightTextures) {\n if (texture) { this.lightTexturesIndices.push(this.textures.length); this.textures.push(texture); }\n else this.lightTexturesIndices.push(-1);\n }\n this.bufferData = createMaterialBufferData(materials);\n this.bufferData.diffuseMapIndex = maps.indices.map;\n this.bufferData.alphaMapIndex = maps.indices.alphaMap;\n this.bufferData.normalMapIndex = maps.indices.normalMap;\n this.bufferData.emissiveMapIndex = maps.indices.emissiveMap;\n this.bufferData.metallicRoughnessMapIndex = maps.indices.metallicRoughnessMap;\n this.bufferData.roughnessMapIndex = maps.indices.roughnessMap;\n this.bufferData.metalnessMapIndex = maps.indices.metalnessMap;\n this.bufferData.transmissionMapIndex = maps.indices.transmissionMap;\n this.bufferData.thinFilmMapIndex = maps.indices.thinFilmMap;\n this.bufferData.displacementMapIndex = maps.indices.displacementMap;\n this.bufferData.coatWeightMapIndex = maps.indices.coatWeightMap;\n this.bufferData.coatRoughnessMapIndex = maps.indices.coatRoughnessMap;\n this.bufferData.fuzzColorMapIndex = maps.indices.fuzzColorMap;\n this.bufferData.fuzzRoughnessMapIndex = maps.indices.fuzzRoughnessMap;\n this.bufferData.specularWeightMapIndex = maps.indices.specularWeightMap;\n this.bufferData.specularColorMapIndex = maps.indices.specularColorMap;\n this.bufferData.anisotropyMapIndex = maps.indices.anisotropyMap;\n this.bufferData.coatNormalMapIndex = maps.indices.coatNormalMap;\n this.atlas = planTextureAtlas(this.textures, this.textures.map(colorLinear), options,\n floatStorage ? this.textures.some(floatStorage) : undefined);\n this.bufferData.mapInfo = this.atlas.mapInfo; this.bufferData.mapTransform = this.atlas.mapTransform;\n this.bufferData.mapWrap = this.atlas.mapWrap;\n this.bufferData.mapUvChannel = this.atlas.mapUvChannel; this.bufferData.mapColorLinear = this.atlas.mapColorLinear;\n this.defines = {NUM_MAPS: this.textures.length};\n for (const slot of MATERIAL_TEXTURE_SLOTS) {\n if (slot.define) this.defines[slot.define] = maps.indices[slot.property].filter(index => index >= 0).length;\n }\n }\n repackParams(materials: MaterialState[]) { repackMaterialParams(this.bufferData, materials); }\n getBufferArray() { return packMaterialBuffer(this.bufferData); }\n}\n"]}
|