@meimu/mutracer 0.1.4 → 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 +10421 -8363
- package/docs/api.md +202 -11
- package/docs/denoising.md +30 -15
- package/docs/materials.md +18 -27
- package/docs/performance.md +5 -2
- package/docs/progressive-rendering.md +32 -1
- package/docs/threejs.md +19 -10
- package/docs/updates.md +44 -2
- package/docs/viewer.md +41 -3
- 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 -548
- 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 +83 -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 +437 -435
- package/lib/renderer/glsl/chunks/intersect.glsl.js.map +1 -1
- package/lib/renderer/glsl/chunks/materialBuffer.glsl.js +146 -145
- package/lib/renderer/glsl/chunks/materialBuffer.glsl.js.map +1 -1
- package/lib/renderer/glsl/chunks/openPbrBsdf.glsl.js +821 -821
- package/lib/renderer/glsl/chunks/openPbrBsdf.glsl.js.map +1 -1
- 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 +51 -51
- 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 +108 -108
- package/lib/renderer/glsl/chunks/sampleMaterial.glsl.js.map +1 -1
- 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 +743 -706
- 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 +86 -83
- 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 +7 -169
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalizeRayTraceOutput.frag.js","sourceRoot":"","sources":["../../../src/renderer/glsl/normalizeRayTraceOutput.frag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE5D;;GAEG;AACH,MAAM,uBAAuB,GAAG,IAAI,cAAc,CAAC;IACjD,IAAI,EAAE,yBAAyB;IAC/B,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,CAAC;IAEvD,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;QACrC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;QACtC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;QACtC,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"normalizeRayTraceOutput.frag.js","sourceRoot":"","sources":["../../../src/renderer/glsl/normalizeRayTraceOutput.frag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE5D;;GAEG;AACH,MAAM,uBAAuB,GAAG,IAAI,cAAc,CAAC;IACjD,IAAI,EAAE,yBAAyB;IAC/B,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,CAAC;IAEvD,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;QACrC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;QACtC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;QACtC,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;QAC7C,iBAAiB,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;QAE9C,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACvC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC3C;IAED,IAAI,EAAE,IAAI,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkCT;CACF,CAAC,CAAC;AAEH,eAAe,uBAAuB,CAAC","sourcesContent":["import { FragmentShader, glsl, Shader } from '../shader.js';\n\n/**\n * Normalize\n */\nconst normalizeRayTraceOutput = new FragmentShader({\n name: 'normalizeRayTraceOutput',\n outputs: ['color', 'albedo', 'normal', 'shadowCatcher'],\n\n uniforms: {\n colorTex: Shader.uniform('sampler2D'),\n albedoTex: Shader.uniform('sampler2D'),\n normalTex: Shader.uniform('sampler2D'),\n shadowCatcherTex: Shader.uniform('sampler2D'),\n catcherMomentsTex: Shader.uniform('sampler2D'),\n\n sampleCount: Shader.uniform('float', 1),\n lightScale: Shader.uniform('vec2', [1, 1])\n },\n\n main: glsl`\nvoid main() {\n vec2 uv = lightScale * v_Texcoord;\n vec4 albedoTexel = sample_albedoTex(uv);\n float hit = albedoTexel.a;\n vec4 normalTexel = sample_normalTex(uv);\n // Spectral WebGL rendering submits three additive wavelength passes per\n // sample. Normalize auxiliary guides by their actual contribution count,\n // not the logical sample count, or they saturate before denoising.\n float guideCount = max(normalTexel.a, 1.0);\n vec3 albedo = albedoTexel.rgb / guideCount;\n vec3 normal = normalTexel.rgb / guideCount;\n vec4 shadowCatcher = sample_shadowCatcherTex(uv);\n // Alpha sums occluded light samples and catcherMoments.w all valid ones.\n // Their ratio is the shadow opacity of catcher samples; the output alpha\n // keeps the visibility convention of non-catcher samples counting as 1.\n float sampleTotal = sample_catcherMomentsTex(uv).w;\n float opacity = sampleTotal > 0.0 ? shadowCatcher.a / sampleTotal : 0.0;\n shadowCatcher /= sampleCount;\n shadowCatcher.a = 1.0 - shadowCatcher.r * opacity;\n vec4 lightTexel = sample_colorTex(uv);\n // vec2 hit = sample_hitTex(uv).rg;\n // average the color by hit count.\n // So the antialised edge color will be correct when having transparent background\n // TODO In some platforms. the output of hit.r is always 0. In this case we use sampleCount instead.\n vec4 light = vec4(lightTexel.rgb / (hit > 0.0 ? hit : sampleCount), lightTexel.a / sampleCount);\n\n // Pixels whose primary rays mostly miss geometry have no normal (alpha 0),\n // as in the WebGPU output.\n out_normal = dot(normal, normal) > 0.1 ? vec4(normal * 0.5 + 0.5, 1.0) : vec4(0.0);\n out_albedo = vec4(albedo, 1.0);\n out_shadowCatcher = shadowCatcher;\n out_color = light;\n}\n `\n});\n\nexport default normalizeRayTraceOutput;\n"]}
|
|
@@ -32,7 +32,7 @@ return;
|
|
|
32
32
|
// So here the code are injected separately.
|
|
33
33
|
const bounceCodeOnIntelMac = glsl `
|
|
34
34
|
|
|
35
|
-
for(int
|
|
35
|
+
for(int xK = 0; xK < BOUNCES; xK++) {{
|
|
36
36
|
if (aa.abort) {
|
|
37
37
|
return vec4(aa.li, aa.alpha);
|
|
38
38
|
}
|
|
@@ -40,10 +40,10 @@ bounce(aa, depth, si, mat, outAux);
|
|
|
40
40
|
}}
|
|
41
41
|
`;
|
|
42
42
|
const bounceCodeOnOther = glsl `
|
|
43
|
-
bool
|
|
44
|
-
int
|
|
43
|
+
bool wY = !si.isTransparency;
|
|
44
|
+
int rT = min(BOUNCES, bounceLimit);
|
|
45
45
|
for(int idx = 0; idx < min(BOUNCES * 3, ${MAX_PATH_EVENTS}); idx++) {
|
|
46
|
-
if (
|
|
46
|
+
if (wY && idx > rT) {
|
|
47
47
|
aa.abort = true;
|
|
48
48
|
}
|
|
49
49
|
if (aa.abort) {
|
|
@@ -93,8 +93,8 @@ ${envMap.main}
|
|
|
93
93
|
${samplingGlsl}
|
|
94
94
|
${openPbrBsdfGlsl}
|
|
95
95
|
|
|
96
|
-
float
|
|
97
|
-
float
|
|
96
|
+
float nl;
|
|
97
|
+
float bp;
|
|
98
98
|
|
|
99
99
|
${sampleLightGlsl}
|
|
100
100
|
${sampleMaterialGlsl}
|
|
@@ -109,8 +109,8 @@ bool isBlank;
|
|
|
109
109
|
bool isShadowCatcher;
|
|
110
110
|
};
|
|
111
111
|
|
|
112
|
-
void bounce(inout Path aa, inout int depth, inout
|
|
113
|
-
|
|
112
|
+
void bounce(inout Path aa, inout int depth, inout SurfaceInteraction si, inout OpenPbrResolvedMaterial mat, inout RayTraceAuxiliary outAux) {
|
|
113
|
+
bT = uint(max(depth, 0));
|
|
114
114
|
|
|
115
115
|
|
|
116
116
|
|
|
@@ -135,27 +135,27 @@ if (aa.isNextRefraction) {
|
|
|
135
135
|
|
|
136
136
|
|
|
137
137
|
|
|
138
|
-
vec4 bg =
|
|
139
|
-
bg.rgb =
|
|
140
|
-
float
|
|
141
|
-
:
|
|
142
|
-
|
|
143
|
-
aa.li +=
|
|
138
|
+
vec4 bg = cG(aa.ray.o, aa.ray.d);
|
|
139
|
+
bg.rgb = aj(bg.rgb, bp);
|
|
140
|
+
float da = aa.scatteringIsDelta ? 1.0
|
|
141
|
+
: aK(aa.scatteringPdf,
|
|
142
|
+
iT(dm(aa.ray.d)) * envLightSelectionPmf);
|
|
143
|
+
aa.li += da * aa.beta * bg.rgb * bg.a;
|
|
144
144
|
aa.alpha = max(aa.alpha, bg.a);
|
|
145
145
|
}
|
|
146
146
|
else {
|
|
147
|
-
vec2
|
|
148
|
-
vec3 emission = textureLinear(envMap,
|
|
149
|
-
emission =
|
|
147
|
+
vec2 vo = dm(aa.ray.d);
|
|
148
|
+
vec3 emission = textureLinear(envMap, vo).rgb;
|
|
149
|
+
emission = aj(emission, bp);
|
|
150
150
|
aa.li += aa.beta * emission *
|
|
151
|
-
|
|
151
|
+
aK(
|
|
152
152
|
aa.scatteringPdf,
|
|
153
|
-
|
|
153
|
+
iT(vo) * envLightSelectionPmf
|
|
154
154
|
);
|
|
155
155
|
}
|
|
156
156
|
#else
|
|
157
|
-
vec4 bg =
|
|
158
|
-
bg.rgb =
|
|
157
|
+
vec4 bg = cG(aa.ray.o, aa.ray.d);
|
|
158
|
+
bg.rgb = aj(bg.rgb, bp);
|
|
159
159
|
aa.li += aa.beta * bg.rgb * bg.a;
|
|
160
160
|
#endif
|
|
161
161
|
aa.abort = true;
|
|
@@ -165,11 +165,11 @@ return;
|
|
|
165
165
|
|
|
166
166
|
if (!si.hit) {
|
|
167
167
|
|
|
168
|
-
vec4 bg =
|
|
168
|
+
vec4 bg = cG(aa.ray.o, aa.ray.d);
|
|
169
169
|
|
|
170
170
|
|
|
171
171
|
|
|
172
|
-
bg.rgb =
|
|
172
|
+
bg.rgb = aj(bg.rgb, bp);
|
|
173
173
|
if (aa.fromEye) {
|
|
174
174
|
aa.li = bg.rgb * bg.a;
|
|
175
175
|
aa.alpha = bg.a;
|
|
@@ -177,10 +177,10 @@ aa.alpha = bg.a;
|
|
|
177
177
|
outAux.isBlank = bg.a < 0.01;
|
|
178
178
|
}
|
|
179
179
|
else {
|
|
180
|
-
Ray cam =
|
|
181
|
-
bool
|
|
180
|
+
Ray cam = fj(v_Texcoord + tg());
|
|
181
|
+
bool nK = dot(cam.d, aa.ray.d) > 0.0;
|
|
182
182
|
if (transmissiveOutputAlphaMin < 1.0) {
|
|
183
|
-
if (
|
|
183
|
+
if (nK) {
|
|
184
184
|
aa.alpha = max(aa.alpha, bg.a);
|
|
185
185
|
} else {
|
|
186
186
|
aa.alpha = 1.0;
|
|
@@ -188,8 +188,8 @@ aa.alpha = 1.0;
|
|
|
188
188
|
}
|
|
189
189
|
#if !defined(USE_ENVMAP)
|
|
190
190
|
|
|
191
|
-
if (
|
|
192
|
-
aa.li = aa.beta *
|
|
191
|
+
if (nK) {
|
|
192
|
+
aa.li = aa.beta * aK(aa.scatteringPdf, 1.0) * bg.rgb;
|
|
193
193
|
}
|
|
194
194
|
#endif
|
|
195
195
|
}
|
|
@@ -197,7 +197,7 @@ aa.abort = true;
|
|
|
197
197
|
return;
|
|
198
198
|
}
|
|
199
199
|
|
|
200
|
-
bool
|
|
200
|
+
bool aJ = false;
|
|
201
201
|
if ((mat.materialType == STANDARD || mat.materialType == UNLIT)) {
|
|
202
202
|
if (transmissiveOutputAlphaMin < 1.0) {
|
|
203
203
|
|
|
@@ -209,19 +209,19 @@ if (alpha < 1.0) {
|
|
|
209
209
|
|
|
210
210
|
|
|
211
211
|
aa.alpha = max(aa.alpha, alpha);
|
|
212
|
-
if (
|
|
213
|
-
|
|
212
|
+
if (eC(3u) > alpha) {
|
|
213
|
+
aJ = true;
|
|
214
214
|
}
|
|
215
215
|
}
|
|
216
|
-
if (!
|
|
217
|
-
|
|
216
|
+
if (!aJ) {
|
|
217
|
+
mL(si, mat, aa);
|
|
218
218
|
}
|
|
219
219
|
else {
|
|
220
220
|
aa.ray.o = si.position + aa.ray.d * EPS;
|
|
221
221
|
}
|
|
222
222
|
}
|
|
223
223
|
|
|
224
|
-
if (!si.albedoSampled && !
|
|
224
|
+
if (!si.albedoSampled && !aJ) {
|
|
225
225
|
|
|
226
226
|
if ((mat.materialType == STANDARD || mat.materialType == UNLIT) &&
|
|
227
227
|
!(mat.transmissionWeight > 0.5 ||
|
|
@@ -243,11 +243,11 @@ si.albedoSampled = true;
|
|
|
243
243
|
|
|
244
244
|
|
|
245
245
|
#ifdef USE_RR
|
|
246
|
-
if (depth >= RR_MAX && !
|
|
246
|
+
if (depth >= RR_MAX && !aJ) {
|
|
247
247
|
|
|
248
|
-
float
|
|
249
|
-
float q = max(0.0, 1.0 -
|
|
250
|
-
if (
|
|
248
|
+
float pn = max(max(aa.beta.x, aa.beta.y), aa.beta.z);
|
|
249
|
+
float q = max(0.0, 1.0 - pn);
|
|
250
|
+
if (dp(cE(RUSSIAN_ROULETTE)) < q) {
|
|
251
251
|
|
|
252
252
|
|
|
253
253
|
aa.alpha = 1.0;
|
|
@@ -264,43 +264,43 @@ return;
|
|
|
264
264
|
}
|
|
265
265
|
|
|
266
266
|
|
|
267
|
-
|
|
268
|
-
|
|
267
|
+
intersectScene(aa.ray, si, true);
|
|
268
|
+
dg(mat, si.materialIndex, si.uv, si.uv1, si.instanceIndex, si.vertexColor);
|
|
269
269
|
si.isTransparency = mat.transmissionWeight > 0.001 || mat.subsurfaceWeight > 0.001 || mat.alpha < 0.999;
|
|
270
270
|
|
|
271
271
|
|
|
272
272
|
|
|
273
273
|
|
|
274
274
|
if (dispersionWavelengths == 1 && si.hit && mat.transmissionWeight > 0.001 && mat.transmissionDispersionScale > 0.001) {
|
|
275
|
-
|
|
275
|
+
bp = nl;
|
|
276
276
|
}
|
|
277
|
-
if (mat.transmissionWeight > 0.001 &&
|
|
278
|
-
mat.specularIor =
|
|
279
|
-
|
|
277
|
+
if (mat.transmissionWeight > 0.001 && bp > 0.0) {
|
|
278
|
+
mat.specularIor = ee(
|
|
279
|
+
bp,
|
|
280
280
|
mat.specularIor,
|
|
281
281
|
mat.transmissionDispersionScale,
|
|
282
282
|
mat.dispersionAbbeNumber
|
|
283
283
|
);
|
|
284
284
|
}
|
|
285
285
|
|
|
286
|
-
if (
|
|
286
|
+
if (aJ) {
|
|
287
287
|
return;
|
|
288
288
|
}
|
|
289
289
|
|
|
290
|
-
bool
|
|
290
|
+
bool hM = eC(3u) < mat.alpha;
|
|
291
291
|
#ifdef NUM_LIGHTS
|
|
292
292
|
|
|
293
293
|
LightSampleRec lightSample;
|
|
294
294
|
for (int i = 0; i < NUM_LIGHTS; i++) {
|
|
295
295
|
|
|
296
|
-
Light light =
|
|
297
|
-
float d =
|
|
298
|
-
bool
|
|
299
|
-
if (d != INF && !(
|
|
296
|
+
Light light = rB(i);
|
|
297
|
+
float d = nr(aa.ray, light, lightSample);
|
|
298
|
+
bool lY = si.hit && d > distance(si.position, aa.ray.o);
|
|
299
|
+
if (d != INF && !(lY && hM)) {
|
|
300
300
|
lightSample.pdf *= light.selectionPmf;
|
|
301
|
-
float
|
|
302
|
-
lightSample.emission =
|
|
303
|
-
aa.li +=
|
|
301
|
+
float fl = aK(aa.scatteringPdf, lightSample.pdf);
|
|
302
|
+
lightSample.emission = aj(lightSample.emission, bp);
|
|
303
|
+
aa.li += fl * aa.beta * lightSample.emission;
|
|
304
304
|
|
|
305
305
|
aa.alpha = 1.0;
|
|
306
306
|
aa.abort = true;
|
|
@@ -309,28 +309,28 @@ aa.abort = true;
|
|
|
309
309
|
#endif
|
|
310
310
|
|
|
311
311
|
#ifdef USE_ENVMAP
|
|
312
|
-
if (!(si.hit &&
|
|
312
|
+
if (!(si.hit && hM)) {
|
|
313
313
|
if (aa.isNextRefraction) {
|
|
314
314
|
|
|
315
315
|
|
|
316
|
-
vec4 bg =
|
|
317
|
-
bg.rgb =
|
|
318
|
-
float
|
|
319
|
-
:
|
|
320
|
-
|
|
321
|
-
aa.li +=
|
|
316
|
+
vec4 bg = cG(aa.ray.o, aa.ray.d);
|
|
317
|
+
bg.rgb = aj(bg.rgb, bp);
|
|
318
|
+
float da = aa.scatteringIsDelta ? 1.0
|
|
319
|
+
: aK(aa.scatteringPdf,
|
|
320
|
+
iT(dm(aa.ray.d)) * envLightSelectionPmf);
|
|
321
|
+
aa.li += da * aa.beta * bg.rgb * bg.a;
|
|
322
322
|
aa.alpha = max(aa.alpha, bg.a);
|
|
323
323
|
aa.abort = true;
|
|
324
324
|
return;
|
|
325
325
|
}
|
|
326
|
-
vec2 uv =
|
|
326
|
+
vec2 uv = dm(aa.ray.d);
|
|
327
327
|
vec3 emission = textureLinear(envMap, uv).rgb;
|
|
328
|
-
float
|
|
328
|
+
float fl = aK(
|
|
329
329
|
aa.scatteringPdf,
|
|
330
|
-
|
|
330
|
+
iT(uv) * envLightSelectionPmf
|
|
331
331
|
);
|
|
332
|
-
emission =
|
|
333
|
-
aa.li += aa.beta * emission *
|
|
332
|
+
emission = aj(emission, bp);
|
|
333
|
+
aa.li += aa.beta * emission * fl;
|
|
334
334
|
|
|
335
335
|
|
|
336
336
|
#if !defined(USE_BACKGROUND)
|
|
@@ -345,109 +345,109 @@ depth++;
|
|
|
345
345
|
}
|
|
346
346
|
|
|
347
347
|
|
|
348
|
-
vec2
|
|
348
|
+
vec2 ld(float radius, float xi) {
|
|
349
349
|
float x = 0.25;
|
|
350
|
-
for (int
|
|
350
|
+
for (int oD = 0; oD < 10; oD++) {
|
|
351
351
|
float x2 = x * x;
|
|
352
352
|
float x3 = x2 * x;
|
|
353
|
-
float
|
|
353
|
+
float lw = 1.0 - x;
|
|
354
354
|
float value = 10.0 * x2 - 20.0 * x3 + 15.0 * x2 * x2 -
|
|
355
355
|
4.0 * x2 * x3 - xi;
|
|
356
|
-
float
|
|
357
|
-
if (abs(value) < 1e-6 ||
|
|
358
|
-
x = clamp(x - value /
|
|
356
|
+
float mX = 20.0 * x * lw * lw * lw;
|
|
357
|
+
if (abs(value) < 1e-6 || mX == 0.0) break;
|
|
358
|
+
x = clamp(x - value / mX, 0.0, 1.0);
|
|
359
359
|
}
|
|
360
|
-
float
|
|
360
|
+
float jL = x * radius;
|
|
361
361
|
return vec2(
|
|
362
|
-
|
|
363
|
-
sqrt(max(radius * radius -
|
|
362
|
+
jL,
|
|
363
|
+
sqrt(max(radius * radius - jL * jL, 0.0))
|
|
364
364
|
);
|
|
365
365
|
}
|
|
366
366
|
|
|
367
|
-
float
|
|
368
|
-
if (
|
|
369
|
-
float
|
|
370
|
-
return
|
|
367
|
+
float jj(float radius, float gM) {
|
|
368
|
+
if (gM >= radius) return 0.0;
|
|
369
|
+
float pa = radius - gM;
|
|
370
|
+
return pa * pa * pa;
|
|
371
371
|
}
|
|
372
372
|
|
|
373
373
|
|
|
374
|
-
vec3
|
|
374
|
+
vec3 nj(SurfaceInteraction source, float radius) {
|
|
375
375
|
vec3 geometricNormal = source.faceNormal;
|
|
376
376
|
if (dot(geometricNormal, source.vertexNormal) < 0.0) geometricNormal = -geometricNormal;
|
|
377
377
|
vec3 tangent;
|
|
378
378
|
vec3 bitangent;
|
|
379
|
-
|
|
380
|
-
vec3
|
|
381
|
-
|
|
382
|
-
for (int
|
|
383
|
-
vec2
|
|
384
|
-
float
|
|
385
|
-
float
|
|
386
|
-
vec3
|
|
387
|
-
vec3
|
|
388
|
-
vec3
|
|
389
|
-
float
|
|
390
|
-
float
|
|
391
|
-
float
|
|
392
|
-
if (
|
|
393
|
-
|
|
394
|
-
}
|
|
395
|
-
else if (
|
|
396
|
-
vec3
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
379
|
+
aP(geometricNormal, tangent, bitangent);
|
|
380
|
+
vec3 iW = vec3(0.0);
|
|
381
|
+
|
|
382
|
+
for (int iG = 0; iG < BEVEL_SAMPLES; iG++) {
|
|
383
|
+
vec2 qf = dZ(CAMERA_BEVEL_BASE + uint(iG));
|
|
384
|
+
float cJ = qf.x;
|
|
385
|
+
float pv = qf.y;
|
|
386
|
+
vec3 dz = geometricNormal;
|
|
387
|
+
vec3 fW = tangent;
|
|
388
|
+
vec3 eA = bitangent;
|
|
389
|
+
float gu = 0.5;
|
|
390
|
+
float iB = 0.25;
|
|
391
|
+
float gT = 0.25;
|
|
392
|
+
if (cJ < 0.5) {
|
|
393
|
+
cJ *= 2.0;
|
|
394
|
+
}
|
|
395
|
+
else if (cJ < 0.75) {
|
|
396
|
+
vec3 nI = dz;
|
|
397
|
+
dz = fW;
|
|
398
|
+
fW = nI;
|
|
399
|
+
gu = 0.25;
|
|
400
|
+
iB = 0.5;
|
|
401
|
+
cJ = (cJ - 0.5) * 4.0;
|
|
402
402
|
}
|
|
403
403
|
else {
|
|
404
|
-
vec3
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
}
|
|
411
|
-
|
|
412
|
-
vec2
|
|
413
|
-
float phi = TWOPI *
|
|
414
|
-
vec3
|
|
415
|
-
(cos(phi) *
|
|
404
|
+
vec3 nI = dz;
|
|
405
|
+
dz = eA;
|
|
406
|
+
eA = nI;
|
|
407
|
+
gu = 0.25;
|
|
408
|
+
gT = 0.5;
|
|
409
|
+
cJ = (cJ - 0.75) * 4.0;
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
vec2 hj = ld(radius, pv);
|
|
413
|
+
float phi = TWOPI * cJ;
|
|
414
|
+
vec3 rw = hj.x *
|
|
415
|
+
(cos(phi) * fW + sin(phi) * eA);
|
|
416
416
|
Ray ray;
|
|
417
|
-
|
|
417
|
+
gC(
|
|
418
418
|
ray,
|
|
419
|
-
source.position +
|
|
420
|
-
-
|
|
419
|
+
source.position + dz * hj.y + rw,
|
|
420
|
+
-dz
|
|
421
421
|
);
|
|
422
|
-
|
|
423
|
-
|
|
422
|
+
SurfaceInteraction hit;
|
|
423
|
+
intersectSceneBevel(
|
|
424
424
|
ray,
|
|
425
425
|
hit,
|
|
426
426
|
source.instanceIndex,
|
|
427
|
-
max(2.0 *
|
|
427
|
+
max(2.0 * hj.y, EPS)
|
|
428
428
|
);
|
|
429
429
|
if (!hit.hit) continue;
|
|
430
430
|
|
|
431
|
-
float
|
|
432
|
-
float
|
|
433
|
-
float
|
|
434
|
-
float weight =
|
|
435
|
-
|
|
436
|
-
|
|
431
|
+
float lA = gu * abs(dot(dz, hit.faceNormal));
|
|
432
|
+
float nC = iB * abs(dot(fW, hit.faceNormal));
|
|
433
|
+
float kG = gT * abs(dot(eA, hit.faceNormal));
|
|
434
|
+
float weight = lA / max(
|
|
435
|
+
lA * lA + nC * nC +
|
|
436
|
+
kG * kG,
|
|
437
437
|
1e-8
|
|
438
438
|
);
|
|
439
|
-
weight *=
|
|
440
|
-
max(
|
|
441
|
-
|
|
439
|
+
weight *= jj(radius, distance(hit.position, source.position)) /
|
|
440
|
+
max(jj(radius, hj.x), 1e-8);
|
|
441
|
+
iW += weight * hit.vertexNormal;
|
|
442
442
|
}
|
|
443
443
|
|
|
444
|
-
if (dot(
|
|
445
|
-
vec3
|
|
446
|
-
vec3 result = source.normal +
|
|
444
|
+
if (dot(iW, iW) <= 1e-12) return source.normal;
|
|
445
|
+
vec3 kg = normalize(iW);
|
|
446
|
+
vec3 result = source.normal + kg - source.vertexNormal;
|
|
447
447
|
return dot(result, result) > 1e-12 ? normalize(result) : source.normal;
|
|
448
448
|
}
|
|
449
449
|
|
|
450
|
-
vec4
|
|
450
|
+
vec4 cT(SurfaceInteraction si, Ray ray, OpenPbrResolvedMaterial mat, inout RayTraceAuxiliary outAux) {
|
|
451
451
|
Path aa;
|
|
452
452
|
aa.ray = ray;
|
|
453
453
|
aa.li = vec3(0);
|
|
@@ -463,62 +463,62 @@ ${intelMac ? bounceCodeOnIntelMac : bounceCodeOnOther}
|
|
|
463
463
|
return vec4(aa.li, aa.alpha);
|
|
464
464
|
}
|
|
465
465
|
|
|
466
|
-
vec4
|
|
466
|
+
vec4 iU(SurfaceInteraction si, Ray ray, OpenPbrResolvedMaterial mat, inout RayTraceAuxiliary outAux) {
|
|
467
467
|
float coverage = clamp(mat.alpha, 0.0, 1.0);
|
|
468
468
|
if (!si.hit || (mat.materialType != STANDARD && mat.materialType != UNLIT) || coverage >= 1.0) {
|
|
469
|
-
return
|
|
469
|
+
return cT(si, ray, mat, outAux);
|
|
470
470
|
}
|
|
471
471
|
|
|
472
472
|
|
|
473
473
|
|
|
474
474
|
|
|
475
475
|
|
|
476
|
-
Ray
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
RayTraceAuxiliary
|
|
484
|
-
if (
|
|
485
|
-
|
|
476
|
+
Ray uG = ray;
|
|
477
|
+
uG.o = si.position + ray.d * (EPS * 0.02);
|
|
478
|
+
SurfaceInteraction kf = si;
|
|
479
|
+
kf.albedoSampled = false;
|
|
480
|
+
intersectScene(uG, kf, false);
|
|
481
|
+
OpenPbrResolvedMaterial oS;
|
|
482
|
+
dg(oS, kf.materialIndex, kf.uv, kf.uv1, kf.instanceIndex, kf.vertexColor);
|
|
483
|
+
RayTraceAuxiliary ez = outAux;
|
|
484
|
+
if (kf.hit && (oS.materialType == STANDARD || oS.materialType == UNLIT)) {
|
|
485
|
+
ez.albedo = oS.transmissionWeight > 0.5
|
|
486
486
|
? vec3(1.0)
|
|
487
|
-
:
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
487
|
+
: oS.baseColor;
|
|
488
|
+
ez.normal = dot(
|
|
489
|
+
kf.normal,
|
|
490
|
+
kf.position - vec3(viewInv[3])
|
|
491
491
|
) > 0.0
|
|
492
|
-
? -
|
|
493
|
-
:
|
|
494
|
-
|
|
492
|
+
? -kf.normal
|
|
493
|
+
: kf.normal;
|
|
494
|
+
kf.albedoSampled = oS.transmissionWeight > 0.5;
|
|
495
495
|
}
|
|
496
|
-
vec4 back =
|
|
496
|
+
vec4 back = cT(kf, uG, oS, ez);
|
|
497
497
|
if (coverage <= 0.0) {
|
|
498
|
-
outAux =
|
|
498
|
+
outAux = ez;
|
|
499
499
|
return back;
|
|
500
500
|
}
|
|
501
501
|
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
RayTraceAuxiliary
|
|
506
|
-
vec4
|
|
507
|
-
outAux.albedo = mix(
|
|
508
|
-
vec3
|
|
509
|
-
outAux.normal = dot(
|
|
510
|
-
? normalize(
|
|
502
|
+
SurfaceInteraction xA = si;
|
|
503
|
+
OpenPbrResolvedMaterial vp = mat;
|
|
504
|
+
vp.alpha = 1.0;
|
|
505
|
+
RayTraceAuxiliary se = outAux;
|
|
506
|
+
vec4 front = cT(xA, ray, vp, se);
|
|
507
|
+
outAux.albedo = mix(ez.albedo, se.albedo, coverage);
|
|
508
|
+
vec3 dl = mix(ez.normal, se.normal, coverage);
|
|
509
|
+
outAux.normal = dot(dl, dl) > 1e-12
|
|
510
|
+
? normalize(dl)
|
|
511
511
|
: vec3(0.0);
|
|
512
|
-
outAux.isBlank =
|
|
513
|
-
return mix(back,
|
|
512
|
+
outAux.isBlank = ez.isBlank && se.isBlank;
|
|
513
|
+
return mix(back, front, coverage);
|
|
514
514
|
}
|
|
515
515
|
|
|
516
516
|
|
|
517
517
|
|
|
518
|
-
vec4
|
|
518
|
+
vec4 iu(Ray ray, out RayTraceAuxiliary outAux) {
|
|
519
519
|
|
|
520
|
-
|
|
521
|
-
|
|
520
|
+
SurfaceInteraction si;
|
|
521
|
+
OpenPbrResolvedMaterial mat;
|
|
522
522
|
|
|
523
523
|
si.albedoSampled = false;
|
|
524
524
|
#ifdef HAS_MEDIUM
|
|
@@ -528,13 +528,13 @@ si.mediumScattering = vec3(0.0);
|
|
|
528
528
|
si.mediumAnisotropy = 0.0;
|
|
529
529
|
#endif
|
|
530
530
|
|
|
531
|
-
|
|
532
|
-
|
|
531
|
+
intersectScene(ray, si, false);
|
|
532
|
+
dg(mat, si.materialIndex, si.uv, si.uv1, si.instanceIndex, si.vertexColor);
|
|
533
533
|
si.isTransparency = mat.transmissionWeight > 0.001 || mat.subsurfaceWeight > 0.001 || mat.alpha < 0.999;
|
|
534
534
|
|
|
535
535
|
#ifdef HAS_BEVEL
|
|
536
536
|
if (bevelEnabled && mat.bevel > 0.0) {
|
|
537
|
-
si.normal =
|
|
537
|
+
si.normal = nj(si, mat.bevel);
|
|
538
538
|
}
|
|
539
539
|
#endif
|
|
540
540
|
|
|
@@ -551,32 +551,32 @@ si.albedoSampled = mat.transmissionWeight > 0.5;
|
|
|
551
551
|
}
|
|
552
552
|
|
|
553
553
|
if (mat.transmissionDispersionScale > 0.001) {
|
|
554
|
-
mat.specularIor =
|
|
555
|
-
|
|
554
|
+
mat.specularIor = ee(
|
|
555
|
+
bp,
|
|
556
556
|
mat.specularIor,
|
|
557
557
|
mat.transmissionDispersionScale,
|
|
558
558
|
mat.dispersionAbbeNumber
|
|
559
559
|
);
|
|
560
560
|
}
|
|
561
|
-
return
|
|
561
|
+
return iU(si, ray, mat, outAux);
|
|
562
562
|
}
|
|
563
563
|
|
|
564
564
|
void main() {
|
|
565
565
|
|
|
566
|
-
|
|
567
|
-
|
|
566
|
+
rG();
|
|
567
|
+
gW(v_Texcoord * viewportSize, int(uint(sampleCount) ^ dG(uint(sequenceSeed))));
|
|
568
568
|
|
|
569
569
|
|
|
570
|
-
|
|
571
|
-
|
|
570
|
+
bp = dispersionWavelengths == 1 ? 0.0 : wavelength;
|
|
571
|
+
nl = wavelength;
|
|
572
572
|
if (dispersionWavelengths == 1 && wavelength > 0.0) {
|
|
573
|
-
float channel = floor(
|
|
574
|
-
|
|
573
|
+
float channel = floor(dp(CAMERA_WAVELENGTH) * 3.0);
|
|
574
|
+
nl = channel < 1.0 ? 650.0 : channel < 2.0 ? 510.0 : 475.0;
|
|
575
575
|
}
|
|
576
576
|
|
|
577
577
|
|
|
578
578
|
|
|
579
|
-
Ray cam =
|
|
579
|
+
Ray cam = oG();
|
|
580
580
|
|
|
581
581
|
RayTraceAuxiliary outAux;
|
|
582
582
|
outAux.albedo = vec3(0.0);
|
|
@@ -584,38 +584,38 @@ outAux.normal = vec3(0.0);
|
|
|
584
584
|
outAux.isBlank = false;
|
|
585
585
|
outAux.isShadowCatcher = false;
|
|
586
586
|
|
|
587
|
-
vec4
|
|
587
|
+
vec4 aW = iu(cam, outAux);
|
|
588
588
|
|
|
589
589
|
|
|
590
590
|
|
|
591
591
|
#ifdef CLAMPING
|
|
592
592
|
float clamping = float(CLAMPING);
|
|
593
|
-
|
|
593
|
+
aW.rgb = clamp(aW.rgb, -clamping, clamping);
|
|
594
594
|
#endif
|
|
595
595
|
|
|
596
596
|
|
|
597
|
-
if (
|
|
597
|
+
if (bp > 0.0) {
|
|
598
598
|
|
|
599
|
-
|
|
599
|
+
aW.rgb *= 3.0;
|
|
600
600
|
if (dispersionWavelengths != 1) {
|
|
601
601
|
|
|
602
602
|
|
|
603
|
-
|
|
603
|
+
aW.a /= 3.0;
|
|
604
604
|
}
|
|
605
605
|
}
|
|
606
|
-
if (!(
|
|
607
|
-
|
|
606
|
+
if (!(aW.x < INF && aW.x > -EPS)) {
|
|
607
|
+
aW = vec4(0, 0, 0, 1);
|
|
608
608
|
}
|
|
609
609
|
|
|
610
|
-
out_color =
|
|
610
|
+
out_color = aW;
|
|
611
611
|
out_albedo = vec4(outAux.albedo, outAux.isBlank ? 0.0 : 1.0);
|
|
612
612
|
out_normal = vec4(outAux.normal, 1.0);
|
|
613
613
|
|
|
614
614
|
|
|
615
|
-
float
|
|
615
|
+
float jP = dot(aW.rgb, vec3(0.2126, 0.7152, 0.0722));
|
|
616
616
|
out_moments = outAux.isShadowCatcher
|
|
617
617
|
? vec4(0.0)
|
|
618
|
-
: vec4(
|
|
618
|
+
: vec4(jP, jP * jP, 1.0, 0.0);
|
|
619
619
|
|
|
620
620
|
}`
|
|
621
621
|
});
|