@meimu/mutracer 0.1.5 → 0.2.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 +7 -7
- package/THIRD_PARTY_NOTICES.md +13 -8
- package/dist/assets/bvh.worker.js +1 -1
- package/dist/mutracer.umd.js +10407 -8353
- package/docs/api.md +200 -10
- package/docs/denoising.md +30 -15
- package/docs/materials.md +1 -1
- package/docs/performance.md +5 -2
- package/docs/progressive-rendering.md +32 -1
- package/docs/threejs.md +14 -5
- package/docs/updates.md +44 -2
- package/docs/viewer.md +11 -6
- package/lib/Display.d.ts +13 -2
- package/lib/Display.js +27 -6
- package/lib/Display.js.map +1 -1
- package/lib/Engine.d.ts +2 -0
- package/lib/Engine.js +52 -25
- package/lib/Engine.js.map +1 -1
- package/lib/Render.d.ts +44 -9
- package/lib/Render.js +115 -17
- package/lib/Render.js.map +1 -1
- package/lib/RenderLoop.d.ts +7 -1
- package/lib/RenderLoop.js +94 -13
- 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 +10 -0
- package/lib/renderer/GPUTraceQueue.js +31 -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 +32 -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/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/WGPURayTraceOutput.js +26 -17
- package/lib/renderer/WGPURayTraceOutput.js.map +1 -1
- package/lib/renderer/WGPURayTracePass.d.ts +36 -40
- package/lib/renderer/WGPURayTracePass.js +399 -550
- package/lib/renderer/WGPURayTracePass.js.map +1 -1
- package/lib/renderer/WGPURenderingPipeline.d.ts +5 -3
- package/lib/renderer/WGPURenderingPipeline.js +239 -60
- 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 +5 -3
- package/lib/renderer/WebGLFullQuadPass.js +18 -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 +12 -2
- package/lib/renderer/WebGLRayTracePass.js +82 -7
- package/lib/renderer/WebGLRayTracePass.js.map +1 -1
- package/lib/renderer/WebGLRenderingPipeline.js +116 -8
- 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 +5 -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/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/envMap.glsl.js +80 -74
- package/lib/renderer/glsl/chunks/envMap.glsl.js.map +1 -1
- package/lib/renderer/glsl/chunks/intersect.glsl.js +429 -429
- package/lib/renderer/glsl/chunks/materialBuffer.glsl.js +144 -144
- package/lib/renderer/glsl/chunks/materialBuffer.glsl.js.map +1 -1
- package/lib/renderer/glsl/chunks/openPbrBsdf.glsl.js +801 -801
- 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.js +49 -49
- package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js.map +1 -1
- package/lib/renderer/glsl/chunks/sampleLight.glsl.js +80 -80
- package/lib/renderer/glsl/chunks/sampleMaterial.glsl.js +102 -102
- package/lib/renderer/glsl/chunks/sampleShadowCatcher.glsl.js +20 -17
- package/lib/renderer/glsl/chunks/sampleShadowCatcher.glsl.js.map +1 -1
- package/lib/renderer/glsl/chunks/sampling.glsl.js +93 -93
- 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.js +191 -191
- package/lib/renderer/glsl/shadowCatcher.frag.js +25 -20
- 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 +20 -17
- package/lib/renderer/lightSampling.js +123 -56
- 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 +3 -0
- package/lib/renderer/progressiveScheduler.js.map +1 -1
- package/lib/renderer/renderPipeline.d.ts +3 -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/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 +118 -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/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/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 +15 -0
- package/lib/renderer/wgpuShaderSource.js +31 -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/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 +43 -37
- 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 +742 -705
- 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 +3 -1
- package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js +84 -82
- 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 +139 -139
- package/lib/renderer/wgsl/chunks/rand.wgsl.js +3 -3
- package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.d.ts +2 -1
- package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.js +42 -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 -148
- package/lib/renderer/wgsl/chunks/sampleLight.wgsl.js.map +1 -1
- package/lib/renderer/wgsl/chunks/sampleMaterial.wgsl.js +239 -232
- 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 +26 -13
- package/lib/renderer/wgsl/chunks/sampleShadowCatcher.wgsl.js.map +1 -1
- package/lib/renderer/wgsl/chunks/sampling.wgsl.js +91 -91
- 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/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 +17 -1
- package/lib/renderer/wgsl/rayTrace.compute.js +612 -393
- 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 +25 -3
- package/lib/settings/render.js +3 -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 +18 -5
- 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 +4 -0
- package/package.json +31 -5
- package/lib/renderer/texturesFromMaterials.d.ts +0 -6
- package/lib/renderer/texturesFromMaterials.js.map +0 -1
|
@@ -4,71 +4,71 @@ export default glsl `
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
vec3
|
|
8
|
-
vec3
|
|
9
|
-
vec3
|
|
10
|
-
float
|
|
11
|
-
float
|
|
12
|
-
float
|
|
13
|
-
float
|
|
14
|
-
float
|
|
15
|
-
float
|
|
16
|
-
float
|
|
17
|
-
vec3
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
7
|
+
vec3 aD(vec3 view, vec2 alpha, vec2 samplePoint) {
|
|
8
|
+
vec3 sv = vec3(alpha, 1.0);
|
|
9
|
+
vec3 cr = normalize(sv * view);
|
|
10
|
+
float qP = min(cr.z, 1.0);
|
|
11
|
+
float kh = 1.0 + qP;
|
|
12
|
+
float kC = (1.0 - samplePoint.y) * kh;
|
|
13
|
+
float sU = samplePoint.y * kh;
|
|
14
|
+
float tY = kC + (1.0 - qP);
|
|
15
|
+
float ex = sqrt(max(0.0, tY * sU));
|
|
16
|
+
float azimuth = TWOPI * samplePoint.x;
|
|
17
|
+
vec3 mr = vec3(
|
|
18
|
+
cr.x + ex * cos(azimuth),
|
|
19
|
+
cr.y + ex * sin(azimuth),
|
|
20
|
+
kC
|
|
21
21
|
);
|
|
22
|
-
return normalize(
|
|
22
|
+
return normalize(sv * mr);
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
float
|
|
26
|
-
vec3
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
float cW(vec3 pf, vec2 alpha) {
|
|
26
|
+
vec3 hF = vec3(
|
|
27
|
+
pf.x / alpha.x,
|
|
28
|
+
pf.y / alpha.y,
|
|
29
|
+
pf.z
|
|
30
30
|
);
|
|
31
|
-
float
|
|
31
|
+
float aq = dot(hF, hF);
|
|
32
32
|
return 1.0 / (
|
|
33
|
-
PI * alpha.x * alpha.y *
|
|
33
|
+
PI * alpha.x * alpha.y * aq * aq
|
|
34
34
|
);
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
float
|
|
38
|
-
float
|
|
39
|
-
if (
|
|
37
|
+
float aF(vec3 direction, vec2 alpha) {
|
|
38
|
+
float eQ = abs(direction.z);
|
|
39
|
+
if (eQ <= 1e-8) {
|
|
40
40
|
return 0.0;
|
|
41
41
|
}
|
|
42
|
-
vec2
|
|
43
|
-
float
|
|
44
|
-
/ (
|
|
45
|
-
return 2.0 / (1.0 + sqrt(1.0 +
|
|
42
|
+
vec2 iE = alpha * direction.xy;
|
|
43
|
+
float mt = dot(iE, iE)
|
|
44
|
+
/ (eQ * eQ);
|
|
45
|
+
return 2.0 / (1.0 + sqrt(1.0 + mt));
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
float
|
|
49
|
-
float
|
|
50
|
-
return pow(
|
|
48
|
+
float aI(float cosine) {
|
|
49
|
+
float dw = clamp(1.0 - cosine, 0.0, 1.0);
|
|
50
|
+
return pow(dw, 5.0);
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
float
|
|
54
|
-
float
|
|
55
|
-
float
|
|
56
|
-
* max(0.0, 1.0 -
|
|
57
|
-
if (
|
|
53
|
+
float cC(float J, float cR) {
|
|
54
|
+
float iS = clamp(abs(J), 0.0, 1.0);
|
|
55
|
+
float kQ = cR * cR
|
|
56
|
+
* max(0.0, 1.0 - iS * iS);
|
|
57
|
+
if (kQ >= 1.0) {
|
|
58
58
|
return 1.0;
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
float
|
|
62
|
-
float
|
|
63
|
-
/ max(
|
|
64
|
-
float
|
|
65
|
-
/ max(
|
|
61
|
+
float mD = sqrt(max(0.0, 1.0 - kQ));
|
|
62
|
+
float bk = (iS - cR * mD)
|
|
63
|
+
/ max(iS + cR * mD, 1e-8);
|
|
64
|
+
float qC = (cR * iS - mD)
|
|
65
|
+
/ max(cR * iS + mD, 1e-8);
|
|
66
66
|
return 0.5 * (
|
|
67
|
-
|
|
67
|
+
bk * bk + qC * qC
|
|
68
68
|
);
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
vec2
|
|
71
|
+
vec2 gy(vec2 samplePoint) {
|
|
72
72
|
vec2 offset = 2.0 * samplePoint - vec2(1.0);
|
|
73
73
|
if (offset.x == 0.0 && offset.y == 0.0) {
|
|
74
74
|
return vec2(0.0);
|
|
@@ -87,108 +87,108 @@ angle = 0.5 * PI - 0.25 * PI * (offset.x / offset.y);
|
|
|
87
87
|
return radius * vec2(cos(angle), sin(angle));
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
-
vec3
|
|
91
|
-
vec2
|
|
90
|
+
vec3 aO(vec2 samplePoint) {
|
|
91
|
+
vec2 lk = gy(samplePoint);
|
|
92
92
|
return vec3(
|
|
93
|
-
|
|
94
|
-
sqrt(max(0.0, 1.0 - dot(
|
|
93
|
+
lk,
|
|
94
|
+
sqrt(max(0.0, 1.0 - dot(lk, lk)))
|
|
95
95
|
);
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
-
float
|
|
99
|
-
float scale = max(
|
|
98
|
+
float aK(float qo, float oJ) {
|
|
99
|
+
float scale = max(qo, oJ);
|
|
100
100
|
if (scale <= 0.0) {
|
|
101
101
|
return 0.0;
|
|
102
102
|
}
|
|
103
|
-
vec2 normalized = vec2(
|
|
104
|
-
vec2
|
|
105
|
-
return
|
|
103
|
+
vec2 normalized = vec2(qo, oJ) / scale;
|
|
104
|
+
vec2 pL = normalized * normalized;
|
|
105
|
+
return pL.x / (pL.x + pL.y);
|
|
106
106
|
}
|
|
107
107
|
|
|
108
|
-
void
|
|
109
|
-
float
|
|
110
|
-
float
|
|
111
|
-
float xy = normal.x * normal.y *
|
|
108
|
+
void aP(in vec3 normal, out vec3 tangent, out vec3 bitangent) {
|
|
109
|
+
float iI = normal.z >= 0.0 ? 1.0 : -1.0;
|
|
110
|
+
float cL = -1.0 / (iI + normal.z);
|
|
111
|
+
float xy = normal.x * normal.y * cL;
|
|
112
112
|
tangent = vec3(
|
|
113
|
-
1.0 +
|
|
114
|
-
|
|
115
|
-
-
|
|
113
|
+
1.0 + iI * normal.x * normal.x * cL,
|
|
114
|
+
iI * xy,
|
|
115
|
+
-iI * normal.x
|
|
116
116
|
);
|
|
117
117
|
bitangent = vec3(
|
|
118
118
|
xy,
|
|
119
|
-
|
|
119
|
+
iI + normal.y * normal.y * cL,
|
|
120
120
|
-normal.y
|
|
121
121
|
);
|
|
122
122
|
}
|
|
123
123
|
|
|
124
|
-
vec3
|
|
124
|
+
vec3 aj(vec3 rgb, float wavelength) {
|
|
125
125
|
if (wavelength == 0.0) {
|
|
126
126
|
return rgb;
|
|
127
127
|
}
|
|
128
|
-
vec3
|
|
128
|
+
vec3 vk = wavelength > 600.0
|
|
129
129
|
? vec3(1.0, 0.0, 0.0)
|
|
130
130
|
: wavelength > 500.0
|
|
131
131
|
? vec3(0.0, 1.0, 0.0)
|
|
132
132
|
: vec3(0.0, 0.0, 1.0);
|
|
133
|
-
return rgb *
|
|
133
|
+
return rgb * vk;
|
|
134
134
|
}
|
|
135
135
|
|
|
136
|
-
float
|
|
136
|
+
float ee(
|
|
137
137
|
float wavelength,
|
|
138
|
-
float
|
|
139
|
-
float
|
|
140
|
-
float
|
|
138
|
+
float hu,
|
|
139
|
+
float hD,
|
|
140
|
+
float rt
|
|
141
141
|
) {
|
|
142
|
-
if (wavelength == 0.0 ||
|
|
143
|
-
return
|
|
142
|
+
if (wavelength == 0.0 || hD <= 0.0) {
|
|
143
|
+
return hu;
|
|
144
144
|
}
|
|
145
145
|
|
|
146
146
|
const float FRAUNHOFER_C = 656.3;
|
|
147
147
|
const float FRAUNHOFER_D = 587.6;
|
|
148
148
|
const float FRAUNHOFER_F = 486.1;
|
|
149
|
-
float
|
|
149
|
+
float kv = 1.0 / (
|
|
150
150
|
1.0 / (FRAUNHOFER_F * FRAUNHOFER_F)
|
|
151
151
|
- 1.0 / (FRAUNHOFER_C * FRAUNHOFER_C)
|
|
152
152
|
);
|
|
153
|
-
float
|
|
154
|
-
float
|
|
155
|
-
float
|
|
156
|
-
-
|
|
157
|
-
return
|
|
153
|
+
float oe = max(rt / hD, 1e-6);
|
|
154
|
+
float rV = (hu - 1.0) * kv / oe;
|
|
155
|
+
float uK = hu
|
|
156
|
+
- rV / (FRAUNHOFER_D * FRAUNHOFER_D);
|
|
157
|
+
return uK + rV / (wavelength * wavelength);
|
|
158
158
|
}
|
|
159
159
|
|
|
160
|
-
vec3
|
|
161
|
-
vec3
|
|
160
|
+
vec3 fH(
|
|
161
|
+
vec3 gO,
|
|
162
162
|
float anisotropy,
|
|
163
163
|
vec2 samplePoint
|
|
164
164
|
) {
|
|
165
|
-
float
|
|
165
|
+
float cosine;
|
|
166
166
|
if (abs(anisotropy) < 0.001) {
|
|
167
|
-
|
|
167
|
+
cosine = 1.0 - 2.0 * samplePoint.y;
|
|
168
168
|
}
|
|
169
169
|
else {
|
|
170
|
-
float
|
|
170
|
+
float ju = (1.0 - anisotropy * anisotropy)
|
|
171
171
|
/ (1.0 + anisotropy - 2.0 * anisotropy * samplePoint.y);
|
|
172
|
-
|
|
173
|
-
|
|
172
|
+
cosine = (
|
|
173
|
+
ju * ju - 1.0 - anisotropy * anisotropy
|
|
174
174
|
) / (2.0 * anisotropy);
|
|
175
175
|
}
|
|
176
176
|
|
|
177
|
-
float
|
|
178
|
-
float
|
|
177
|
+
float vF = sqrt(max(0.0, 1.0 - cosine * cosine));
|
|
178
|
+
float azimuth = TWOPI * samplePoint.x;
|
|
179
179
|
vec3 tangent;
|
|
180
180
|
vec3 bitangent;
|
|
181
|
-
|
|
182
|
-
return tangent * (
|
|
183
|
-
+ bitangent * (
|
|
184
|
-
+
|
|
181
|
+
aP(gO, tangent, bitangent);
|
|
182
|
+
return tangent * (vF * cos(azimuth))
|
|
183
|
+
+ bitangent * (vF * sin(azimuth))
|
|
184
|
+
+ gO * cosine;
|
|
185
185
|
}
|
|
186
186
|
|
|
187
|
-
float
|
|
188
|
-
float
|
|
189
|
-
+ 2.0 * anisotropy *
|
|
187
|
+
float bL(float cosine, float anisotropy) {
|
|
188
|
+
float aq = 1.0 + anisotropy * anisotropy
|
|
189
|
+
+ 2.0 * anisotropy * cosine;
|
|
190
190
|
return INV4PI * (1.0 - anisotropy * anisotropy)
|
|
191
|
-
/ (
|
|
191
|
+
/ (aq * sqrt(aq));
|
|
192
192
|
}
|
|
193
193
|
`;
|
|
194
194
|
//# sourceMappingURL=sampling.glsl.js.map
|
|
@@ -24,41 +24,41 @@ const uint BOUNCE_STRIDE = 64u;
|
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
|
|
27
|
-
uvec2
|
|
28
|
-
uint
|
|
29
|
-
uint
|
|
30
|
-
uint
|
|
31
|
-
uint
|
|
32
|
-
uint x =
|
|
27
|
+
uvec2 aZ;
|
|
28
|
+
uint aQ;
|
|
29
|
+
uint bT = 0u;
|
|
30
|
+
uint cP = 0u;
|
|
31
|
+
uint dG(uint kW) {
|
|
32
|
+
uint x = kW;
|
|
33
33
|
x ^= x >> 16u; x *= 0x7feb352du;
|
|
34
34
|
x ^= x >> 15u; x *= 0x846ca68bu;
|
|
35
35
|
return x ^ (x >> 16u);
|
|
36
36
|
}
|
|
37
|
-
uint
|
|
38
|
-
return
|
|
37
|
+
uint ar(uint a, uint b) {
|
|
38
|
+
return dG(a ^ dG(b + 0x9e3779b9u));
|
|
39
39
|
}
|
|
40
|
-
uint
|
|
41
|
-
uint x =
|
|
40
|
+
uint iV(uint kW, uint seed) {
|
|
41
|
+
uint x = kW + seed;
|
|
42
42
|
x ^= x * 0x6c50b47cu; x ^= x * 0xb82f1e52u;
|
|
43
43
|
x ^= x * 0xc7afe638u; x ^= x * 0x8d22f6e6u;
|
|
44
44
|
return x;
|
|
45
45
|
}
|
|
46
|
-
uint
|
|
47
|
-
return reverseBits(
|
|
46
|
+
uint ua(uint x, uint seed) {
|
|
47
|
+
return reverseBits(iV(reverseBits(x), seed));
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
uint
|
|
51
|
-
uint r = reverseBits(
|
|
50
|
+
uint su(uint kW) {
|
|
51
|
+
uint r = reverseBits(kW);
|
|
52
52
|
${sobolD1Steps.map(([shift, mask]) => `r ^= (r << ${shift}u) & 0x${mask.toString(16)}u;`).join("\n ")}
|
|
53
53
|
return r;
|
|
54
54
|
}
|
|
55
|
-
vec2
|
|
56
|
-
uint i =
|
|
57
|
-
uint x = reverseBits(
|
|
58
|
-
uint y =
|
|
55
|
+
vec2 xE(uint index, uint seed) {
|
|
56
|
+
uint i = ua(index, ar(seed, 0u));
|
|
57
|
+
uint x = reverseBits(iV(i, ar(seed, 1u)));
|
|
58
|
+
uint y = ua(su(i), ar(seed, 2u));
|
|
59
59
|
return vec2(float(x >> 8u), float(y >> 8u)) * (1.0 / 16777216.0);
|
|
60
60
|
}
|
|
61
|
-
uint
|
|
61
|
+
uint uR(uvec2 p) {
|
|
62
62
|
uvec2 v = p & uvec2(255u);
|
|
63
63
|
v = (v | (v << uvec2(4u))) & uvec2(0x0f0fu);
|
|
64
64
|
v = (v | (v << uvec2(2u))) & uvec2(0x3333u);
|
|
@@ -66,104 +66,104 @@ v = (v | (v << uvec2(1u))) & uvec2(0x5555u);
|
|
|
66
66
|
return v.x | (v.y << 1u);
|
|
67
67
|
}
|
|
68
68
|
${zSobolPackedPermutations.map((v, i) => `const uint Z_PERM_${i} = ${v}u;`).join("\n")}
|
|
69
|
-
uint
|
|
70
|
-
uint group =
|
|
69
|
+
uint la(uint uU) {
|
|
70
|
+
uint group = uU >> 2u;
|
|
71
71
|
uint word = Z_PERM_5;
|
|
72
72
|
${[0, 1, 2, 3, 4].map(i => `word = group == ${i}u ? Z_PERM_${i} : word;`).join("\n ")}
|
|
73
|
-
return (word >> ((
|
|
73
|
+
return (word >> ((uU & 3u) * 8u)) & 255u;
|
|
74
74
|
}
|
|
75
|
-
uint
|
|
75
|
+
uint qS(uint lu, uint dim, uint logSPP) {
|
|
76
76
|
uint odd = logSPP & 1u;
|
|
77
|
-
uint
|
|
77
|
+
uint vN = 8u + ((logSPP + 1u) >> 1u);
|
|
78
78
|
uint result = 0u;
|
|
79
|
-
for (int digit = int(
|
|
79
|
+
for (int digit = int(vN) - 1; digit >= int(odd); digit--) {
|
|
80
80
|
uint shift = 2u*uint(digit) - odd;
|
|
81
81
|
|
|
82
|
-
uint
|
|
83
|
-
if (shift < 30u) {
|
|
84
|
-
uint
|
|
85
|
-
uint d = (
|
|
86
|
-
result |= ((
|
|
82
|
+
uint tL = 0u;
|
|
83
|
+
if (shift < 30u) { tL = lu >> (shift + 2u); }
|
|
84
|
+
uint uU = (dG(tL ^ (0x55555555u * dim)) >> 24u) % 24u;
|
|
85
|
+
uint d = (lu >> shift) & 3u;
|
|
86
|
+
result |= ((la(uU) >> (2u*d)) & 3u) << shift;
|
|
87
87
|
}
|
|
88
88
|
if (odd != 0u) {
|
|
89
|
-
result |= (
|
|
89
|
+
result |= (lu & 1u) ^ (dG((lu >> 1u) ^ (0x55555555u * dim)) & 1u);
|
|
90
90
|
}
|
|
91
91
|
return result;
|
|
92
92
|
}
|
|
93
93
|
|
|
94
94
|
|
|
95
95
|
|
|
96
|
-
uint
|
|
97
|
-
return CAMERA_BEVEL_BASE + uint(BEVEL_SAMPLES) +
|
|
96
|
+
uint cE(uint slot) {
|
|
97
|
+
return CAMERA_BEVEL_BASE + uint(BEVEL_SAMPLES) + bT * BOUNCE_STRIDE + slot;
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
-
uvec4
|
|
101
|
-
uint
|
|
102
|
-
bool
|
|
103
|
-
bool
|
|
104
|
-
uint
|
|
105
|
-
uint
|
|
106
|
-
vec2
|
|
107
|
-
void
|
|
100
|
+
uvec4 hA;
|
|
101
|
+
uint hB;
|
|
102
|
+
bool fQ = false;
|
|
103
|
+
bool dv = false;
|
|
104
|
+
uint dQ;
|
|
105
|
+
uint gK;
|
|
106
|
+
vec2 fa;
|
|
107
|
+
void dN(uint dim) {
|
|
108
108
|
|
|
109
|
-
uint
|
|
110
|
-
uvec4 key = uvec4(dim,
|
|
111
|
-
if (
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
uint
|
|
115
|
-
uint index =
|
|
109
|
+
uint kI = aZ.x + aZ.y * uint(round(1.0 / pixelSize.x));
|
|
110
|
+
uvec4 key = uvec4(dim, aQ, kI, uint(sequenceSeed));
|
|
111
|
+
if (fQ && all(equal(hA, key)) && hB == uint(zSobolLogSPP)) { return; }
|
|
112
|
+
hA = key; hB = uint(zSobolLogSPP);
|
|
113
|
+
fQ = true; dv = false;
|
|
114
|
+
uint seed = ar(ar(kI, dim), uint(sequenceSeed));
|
|
115
|
+
uint index = aQ;
|
|
116
116
|
if (samplingPattern == 1) {
|
|
117
117
|
uint logSPP = uint(zSobolLogSPP);
|
|
118
118
|
if (index == 0u) { logSPP = 0u; }
|
|
119
119
|
else { index -= 1u; }
|
|
120
120
|
|
|
121
|
-
uint
|
|
121
|
+
uint jw = index >> logSPP;
|
|
122
122
|
uint mask = (1u << logSPP) - 1u;
|
|
123
|
-
uint
|
|
124
|
-
index =
|
|
125
|
-
uvec2 tile =
|
|
126
|
-
|
|
123
|
+
uint lu = (uR(aZ) << logSPP) | (index & mask);
|
|
124
|
+
index = qS(lu, dim, logSPP);
|
|
125
|
+
uvec2 tile = aZ >> uvec2(8u);
|
|
126
|
+
seed = ar(ar(dim, uint(sequenceSeed)), ar(tile.x, tile.y));
|
|
127
127
|
|
|
128
|
-
if (
|
|
129
|
-
|
|
128
|
+
if (aQ != 0u) { jw += 1u; }
|
|
129
|
+
seed = ar(seed, jw);
|
|
130
130
|
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
uint x = reverseBits(
|
|
134
|
-
|
|
131
|
+
dQ = ua(index, ar(seed, 0u));
|
|
132
|
+
gK = seed;
|
|
133
|
+
uint x = reverseBits(iV(dQ, ar(seed, 1u)));
|
|
134
|
+
fa.x = float(x >> 8u) * (1.0 / 16777216.0);
|
|
135
135
|
}
|
|
136
|
-
vec2
|
|
137
|
-
|
|
138
|
-
if (!
|
|
139
|
-
uint y =
|
|
140
|
-
|
|
141
|
-
|
|
136
|
+
vec2 lC(uint dim) {
|
|
137
|
+
dN(dim);
|
|
138
|
+
if (!dv) {
|
|
139
|
+
uint y = ua(su(dQ), ar(gK, 2u));
|
|
140
|
+
fa.y = float(y >> 8u) * (1.0 / 16777216.0);
|
|
141
|
+
dv = true;
|
|
142
142
|
}
|
|
143
|
-
return EPS + (1.0 - 2.0*EPS) *
|
|
143
|
+
return EPS + (1.0 - 2.0*EPS) * fa;
|
|
144
144
|
}
|
|
145
|
-
float
|
|
145
|
+
float dp(uint dim) {
|
|
146
146
|
if (samplingPattern == 2) { return EPS + (1.0 - 2.0*EPS)*rand(); }
|
|
147
|
-
|
|
148
|
-
return EPS + (1.0 - 2.0*EPS) *
|
|
147
|
+
dN(dim);
|
|
148
|
+
return EPS + (1.0 - 2.0*EPS) * fa.x;
|
|
149
149
|
}
|
|
150
|
-
vec2
|
|
150
|
+
vec2 dZ(uint dim) {
|
|
151
151
|
if (samplingPattern == 2) {
|
|
152
|
-
float x =
|
|
152
|
+
float x = dp(dim); float y = dp(dim);
|
|
153
153
|
return vec2(x,y);
|
|
154
154
|
}
|
|
155
|
-
return
|
|
155
|
+
return lC(dim);
|
|
156
156
|
}
|
|
157
157
|
|
|
158
|
-
float
|
|
159
|
-
uint dim =
|
|
160
|
-
|
|
158
|
+
float eC(uint slot) {
|
|
159
|
+
uint dim = ar(ar(bT, slot), cP) | 0x80000000u;
|
|
160
|
+
cP += 1u;
|
|
161
161
|
if (samplingPattern == 2) { return EPS + (1.0 - 2.0*EPS)*rand(); }
|
|
162
162
|
|
|
163
|
-
uint
|
|
164
|
-
uint
|
|
165
|
-
uint i =
|
|
166
|
-
uint x = reverseBits(
|
|
163
|
+
uint kI = aZ.x + aZ.y * uint(round(1.0 / pixelSize.x));
|
|
164
|
+
uint seed = ar(ar(kI, dim), uint(sequenceSeed));
|
|
165
|
+
uint i = ua(aQ, ar(seed, 0u));
|
|
166
|
+
uint x = reverseBits(iV(i, ar(seed, 1u)));
|
|
167
167
|
return EPS + (1.0 - 2.0*EPS) * (float(x >> 8u) * (1.0 / 16777216.0));
|
|
168
168
|
}
|
|
169
169
|
`;
|
|
@@ -9,16 +9,16 @@ vec4 textureLinear(sampler2D map, vec2 uv) {
|
|
|
9
9
|
return texture(map, uv);
|
|
10
10
|
#else
|
|
11
11
|
vec2 size = vec2(textureSize(map, 0));
|
|
12
|
-
vec2
|
|
12
|
+
vec2 qX = 1.0 / size;
|
|
13
13
|
|
|
14
14
|
uv = uv * size - 0.5;
|
|
15
15
|
vec2 f = fract(uv);
|
|
16
16
|
uv = floor(uv) + 0.5;
|
|
17
17
|
|
|
18
|
-
vec4 s1 = texture(map, (uv + vec2(0, 0)) *
|
|
19
|
-
vec4 s2 = texture(map, (uv + vec2(1, 0)) *
|
|
20
|
-
vec4 s3 = texture(map, (uv + vec2(0, 1)) *
|
|
21
|
-
vec4 s4 = texture(map, (uv + vec2(1, 1)) *
|
|
18
|
+
vec4 s1 = texture(map, (uv + vec2(0, 0)) * qX);
|
|
19
|
+
vec4 s2 = texture(map, (uv + vec2(1, 0)) * qX);
|
|
20
|
+
vec4 s3 = texture(map, (uv + vec2(0, 1)) * qX);
|
|
21
|
+
vec4 s4 = texture(map, (uv + vec2(1, 1)) * qX);
|
|
22
22
|
|
|
23
23
|
return mix(mix(s1, s2, f.x), mix(s3, s4, f.x), f.y);
|
|
24
24
|
#endif
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { glsl } from '../../shader.js';
|
|
2
|
-
import { uvProjectionConstants } from '../../
|
|
2
|
+
import { uvProjectionConstants } from '../../materialConstants.js';
|
|
3
3
|
export default glsl `
|
|
4
4
|
vec2 sphericalProjection(vec3 pos) {
|
|
5
5
|
vec3 n = normalize(pos);
|
|
@@ -8,12 +8,12 @@ float phi = acos(n.y) / PI;
|
|
|
8
8
|
return vec2(theta, 1.0 - phi);
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
vec2
|
|
12
|
-
vec3
|
|
11
|
+
vec2 jh(vec3 pos, vec3 normal, vec2 uvScale) {
|
|
12
|
+
vec3 dI = abs(normal);
|
|
13
13
|
vec2 uv = vec2(0.0);
|
|
14
|
-
if (
|
|
14
|
+
if (dI.x > dI.y && dI.x > dI.z) {
|
|
15
15
|
uv = pos.yz;
|
|
16
|
-
} else if (
|
|
16
|
+
} else if (dI.y > dI.x && dI.y > dI.z) {
|
|
17
17
|
uv = pos.xz;
|
|
18
18
|
} else {
|
|
19
19
|
uv = pos.xy;
|
|
@@ -53,18 +53,18 @@ return fract(uv * uvScale);
|
|
|
53
53
|
|
|
54
54
|
|
|
55
55
|
|
|
56
|
-
vec2
|
|
56
|
+
vec2 hT(vec3 pos, vec3 normal) {
|
|
57
57
|
float theta = atan(pos.z, pos.x) / (2.0 * PI) + 0.5;
|
|
58
58
|
return vec2(theta, pos.y);
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
vec2
|
|
62
|
-
if (
|
|
63
|
-
return
|
|
64
|
-
} else if (
|
|
61
|
+
vec2 gU(int fE, vec3 pos, vec3 normal, vec2 uvScale) {
|
|
62
|
+
if (fE == ${uvProjectionConstants.triplanar + ''}) {
|
|
63
|
+
return jh(pos, normal, uvScale);
|
|
64
|
+
} else if (fE == ${uvProjectionConstants.spherical + ''}) {
|
|
65
65
|
return sphericalProjection(pos) * uvScale;
|
|
66
|
-
} else if (
|
|
67
|
-
return
|
|
66
|
+
} else if (fE == ${uvProjectionConstants.cylindrical + ''}) {
|
|
67
|
+
return hT(pos, normal) * uvScale;
|
|
68
68
|
}
|
|
69
69
|
return vec2(0.0);
|
|
70
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uvProjection.glsl.js","sourceRoot":"","sources":["../../../../src/renderer/glsl/chunks/uvProjection.glsl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"uvProjection.glsl.js","sourceRoot":"","sources":["../../../../src/renderer/glsl/chunks/uvProjection.glsl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,eAAe,IAAI,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YA2DO,qBAAqB,CAAC,SAAS,GAAG,EAAE;;mBAE7B,qBAAqB,CAAC,SAAS,GAAG,EAAE;;mBAEpC,qBAAqB,CAAC,WAAW,GAAG,EAAE;;;;;CAKtE,CAAC","sourcesContent":["import { glsl } from '../../shader.js';\nimport { uvProjectionConstants } from '../../materialConstants.js';\n\nexport default glsl`\nvec2 sphericalProjection(vec3 pos) {\n vec3 n = normalize(pos);\n float theta = atan(n.x, n.z) / (2.0 * PI) + 0.5;\n float phi = acos(n.y) / PI;\n return vec2(theta, 1.0 - phi);\n}\n\nvec2 triplanarProjection(vec3 pos, vec3 normal, vec2 uvScale) {\n vec3 absNormal = abs(normal);\n vec2 uv = vec2(0.0);\n if (absNormal.x > absNormal.y && absNormal.x > absNormal.z) {\n uv = pos.yz;\n } else if (absNormal.y > absNormal.x && absNormal.y > absNormal.z) {\n uv = pos.xz;\n } else {\n uv = pos.xy;\n }\n return fract(uv * uvScale);\n}\n\n// vec4 triplanarProjectionSample(\n// sampler2DArray _map, vec2 mapSize, int index,\n// vec3 pos, vec3 normal, vec2 uvScale, float blending\n// ) {\n// vec3 absNormal = abs(normal);\n// // Calculate blending power - higher expo means sharper transitions\n// float expo = (1.0 - blending) * 125.0 + blending * 3.0;\n \n// // Weight each axis by its normal component raised to expo power\n// vec3 weights = pow(absNormal, vec3(expo));\n \n// // Normalize weights so they sum to 1\n// weights = weights / (weights.x + weights.y + weights.z);\n \n// // Project UVs on each axis plane (yz, xz, xy)\n// vec2 yzPlane = pos.yz * uvScale;\n// vec2 xzPlane = pos.xz * uvScale;\n// vec2 xyPlane = pos.xy * uvScale;\n// // Wrap\n// yzPlane = fract(yzPlane);\n// xzPlane = fract(xzPlane);\n// xyPlane = fract(xyPlane);\n\n// // Sample maps\n// vec4 yz = texture(_map, vec3(yzPlane * mapSize, float(index)));\n// vec4 xz = texture(_map, vec3(xzPlane * mapSize, float(index)));\n// vec4 xy = texture(_map, vec3(xyPlane * mapSize, float(index)));\n \n// // Blend the projected coordinates using the weights\n// return weights.x * yz + weights.y * xz + weights.z * xy;\n// }\n\nvec2 cylindricalProjection(vec3 pos, vec3 normal) {\n float theta = atan(pos.z, pos.x) / (2.0 * PI) + 0.5;\n return vec2(theta, pos.y);\n}\n\nvec2 projectUV(int projectionType, vec3 pos, vec3 normal, vec2 uvScale) {\n if (projectionType == ${uvProjectionConstants.triplanar + ''}) {\n return triplanarProjection(pos, normal, uvScale);\n } else if (projectionType == ${uvProjectionConstants.spherical + ''}) {\n return sphericalProjection(pos) * uvScale;\n } else if (projectionType == ${uvProjectionConstants.cylindrical + ''}) {\n return cylindricalProjection(pos, normal) * uvScale;\n }\n return vec2(0.0);\n}\n`;\n"]}
|
|
@@ -33,18 +33,18 @@ if (any(lessThan(uv, vec2(0.0))) || any(greaterThan(uv, vec2(1.0)))) return;
|
|
|
33
33
|
vec4 origin = viewProjectionInv * vec4(uv * 2.0 - 1.0, -1.0, 1.0);
|
|
34
34
|
vec4 target = viewProjectionInv * vec4(uv * 2.0 - 1.0, 1.0, 1.0);
|
|
35
35
|
Ray ray;
|
|
36
|
-
|
|
36
|
+
gC(ray, origin.xyz / origin.w, normalize(target.xyz * origin.w - origin.xyz * target.w));
|
|
37
37
|
vec3 eye = viewInv[3].xyz;
|
|
38
|
-
vec3
|
|
39
|
-
|
|
38
|
+
vec3 forward = -normalize(viewInv[2].xyz);
|
|
39
|
+
SurfaceInteraction si;
|
|
40
40
|
si.triangleIndex = -1;
|
|
41
41
|
for (int layer = 0; layer < 32; layer++) {
|
|
42
|
-
|
|
42
|
+
intersectScene(ray, si, false);
|
|
43
43
|
if (!si.hit) return;
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
OpenPbrResolvedMaterial material;
|
|
45
|
+
dg(material, si.materialIndex, si.uv, si.uv1, si.instanceIndex, si.vertexColor);
|
|
46
46
|
if (material.materialType != SHADOW_CATCHER && material.alpha > 0.0) {
|
|
47
|
-
out_depth.r = max(dot(si.position - eye,
|
|
47
|
+
out_depth.r = max(dot(si.position - eye, forward), 0.0);
|
|
48
48
|
return;
|
|
49
49
|
}
|
|
50
50
|
ray.o = si.position + ray.d * (EPS * 0.02);
|
|
@@ -10,28 +10,36 @@ const normalizeRayTraceOutput = new FragmentShader({
|
|
|
10
10
|
albedoTex: Shader.uniform('sampler2D'),
|
|
11
11
|
normalTex: Shader.uniform('sampler2D'),
|
|
12
12
|
shadowCatcherTex: Shader.uniform('sampler2D'),
|
|
13
|
+
catcherMomentsTex: Shader.uniform('sampler2D'),
|
|
13
14
|
sampleCount: Shader.uniform('float', 1),
|
|
14
15
|
lightScale: Shader.uniform('vec2', [1, 1])
|
|
15
16
|
},
|
|
16
17
|
main: glsl `
|
|
17
18
|
void main() {
|
|
18
19
|
vec2 uv = lightScale * v_Texcoord;
|
|
19
|
-
vec4
|
|
20
|
-
float hit =
|
|
21
|
-
vec4
|
|
20
|
+
vec4 tb = sample_albedoTex(uv);
|
|
21
|
+
float hit = tb.a;
|
|
22
|
+
vec4 tf = sample_normalTex(uv);
|
|
22
23
|
|
|
23
24
|
|
|
24
25
|
|
|
25
|
-
float
|
|
26
|
-
vec3 albedo =
|
|
27
|
-
vec3 normal =
|
|
28
|
-
vec4 shadowCatcher= sample_shadowCatcherTex(uv)
|
|
29
|
-
vec4 sB = sample_colorTex(uv);
|
|
26
|
+
float tK = max(tf.a, 1.0);
|
|
27
|
+
vec3 albedo = tb.rgb / tK;
|
|
28
|
+
vec3 normal = tf.rgb / tK;
|
|
29
|
+
vec4 shadowCatcher = sample_shadowCatcherTex(uv);
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
|
|
33
|
+
float tj = sample_catcherMomentsTex(uv).w;
|
|
34
|
+
float opacity = tj > 0.0 ? shadowCatcher.a / tj : 0.0;
|
|
35
|
+
shadowCatcher /= sampleCount;
|
|
36
|
+
shadowCatcher.a = 1.0 - shadowCatcher.r * opacity;
|
|
37
|
+
vec4 tQ = sample_colorTex(uv);
|
|
33
38
|
|
|
34
|
-
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
vec4 light = vec4(tQ.rgb / (hit > 0.0 ? hit : sampleCount), tQ.a / sampleCount);
|
|
35
43
|
|
|
36
44
|
|
|
37
45
|
|