@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
|
@@ -52,8 +52,9 @@ ${cameraRayGlsl}
|
|
|
52
52
|
|
|
53
53
|
|
|
54
54
|
|
|
55
|
-
vec4
|
|
55
|
+
vec4 iu(inout Ray ray, out vec4 background, out vec2 shadowCounts) {
|
|
56
56
|
background = vec4(0.0);
|
|
57
|
+
shadowCounts = vec2(0.0);
|
|
57
58
|
Path aa;
|
|
58
59
|
aa.ray = ray;
|
|
59
60
|
aa.li = vec3(0);
|
|
@@ -63,9 +64,9 @@ aa.fromEye = true;
|
|
|
63
64
|
aa.scatteringPdf = 0.0;
|
|
64
65
|
aa.abort = false;
|
|
65
66
|
|
|
66
|
-
|
|
67
|
+
SurfaceInteraction si;
|
|
67
68
|
|
|
68
|
-
|
|
69
|
+
intersectScene(aa.ray, si, false);
|
|
69
70
|
if (!si.hit) {
|
|
70
71
|
|
|
71
72
|
|
|
@@ -73,45 +74,49 @@ if (!si.hit) {
|
|
|
73
74
|
return vec4(0.0, 0.0, 0.0, 1.0);
|
|
74
75
|
}
|
|
75
76
|
|
|
76
|
-
|
|
77
|
-
|
|
77
|
+
OpenPbrResolvedMaterial mat;
|
|
78
|
+
dg(mat, si.materialIndex, si.uv, si.uv1, si.instanceIndex, si.vertexColor);
|
|
78
79
|
if (mat.materialType != SHADOW_CATCHER) {
|
|
79
80
|
|
|
80
81
|
|
|
81
82
|
return vec4(0.0, 0.0, 0.0, 1.0);
|
|
82
83
|
}
|
|
83
84
|
|
|
84
|
-
vec4 bg =
|
|
85
|
+
vec4 bg = cG(ray.o, ray.d);
|
|
85
86
|
background = vec4(bg.rgb * bg.a, bg.a);
|
|
86
87
|
if (!aa.abort) {
|
|
87
|
-
sampleShadowCatcher(si, 0, aa);
|
|
88
|
+
shadowCounts = sampleShadowCatcher(si, 0, aa);
|
|
88
89
|
}
|
|
89
|
-
return vec4(1.0, bg.a, bg.a >= 0.01 ? 1.0 : 0.0,
|
|
90
|
+
return vec4(1.0, bg.a, bg.a >= 0.01 ? 1.0 : 0.0, 0.0);
|
|
90
91
|
}
|
|
91
92
|
|
|
92
93
|
void main() {
|
|
93
|
-
|
|
94
|
-
|
|
94
|
+
rG();
|
|
95
|
+
gW(v_Texcoord * viewportSize, int(uint(sampleCount) ^ dG(uint(sequenceSeed))));
|
|
95
96
|
|
|
96
|
-
if (dispersionWavelengths == 1 && wavelength > 0.0) {
|
|
97
|
-
Ray cam =
|
|
97
|
+
if (dispersionWavelengths == 1 && wavelength > 0.0) { dp(CAMERA_WAVELENGTH); }
|
|
98
|
+
Ray cam = oG();
|
|
98
99
|
vec4 background;
|
|
99
|
-
|
|
100
|
+
vec2 shadowCounts;
|
|
101
|
+
vec4 aW = iu(cam, background, shadowCounts);
|
|
100
102
|
|
|
101
|
-
if (!(
|
|
102
|
-
|
|
103
|
+
if (!(aW.x < INF && aW.x > -EPS)) {
|
|
104
|
+
aW = vec4(0.0);
|
|
105
|
+
shadowCounts = vec2(0.0);
|
|
103
106
|
}
|
|
104
107
|
|
|
105
|
-
out_shadowCatcher = aF;
|
|
106
|
-
out_catcherBackground = background;
|
|
107
108
|
|
|
108
109
|
|
|
110
|
+
out_shadowCatcher = vec4(aW.rgb, shadowCounts.x);
|
|
111
|
+
out_catcherBackground = background;
|
|
112
|
+
|
|
109
113
|
|
|
110
|
-
float
|
|
114
|
+
float visibility = 1.0 - (shadowCounts.y > 0.0 ? shadowCounts.x / shadowCounts.y : 0.0);
|
|
115
|
+
float jP = visibility * (background.a >= 0.01
|
|
111
116
|
? dot(background.rgb / background.a, vec3(0.2126, 0.7152, 0.0722))
|
|
112
117
|
: 1.0);
|
|
113
|
-
out_catcherMoments =
|
|
114
|
-
? vec4(
|
|
118
|
+
out_catcherMoments = aW.r > 0.0
|
|
119
|
+
? vec4(jP, jP * jP, 1.0, shadowCounts.y)
|
|
115
120
|
: vec4(0.0);
|
|
116
121
|
|
|
117
122
|
}`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shadowCatcher.frag.js","sourceRoot":"","sources":["../../../src/renderer/glsl/shadowCatcher.frag.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,sDAAsD;AACtD,kFAAkF;AAElF,OAAO,aAAa,MAAM,4BAA4B,CAAC;AACvD,OAAO,MAAM,MAAM,yBAAyB,CAAC;AAC7C,OAAO,YAAY,MAAM,+BAA+B,CAAC;AACzD,OAAO,aAAa,MAAM,gCAAgC,CAAC;AAC3D,OAAO,kBAAkB,MAAM,iCAAiC,CAAC;AACjE,OAAO,SAAS,MAAM,4BAA4B,CAAC;AACnD,OAAO,QAAQ,MAAM,uBAAuB,CAAC;AAC7C,OAAO,MAAM,MAAM,yBAAyB,CAAC;AAC7C,OAAO,MAAM,MAAM,yBAAyB,CAAC;AAC7C,OAAO,mBAAmB,MAAM,sCAAsC,CAAC;AACvE,OAAO,WAAW,MAAM,8BAA8B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,YAAY,MAAM,2BAA2B,CAAC;AACrD,OAAO,gBAAgB,MAAM,+BAA+B,CAAC;AAE7D,eAAe,IAAI,cAAc,CAAC;IAChC,IAAI,EAAE,eAAe;IACrB,OAAO,EAAE,CAAC,eAAe,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;IACjE,OAAO,EAAE;QACP,OAAO,EAAE,CAAC;KACX;IACD,QAAQ,EAAE;QACR,qBAAqB,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/C,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACtC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;QACpC,iBAAiB,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;QACzC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;QAC/B,oBAAoB,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAChD,mBAAmB,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;KACjD;IACD,QAAQ,EAAE,CAAC,YAAY,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;IACvE,IAAI,EAAE,IAAI,CAAA;EACV,MAAM;EACN,QAAQ;EACR,MAAM,CAAC,IAAI;;EAEX,aAAa;;EAEb,YAAY,CAAC,IAAI;EACjB,gBAAgB;;EAEhB,kBAAkB,CAAC,IAAI;EACvB,SAAS,CAAC,IAAI;EACd,MAAM,CAAC,IAAI;;EAEX,YAAY;EACZ,WAAW;EACX,mBAAmB;EACnB,aAAa
|
|
1
|
+
{"version":3,"file":"shadowCatcher.frag.js","sourceRoot":"","sources":["../../../src/renderer/glsl/shadowCatcher.frag.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,sDAAsD;AACtD,kFAAkF;AAElF,OAAO,aAAa,MAAM,4BAA4B,CAAC;AACvD,OAAO,MAAM,MAAM,yBAAyB,CAAC;AAC7C,OAAO,YAAY,MAAM,+BAA+B,CAAC;AACzD,OAAO,aAAa,MAAM,gCAAgC,CAAC;AAC3D,OAAO,kBAAkB,MAAM,iCAAiC,CAAC;AACjE,OAAO,SAAS,MAAM,4BAA4B,CAAC;AACnD,OAAO,QAAQ,MAAM,uBAAuB,CAAC;AAC7C,OAAO,MAAM,MAAM,yBAAyB,CAAC;AAC7C,OAAO,MAAM,MAAM,yBAAyB,CAAC;AAC7C,OAAO,mBAAmB,MAAM,sCAAsC,CAAC;AACvE,OAAO,WAAW,MAAM,8BAA8B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,YAAY,MAAM,2BAA2B,CAAC;AACrD,OAAO,gBAAgB,MAAM,+BAA+B,CAAC;AAE7D,eAAe,IAAI,cAAc,CAAC;IAChC,IAAI,EAAE,eAAe;IACrB,OAAO,EAAE,CAAC,eAAe,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;IACjE,OAAO,EAAE;QACP,OAAO,EAAE,CAAC;KACX;IACD,QAAQ,EAAE;QACR,qBAAqB,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/C,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACtC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;QACpC,iBAAiB,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;QACzC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;QAC/B,oBAAoB,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAChD,mBAAmB,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;KACjD;IACD,QAAQ,EAAE,CAAC,YAAY,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;IACvE,IAAI,EAAE,IAAI,CAAA;EACV,MAAM;EACN,QAAQ;EACR,MAAM,CAAC,IAAI;;EAEX,aAAa;;EAEb,YAAY,CAAC,IAAI;EACjB,gBAAgB;;EAEhB,kBAAkB,CAAC,IAAI;EACvB,SAAS,CAAC,IAAI;EACd,MAAM,CAAC,IAAI;;EAEX,YAAY;EACZ,WAAW;EACX,mBAAmB;EACnB,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuEb;CACD,CAAC,CAAC","sourcesContent":["// Portions adapted from ray-tracing-renderer@0.10.15\n// (https://github.com/hoverinc/ray-tracing-renderer).\n// Copyright (c) 2019 HOVER, MIT license; see LICENSES/RayTracingRenderer-MIT.txt.\n\nimport cameraRayGlsl from './chunks/cameraRay.glsl.js';\nimport common from './chunks/common.glsl.js';\nimport rayTraceCore from './chunks/rayTraceCore.glsl.js';\nimport textureLinear from './chunks/textureLinear.glsl.js';\nimport materialBufferGlsl from './chunks/materialBuffer.glsl.js';\nimport intersect from './chunks/intersect.glsl.js';\nimport randGlsl from './chunks/rand.glsl.js';\nimport random from './chunks/random.glsl.js';\nimport envMap from './chunks/envMap.glsl.js';\nimport sampleShadowCatcher from './chunks/sampleShadowCatcher.glsl.js';\nimport sampleLight from './chunks/sampleLight.glsl.js';\nimport { FragmentShader, glsl, Shader } from '../shader.js';\nimport samplingGlsl from './chunks/sampling.glsl.js';\nimport uvProjectionGlsl from './chunks/uvProjection.glsl.js';\n\nexport default new FragmentShader({\n name: 'shadowCatcher',\n outputs: ['shadowCatcher', 'catcherBackground', 'catcherMoments'],\n defines: {\n BOUNCES: 2\n },\n uniforms: {\n dispersionWavelengths: Shader.uniform('int', 3),\n wavelength: Shader.uniform('float', 0),\n viewportSize: Shader.uniform('vec2'),\n viewProjectionInv: Shader.uniform('mat4'),\n viewInv: Shader.uniform('mat4'),\n cameraApertureRadius: Shader.uniform('float', 0),\n cameraFocusDistance: Shader.uniform('float', 10)\n },\n includes: [rayTraceCore, materialBufferGlsl, intersect, random, envMap],\n main: glsl`\n${common}\n${randGlsl}\n${random.main}\n\n${textureLinear}\n\n${rayTraceCore.main}\n${uvProjectionGlsl}\n\n${materialBufferGlsl.main}\n${intersect.main}\n${envMap.main}\n\n${samplingGlsl}\n${sampleLight}\n${sampleShadowCatcher}\n${cameraRayGlsl}\n\n// Path tracing integrator as described in\n// http://www.pbr-book.org/3ed-2018/Light_Transport_I_Surface_Reflection/Path_Tracing.html#\nvec4 integrator(inout Ray ray, out vec4 background, out vec2 shadowCounts) {\n background = vec4(0.0);\n shadowCounts = vec2(0.0);\n Path path;\n path.ray = ray;\n path.li = vec3(0);\n path.alpha = 1.0;\n path.beta = vec3(1.0);\n path.fromEye = true;\n path.scatteringPdf = 0.0;\n path.abort = false;\n\n SurfaceInteraction si;\n\n intersectScene(path.ray, si, false);\n if (!si.hit) {\n // Red stores catcher coverage. Keep it zero for pixels where the primary\n // ray did not hit the catcher so denoised shadows cannot bleed onto the\n // model silhouette during composition.\n return vec4(0.0, 0.0, 0.0, 1.0);\n }\n\n OpenPbrResolvedMaterial mat;\n getMaterial(mat, si.materialIndex, si.uv, si.uv1, si.instanceIndex, si.vertexColor);\n if (mat.materialType != SHADOW_CATCHER) {\n // The main path tracer already renders regular geometry. Only evaluate\n // shadow opacity when the primary ray actually hits the catcher.\n return vec4(0.0, 0.0, 0.0, 1.0);\n }\n\n vec4 bg = sampleBackgroundFromRay(ray.o, ray.d);\n background = vec4(bg.rgb * bg.a, bg.a);\n if (!path.abort) {\n shadowCounts = sampleShadowCatcher(si, 0, path);\n }\n return vec4(1.0, bg.a, bg.a >= 0.01 ? 1.0 : 0.0, 0.0);\n}\n\nvoid main() {\n initRandom();\n rng_initialize(v_Texcoord * viewportSize, int(uint(sampleCount) ^ sampleHash(uint(sequenceSeed))));\n // Match the beauty pass's random stream in hero-wavelength previews.\n if (dispersionWavelengths == 1 && wavelength > 0.0) { sample1D(CAMERA_WAVELENGTH); }\n Ray cam = primaryCameraRay();\n vec4 background;\n vec2 shadowCounts;\n vec4 liAndAlpha = integrator(cam, background, shadowCounts);\n\n if (!(liAndAlpha.x < INF && liAndAlpha.x > -EPS)) {\n liAndAlpha = vec4(0.0);\n shadowCounts = vec2(0.0);\n }\n\n // Alpha and the moments' w sum the occluded and total light sample counts;\n // the output pass resolves their ratio into shadow visibility.\n out_shadowCatcher = vec4(liAndAlpha.rgb, shadowCounts.x);\n out_catcherBackground = background;\n // The composed catcher is the background darkened by the shadow. Over a\n // transparent background the shadow is only its opacity.\n float visibility = 1.0 - (shadowCounts.y > 0.0 ? shadowCounts.x / shadowCounts.y : 0.0);\n float guideValue = visibility * (background.a >= 0.01\n ? dot(background.rgb / background.a, vec3(0.2126, 0.7152, 0.0722))\n : 1.0);\n out_catcherMoments = liAndAlpha.r > 0.0\n ? vec4(guideValue, guideValue * guideValue, 1.0, shadowCounts.y)\n : vec4(0.0);\n\n}`\n});\n"]}
|
|
@@ -7,22 +7,22 @@ export const brightFragment = new FragmentShader({
|
|
|
7
7
|
scale: Shader.uniform('float', 1)
|
|
8
8
|
},
|
|
9
9
|
main: glsl `
|
|
10
|
-
const vec3
|
|
11
|
-
vec4
|
|
10
|
+
const vec3 wE = vec3(0.2125, 0.7154, 0.0721);
|
|
11
|
+
vec4 tS(vec4 a, vec4 b, vec4 c) {
|
|
12
12
|
return a + b + c - min(min(a, b), c) - max(max(a, b), c);
|
|
13
13
|
}
|
|
14
14
|
void main() {
|
|
15
15
|
vec2 d = 1.0 / vec2(colorTexRegion());
|
|
16
|
-
vec4
|
|
16
|
+
vec4 dk = sample_colorTex(v_Texcoord);
|
|
17
17
|
vec4 s1 = sample_colorTex(v_Texcoord - vec2(d.x, 0.0));
|
|
18
18
|
vec4 s2 = sample_colorTex(v_Texcoord + vec2(d.x, 0.0));
|
|
19
19
|
vec4 s3 = sample_colorTex(v_Texcoord - vec2(0.0, d.y));
|
|
20
20
|
vec4 s4 = sample_colorTex(v_Texcoord + vec2(0.0, d.y));
|
|
21
|
-
|
|
22
|
-
float lum = dot(
|
|
23
|
-
out_color = lum > threshold &&
|
|
24
|
-
? vec4(
|
|
25
|
-
: vec4(0.0, 0.0, 0.0,
|
|
21
|
+
dk = tS(tS(dk, s1, s2), s3, s4);
|
|
22
|
+
float lum = dot(dk.rgb, wE);
|
|
23
|
+
out_color = lum > threshold && dk.a > 0.0
|
|
24
|
+
? vec4(dk.rgb * scale, dk.a)
|
|
25
|
+
: vec4(0.0, 0.0, 0.0, dk.a);
|
|
26
26
|
}`
|
|
27
27
|
});
|
|
28
28
|
export const composeFragment = new FragmentShader({
|
|
@@ -48,35 +48,40 @@ export const composeFragment = new FragmentShader({
|
|
|
48
48
|
sRGBOutput: Shader.uniform('bool', 1)
|
|
49
49
|
},
|
|
50
50
|
main: glsl `
|
|
51
|
-
vec3
|
|
51
|
+
vec3 od(vec3 color) {
|
|
52
|
+
color = max(color, 0.0);
|
|
53
|
+
return mix(1.055 * pow(color, vec3(1.0 / 2.4)) - 0.055,
|
|
54
|
+
color * 12.92, lessThanEqual(color, vec3(0.0031308)));
|
|
55
|
+
}
|
|
56
|
+
vec3 ky(vec3 color) {
|
|
52
57
|
return clamp(color, 0.0, 1.0);
|
|
53
58
|
}
|
|
54
|
-
vec3
|
|
59
|
+
vec3 jf(vec3 color) {
|
|
55
60
|
return clamp(color / (vec3(1.0) + color), 0.0, 1.0);
|
|
56
61
|
}
|
|
57
|
-
vec3
|
|
62
|
+
vec3 kj(vec3 color) {
|
|
58
63
|
color = max(vec3(0.0), color - 0.004);
|
|
59
64
|
return pow((color * (6.2 * color + 0.5)) /
|
|
60
65
|
(color * (6.2 * color + 1.7) + 0.06), vec3(2.2));
|
|
61
66
|
}
|
|
62
|
-
vec3
|
|
63
|
-
vec3
|
|
64
|
-
vec3
|
|
65
|
-
return
|
|
67
|
+
vec3 pH(vec3 value) {
|
|
68
|
+
vec3 lv = value * (value + 0.0245786) - 0.000090537;
|
|
69
|
+
vec3 aq = value * (0.983729 * value + 0.4329510) + 0.238081;
|
|
70
|
+
return lv / aq;
|
|
66
71
|
}
|
|
67
|
-
vec3
|
|
68
|
-
const mat3
|
|
72
|
+
vec3 mh(vec3 color) {
|
|
73
|
+
const mat3 qs = mat3(
|
|
69
74
|
vec3(0.59719, 0.07600, 0.02840),
|
|
70
75
|
vec3(0.35458, 0.90834, 0.13383),
|
|
71
76
|
vec3(0.04823, 0.01566, 0.83777)
|
|
72
77
|
);
|
|
73
|
-
const mat3
|
|
78
|
+
const mat3 outputMatrix = mat3(
|
|
74
79
|
vec3(1.60475, -0.10208, -0.00327),
|
|
75
80
|
vec3(-0.53108, 1.10813, -0.07276),
|
|
76
81
|
vec3(-0.07367, -0.00605, 1.07602)
|
|
77
82
|
);
|
|
78
|
-
color =
|
|
79
|
-
return clamp(
|
|
83
|
+
color = qs * (color / 0.6);
|
|
84
|
+
return clamp(outputMatrix * pH(color), 0.0, 1.0);
|
|
80
85
|
}
|
|
81
86
|
const mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3(
|
|
82
87
|
vec3(1.6605, -0.1246, -0.0182),
|
|
@@ -88,44 +93,44 @@ vec3(0.6274, 0.0691, 0.0164),
|
|
|
88
93
|
vec3(0.3293, 0.9195, 0.0880),
|
|
89
94
|
vec3(0.0433, 0.0113, 0.8956)
|
|
90
95
|
);
|
|
91
|
-
vec3
|
|
92
|
-
vec3
|
|
93
|
-
vec3
|
|
94
|
-
return 15.5 *
|
|
95
|
-
+ 31.96 *
|
|
96
|
-
+ 0.4298 *
|
|
97
|
-
}
|
|
98
|
-
vec3
|
|
99
|
-
const mat3
|
|
96
|
+
vec3 gh(vec3 value) {
|
|
97
|
+
vec3 nM = value * value;
|
|
98
|
+
vec3 rR = nM * nM;
|
|
99
|
+
return 15.5 * rR * nM - 40.14 * rR * value
|
|
100
|
+
+ 31.96 * rR - 6.868 * nM * value
|
|
101
|
+
+ 0.4298 * nM + 0.1191 * value - 0.00232;
|
|
102
|
+
}
|
|
103
|
+
vec3 mM(vec3 color) {
|
|
104
|
+
const mat3 qu = mat3(
|
|
100
105
|
vec3(0.856627153315983, 0.137318972929847, 0.11189821299995),
|
|
101
106
|
vec3(0.0951212405381588, 0.761241990602591, 0.0767994186031903),
|
|
102
107
|
vec3(0.0482516061458583, 0.101439036467562, 0.811302368396859)
|
|
103
108
|
);
|
|
104
|
-
const mat3
|
|
109
|
+
const mat3 pt = mat3(
|
|
105
110
|
vec3(1.1271005818144368, -0.1413297634984383, -0.14132976349843826),
|
|
106
111
|
vec3(-0.11060664309660323, 1.157823702216272, -0.11060664309660294),
|
|
107
112
|
vec3(-0.016493938717834573, -0.016493938717834257, 1.2519364065950405)
|
|
108
113
|
);
|
|
109
|
-
color =
|
|
114
|
+
color = qu * (LINEAR_SRGB_TO_LINEAR_REC2020 * color);
|
|
110
115
|
color = clamp((log2(max(color, 1e-10)) + 12.47393) / 16.5, 0.0, 1.0);
|
|
111
|
-
color =
|
|
116
|
+
color = pt * gh(color);
|
|
112
117
|
color = pow(max(color, 0.0), vec3(2.2));
|
|
113
118
|
return clamp(LINEAR_REC2020_TO_LINEAR_SRGB * color, 0.0, 1.0);
|
|
114
119
|
}
|
|
115
|
-
vec3
|
|
116
|
-
if (toneMappingMode == 1) return
|
|
117
|
-
if (toneMappingMode == 2) return
|
|
118
|
-
if (toneMappingMode == 3) return
|
|
119
|
-
if (toneMappingMode == 4) return
|
|
120
|
-
return
|
|
120
|
+
vec3 cp(vec3 color) {
|
|
121
|
+
if (toneMappingMode == 1) return mh(color);
|
|
122
|
+
if (toneMappingMode == 2) return kj(color);
|
|
123
|
+
if (toneMappingMode == 3) return jf(color);
|
|
124
|
+
if (toneMappingMode == 4) return ky(color);
|
|
125
|
+
return mM(color);
|
|
121
126
|
}
|
|
122
|
-
vec3
|
|
123
|
-
vec3
|
|
127
|
+
vec3 gq(vec3 color) {
|
|
128
|
+
vec3 uH = vec3(
|
|
124
129
|
1.0 + temperature * 0.16 + tint * 0.04,
|
|
125
130
|
1.0 - tint * 0.12,
|
|
126
131
|
1.0 - temperature * 0.16 + tint * 0.04
|
|
127
132
|
);
|
|
128
|
-
color = max(color *
|
|
133
|
+
color = max(color * uH, 0.0);
|
|
129
134
|
color = max((color - 0.18) * contrast + 0.18, 0.0);
|
|
130
135
|
float luminance = dot(color, vec3(0.2126, 0.7152, 0.0722));
|
|
131
136
|
return max(mix(vec3(luminance), color, saturation), 0.0);
|
|
@@ -141,12 +146,12 @@ return;
|
|
|
141
146
|
vec4 color = sample_colorTex(uv);
|
|
142
147
|
vec4 bloom = sample_bloomTex(uv) * bloomIntensity;
|
|
143
148
|
color.rgb += bloom.rgb;
|
|
144
|
-
color.rgb =
|
|
149
|
+
color.rgb = gq(color.rgb * exposure);
|
|
145
150
|
if (sRGBOutput) {
|
|
146
151
|
float edge = smoothstep(0.2, 0.72, distance(uv, vec2(0.5)));
|
|
147
152
|
color.rgb *= 1.0 - vignette * edge;
|
|
148
|
-
color.rgb =
|
|
149
|
-
color.rgb =
|
|
153
|
+
color.rgb = cp(color.rgb);
|
|
154
|
+
color.rgb = od(color.rgb);
|
|
150
155
|
}
|
|
151
156
|
color.a = max(color.a, min(dot(bloom.rgb, vec3(0.2125, 0.7154, 0.0721)), 1.0));
|
|
152
157
|
|
|
@@ -154,32 +159,32 @@ if (shadowCatcherEnabled > 0.5) {
|
|
|
154
159
|
float coverage = clamp(shadow.r, 0.0, 1.0);
|
|
155
160
|
|
|
156
161
|
|
|
157
|
-
float
|
|
162
|
+
float gf = clamp(
|
|
158
163
|
(1.0 - shadow.a) / max(coverage, 0.000001), 0.0, 1.0
|
|
159
164
|
);
|
|
160
|
-
|
|
165
|
+
gf = max(gf - (1.0 - shadowCatcherAlpha), 0.0);
|
|
161
166
|
if (coverage > 0.0) {
|
|
162
167
|
vec4 foreground = sample_foregroundTex(uv);
|
|
163
168
|
vec4 background = sample_catcherBackgroundTex(uv);
|
|
164
|
-
vec3
|
|
165
|
-
vec3 backgroundColor =
|
|
169
|
+
vec3 foregroundColor = gq((foreground.rgb + bloom.rgb) * exposure);
|
|
170
|
+
vec3 backgroundColor = gq((background.rgb / max(background.a, 0.000001) + bloom.rgb) * exposure);
|
|
166
171
|
if (sRGBOutput) {
|
|
167
172
|
float edge = smoothstep(0.2, 0.72, distance(uv, vec2(0.5)));
|
|
168
|
-
|
|
173
|
+
foregroundColor *= 1.0 - vignette * edge;
|
|
169
174
|
backgroundColor *= 1.0 - vignette * edge;
|
|
170
|
-
|
|
171
|
-
backgroundColor =
|
|
175
|
+
foregroundColor = od(cp(foregroundColor));
|
|
176
|
+
backgroundColor = od(cp(backgroundColor));
|
|
172
177
|
}
|
|
173
178
|
|
|
174
|
-
float opacity =
|
|
175
|
-
|
|
176
|
-
float
|
|
177
|
-
float
|
|
178
|
-
float
|
|
179
|
-
float alpha =
|
|
180
|
-
vec3 premultiplied =
|
|
181
|
-
+ backgroundColor *
|
|
182
|
-
+ shadowCatcherColor *
|
|
179
|
+
float opacity = gf;
|
|
180
|
+
gf *= coverage;
|
|
181
|
+
float mR = clamp(dot(bloom.rgb, vec3(0.2125, 0.7154, 0.0721)), 0.0, 1.0);
|
|
182
|
+
float hJ = max(foreground.a, mR * (1.0 - coverage));
|
|
183
|
+
float jz = max(background.a, mR * coverage);
|
|
184
|
+
float alpha = hJ + jz * (1.0 - opacity) + gf;
|
|
185
|
+
vec3 premultiplied = foregroundColor * hJ
|
|
186
|
+
+ backgroundColor * jz * (1.0 - opacity)
|
|
187
|
+
+ shadowCatcherColor * gf;
|
|
183
188
|
color = vec4(premultiplied / max(alpha, 0.000001), alpha);
|
|
184
189
|
}
|
|
185
190
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webglPipeline.frag.js","sourceRoot":"","sources":["../../../src/renderer/glsl/webglPipeline.frag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAE5D,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC;IAC/C,IAAI,EAAE,aAAa;IACnB,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;QACrC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACrC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;KAClC;IACD,IAAI,EAAE,IAAI,CAAA;;;;;;;;;;;;;;;;;EAiBV;CACD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,cAAc,CAAC;IAChD,IAAI,EAAE,SAAS;IACf,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;QACrC,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;QAC1C,oBAAoB,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;QACjD,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;QAC7C,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;QACrC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACpC,kBAAkB,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACrD,kBAAkB,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9C,oBAAoB,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAChD,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1C,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACzC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACpC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACtC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACvC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAChC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACpC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACpC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;KACtC;IACD,IAAI,EAAE,IAAI,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyIV;CACD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC;IAC/C,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;QACrC,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;QAC7C,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;KAC5C;IACD,IAAI,EAAE,IAAI,CAAA;;;;;;;;;;EAUV;CACD,CAAC,CAAC","sourcesContent":["import { FragmentShader, Shader, glsl } from '../shader.js';\n\nexport const brightFragment = new FragmentShader({\n name: 'bloomBright',\n uniforms: {\n colorTex: Shader.uniform('sampler2D'),\n threshold: Shader.uniform('float', 1),\n scale: Shader.uniform('float', 1)\n },\n main: glsl`\nconst vec3 lumWeight = vec3(0.2125, 0.7154, 0.0721);\nvec4 median(vec4 a, vec4 b, vec4 c) {\n return a + b + c - min(min(a, b), c) - max(max(a, b), c);\n}\nvoid main() {\n vec2 d = 1.0 / vec2(colorTexRegion());\n vec4 texel = sample_colorTex(v_Texcoord);\n vec4 s1 = sample_colorTex(v_Texcoord - vec2(d.x, 0.0));\n vec4 s2 = sample_colorTex(v_Texcoord + vec2(d.x, 0.0));\n vec4 s3 = sample_colorTex(v_Texcoord - vec2(0.0, d.y));\n vec4 s4 = sample_colorTex(v_Texcoord + vec2(0.0, d.y));\n texel = median(median(texel, s1, s2), s3, s4);\n float lum = dot(texel.rgb, lumWeight);\n out_color = lum > threshold && texel.a > 0.0\n ? vec4(texel.rgb * scale, texel.a)\n : vec4(0.0, 0.0, 0.0, texel.a);\n}`\n});\n\nexport const composeFragment = new FragmentShader({\n name: 'compose',\n uniforms: {\n colorTex: Shader.uniform('sampler2D'),\n foregroundTex: Shader.uniform('sampler2D'),\n catcherBackgroundTex: Shader.uniform('sampler2D'),\n shadowCatcherTex: Shader.uniform('sampler2D'),\n bloomTex: Shader.uniform('sampler2D'),\n exposure: Shader.uniform('float', 1),\n shadowCatcherColor: Shader.uniform('vec3', [0, 0, 0]),\n shadowCatcherAlpha: Shader.uniform('float', 1),\n shadowCatcherEnabled: Shader.uniform('float', 0),\n bloomIntensity: Shader.uniform('float', 0),\n toneMappingMode: Shader.uniform('int', 0),\n contrast: Shader.uniform('float', 1),\n saturation: Shader.uniform('float', 1),\n temperature: Shader.uniform('float', 0),\n tint: Shader.uniform('float', 0),\n vignette: Shader.uniform('float', 0),\n outputMode: Shader.uniform('int', 0),\n sRGBOutput: Shader.uniform('bool', 1)\n },\n main: glsl`\nvec3 linearToneMapping(vec3 color) {\n return clamp(color, 0.0, 1.0);\n}\nvec3 reinhardToneMapping(vec3 color) {\n return clamp(color / (vec3(1.0) + color), 0.0, 1.0);\n}\nvec3 cineonToneMapping(vec3 color) {\n color = max(vec3(0.0), color - 0.004);\n return pow((color * (6.2 * color + 0.5)) /\n (color * (6.2 * color + 1.7) + 0.06), vec3(2.2));\n}\nvec3 rrtAndOdtFit(vec3 value) {\n vec3 numerator = value * (value + 0.0245786) - 0.000090537;\n vec3 denominator = value * (0.983729 * value + 0.4329510) + 0.238081;\n return numerator / denominator;\n}\nvec3 acesToneMapping(vec3 color) {\n const mat3 inputMatrix = mat3(\n vec3(0.59719, 0.07600, 0.02840),\n vec3(0.35458, 0.90834, 0.13383),\n vec3(0.04823, 0.01566, 0.83777)\n );\n const mat3 outputMatrix = mat3(\n vec3(1.60475, -0.10208, -0.00327),\n vec3(-0.53108, 1.10813, -0.07276),\n vec3(-0.07367, -0.00605, 1.07602)\n );\n color = inputMatrix * (color / 0.6);\n return clamp(outputMatrix * rrtAndOdtFit(color), 0.0, 1.0);\n}\nconst mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3(\n vec3(1.6605, -0.1246, -0.0182),\n vec3(-0.5876, 1.1329, -0.1006),\n vec3(-0.0728, -0.0083, 1.1187)\n);\nconst mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3(\n vec3(0.6274, 0.0691, 0.0164),\n vec3(0.3293, 0.9195, 0.0880),\n vec3(0.0433, 0.0113, 0.8956)\n);\nvec3 agxDefaultContrastApprox(vec3 value) {\n vec3 value2 = value * value;\n vec3 value4 = value2 * value2;\n return 15.5 * value4 * value2 - 40.14 * value4 * value\n + 31.96 * value4 - 6.868 * value2 * value\n + 0.4298 * value2 + 0.1191 * value - 0.00232;\n}\nvec3 agxToneMapping(vec3 color) {\n const mat3 insetMatrix = mat3(\n vec3(0.856627153315983, 0.137318972929847, 0.11189821299995),\n vec3(0.0951212405381588, 0.761241990602591, 0.0767994186031903),\n vec3(0.0482516061458583, 0.101439036467562, 0.811302368396859)\n );\n const mat3 outsetMatrix = mat3(\n vec3(1.1271005818144368, -0.1413297634984383, -0.14132976349843826),\n vec3(-0.11060664309660323, 1.157823702216272, -0.11060664309660294),\n vec3(-0.016493938717834573, -0.016493938717834257, 1.2519364065950405)\n );\n color = insetMatrix * (LINEAR_SRGB_TO_LINEAR_REC2020 * color);\n color = clamp((log2(max(color, 1e-10)) + 12.47393) / 16.5, 0.0, 1.0);\n color = outsetMatrix * agxDefaultContrastApprox(color);\n color = pow(max(color, 0.0), vec3(2.2));\n return clamp(LINEAR_REC2020_TO_LINEAR_SRGB * color, 0.0, 1.0);\n}\nvec3 applyToneMapping(vec3 color) {\n if (toneMappingMode == 1) return acesToneMapping(color);\n if (toneMappingMode == 2) return cineonToneMapping(color);\n if (toneMappingMode == 3) return reinhardToneMapping(color);\n if (toneMappingMode == 4) return linearToneMapping(color);\n return agxToneMapping(color);\n}\nvec3 gradeColor(vec3 color) {\n vec3 balance = vec3(\n 1.0 + temperature * 0.16 + tint * 0.04,\n 1.0 - tint * 0.12,\n 1.0 - temperature * 0.16 + tint * 0.04\n );\n color = max(color * balance, 0.0);\n color = max((color - 0.18) * contrast + 0.18, 0.0);\n float luminance = dot(color, vec3(0.2126, 0.7152, 0.0722));\n return max(mix(vec3(luminance), color, saturation), 0.0);\n}\nvoid main() {\n vec2 uv = v_Texcoord;\n vec4 shadow = sample_shadowCatcherTex(uv);\n if (outputMode == 1) {\n out_color = vec4(vec3(shadow.a), 1.0);\n return;\n }\n\n vec4 color = sample_colorTex(uv);\n vec4 bloom = sample_bloomTex(uv) * bloomIntensity;\n color.rgb += bloom.rgb;\n color.rgb = gradeColor(color.rgb * exposure);\n if (sRGBOutput) {\n float edge = smoothstep(0.2, 0.72, distance(uv, vec2(0.5)));\n color.rgb *= 1.0 - vignette * edge;\n color.rgb = applyToneMapping(color.rgb);\n color.rgb = pow(max(color.rgb, 0.0), vec3(1.0 / 2.2));\n }\n color.a = max(color.a, min(dot(bloom.rgb, vec3(0.2125, 0.7154, 0.0721)), 1.0));\n\n if (shadowCatcherEnabled > 0.5) {\n float coverage = clamp(shadow.r, 0.0, 1.0);\n // Non-catcher samples contribute visibility 1. Undo primary coverage\n // before adjusting opacity, then apply the coverage exactly once.\n float shadowAlpha = clamp(\n (1.0 - shadow.a) / max(coverage, 0.000001), 0.0, 1.0\n );\n shadowAlpha = max(shadowAlpha - (1.0 - shadowCatcherAlpha), 0.0);\n if (coverage > 0.0) {\n vec4 foreground = sample_foregroundTex(uv);\n vec4 background = sample_catcherBackgroundTex(uv);\n vec3 foregroundColor = gradeColor((foreground.rgb + bloom.rgb) * exposure);\n vec3 backgroundColor = gradeColor((background.rgb / max(background.a, 0.000001) + bloom.rgb) * exposure);\n if (sRGBOutput) {\n float edge = smoothstep(0.2, 0.72, distance(uv, vec2(0.5)));\n foregroundColor *= 1.0 - vignette * edge;\n backgroundColor *= 1.0 - vignette * edge;\n foregroundColor = pow(max(applyToneMapping(foregroundColor), 0.0), vec3(1.0 / 2.2));\n backgroundColor = pow(max(applyToneMapping(backgroundColor), 0.0), vec3(1.0 / 2.2));\n }\n // The primary samples belong to disjoint layers. Never shadow the model.\n float opacity = shadowAlpha;\n shadowAlpha *= coverage;\n float bloomAlpha = clamp(dot(bloom.rgb, vec3(0.2125, 0.7154, 0.0721)), 0.0, 1.0);\n float foregroundAlpha = max(foreground.a, bloomAlpha * (1.0 - coverage));\n float backgroundAlpha = max(background.a, bloomAlpha * coverage);\n float alpha = foregroundAlpha + backgroundAlpha * (1.0 - opacity) + shadowAlpha;\n vec3 premultiplied = foregroundColor * foregroundAlpha\n + backgroundColor * backgroundAlpha * (1.0 - opacity)\n + shadowCatcherColor * shadowAlpha;\n color = vec4(premultiplied / max(alpha, 0.000001), alpha);\n }\n }\n out_color = color;\n}`\n});\n\nexport const outputFragment = new FragmentShader({\n name: 'output',\n uniforms: {\n colorTex: Shader.uniform('sampler2D'),\n colorDenoisedTex: Shader.uniform('sampler2D'),\n denoisedPercent: Shader.uniform('float', 0)\n },\n main: glsl`\nvoid main() {\n vec2 uv = v_Texcoord;\n vec4 color = mix(\n sample_colorTex(uv),\n sample_colorDenoisedTex(uv),\n denoisedPercent\n );\n color = vec4(color.rgb * color.a, color.a);\n out_color = color;\n}`\n});\n"]}
|
|
1
|
+
{"version":3,"file":"webglPipeline.frag.js","sourceRoot":"","sources":["../../../src/renderer/glsl/webglPipeline.frag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAE5D,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC;IAC/C,IAAI,EAAE,aAAa;IACnB,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;QACrC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACrC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;KAClC;IACD,IAAI,EAAE,IAAI,CAAA;;;;;;;;;;;;;;;;;EAiBV;CACD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,cAAc,CAAC;IAChD,IAAI,EAAE,SAAS;IACf,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;QACrC,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;QAC1C,oBAAoB,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;QACjD,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;QAC7C,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;QACrC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACpC,kBAAkB,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACrD,kBAAkB,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9C,oBAAoB,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAChD,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1C,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACzC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACpC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACtC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACvC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAChC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACpC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACpC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;KACtC;IACD,IAAI,EAAE,IAAI,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8IV;CACD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC;IAC/C,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;QACrC,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;QAC7C,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;KAC5C;IACD,IAAI,EAAE,IAAI,CAAA;;;;;;;;;;EAUV;CACD,CAAC,CAAC","sourcesContent":["import { FragmentShader, Shader, glsl } from '../shader.js';\n\nexport const brightFragment = new FragmentShader({\n name: 'bloomBright',\n uniforms: {\n colorTex: Shader.uniform('sampler2D'),\n threshold: Shader.uniform('float', 1),\n scale: Shader.uniform('float', 1)\n },\n main: glsl`\nconst vec3 lumWeight = vec3(0.2125, 0.7154, 0.0721);\nvec4 median(vec4 a, vec4 b, vec4 c) {\n return a + b + c - min(min(a, b), c) - max(max(a, b), c);\n}\nvoid main() {\n vec2 d = 1.0 / vec2(colorTexRegion());\n vec4 texel = sample_colorTex(v_Texcoord);\n vec4 s1 = sample_colorTex(v_Texcoord - vec2(d.x, 0.0));\n vec4 s2 = sample_colorTex(v_Texcoord + vec2(d.x, 0.0));\n vec4 s3 = sample_colorTex(v_Texcoord - vec2(0.0, d.y));\n vec4 s4 = sample_colorTex(v_Texcoord + vec2(0.0, d.y));\n texel = median(median(texel, s1, s2), s3, s4);\n float lum = dot(texel.rgb, lumWeight);\n out_color = lum > threshold && texel.a > 0.0\n ? vec4(texel.rgb * scale, texel.a)\n : vec4(0.0, 0.0, 0.0, texel.a);\n}`\n});\n\nexport const composeFragment = new FragmentShader({\n name: 'compose',\n uniforms: {\n colorTex: Shader.uniform('sampler2D'),\n foregroundTex: Shader.uniform('sampler2D'),\n catcherBackgroundTex: Shader.uniform('sampler2D'),\n shadowCatcherTex: Shader.uniform('sampler2D'),\n bloomTex: Shader.uniform('sampler2D'),\n exposure: Shader.uniform('float', 1),\n shadowCatcherColor: Shader.uniform('vec3', [0, 0, 0]),\n shadowCatcherAlpha: Shader.uniform('float', 1),\n shadowCatcherEnabled: Shader.uniform('float', 0),\n bloomIntensity: Shader.uniform('float', 0),\n toneMappingMode: Shader.uniform('int', 0),\n contrast: Shader.uniform('float', 1),\n saturation: Shader.uniform('float', 1),\n temperature: Shader.uniform('float', 0),\n tint: Shader.uniform('float', 0),\n vignette: Shader.uniform('float', 0),\n outputMode: Shader.uniform('int', 0),\n sRGBOutput: Shader.uniform('bool', 1)\n },\n main: glsl`\nvec3 displayEncode(vec3 color) {\n color = max(color, 0.0);\n return mix(1.055 * pow(color, vec3(1.0 / 2.4)) - 0.055,\n color * 12.92, lessThanEqual(color, vec3(0.0031308)));\n}\nvec3 linearToneMapping(vec3 color) {\n return clamp(color, 0.0, 1.0);\n}\nvec3 reinhardToneMapping(vec3 color) {\n return clamp(color / (vec3(1.0) + color), 0.0, 1.0);\n}\nvec3 cineonToneMapping(vec3 color) {\n color = max(vec3(0.0), color - 0.004);\n return pow((color * (6.2 * color + 0.5)) /\n (color * (6.2 * color + 1.7) + 0.06), vec3(2.2));\n}\nvec3 rrtAndOdtFit(vec3 value) {\n vec3 numerator = value * (value + 0.0245786) - 0.000090537;\n vec3 denominator = value * (0.983729 * value + 0.4329510) + 0.238081;\n return numerator / denominator;\n}\nvec3 acesToneMapping(vec3 color) {\n const mat3 inputMatrix = mat3(\n vec3(0.59719, 0.07600, 0.02840),\n vec3(0.35458, 0.90834, 0.13383),\n vec3(0.04823, 0.01566, 0.83777)\n );\n const mat3 outputMatrix = mat3(\n vec3(1.60475, -0.10208, -0.00327),\n vec3(-0.53108, 1.10813, -0.07276),\n vec3(-0.07367, -0.00605, 1.07602)\n );\n color = inputMatrix * (color / 0.6);\n return clamp(outputMatrix * rrtAndOdtFit(color), 0.0, 1.0);\n}\nconst mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3(\n vec3(1.6605, -0.1246, -0.0182),\n vec3(-0.5876, 1.1329, -0.1006),\n vec3(-0.0728, -0.0083, 1.1187)\n);\nconst mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3(\n vec3(0.6274, 0.0691, 0.0164),\n vec3(0.3293, 0.9195, 0.0880),\n vec3(0.0433, 0.0113, 0.8956)\n);\nvec3 agxDefaultContrastApprox(vec3 value) {\n vec3 value2 = value * value;\n vec3 value4 = value2 * value2;\n return 15.5 * value4 * value2 - 40.14 * value4 * value\n + 31.96 * value4 - 6.868 * value2 * value\n + 0.4298 * value2 + 0.1191 * value - 0.00232;\n}\nvec3 agxToneMapping(vec3 color) {\n const mat3 insetMatrix = mat3(\n vec3(0.856627153315983, 0.137318972929847, 0.11189821299995),\n vec3(0.0951212405381588, 0.761241990602591, 0.0767994186031903),\n vec3(0.0482516061458583, 0.101439036467562, 0.811302368396859)\n );\n const mat3 outsetMatrix = mat3(\n vec3(1.1271005818144368, -0.1413297634984383, -0.14132976349843826),\n vec3(-0.11060664309660323, 1.157823702216272, -0.11060664309660294),\n vec3(-0.016493938717834573, -0.016493938717834257, 1.2519364065950405)\n );\n color = insetMatrix * (LINEAR_SRGB_TO_LINEAR_REC2020 * color);\n color = clamp((log2(max(color, 1e-10)) + 12.47393) / 16.5, 0.0, 1.0);\n color = outsetMatrix * agxDefaultContrastApprox(color);\n color = pow(max(color, 0.0), vec3(2.2));\n return clamp(LINEAR_REC2020_TO_LINEAR_SRGB * color, 0.0, 1.0);\n}\nvec3 applyToneMapping(vec3 color) {\n if (toneMappingMode == 1) return acesToneMapping(color);\n if (toneMappingMode == 2) return cineonToneMapping(color);\n if (toneMappingMode == 3) return reinhardToneMapping(color);\n if (toneMappingMode == 4) return linearToneMapping(color);\n return agxToneMapping(color);\n}\nvec3 gradeColor(vec3 color) {\n vec3 balance = vec3(\n 1.0 + temperature * 0.16 + tint * 0.04,\n 1.0 - tint * 0.12,\n 1.0 - temperature * 0.16 + tint * 0.04\n );\n color = max(color * balance, 0.0);\n color = max((color - 0.18) * contrast + 0.18, 0.0);\n float luminance = dot(color, vec3(0.2126, 0.7152, 0.0722));\n return max(mix(vec3(luminance), color, saturation), 0.0);\n}\nvoid main() {\n vec2 uv = v_Texcoord;\n vec4 shadow = sample_shadowCatcherTex(uv);\n if (outputMode == 1) {\n out_color = vec4(vec3(shadow.a), 1.0);\n return;\n }\n\n vec4 color = sample_colorTex(uv);\n vec4 bloom = sample_bloomTex(uv) * bloomIntensity;\n color.rgb += bloom.rgb;\n color.rgb = gradeColor(color.rgb * exposure);\n if (sRGBOutput) {\n float edge = smoothstep(0.2, 0.72, distance(uv, vec2(0.5)));\n color.rgb *= 1.0 - vignette * edge;\n color.rgb = applyToneMapping(color.rgb);\n color.rgb = displayEncode(color.rgb);\n }\n color.a = max(color.a, min(dot(bloom.rgb, vec3(0.2125, 0.7154, 0.0721)), 1.0));\n\n if (shadowCatcherEnabled > 0.5) {\n float coverage = clamp(shadow.r, 0.0, 1.0);\n // Non-catcher samples contribute visibility 1. Undo primary coverage\n // before adjusting opacity, then apply the coverage exactly once.\n float shadowAlpha = clamp(\n (1.0 - shadow.a) / max(coverage, 0.000001), 0.0, 1.0\n );\n shadowAlpha = max(shadowAlpha - (1.0 - shadowCatcherAlpha), 0.0);\n if (coverage > 0.0) {\n vec4 foreground = sample_foregroundTex(uv);\n vec4 background = sample_catcherBackgroundTex(uv);\n vec3 foregroundColor = gradeColor((foreground.rgb + bloom.rgb) * exposure);\n vec3 backgroundColor = gradeColor((background.rgb / max(background.a, 0.000001) + bloom.rgb) * exposure);\n if (sRGBOutput) {\n float edge = smoothstep(0.2, 0.72, distance(uv, vec2(0.5)));\n foregroundColor *= 1.0 - vignette * edge;\n backgroundColor *= 1.0 - vignette * edge;\n foregroundColor = displayEncode(applyToneMapping(foregroundColor));\n backgroundColor = displayEncode(applyToneMapping(backgroundColor));\n }\n // The primary samples belong to disjoint layers. Never shadow the model.\n float opacity = shadowAlpha;\n shadowAlpha *= coverage;\n float bloomAlpha = clamp(dot(bloom.rgb, vec3(0.2125, 0.7154, 0.0721)), 0.0, 1.0);\n float foregroundAlpha = max(foreground.a, bloomAlpha * (1.0 - coverage));\n float backgroundAlpha = max(background.a, bloomAlpha * coverage);\n float alpha = foregroundAlpha + backgroundAlpha * (1.0 - opacity) + shadowAlpha;\n vec3 premultiplied = foregroundColor * foregroundAlpha\n + backgroundColor * backgroundAlpha * (1.0 - opacity)\n + shadowCatcherColor * shadowAlpha;\n color = vec4(premultiplied / max(alpha, 0.000001), alpha);\n }\n }\n out_color = color;\n}`\n});\n\nexport const outputFragment = new FragmentShader({\n name: 'output',\n uniforms: {\n colorTex: Shader.uniform('sampler2D'),\n colorDenoisedTex: Shader.uniform('sampler2D'),\n denoisedPercent: Shader.uniform('float', 0)\n },\n main: glsl`\nvoid main() {\n vec2 uv = v_Texcoord;\n vec4 color = mix(\n sample_colorTex(uv),\n sample_colorDenoisedTex(uv),\n denoisedPercent\n );\n color = vec4(color.rgb * color.a, color.a);\n out_color = color;\n}`\n});\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const LIGHT_CHOICE_ENVIRONMENT = 1;
|
|
2
|
+
export declare const LIGHT_CHOICE_ANALYTIC = 2;
|
|
3
|
+
export declare const LIGHT_CHOICE_EMISSIVE_TRIANGLE = 3;
|
|
4
|
+
export declare const LIGHT_DOMAIN_ENVIRONMENT = 0;
|
|
5
|
+
export declare const LIGHT_DOMAIN_INFINITE = 1;
|
|
6
|
+
export declare const LIGHT_DOMAIN_LOCAL_AND_EMISSIVE = 2;
|
|
7
|
+
export declare const CONSTANT_DIRECTIONAL_LIGHT = 1;
|
|
8
|
+
export declare const CONSTANT_SPHERE_LIGHT = 2;
|
|
9
|
+
export declare const CONSTANT_RECT_LIGHT = 3;
|
|
10
|
+
export declare const CONSTANT_SPOT_LIGHT = 4;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const LIGHT_CHOICE_ENVIRONMENT = 1;
|
|
2
|
+
export const LIGHT_CHOICE_ANALYTIC = 2;
|
|
3
|
+
export const LIGHT_CHOICE_EMISSIVE_TRIANGLE = 3;
|
|
4
|
+
export const LIGHT_DOMAIN_ENVIRONMENT = 0;
|
|
5
|
+
export const LIGHT_DOMAIN_INFINITE = 1;
|
|
6
|
+
export const LIGHT_DOMAIN_LOCAL_AND_EMISSIVE = 2;
|
|
7
|
+
export const CONSTANT_DIRECTIONAL_LIGHT = 1;
|
|
8
|
+
export const CONSTANT_SPHERE_LIGHT = 2;
|
|
9
|
+
export const CONSTANT_RECT_LIGHT = 3;
|
|
10
|
+
export const CONSTANT_SPOT_LIGHT = 4;
|
|
11
|
+
//# sourceMappingURL=lightConstants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lightConstants.js","sourceRoot":"","sources":["../../src/renderer/lightConstants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAC1C,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AACvC,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC;AAEhD,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAC1C,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AACvC,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC;AACjD,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC;AAC5C,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AACvC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AACrC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC","sourcesContent":["export const LIGHT_CHOICE_ENVIRONMENT = 1;\nexport const LIGHT_CHOICE_ANALYTIC = 2;\nexport const LIGHT_CHOICE_EMISSIVE_TRIANGLE = 3;\n\nexport const LIGHT_DOMAIN_ENVIRONMENT = 0;\nexport const LIGHT_DOMAIN_INFINITE = 1;\nexport const LIGHT_DOMAIN_LOCAL_AND_EMISSIVE = 2;\nexport const CONSTANT_DIRECTIONAL_LIGHT = 1;\nexport const CONSTANT_SPHERE_LIGHT = 2;\nexport const CONSTANT_RECT_LIGHT = 3;\nexport const CONSTANT_SPOT_LIGHT = 4;\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { default as MeshState } from '../scene/MeshState.js';
|
|
2
|
+
export { default as InstanceState } from '../scene/InstanceState.js';
|
|
3
|
+
export { default as MaterialState } from '../scene/MaterialState.js';
|
|
4
|
+
export { default as TextureState } from '../scene/TextureState.js';
|
|
5
|
+
export { default as RectLightState } from '../scene/RectLightState.js';
|
|
6
|
+
export { default as EnvironmentLightState } from '../scene/EnvironmentLightState.js';
|
|
7
|
+
export { default as DirectionalLight } from '../scene/DirectionalLight.js';
|
|
8
|
+
export { default as SphereLight } from '../scene/SphereLight.js';
|
|
9
|
+
export { default as SpotLight } from '../scene/SpotLight.js';
|
|
10
|
+
export { default as AmbientLight } from '../scene/AmbientLight.js';
|
|
11
|
+
export * from './lightSampling.js';
|
|
12
|
+
export * from './lightsData.js';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export { default as MeshState } from '../scene/MeshState.js';
|
|
2
|
+
export { default as InstanceState } from '../scene/InstanceState.js';
|
|
3
|
+
export { default as MaterialState } from '../scene/MaterialState.js';
|
|
4
|
+
export { default as TextureState } from '../scene/TextureState.js';
|
|
5
|
+
export { default as RectLightState } from '../scene/RectLightState.js';
|
|
6
|
+
export { default as EnvironmentLightState } from '../scene/EnvironmentLightState.js';
|
|
7
|
+
export { default as DirectionalLight } from '../scene/DirectionalLight.js';
|
|
8
|
+
export { default as SphereLight } from '../scene/SphereLight.js';
|
|
9
|
+
export { default as SpotLight } from '../scene/SpotLight.js';
|
|
10
|
+
export { default as AmbientLight } from '../scene/AmbientLight.js';
|
|
11
|
+
export * from './lightSampling.js';
|
|
12
|
+
export * from './lightsData.js';
|
|
13
|
+
//# sourceMappingURL=lightCore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lightCore.js","sourceRoot":"","sources":["../../src/renderer/lightCore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAC,OAAO,IAAI,aAAa,EAAC,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAC,OAAO,IAAI,aAAa,EAAC,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAC,OAAO,IAAI,cAAc,EAAC,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAC,OAAO,IAAI,qBAAqB,EAAC,MAAM,mCAAmC,CAAC;AACnF,OAAO,EAAC,OAAO,IAAI,gBAAgB,EAAC,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAC,OAAO,IAAI,WAAW,EAAC,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,0BAA0B,CAAC;AACjE,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC","sourcesContent":["export {default as MeshState} from '../scene/MeshState.js';\nexport {default as InstanceState} from '../scene/InstanceState.js';\nexport {default as MaterialState} from '../scene/MaterialState.js';\nexport {default as TextureState} from '../scene/TextureState.js';\nexport {default as RectLightState} from '../scene/RectLightState.js';\nexport {default as EnvironmentLightState} from '../scene/EnvironmentLightState.js';\nexport {default as DirectionalLight} from '../scene/DirectionalLight.js';\nexport {default as SphereLight} from '../scene/SphereLight.js';\nexport {default as SpotLight} from '../scene/SpotLight.js';\nexport {default as AmbientLight} from '../scene/AmbientLight.js';\nexport * from './lightSampling.js';\nexport * from './lightsData.js';\n"]}
|
|
@@ -1,22 +1,17 @@
|
|
|
1
|
-
import { TexturePixelSource
|
|
1
|
+
import { type TexturePixelSource } from '../math.js';
|
|
2
2
|
import DirectionalLight from '../scene/DirectionalLight.js';
|
|
3
3
|
import Geometry from '../scene/Geometry.js';
|
|
4
|
-
import Mesh from '../scene/
|
|
5
|
-
import RectLight from '../scene/
|
|
4
|
+
import type Mesh from '../scene/MeshState.js';
|
|
5
|
+
import type RectLight from '../scene/RectLightState.js';
|
|
6
6
|
import SphereLight from '../scene/SphereLight.js';
|
|
7
7
|
import SpotLight from '../scene/SpotLight.js';
|
|
8
|
-
import OpenPBRMaterial from '../scene/
|
|
9
|
-
export
|
|
10
|
-
export declare const LIGHT_CHOICE_ANALYTIC = 2;
|
|
11
|
-
export declare const LIGHT_CHOICE_EMISSIVE_TRIANGLE = 3;
|
|
12
|
-
export declare const LIGHT_DOMAIN_ENVIRONMENT = 0;
|
|
13
|
-
export declare const LIGHT_DOMAIN_INFINITE = 1;
|
|
14
|
-
export declare const LIGHT_DOMAIN_LOCAL_AND_EMISSIVE = 2;
|
|
8
|
+
import type OpenPBRMaterial from '../scene/MaterialState.js';
|
|
9
|
+
export * from './lightConstants.js';
|
|
15
10
|
type AnalyticLight = DirectionalLight | SphereLight | SpotLight | RectLight;
|
|
16
11
|
export interface EmissiveTriangle {
|
|
17
|
-
p0:
|
|
18
|
-
p1:
|
|
19
|
-
p2:
|
|
12
|
+
p0: Float32Array;
|
|
13
|
+
p1: Float32Array;
|
|
14
|
+
p2: Float32Array;
|
|
20
15
|
uv0: [number, number];
|
|
21
16
|
uv1: [number, number];
|
|
22
17
|
uv2: [number, number];
|
|
@@ -43,7 +38,7 @@ export interface LightSamplingDistribution {
|
|
|
43
38
|
pmfs: Float32Array;
|
|
44
39
|
totalWeight: number;
|
|
45
40
|
}
|
|
46
|
-
export declare function colorLuminance(color:
|
|
41
|
+
export declare function colorLuminance<T extends ArrayLike<number>>(color: T): number;
|
|
47
42
|
export declare function estimateAnalyticLightPower(light: AnalyticLight): number;
|
|
48
43
|
export declare function sphereSolidAnglePdf(distanceToCenter: number, radius: number): number;
|
|
49
44
|
/** Packs unique 128² peak-normalized IES profiles four scalar samples per texel. */
|
|
@@ -52,7 +47,7 @@ export declare function packIESProfiles(lights: AnalyticLight[], firstTexel?: nu
|
|
|
52
47
|
offsets: Int32Array<ArrayBuffer>;
|
|
53
48
|
texelCount: number;
|
|
54
49
|
};
|
|
55
|
-
export declare function estimateEnvironmentPower(image?:
|
|
50
|
+
export declare function estimateEnvironmentPower<T extends TexturePixelSource>(image?: T): number;
|
|
56
51
|
/** Reusable typed choices; insertion order matches the sampling distribution. */
|
|
57
52
|
export declare class LightChoiceBuffer {
|
|
58
53
|
count: number;
|
|
@@ -64,12 +59,20 @@ export declare class LightChoiceBuffer {
|
|
|
64
59
|
}
|
|
65
60
|
/** Builds a Walker alias table. Each 16-byte entry is probability/alias/type/index. */
|
|
66
61
|
export declare function buildLightAliasTable(inputs: LightChoiceInput[] | LightChoiceBuffer): LightSamplingDistribution;
|
|
62
|
+
/**
|
|
63
|
+
* Builds the table a shadow catcher draws its occlusion tests from: the
|
|
64
|
+
* environment and analytic lights of `choices` at their relative weights.
|
|
65
|
+
* Emissive meshes are scene objects, not light already present in the plate
|
|
66
|
+
* the catcher darkens, so their occlusion is not catcher shadow. Returns
|
|
67
|
+
* `undefined` when `choices` holds no emissive triangle and the catcher can
|
|
68
|
+
* share the main table.
|
|
69
|
+
*/
|
|
70
|
+
export declare function buildShadowCatcherLightAliasTable(choices: LightChoiceBuffer, scratch?: LightChoiceBuffer): LightSamplingDistribution | undefined;
|
|
67
71
|
export declare function collectEmissiveTriangles(bindings: EmissiveMeshBinding[], materials: OpenPBRMaterial[]): EmissiveTriangle[];
|
|
68
72
|
export declare function packEmissiveTriangles(triangles: EmissiveTriangle[], data?: Float32Array): Float32Array<ArrayBufferLike>;
|
|
69
73
|
/** Caches world-space vertices per mesh, independently of emission strength. */
|
|
70
74
|
export declare class EmissiveTriangleCache {
|
|
71
|
-
|
|
75
|
+
constructor();
|
|
72
76
|
private _triangles;
|
|
73
77
|
collect(bindings: EmissiveMeshBinding[], materials: OpenPBRMaterial[]): EmissiveTriangle[];
|
|
74
78
|
}
|
|
75
|
-
export {};
|