From 5d187c2ad453043e8b2755d0dc916e1f18aadb3c Mon Sep 17 00:00:00 2001 From: Marco Fugaro Date: Sun, 7 Jun 2026 22:18:50 +0200 Subject: [PATCH 01/14] First SSSS implementation --- examples/jsm/tsl/display/SSSSNode.js | 648 ++++++++++++++++++ examples/models/gltf/shell.glb | Bin 0 -> 354148 bytes examples/webgpu_postprocessing_ssss.html | 254 +++++++ .../nodes/MeshSubsurfaceNodeMaterial.js | 104 +++ src/materials/nodes/NodeMaterials.js | 1 + 5 files changed, 1007 insertions(+) create mode 100644 examples/jsm/tsl/display/SSSSNode.js create mode 100644 examples/models/gltf/shell.glb create mode 100644 examples/webgpu_postprocessing_ssss.html create mode 100644 src/materials/nodes/MeshSubsurfaceNodeMaterial.js diff --git a/examples/jsm/tsl/display/SSSSNode.js b/examples/jsm/tsl/display/SSSSNode.js new file mode 100644 index 00000000000000..d80aa349b43845 --- /dev/null +++ b/examples/jsm/tsl/display/SSSSNode.js @@ -0,0 +1,648 @@ +// https://advances.realtimerendering.com/s2018/Efficient%20screen%20space%20subsurface%20scattering%20Siggraph%202018.pdf +import { RenderTarget, HalfFloatType, TempNode, QuadMesh, NodeMaterial, RendererUtils, Vector2, Vector3, Color, DataTexture, RGBAFormat, FloatType, RepeatWrapping, NearestFilter } from 'three/webgpu'; +import { Fn, float, vec2, vec3, vec4, int, uv, uniform, uniformArray, Loop, texture, passTexture, NodeUpdateType, If, abs, max, min, exp, sqrt, pow, mix, dot, cross, normalize, clamp } from 'three/tsl'; + +const _quadMesh = /*@__PURE__*/ new QuadMesh(); +const _size = /*@__PURE__*/ new Vector2(); + +let _rendererState; + +const _GOLDEN_RATIO = ( 1 + Math.sqrt( 5 ) ) / 2; +const _MAX_SAMPLES = 64; + +function _invertBurleyCDF( u, s, iterations = 12 ) { + + let r = - Math.log( Math.max( 1 - u, 1e-10 ) ) / s; + + for ( let i = 0; i < iterations; i ++ ) { + + const esr = Math.exp( - s * r ); + const esr3 = Math.exp( ( - s * r ) / 3 ); + const f = 1 - 0.25 * esr - 0.75 * esr3 - u; + const fp = ( s / 4 ) * ( esr + esr3 ); + const fpp = ( ( - s * s ) / 4 ) * esr + ( ( - s * s ) / 12 ) * esr3; + const denom = 2 * fp * fp - f * fpp; + if ( Math.abs( denom ) < 1e-14 ) break; + const delta = ( 2 * f * fp ) / denom; + r -= delta; + r = Math.max( r, 0 ); + if ( Math.abs( delta ) < 1e-10 ) break; + + } + + return r; + +} + +function _precomputeSamples( numSamples ) { + + const s = 1.0; + const samples = []; + + for ( let i = 0; i < numSamples; i ++ ) { + + const u = ( i + 0.5 ) / numSamples; + const r = _invertBurleyCDF( u, s ); + const phi = 2 * Math.PI * ( ( i / _GOLDEN_RATIO ) % 1 ); + samples.push( new Vector3( r * Math.cos( phi ), r * Math.sin( phi ), r ) ); + + } + + return samples; + +} + +function _generateNoiseTexture( size = 64 ) { + + const data = new Float32Array( size * size * 4 ); + + for ( let i = 0; i < size * size; i ++ ) { + + const angle = Math.random() * Math.PI * 2; + data[ i * 4 ] = Math.cos( angle ); + data[ i * 4 + 1 ] = Math.sin( angle ); + data[ i * 4 + 2 ] = 0; + data[ i * 4 + 3 ] = 1; + + } + + const tex = new DataTexture( data, size, size, RGBAFormat, FloatType ); + tex.wrapS = RepeatWrapping; + tex.wrapT = RepeatWrapping; + tex.minFilter = NearestFilter; + tex.magFilter = NearestFilter; + tex.needsUpdate = true; + return tex; + +} + +const TEXTURING_MODE = { + POST_SCATTER: 1, // albedo.a = 1, albedoExp = 1.0 + PRE_AND_POST_SCATTER: 2, // albedo.a = 2, albedoExp = 0.5 + NONE: 3, // albedo.a = 3, albedoExp = 0.0 + // 0 is reserved for non-SSS pixels (no blur) +}; + +/** + * Screen-space subsurface scattering (SSSS) post-processing node. + * + * Blurs the lit scene color using a Burley normalized diffusion profile sampled + * in screen space, with optional albedo-aware texturing modes (Unity HDRP-style): + * + * - `POST_SCATTER`: `albedo * blur(color / albedo)` — preserves high-frequency + * albedo detail; recommended for scanned skin textures. + * - `PRE_AND_POST_SCATTER`: `sqrt(albedo) * blur(color / sqrt(albedo))`. + * - `NONE`: `blur(color)` — blurs the lit color directly. + * + * Requires the scene to be rendered with an MRT that exposes a separate + * albedo attachment (rgb = base color, a = SSS mask: 1 = SSS on, 0 = skip). + * + * References: + * - {@link https://advances.realtimerendering.com/s2018/Efficient%20screen%20space%20subsurface%20scattering%20Siggraph%202018.pdf} + * - {@link https://graphics.pixar.com/library/ApproxBSSRDF/} + * + * @augments TempNode + * @three_import import { subsurfaceScattering } from 'three/addons/tsl/display/SSSSNode.js'; + */ +class SSSSNode extends TempNode { + + static get type() { + + return 'SSSSNode'; + + } + + static TEXTURING_MODE = TEXTURING_MODE; + + /** + * Constructs a new SSSS node. + * + * @param {TextureNode} colorNode - Lit scene color from the scene pass. + * @param {TextureNode} depthNode - Scene depth texture. + * @param {TextureNode} albedoNode - MRT albedo attachment (rgb = base color, a = SSS mask). + * @param {PerspectiveCamera} camera - The scene camera. + * @param {TextureNode|null} [normalNode=null] - Optional view-space normals; improves accuracy on oblique surfaces. + * @param {TextureNode|null} [sssParams0Node=null] - Optional MRT texture written by {@link MeshSubsurfaceNodeMaterial} + * encoding per-object SSS params: rgb = scatteringDistance, a = worldScale. + * When provided, overrides the pass-level `scatteringDistance` and `worldScale` uniforms per pixel. + * @param {TextureNode|null} [sssParams1Node=null] - Optional MRT texture written by {@link MeshSubsurfaceNodeMaterial} + * encoding per-object SSS params: rgb = scatteringColor, a = strength. + * When provided, overrides the pass-level `scatteringColor` and `strength` uniforms per pixel. + */ + constructor( colorNode, depthNode, albedoNode, camera, normalNode = null, sssParams0Node = null, sssParams1Node = null ) { + + super( 'vec4' ); + + this.colorNode = colorNode; + this.depthNode = depthNode; + this.albedoNode = albedoNode; + this.normalNode = normalNode; + this.sssParams0Node = sssParams0Node; + this.sssParams1Node = sssParams1Node; + + this.updateBeforeType = NodeUpdateType.FRAME; + + /** + * Maximum blur samples per pixel. The actual count scales down + * with the LOD factor for small screen-space disks. + * + * @type {UniformNode} + * @default 32 + */ + this.samples = uniform( 32 ); + + /** + * Output visualization mode: 0 = final result, 1 = amplified diff, + * 2 = blur only, 3 = depth, 4 = channel weights, 5 = albedo. + * + * @type {UniformNode} + * @default 0 + */ + this.outputMode = uniform( 0 ); + + /** + * Fog type: 0 = none, 1 = linear (`THREE.Fog`), 2 = exp2 (`THREE.FogExp2`). + * Use `setFog( scene.fog )` to populate all fog uniforms at once. + * + * @type {UniformNode} + * @default 0 + */ + this.fogType = uniform( 0 ); + + /** + * Fog color, matching `scene.fog.color`. + * + * @type {UniformNode} + */ + this.fogColor = uniform( new Color( 1, 1, 1 ) ); + + /** + * Near distance for linear fog, matching `scene.fog.near`. + * + * @type {UniformNode} + * @default 0 + */ + this.fogNear = uniform( 0.0 ); + + /** + * Far distance for linear fog, matching `scene.fog.far`. + * + * @type {UniformNode} + * @default 100 + */ + this.fogFar = uniform( 100.0 ); + + /** + * Density for exp2 fog, matching `scene.fog.density`. + * + * @type {UniformNode} + * @default 0.025 + */ + this.fogDensity = uniform( 0.025 ); + + /** + * Fraction of full resolution at which the SSS blur runs. + * Values below 1 trade quality for performance. + * + * @type {number} + * @default 1 + */ + this.resolutionScale = 1; + + // private + + /** + * @private + * @type {PerspectiveCamera} + */ + this._camera = camera; + + /** + * @private + * @type {RenderTarget} + */ + this._sssRenderTarget = new RenderTarget( 1, 1, { depthBuffer: false, type: HalfFloatType } ); + this._sssRenderTarget.texture.name = 'SSSS.LowRes'; + + /** + * @private + * @type {RenderTarget} + */ + /** + * @private + * @type {UniformNode} + */ + this._resolution = uniform( new Vector2() ); + + /** + * @private + * @type {UniformNode} + */ + this._lowResolution = uniform( new Vector2() ); + + /** + * @private + * @type {UniformNode} + */ + this._projScale = uniform( 1.0 ); + + /** + * @private + * @type {UniformNode} + */ + this._cameraNear = uniform( camera.near ); + + /** + * @private + * @type {UniformNode} + */ + this._cameraProjectionMatrix = uniform( camera.projectionMatrix ); + + /** + * @private + * @type {UniformNode} + */ + this._cameraProjectionMatrixInverse = uniform( camera.projectionMatrixInverse ); + + const allSamples = _precomputeSamples( _MAX_SAMPLES ); + + /** + * @private + * @type {UniformArrayNode} + */ + this._samplesU = uniformArray( allSamples, 'vec3' ); + + /** + * @private + * @type {number} + */ + this._maxR = allSamples[ _MAX_SAMPLES - 1 ].z; + + /** + * @private + * @type {TextureNode} + */ + this._noiseNode = texture( _generateNoiseTexture() ); + + /** + * @private + * @type {NodeMaterial} + */ + this._sssMaterial = new NodeMaterial(); + this._sssMaterial.name = 'SSSS'; + + /** + * @private + * @type {NodeMaterial} + */ + /** + * @private + * @type {PassTextureNode} + */ + this._textureNode = passTexture( this, this._sssRenderTarget.texture ); + + } + + /** + * Returns the result of the effect as a texture node. + * + * @return {PassTextureNode} The output texture. + */ + getTextureNode() { + + return this._textureNode; + + } + + /** + * Reads fog parameters from a `THREE.Fog` or `THREE.FogExp2` instance and + * copies them into the corresponding uniforms. Call once after construction + * and again whenever the scene fog changes. + * + * @param {Fog|FogExp2|null} fog - `scene.fog`, or `null` to disable fog correction. + */ + setFog( fog ) { + + if ( ! fog ) { + + this.fogType.value = 0; + + } else if ( fog.isFogExp2 ) { + + this.fogType.value = 2; + this.fogDensity.value = fog.density; + this.fogColor.value.copy( fog.color ); + + } else { + + this.fogType.value = 1; + this.fogNear.value = fog.near; + this.fogFar.value = fog.far; + this.fogColor.value.copy( fog.color ); + + } + + } + + /** + * Sets the size of the internal render targets. + * + * @param {number} width - Output width in pixels. + * @param {number} height - Output height in pixels. + */ + setSize( width, height ) { + + this._resolution.value.set( width, height ); + + const w = Math.max( 1, Math.round( this.resolutionScale * width ) ); + const h = Math.max( 1, Math.round( this.resolutionScale * height ) ); + this._lowResolution.value.set( w, h ); + // Output render target must stay at full resolution — without a separate + // composite pass there is no way to upscale a low-res SSS blur back to full + // res. resolutionScale only affects the noise UV tiling (_lowResolution). + this._sssRenderTarget.setSize( width, height ); + + } + + /** + * Executes the SSS blur and bilateral upsample passes once per frame. + * + * @param {NodeFrame} frame - The current node frame. + */ + updateBefore( frame ) { + + const { renderer } = frame; + + _rendererState = RendererUtils.resetRendererState( renderer, _rendererState ); + + const size = renderer.getDrawingBufferSize( _size ); + this.setSize( size.width, size.height ); + + this._projScale.value = 0.5 * size.height * this._camera.projectionMatrix.elements[ 5 ]; + this._cameraNear.value = this._camera.near; + this._cameraProjectionMatrix.value.copy( this._camera.projectionMatrix ); + this._cameraProjectionMatrixInverse.value.copy( this._camera.projectionMatrixInverse ); + + _quadMesh.material = this._sssMaterial; + renderer.setRenderTarget( this._sssRenderTarget ); + _quadMesh.render( renderer ); + + RendererUtils.restoreRendererState( renderer, _rendererState ); + + } + + /** + * Builds the TSL shader graph for both passes. + * + * @param {NodeBuilder} builder - The current node builder. + * @return {PassTextureNode} + */ + setup( builder ) { + + const { colorNode, depthNode, albedoNode, normalNode, sssParams0Node, sssParams1Node } = this; + const { samples, outputMode } = this; + const { fogType, fogNear, fogFar, fogDensity } = this; + const fogColorUniform = this.fogColor; + const { _lowResolution, _projScale, _cameraNear, _resolution, _cameraProjectionMatrix, _cameraProjectionMatrixInverse, _samplesU, _noiseNode } = this; + const maxR = this._maxR; + + const sampleColor = ( uvCoord ) => colorNode.sample( uvCoord ); + const sampleDepth = ( uvCoord ) => depthNode.sample( uvCoord ).r; + const sampleAlbedo = ( uvCoord ) => albedoNode.sample( uvCoord ).rgb; + + const getViewPos = ( depthVal, coordVal ) => { + + const z = depthVal.mul( 2.0 ).sub( 1.0 ); + const clipPos = vec4( coordVal.mul( 2.0 ).sub( 1.0 ), z, 1.0 ); + const viewPos = _cameraProjectionMatrixInverse.mul( clipPos ); + return viewPos.xyz.div( viewPos.w ); + + }; + + const evalWeight = ( d, s ) => exp( s.mul( d ).negate() ).add( exp( s.mul( d ).div( 3.0 ).negate() ) ); + + // Returns fog factor in [0,1]: 0 = no fog, 1 = full fog. + const computeFogFactor = ( depth ) => { + + const linFactor = clamp( depth.sub( fogNear ).div( fogFar.sub( fogNear ) ), 0.0, 1.0 ); + const exp2Factor = float( 1.0 ).sub( clamp( exp( fogDensity.mul( fogDensity ).mul( depth ).mul( depth ).negate() ), 0.0, 1.0 ) ); + return fogType.greaterThan( 1.5 ).select( exp2Factor, fogType.greaterThan( 0.5 ).select( linFactor, float( 0.0 ) ) ); + + }; + + // Remove fog contribution so the blur operates on un-fogged irradiance. + const defog = ( color, ff ) => { + + const opacity = max( float( 1.0 ).sub( ff ), 0.001 ); + return color.sub( fogColorUniform.mul( float( 1.0 ).sub( opacity ) ) ).div( opacity ); + + }; + + const ALBEDO_EPS = 0.0001; + + const sssFn = Fn( () => { + + const vuv = uv(); + const centerDepth = sampleDepth( vuv ).toVar(); + const centerColor = sampleColor( vuv ).toVar(); + const result = centerColor.toVar(); + + If( centerDepth.lessThan( 1.0 ), () => { + + const centerAlbedoSample = albedoNode.sample( vuv ).toVar(); + const centerAlbedo = max( centerAlbedoSample.rgb, vec3( ALBEDO_EPS ) ).toVar(); + const sssMask = centerAlbedoSample.a.toVar(); + + const centerViewPos = getViewPos( centerDepth, vuv ).toVar(); + const linearDepth = centerViewPos.z.negate().toVar(); + const centerFF = computeFogFactor( linearDepth ).toVar(); + const centerColorDefogged = defog( centerColor.rgb, centerFF ).toVar(); + + const _p0 = sssParams0Node.sample( vuv ).toVar(); + const _p1 = sssParams1Node.sample( vuv ).toVar(); + const pixelScatteringDistance = _p0.rgb; + const pixelWorldScale = _p0.a; + const pixelScatteringColor = _p1.rgb; + const pixelStrength = _p1.a; + + const scatterDist = pixelScatteringDistance.mul( pixelWorldScale ).toVar(); + const sR = float( 3.67 ).div( max( scatterDist.x, 0.0001 ) ).toVar(); + const sG = float( 3.67 ).div( max( scatterDist.y, 0.0001 ) ).toVar(); + const sB = float( 3.67 ).div( max( scatterDist.z, 0.0001 ) ).toVar(); + const sMin = min( sR, min( sG, sB ) ).toVar(); + + const worldRadius = float( maxR ).div( sMin ).toVar(); + const screenRadius = worldRadius.mul( _projScale ).div( linearDepth ).toVar(); + const effectiveMaxRadius = min( worldRadius.mul( _projScale ).div( _cameraNear ), _resolution.y.mul( 0.25 ) ); + const clampedRadius = min( screenRadius, effectiveMaxRadius ).toVar(); + const radiusScale = clampedRadius.div( float( maxR ) ).toVar(); + + const skipBlur = sssMask.lessThan( 0.5 ).toVar(); + const effectiveSamples = skipBlur.select( int( 0 ), int( samples ) ).toVar(); + const effectiveStrength = pixelStrength.mul( skipBlur.select( float( 0.0 ), float( 1.0 ) ) ).toVar(); + + const noiseUV = vuv.mul( _lowResolution ).div( 64.0 ); + const noiseVal = _noiseNode.sample( noiseUV ); + const cosA = noiseVal.r.toVar(); + const sinA = noiseVal.g.toVar(); + + // Tangent-plane disk basis; falls back to screen-aligned disk when no normalNode. + const centerNormal = normalNode + ? normalize( normalNode.sample( vuv ).rgb ).toVar() + : vec3( 0.0, 0.0, 1.0 ).toVar(); + const seedUp = abs( centerNormal.y ).lessThan( 0.99 ).select( vec3( 0.0, 1.0, 0.0 ), vec3( 1.0, 0.0, 0.0 ) ); + const T = normalize( seedUp.sub( centerNormal.mul( dot( seedUp, centerNormal ) ) ) ).toVar(); + const B = cross( centerNormal, T ).toVar(); + const Trot = T.mul( cosA ).add( B.mul( sinA ) ).toVar(); + const Brot = T.mul( sinA.negate() ).add( B.mul( cosA ) ).toVar(); + const sampleWorldStep = radiusScale.mul( linearDepth ).div( _projScale ).toVar(); + + // albedo.a stores SSSSNode.TEXTURING_MODE (1/2/3); derive albedoExp via 1.5 - mode*0.5 + const albedoExp = float( 1.5 ).sub( sssMask.mul( 0.5 ) ).toVar(); + const outFactor = pow( centerAlbedo, vec3( albedoExp ) ).toVar(); + + const totalR = float( 0.0 ).toVar(); + const totalG = float( 0.0 ).toVar(); + const totalB = float( 0.0 ).toVar(); + const weightSumR = float( 0.0 ).toVar(); + const weightSumG = float( 0.0 ).toVar(); + const weightSumB = float( 0.0 ).toVar(); + + Loop( { start: int( 0 ), end: effectiveSamples, type: 'int', condition: '<' }, ( { i } ) => { + + const sampleData = _samplesU.element( i ); + const sx = sampleData.x.toVar(); + const sy = sampleData.y.toVar(); + const sr = sampleData.z.toVar(); + + const viewOffset = Trot.mul( sx ).add( Brot.mul( sy ) ).mul( sampleWorldStep ); + const viewSamplePos = centerViewPos.add( viewOffset ); + const clipPos = _cameraProjectionMatrix.mul( vec4( viewSamplePos, 1.0 ) ); + const ndc = clipPos.xy.div( clipPos.w ); + const sampleUV = clamp( ndc.mul( 0.5 ).add( 0.5 ), vec2( 0.0 ), vec2( 1.0 ) ); + + const sampledColor = sampleColor( sampleUV ); + const sampledDepth = sampleDepth( sampleUV ).toVar(); + const sampledAlbedo = max( sampleAlbedo( sampleUV ), vec3( ALBEDO_EPS ) ).toVar(); + const sampleViewPos = getViewPos( sampledDepth, sampleUV ).toVar(); + + const sampleFF = computeFogFactor( sampleViewPos.z.negate() ); + const sampledColorDefogged = defog( sampledColor.rgb, sampleFF ); + const inFactorSample = pow( sampledAlbedo, vec3( albedoExp ) ); + const irradiance = sampledColorDefogged.div( inFactorSample ).toVar(); + + const worldR = sr.div( sMin ).toVar(); + const dx = centerViewPos.x.sub( sampleViewPos.x ); + const dy = centerViewPos.y.sub( sampleViewPos.y ); + const dz = centerViewPos.z.sub( sampleViewPos.z ); + const worldDist = sqrt( dx.mul( dx ).add( dy.mul( dy ) ).add( dz.mul( dz ) ) ); + const depthDiff = abs( centerViewPos.z.sub( sampleViewPos.z ) ).toVar(); + const d = max( worldDist, 0.00001 ).toVar(); + + const wR = evalWeight( d, sR ).toVar(); + const wG = evalWeight( d, sG ).toVar(); + const wB = evalWeight( d, sB ).toVar(); + + const valid = depthDiff + .lessThan( worldR.mul( 2.0 ) ) + .and( sampledDepth.lessThan( 1.0 ) ) + .select( 1.0, 0.0 ) + .toVar(); + + const vR = wR.mul( valid ).toVar(); + const vG = wG.mul( valid ).toVar(); + const vB = wB.mul( valid ).toVar(); + + totalR.addAssign( vR.mul( irradiance.r ) ); + totalG.addAssign( vG.mul( irradiance.g ) ); + totalB.addAssign( vB.mul( irradiance.b ) ); + weightSumR.addAssign( vR ); + weightSumG.addAssign( vG ); + weightSumB.addAssign( vB ); + + } ); + + const blurredIrradiance = vec3( + totalR.div( max( weightSumR, 0.00001 ) ), + totalG.div( max( weightSumG, 0.00001 ) ), + totalB.div( max( weightSumB, 0.00001 ) ), + ); + // Disney Diffuse Fresnel transmission at the exit point in the view direction [Burley 2015]. + // F_dt(v) = 1 - 0.5 * (1 - |n·v|)^5 — models light refracting out of the surface. + const viewDir = normalize( centerViewPos.negate() ); + const NdotV = abs( dot( centerNormal, viewDir ) ); + const Fdt = float( 1.0 ).sub( float( 0.5 ).mul( pow( float( 1.0 ).sub( NdotV ), float( 5.0 ) ) ) ); + const blurred = blurredIrradiance.mul( outFactor ).mul( pixelScatteringColor ).mul( Fdt ); + const blendedColor = mix( centerColorDefogged, blurred, effectiveStrength ); + + const diff = blurred.sub( centerColorDefogged ).mul( 20.0 ).add( 0.5 ); + const depthVis = vec3( linearDepth.div( 10.0 ) ); + const weightsMax = max( weightSumR, max( weightSumG, weightSumB ) ).add( 0.0001 ); + const weightsVis = vec3( + weightSumR.div( weightsMax ), + weightSumG.div( weightsMax ), + weightSumB.div( weightsMax ), + ); + const albedoVis = centerAlbedo; + + const rawOut = outputMode + .greaterThan( 4.5 ) + .select( + albedoVis, + outputMode.greaterThan( 3.5 ).select( + weightsVis, + outputMode.greaterThan( 2.5 ).select( + depthVis, + outputMode.greaterThan( 1.5 ).select( blurred, outputMode.greaterThan( 0.5 ).select( diff, blendedColor ) ), + ), + ), + ); + + // Re-apply fog at the center pixel's depth after the blur. + const foggedOut = mix( rawOut, fogColorUniform, centerFF ); + result.assign( vec4( foggedOut, centerColor.a ) ); + + } ); + + return result; + + } ); + + this._sssMaterial.fragmentNode = sssFn().context( builder.getSharedContext() ); + this._sssMaterial.needsUpdate = true; + + return this._textureNode; + + } + + /** + * Frees internal resources. Call when the effect is no longer needed. + */ + dispose() { + + this._sssRenderTarget.dispose(); + this._sssMaterial.dispose(); + + } + +} + +export default SSSSNode; + +/** + * TSL function for creating a screen-space subsurface scattering effect. + * + * @tsl + * @function + * @param {TextureNode} colorNode - Lit scene color texture. + * @param {TextureNode} depthNode - Scene depth texture. + * @param {TextureNode} albedoNode - MRT albedo attachment (rgb = base color, a = SSS mask). + * @param {PerspectiveCamera} camera - The scene camera. + * @param {TextureNode|null} [normalNode=null] - Optional view-space normal texture. + * @param {TextureNode|null} [sssParams0Node=null] - Optional per-object params texture (rgb = scatteringDistance, a = worldScale). + * @param {TextureNode|null} [sssParams1Node=null] - Optional per-object params texture (rgb = scatteringColor, a = strength). + * @returns {SSSSNode} + */ +export const subsurfaceScattering = ( colorNode, depthNode, albedoNode, camera, normalNode = null, sssParams0Node = null, sssParams1Node = null ) => new SSSSNode( colorNode, depthNode, albedoNode, camera, normalNode, sssParams0Node, sssParams1Node ); + +export { TEXTURING_MODE }; diff --git a/examples/models/gltf/shell.glb b/examples/models/gltf/shell.glb new file mode 100644 index 0000000000000000000000000000000000000000..6f7e31a14796480de91827d53389a4aea105db8a GIT binary patch literal 354148 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 u1BQ^w>~eH-cY{nG9?!$0D5#Y^A}Bs3St>aVd%H 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

gm z=E$D<#yz&%u-12WZQ$63UzasJj)ZO*U2Qe+rIt7SjK1}7n*WUw?HRvD#GTT)LGwzR zqAnl*yT$&I&tKV?Ou0W<=cXu+SwCVwm$ovGcZ?AM8VkB-^2Yru?CkeksjzSKucrui1#pzn;cBTUR=>?0|O&mHXzC!enR>T>l! z-Tg#`xnDPM4MvAg+|#%kB^YlL@AGr(6yBPvUKP0?+un@C9mz4;6ES?{%vRUwS(~F} zcF&RRN)~+$+`1s{Ml0j;0WCfIY0avf;a<~alTIU)` zZy5U^miKVsg{p;1{xs02h1AXdV_7%0RCta2e46{a$nJWr(Mq0c-jX#dD_(Z2iOFkN z?W%KO&AxdZ^Omf6z|!6tKKsG$^Y`~}oDy~2StWFqRePY??wz#KcZ%iSmh>y$X_sgI z3w!uHwDMM3?)$@9(iT-#iT}w{afzjSX4{IEUtMtP!J)Wi?zuki4%D8?&@(q@x;=7v zD_XWt?f(EbK*+z9kuqf_7vOy23|}M^cfZ%PSI}-vtsVaEg8%9|;xgjLc9W#wbBn@= zLh%D9y-isf*@YPs^cCV)x;D=vZGUr|ZCj(a>B;^toSL|>C{UsS9 zEoZtMky_M1L-NdsfL&}A0^a;}@stvX7pRRchj5aaBsAGtP$Cw&3^}e7%=Z_Q))PfZ zRIlf4Z6urVXwz72FpfkhQNz^QimWBZsrmuMf&LOweG>7OM_`O3r9vG~f)g%>;7|^} zx&p82m9Z-lQ;~{B66HBlPN(rVzEy&`wt##rgDebxxF&N|)&O-BmMuG)5*PzYWRs!# zXU+vk(_mdEq05O}t!?KBwum4`U4RCM^#r5YlWCPTB z&)1p3N>QRizL8DgLX8r%iDu+aAu^o_`y(G>Dnu~G2ecJVRg8(ZA$2eRX{I$#?F2iJgdGuu$@E^nq6KSeA)iuN-;r)Bf0OF z<9D48XmY3uJyawRA8(%n5WrhCRFi=E{AczVm5y#R%d4U9<<)(ns0(Jmb$+O7sMozT zWuzy9={amMMc_J(aV;M$u^Ht5RBF1)2g5DI#su|`PBlGa;VN^vroyxWarE992@?Ft z>7I6(yc7rH)c1}ZswOELQCsSFy!IWePWEmJE7zGFNvZ-sN?9P@Z+}8tS8^+jKY9O# z0peXqIu+!vixj71z`y!bBjvD_en0Vjf};Y;+yyM^;30et2!QZMx=LWyQ@}wiwAY=? zjzSomTT4bG;2z0Jk(kU5=?~>6Wd}O7&*HDWU3^pYMa`@e1W&CzhQfW^(9lGFTR1WD z);0+7dwM`$=b2Zm-#EcpfXTtoxEd-%6ygYC+E;E3E{ISPxtTd4UAtz)@I(FUWZ1@X z!lXF2R?tsdi?$fD&B-#Z#yCU(Oo5Bniui{(;vCZrmnCX5lSteU+uwrOLG;*_Le$~) zNDLsr1dye8h)5?x-Sfy3YW%wXghV(p_TRdvuXf;mDnl~pzo@L;k`}I3()8+;pBYvk zg(mJ5%N8{jLCF4hxZ~Y{KheSJ>*_izlL&p@Oz0YzCWrzcRGAK&X(GHYyP%hL z*Y#}J{1Ee@(gSguYqVlPvN^O~vICUVz&+hm`Hucwb^J>ns^lDqm}ivk|_% ziaY02Bl-M%_Gi+CKJ&rt+D3}p&4gIv73L(>($PdDUN?w^iJI|lt+cEhf|ZjP_K+?A zb0}Fqw*TMbH>jjP20TW~*(cpWI*7Hc89nPgkbL4m9`FxiW?25L(5d{~`O%pJb$O0p zm_(66ym{O4X^NQClPrm4+4nI@j9qZfQY3t*x(!Ia;%H5hMo@`!cEJmH4gWsEzbprs zHYdXb5x>sV#wyZ3V{Apjs0nv(F}XE8UKUrz^cIVj3JQBG$*o&F58f0uvkcI2?Jo4A z`ggqs|Ka~MDXfaB$LdI!v%E>Q1u6Olt6wT-G_Jq-}f@F)h{ZvMo;f-+9^#C=Ks=XeHao5w#GB&UTF6$dX z>qd%eORYT$0TW|;$@F0j;NaX0{i!48Ho*DM6w?5#B0RVWxC^lpfMHZ536(YJE^{TE zg(h)J^7qT>(52xtkLy$>Jj^dV&bC|L0Ctf$)x*fq)6rKsYK>~84$6i4Q-r*q5yd9W zrTAXvBI;8x+M(B%k%vkxFYZ8tTwj`3uLE@bd$d=;=@v_7B$r=u2%qw*e)ezK^@60q zAB?wGCSiKzzi$8XF=b8z>YfsXIuMoAc1@p1yAd;aK@)jkwMUMd2<&KA0&ZY_{*S-f z8M4pa=(dt5{B9h7dIR+=Slddbln|Xvx=T$3;4%R-a8pG;F( z+&h&Jx>zGnM{B!^*^v_-s8SUigK?tVU7@A(4BgkJd&KZ34Y|j}sN|bN3;Bpm!WaD3|dpdCB1>O1kMM&bnJ+;4jf4WbRKL_L7j;gq7)#gF*W^*W&HH>H**q}(`4Z{#^K_YVVj0OfnuPf@eK~4Pe}KNxX;b8(C6l5q zFnb?NF7~LgWjhfL;da}TV64^_L!bZGBU{7i;BKA+XqEh4Ek+Ah?USFX%M}^sCun4Q zKc$ca@B53bN~uh~CPJ+pOesktP(RyEDdQwo-l~V~A9eYLBnpci#ihLvR}!ED&XT-P z#pbRu@e405;T@Hp~hDxb%<6(E*2nQj?&5??SuG2Y{7w&q?di zh-#sGaTodF+347=c}8~U{NyU$P11^bn%D6VZc z2TLdpoyC%fMcAXazF))x+ZUW`1WP!IEdD2LYPF4_q0n4sSEqesR~kkdBmTbNbUg>} zS7of%Gp(Fdt6ye?mGx#);YzrXbA={s?c9W2OtF zXU6XQZh;EoOWLh}3p_-^T~6UiehiOVS(C_|9OzjxuZv26>D=0b6%^x@=)e4kleZa7j2d)<_h~~!)NlO);fRk7$pZezN(9x1iK)Ls%#zTuAi=& zEExlr-$;maJ1%8%cdD%J@D)~cD9kYr}evfQhmwg+<4H*|1F z`eplg@`_Y#SUDah<%30hgt-=`kV&;?3?7XlVK>v+ zt#V!M4}&1WXuu1<`a)KqDDy~rHx(Mu_;*l_#HHgLbfT=h|6q1trq0b6KP+dx8Fn*1*k? zf=ULNwwLUQrR^GRvq2AFtEr7pbW&$bHZIlks9y{`jP{1)6KQ<@;K{;z@KMbG#8&RXEr=d{%7OL zIh_19daqe!@4C8TTc3dm`q0pWy=YUn0G-$+6{PiAf{gIKXGX&Ny>>0CO8MON(PXOe^Q=Q6t3M z_Ep+)peS6|*vG%WhglBQ+^rZ&@>?9TjtxBe@>CZUaLY&Au^SNYp?-J^%6SbNHf}1U zp1{+QhE=mF;^yRLw3tvjspyUj(wFm|SC#ofq*MSlWvw7Z@yWwk^8nriC;74jx5D9@ z0#~5+G1MpD)lx}x%-%c)o=uIIG8}|my(PzU(Z`|INau8L7lX9coxMco)0Gfw%6_@2 zo(}?Ty1*j_3!RR#8FqlUIMtJ0A^pU_)C-(s z$i#`ogQP4&3W6l4QPBorz)!#r0r%#>M2@GJC4x9}AjW^U^G+|`==miCD^F0Qe+*w#==1Bgjh#Bl_(^#5Uc81pY&bZ^Y6GZj`-3(1AnW0lnzQ4HN zkpC$RK4KZmV#nsHYI#KkMU)oN0(ggE?)|DdjuFh$XlbyJA3)R}vwVH@-`TnikqTk6 z2ZuS*h?hUtgcWBz5YjS!1B?A;Hsn?%>L?(s12vMjs_xUdcfxZvp|f0m(T7{I6p$;Z zWek2~fWgrxNT=rs#)0S9Q9JQONucm7^~Kh(SUFRHJ^~{Eze7FKz47)bjP@pP|3*@cek}#o{!gpI7Uv=6YU(7oq1JWJDG-fpX%l;9ygZUC`cv;#~rPPKs zuW{_1G+V0u3hN_1Bbk1XvXkOt9KfKwN@8egR?ZbIA*xw^oUlDqz4(XE8ka8NjH-po z7!_HEqz4eS0?m?hL<5ntHSW*CJSBuf^_cEBm>1ADU4XgecC=)wse8;>^YGMsyOpUd zBG*RUZ=C#1CHQi?>eewSB}Vj6s)-|<(oD$?H{he?&`B^A;vW(A9DXD$X$Jn0`Td+Q zY@Dv|fcirC^O>Q_GRRpaqpr_D{6H&90d4vUz`l5oBn+m0N^vpVqZDaZ9L^J@H~n0f z625#p`)LKFi?rHKG^~aw%EYwHYBS)AV4X(cHN=VhjzbZ1d!1TC(vh8T&7>Qlmuljw?CQ!P0gMjeR8S$VQ+O@$u;hxy@E13JN&W^KwG9RdME#XTA&bh3AV297 z$5V_@!`tc@O=JwwRp#FH#&aV|z+rIe&N7Yoms~v}%9CFgemxz%?i5|+0M#LRJfktq1?0>w0d;^1olK3Pk z4TRHH5ZJAB(IV+zbV0dtte=YU+$-lYQiMSi?%KNIsOxqE7rT*cLo4=IF?(wSTd4}R zBkjuyJ1Gf!l(dlX{24h2Vwnx3W;x{~yBr@k1S}q6yky|D*06iAZ`{&*r%|X(T~3jE zJ9}8`?RX(v#hr#B%}WB+CzS)-`u zFO6ctl<(GIS8ptm1w%9mSq3tPQ}Ga-1sKjtVoujxc%yNZ`IX33V_4fO;E}d_YxlI% zE7F6F%Cb?Yrm-(z>vzl;Mi^OK|NKn!8;0SKvlGN=H{}OUgPv&Q`U7$-Z2U(w&eYP5 z2m0axz-St}XL>M`ueCpj_lS3|6%8mrw~X9ISGY&*sb7tZfrbbYgACnU+6F+awSwpa zAs?GUsJU$qb)(8>ag6B?e|5(?`M5}%hdcy8>LWzKSbiRrbeq~Y!sVF)d7j6d%RY=* zmQTnvNHq=QIG}0bnW;Zv4%I zC~xK2y)J0kbgR4MFOd`X2O8wcR)3#2-AP39@c117O8JT^<E6Z{uyq+%M<0Lz1HKF**@=Jrzv7~|JRsl7y2 zn5OuUZmjbqIEFDfQpax?7WU=NZN!Lpk8csUfS$>fLwc3|IpyByOQ}}Mn(;4m1xCD& zzV2pPBunhwitT~=Z9SEr|u`h>wwJ=Ai$2cEr7v*_`+** z2u97MK(Q5&*jQyD-q>FE*#mw6XDFWmm;Do2&yCw`@ds%hgbmgU7>4cOCii76f-uAH zJm7!b2-0)thj)gGNfbK?hFpk~uWVNZtu80{mpw%f=f{|=FVW5d91OS?2T}0`9;xHbU8fsDVgqdP z9XO&W%%haJbsx4|JvAtHe!`f>QAe4|VrOzU9#5M!ev{|60}s4BOo`OJXKv3&t~; zRFDE1x>&oDH=-MXIQA~cTk45#BmP|V-gccT1%-_OU{zJ?=NV>FGp=k7dX7&Tw`|nI z1(P4F+9%RHg>7+TFMh@36G+kdQ%J;T~ z@E-&mAgH3*W^Cqf;Md}2j(de9LriQfFg$#C(?lHmLpr(8axtVuqh#Yy=dcBcwomPB zXx-V5Xd7rhrOQ*dFG6BiP6j@W)XvyyaGBpSjc~ygLyaP48VILaS-}J2*2NcYy1#0A zLlckB%E$vqz&Opr6PgN2*?cL07nU+3H>V5x%F*>AR==j%U%~ zne{e0^Q2Uy-I~KU))Ko^=DKr0?H-JQ=6Ot8zXodT)MG{PJUObj0tTjJ*UzwfI_&hJ zw9I-W!P{NK8cd;EqHq$rYT*rA0NP>rjpPwf_o_~7#_iaz< zZOOt3&ndn#XuEk=jL0hvzOUM00s;~sBw=*p4Tos` z@?Fi#q-Gc^meb0Ok~ev@VKv-j z?WJ{+9%erWY$!1nS(^Ld7QhZ@t|}Yp0A)JdZ%Sz3D~jiM42n&V%D$GQ$RM}vXH~3d z_rg-bkV03};vmGTQKj%1UXD8U$Mhp~A2JPdF^TP~iI$h0X-}YEsb>Wf0Ro8LdrQx8*7avV*tYpcHXxT*{ z8K-aEu3sL65j%H-H^%K-v%+aQ!86jR2`%Zfp&eT%a!dYW@-{&u`EgEfEh6ELZe`0h zJab98^S#zofb|NRbZ1k(s{vKCeQqbZ{Tj1&{bdv!pG2Wn+_{seIzvo8=S zm|9TNHfd13u3IWWGRpY56Wa?~gS5HVVIPsd|w5gf~Ql zet`>ry%W8*KFWJMk1aPdWCk+Oc|MkeX8_zm-*y2?Gn-Ga0&=p{Rus$o5 z{eIm5LXl*?DbMrBRXkWwuAM0o5ST@=HE$#<4NiV+Yn7f?k!tFdy=;B%XChey>%t^n zFF@LGVmh9*v_ta%iYvkP zYHIOO*(Th%>J6$w$>$n3jY?Whp>T&!FOv2NSC@8qyT4ari@;@NV{f^&XuLY*>wQc# z=7eV)k!I2M#nH~2kMdXia+{Px@qPPS+DJ26fdY4y7wy0Kx<*I-%%Qf_aIUYk>W@XwTi~MP#CX)QW(!CPpu80h>U283BXv$7{zi*8kjSSvsut?y5$@&q@M?o z?%jw%$~aZ@oj!2-QiYnRxUR_YtbIQX;+>{Ltnr*<{c6beTFw(YIn+vP4Q}9_-9tQB z?f?=hILKX?_MNLa!`KT>T)<~@cPYr{XM7nz%T-RHC=63;>vhb_@e1-s@sjhzzG?2V)1VAULpUZUdQwltFaX!e{x}5ZKq5-A{t2ntBpX z|5N?6AYbux^_m*JTq&*;DwVxx_Q%n#fU|+P)oKOa6Pqj=Y(jI>U1`>?w7NT>*J;-l}@XKX$4$n+(PI$RP>ai}M$2CZ8N<}P ztu32~3l~q3v~uU6Pn%7Rj!33JI|r(gT*V&{jT^NJ!^ zgsIN()5%DONs$}hC%`8CQa~#Wl32DPK0~mBq62UAvg3@ zRz5a7Ld2_sx6u))d5vRzmy^l32-J=xr;+dU$z$gFC~YeCz4sL9&A^S?ra8q|fxIQ} z`iB8$tL%$c=$D|!rmtHg&=6?UC#-6G9eU8H-%?rIV`{s56*=Ipe^RdRT1EIUv&=)K z;TD6y;DD|&)7zMWvVqHS%la-1nh--OK)vHsB02ADSKTv?BCyNp>Q>gog|ak$ZX&IP5MSE$#3kMy%sfUoa>^{i z>~$itY(rZ%cNd&$ik$pC?Ko}Pd0cu(ht6C0NRo9JO04UU;S;=LIZDyNy&n!4Inck( zk?n7jaJ7W@frP!wh*(gA4C&v=OztqMFu^r1dAIj5^xpG7155Lp(16w#h+0&KnG~?Z zacC}c=vO(->Z3uc&PFAWm!zaM3FccRj_d&E0_PrE=MbOy8C3a&DZ2CK51!o8R!UZ} zlkRzZMCKiL26hM8FN4EutGE+N>4=f17F0?yXGN~40Pe6_;B19MNZR71E40k#l~X_J zev5T2WE62NgcSk|W>HxWIY+|*GpWH?fADXUBMNHfgME-Uj7;&%#bE=?G*4FeK-2Oq zK0aN7Yco#_brS`aeDmhR95x)hX;gNUcE#!Snd~uJpMvC9?%?L87LS&t-TbG+#s+38 zM8#w=S0_u6H=*m-1mKsVk9-p7#;rs5dm*s(M#?3AD#vWE!;`a7#34S@a-Xyj4rMQw zrI!`9g}K{8a_td>Z18nJs|zONh3{bxyvh)?-5Q`ywa;;!nb=taouEi!zr@8R5E<)vp2gCyUzU zg6WjlCD%44rQ=BHrjU&ujJXK9Ka{-Y$*^cD0&e?=BTdH2Bm#w48MVgvZ3=ym$rZ6#q6@zr`o*qnzXkLE-XRj62*jSzdP%H0rEbt(+*e9^=$|4e*+1U(0Wc?h;Z3s*Y zkv>?;gIew+x&QFqn1RTDm93xvWaDL!ybVtbs;ejhS5t)U7P=clC$mh_)FLFPr6|oE zNVma!1Bh6PVtB%?W87ja8%a{ywL%R(v)Nn4&A8Jg%lq(sG2#0#zw=mzmMWfb89wCN zG&5N5jI<&$En<4|r}!FB2gAj(`mA|>Gq0LXDdk5WL&+JF^gpw>P|JjizzcQAOUwXltdi`c|5(!JBA9@jZaK1EeoSu? ze6RX@Ly4-^>BE0W)7{;D-Y4Vf;0*7`-5_RkCX~{KxB@$J_}3U-*ew);YN(9eql+9G zLelN{un;?>*8}X0K7bl%bgbqEPG4ngFmxy&FaON=uXz|-t(B?#`EUrqV#?rA-w$f_ zjmXwkN35<7u1Bq7_RaJf8X3x6pEZpd>zo(x2BAck>Qg=dndo!YFB=+ zK1&wmQGpPPFKZ?7h^jLdcZlR`smR^h3o*xaS!l=Q{U`uIxb8JeC$Zf`D%6QSE&WYb zYmJS|UcOZ}`t?LA8;zN64VrVy|2nPy;c-U6rc-h$9y6kPvR_WP)`ZMc3 z{4&j5i^TIT5RB`O6v=P@Rm~bMQ4_!@>u4RTe=@sv_9{ncwpVsdC=x*(KzFC`P=6jY z7}=LnT5tjW_1IR%_MxIjSq!qLT;iP5Pum~FrUr3m==W(vo(!ppXCb1B>~s?5W*8mM z2p0f%)L3182*n$|B@W>$BP@1P?cP|;b)w=xA@wHNdJB&he^sQ5t`UCNcYI0E5P5N9+}Amk zBQV+(JwuWCJ}f7Je=9>f8V@GkQw@kk=3dL6ZUbi+C`a7g<|*zT@(IGQ8%8hKR0>Xo zCMZnQkLHYI6AdFW6{MMTx5@9mBXK<#S=>}gg1NC>B30i5@$~)CWQVPsh{`zuZ?2i@ zC+T(x5ruhD%}IFTo{ge<=yi~Y=^+9-o4qQ7F}e;$^_xj zql5eS98hgOl{Y&uJvdV~Ghi^@FFyP11_xoOtjVL}08?i{`0;uSbe|5Ugp(?+iD6hz z!!rpz>DPumzWtq+5jD}8K9G3*>gpeh>WF`{1tI_iw2E7d zQfJ=r6g0Ybhnw5li>B`s`j3_-r;|xz&uW$E3tim|vXGj1<9-3854^iix(E^v9^*|U zCoK)V-5$&{1E!b4UNA{+n1WS*op?=31-?V*(+>#qXpD2PS~S4Hc=M4w3j$hxq#G`{ z7L5x9-C}jl6wh3#AaBA)f#rbVM@rc{7E$K<;VM9<#U8y?9=HWH9T0e(^c|Wq?0fF2 z9GcbXh94Y{OWGI8Vd>KMGZns41*W-X1qtz~Hp9v551V5A0Fp1wg2eMNC=A@qnEO@8 zi-^Cm=M4%FsXn*TpTYOjuYK@ztOf`uYcyHW>p6YQiwMLL`8?m+|2AG_v=5Z59mM3r8y~HkAJxWrLQanNPao5?_HMky)*x! zmM~GXJ5BY2dRztQF!r9g>245r-BYtcBg#yfWj)1i>6%)_Me2D>_$cG>8)%~i9`hLw zr`ba!2P2ph#9`O#sUcQy<`X2H=k3L)Rf_mSy`*lnzBe^${6mGM*3%>TpP5Y zi3Z5hWw;rFetUwgVA2B#e>C`{(6)noeD7dn_-#)B%6&8s6=<6P850?CIT>90!Qnbi zCr{%tk7uksaQA*21=%Ir4j{s~4moi+n1=%JohKmh${dyQD}~bTY{e=~y*|s$xPnb8 zB9mJ&W!rl$_ z%c2R$+CPfN$HFEcV-L<%20ye64Pbe25n4=y_pU@tgr_hS-&?*Jz;zU3Q!cv*b@<=S z*#fVT)=_zIACxR-A2Jxa&U{1ubQ6nJWP5$P08S7u#K59FM(1H$6UibFY!MjmG;e^B z8*k1p6=?=+*rS|)H#lm?K~V5a8zGXRi0B0kof1&_B)-ENnAse|L5rJAZ3ZD@aKxj8 zGEe<^)GY}9TAYWeE-|}+!h51=dyN#c7eaO78iN&iEiW%)K-`(`a8$P)%FRhTXfZ{| z6qLU~K5?8>y8V$6RgXj(WtALwPO`!+>PVLOW_GX1)N!2C4|w2|dj?w)DnMPt$fvpm z1`sIaXyA$xTDxR>oT^KK8^ohqe?&1+?+Ifi5R@6M;XYB6 zsi0D^Sbp^J>Wl^R#CKsuW_ogYe!eZsScE{>a>>k@i;i-H#=+CTLkoflnnDrZS}99O zQLeQUL-)-cTVDLgtipa`%mkhe&t*dr=R&ligf|$ZGHG52v5$lzL5cO4V*ll=y2 z##7nuBimn`yR=KZ4Y0&>ryJJCELsvV!ZM1(M#x-PmNa}Nx^}L3ikaroXLpjgy*?F2 zkY)Y}n}6YidE`XheR0bfZ3?TE7_T469+5WRbS5J$^G)pU2Pn&SQfaAnsUdN_MMN6T z4{(^}XVDa{Z!$?gVTxL%tZ7n1!hFug~gdhui7t@JDNqt+a zVG?QiZq*|B>hdU^Ha*Q}$Zf^}*Kq+{+$^~)IAlXG0|YKGawG=@lB;NACmfUlXQOQ-qB(r`UFB9ipv4_0#=2fqVd1=Qyx1-%(j6O%`MmigcF@K0i zsvIhrt;Ij0VKLo4i-xQ8w6?f%yDRjMhXR+I%p#kxA2qkSsd~v9TY!eMK7%ewTLdD5 z!aq4Ip#kEQd|6aoWS;Vve0HT!AtEl-Z1Wi*JDLvd!s6qzF?Vtrq+wHy&&{nD;a{3d zsg|ycRX>Sqp|_8exM$+kIW{^8RWoTcrUI6^o$cy<0ZtQZaAh*U12{jGC27i(DT#(! z2%ar3B-VU;gfqOY$`cLFNQ_oKNL<|;v0ZeXD-sbtq8m^@&j$a7Rf9e%!Bn<0>RzP& zZ+^4OP(p~73-RtV->XlR_tsl9@6Cl7VY|zggmMJdZiw33gg)bw2qB?1h=Oe?w(^1j_GBqEtr@0o;xg)EvnF!b}mfR^z08T zyhrFuHePCbw_t0C%7b;aY&N1Q%RuY%#MpuW{RoMkÐiA3^}&09+D=+kH%8E(Rkp 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⁣wVrZ(t& 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

    W?242R^)}kGMEzp)9Yti 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 I000UA0QJ + + + three.js webgpu - subsurfaceScattering + + + + + + + + + + +

    + + +
    + three.jsSSSS +
    + + + Screen-Space Subsurface Scattering.
    + Lee Perry-Smith head from casual-effects.com.
    + Ramose Murex shell from Three D Scans. +
    +
    + + + + + + + diff --git a/src/materials/nodes/MeshSubsurfaceNodeMaterial.js b/src/materials/nodes/MeshSubsurfaceNodeMaterial.js new file mode 100644 index 00000000000000..d558a47de3bd68 --- /dev/null +++ b/src/materials/nodes/MeshSubsurfaceNodeMaterial.js @@ -0,0 +1,104 @@ +import MeshStandardNodeMaterial from './MeshStandardNodeMaterial.js'; +import { mrt } from '../../nodes/core/MRTNode.js'; +import { uniform, vec4 } from '../../nodes/tsl/TSLBase.js'; +import { diffuseColor } from '../../nodes/core/PropertyNode.js'; +import { Color } from '../../math/Color.js'; + +/** + * A standard node material that opts into screen-space subsurface scattering + * when used with {@link SSSSNode}. Writes per-object SSS parameters into + * dedicated MRT slots (`sssParams0`, `sssParams1`) so the SSSS blur pass can + * apply a distinct scattering profile per material. + * + * MRT layout written by this material: + * - `albedo`: rgb = base color, a = texturingMode (SSSSNode.TEXTURING_MODE; 0 = no SSS) + * - `sssParams0`: rgb = scatteringDistance (world units per channel), a = worldScale + * - `sssParams1`: rgb = scatteringColor (artistic tint), a = strength (blend factor) + * + * @augments MeshStandardNodeMaterial + */ +class MeshSubsurfaceNodeMaterial extends MeshStandardNodeMaterial { + + static get type() { + + return 'MeshSubsurfaceNodeMaterial'; + + } + + /** + * Constructs a new mesh subsurface node material. + * + * @param {Object} [parameters] - The configuration parameter. + */ + constructor( parameters ) { + + super( parameters ); + + /** + * Per-channel scattering radius in world units (r, g, b). + * Larger values produce more translucency on each channel. + * + * @type {UniformNode} + */ + this.scatteringDistanceNode = uniform( new Color( 0.5, 0.08, 0.03 ) ); + + /** + * Optional artistic tint multiplied onto the blurred result. + * + * @type {UniformNode} + */ + this.scatteringColorNode = uniform( new Color( 1, 1, 1 ) ); + + /** + * Blend factor between the original and blurred color. + * + * @type {UniformNode} + */ + this.strengthNode = uniform( 1.0 ); + + /** + * World-space multiplier applied to `scatteringDistance`. + * + * @type {UniformNode} + */ + this.worldScaleNode = uniform( 1.0 ); + + /** + * Albedo-SSS interaction mode, stored directly in albedo.a. + * Values match SSSSNode.TEXTURING_MODE: 1 = POST_SCATTER, + * 2 = PRE_AND_POST_SCATTER, 3 = NONE. 0 is reserved for non-SSS pixels. + * + * @type {UniformNode} + * @default 2 (PRE_AND_POST_SCATTER) + */ + this.texturingModeNode = uniform( 2 ); + + } + + setup( builder ) { + + this.mrtNode = mrt( { + albedo: vec4( diffuseColor.rgb, this.texturingModeNode ), + sssParams0: vec4( this.scatteringDistanceNode, this.worldScaleNode ), + sssParams1: vec4( this.scatteringColorNode, this.strengthNode ), + } ); + + super.setup( builder ); + + } + + copy( source ) { + + this.scatteringDistanceNode = source.scatteringDistanceNode; + this.scatteringColorNode = source.scatteringColorNode; + this.strengthNode = source.strengthNode; + this.worldScaleNode = source.worldScaleNode; + this.texturingModeNode = source.texturingModeNode; + + return super.copy( source ); + + } + +} + +export default MeshSubsurfaceNodeMaterial; diff --git a/src/materials/nodes/NodeMaterials.js b/src/materials/nodes/NodeMaterials.js index ef7f4a3f79c421..2770d5504bd9c8 100644 --- a/src/materials/nodes/NodeMaterials.js +++ b/src/materials/nodes/NodeMaterials.js @@ -13,6 +13,7 @@ export { default as MeshPhongNodeMaterial } from './MeshPhongNodeMaterial.js'; export { default as MeshStandardNodeMaterial } from './MeshStandardNodeMaterial.js'; export { default as MeshPhysicalNodeMaterial } from './MeshPhysicalNodeMaterial.js'; export { default as MeshSSSNodeMaterial } from './MeshSSSNodeMaterial.js'; +export { default as MeshSubsurfaceNodeMaterial } from './MeshSubsurfaceNodeMaterial.js'; export { default as MeshToonNodeMaterial } from './MeshToonNodeMaterial.js'; export { default as MeshMatcapNodeMaterial } from './MeshMatcapNodeMaterial.js'; export { default as PointsNodeMaterial } from './PointsNodeMaterial.js'; From 3846f737e75c086c77041db7e032784c18453066 Mon Sep 17 00:00:00 2001 From: Marco Fugaro Date: Mon, 8 Jun 2026 01:16:41 +0200 Subject: [PATCH 02/14] Scene traversal instead of MRT approach for params --- examples/jsm/tsl/display/SSSSNode.js | 200 +++++++++++++++--- examples/webgpu_postprocessing_ssss.html | 32 ++- .../nodes/MeshSubsurfaceNodeMaterial.js | 34 ++- 3 files changed, 201 insertions(+), 65 deletions(-) diff --git a/examples/jsm/tsl/display/SSSSNode.js b/examples/jsm/tsl/display/SSSSNode.js index d80aa349b43845..263285f75659a1 100644 --- a/examples/jsm/tsl/display/SSSSNode.js +++ b/examples/jsm/tsl/display/SSSSNode.js @@ -1,5 +1,4 @@ -// https://advances.realtimerendering.com/s2018/Efficient%20screen%20space%20subsurface%20scattering%20Siggraph%202018.pdf -import { RenderTarget, HalfFloatType, TempNode, QuadMesh, NodeMaterial, RendererUtils, Vector2, Vector3, Color, DataTexture, RGBAFormat, FloatType, RepeatWrapping, NearestFilter } from 'three/webgpu'; +import { RenderTarget, HalfFloatType, TempNode, QuadMesh, NodeMaterial, RendererUtils, Vector2, Vector3, Vector4, Color, DataTexture, RGBAFormat, FloatType, RepeatWrapping, NearestFilter } from 'three/webgpu'; import { Fn, float, vec2, vec3, vec4, int, uv, uniform, uniformArray, Loop, texture, passTexture, NodeUpdateType, If, abs, max, min, exp, sqrt, pow, mix, dot, cross, normalize, clamp } from 'three/tsl'; const _quadMesh = /*@__PURE__*/ new QuadMesh(); @@ -77,10 +76,9 @@ function _generateNoiseTexture( size = 64 ) { } const TEXTURING_MODE = { - POST_SCATTER: 1, // albedo.a = 1, albedoExp = 1.0 - PRE_AND_POST_SCATTER: 2, // albedo.a = 2, albedoExp = 0.5 - NONE: 3, // albedo.a = 3, albedoExp = 0.0 - // 0 is reserved for non-SSS pixels (no blur) + POST_SCATTER: 0, // albedoExp = 1.0 — full albedo demodulation + PRE_AND_POST_SCATTER: 1, // albedoExp = 0.5 — sqrt albedo demodulation + NONE: 2, // albedoExp = 0.0 — blur lit color directly }; /** @@ -121,15 +119,15 @@ class SSSSNode extends TempNode { * @param {TextureNode} depthNode - Scene depth texture. * @param {TextureNode} albedoNode - MRT albedo attachment (rgb = base color, a = SSS mask). * @param {PerspectiveCamera} camera - The scene camera. - * @param {TextureNode|null} [normalNode=null] - Optional view-space normals; improves accuracy on oblique surfaces. - * @param {TextureNode|null} [sssParams0Node=null] - Optional MRT texture written by {@link MeshSubsurfaceNodeMaterial} - * encoding per-object SSS params: rgb = scatteringDistance, a = worldScale. - * When provided, overrides the pass-level `scatteringDistance` and `worldScale` uniforms per pixel. - * @param {TextureNode|null} [sssParams1Node=null] - Optional MRT texture written by {@link MeshSubsurfaceNodeMaterial} - * encoding per-object SSS params: rgb = scatteringColor, a = strength. - * When provided, overrides the pass-level `scatteringColor` and `strength` uniforms per pixel. + * @param {Scene} scene - The scene to scan for {@link MeshSubsurfaceNodeMaterial} instances. + * SSSSNode listens to `childadded` / `childremoved` events so materials are discovered + * automatically as objects enter or leave the scene graph. + * @param {TextureNode|null} [normalNode=null] - Optional MRT view-space normals texture. When provided, + * the blur disk is oriented on each pixel's tangent plane instead of screen-space, which improves + * accuracy on oblique surfaces. Requires adding a `normals` slot to the scene MRT and passing + * `scenePass.getTextureNode('normals')` here. */ - constructor( colorNode, depthNode, albedoNode, camera, normalNode = null, sssParams0Node = null, sssParams1Node = null ) { + constructor( colorNode, depthNode, albedoNode, camera, scene, normalNode = null ) { super( 'vec4' ); @@ -137,8 +135,6 @@ class SSSSNode extends TempNode { this.depthNode = depthNode; this.albedoNode = albedoNode; this.normalNode = normalNode; - this.sssParams0Node = sssParams0Node; - this.sssParams1Node = sssParams1Node; this.updateBeforeType = NodeUpdateType.FRAME; @@ -217,6 +213,26 @@ class SSSSNode extends TempNode { */ this._camera = camera; + /** + * @private + * @type {Scene} + */ + this._scene = scene; + + // Per-material SSS registry. + // _sssSlots: sparse array indexed by slot (slot 0 = dummy for non-SSS pixels). + // _materialSlots: WeakMap(material → slot) for O(1) lookup and GC-friendly storage. + // _freeSSSSlots: recycled slots from disposed/removed materials. + this._sssSlots = [ null ]; + this._materialSlots = new WeakMap(); + this._freeSSSSlots = []; + this._sssBuffer = null; + this._sssBufferNeedsRebuild = true; + + // Bind handlers so they can be added and removed by reference. + this._onChildAdded = this._onChildAdded.bind( this ); + this._onChildRemoved = this._onChildRemoved.bind( this ); + /** * @private * @type {RenderTarget} @@ -301,6 +317,25 @@ class SSSSNode extends TempNode { */ this._textureNode = passTexture( this, this._sssRenderTarget.texture ); + // Initial scan: register existing SSS materials and attach childadded/childremoved + // listeners to every existing node. Three.js has no 'descendantadded' event, so we + // must propagate the listener manually to catch future nested additions/removals. + scene.addEventListener( 'childadded', this._onChildAdded ); + scene.addEventListener( 'childremoved', this._onChildRemoved ); + scene.traverse( ( obj ) => { + + this._checkObject( obj ); + if ( obj !== scene ) { + + obj.addEventListener( 'childadded', this._onChildAdded ); + obj.addEventListener( 'childremoved', this._onChildRemoved ); + + } + + } ); + + this._rebuildSSSBuffer(); + } /** @@ -344,6 +379,96 @@ class SSSSNode extends TempNode { } + _checkObject( obj ) { + + if ( obj.isMesh && obj.material && obj.material.isMeshSubsurfaceNodeMaterial ) { + + if ( ! this._materialSlots.has( obj.material ) ) { + + this._registerSSS( obj.material ); + + } + + } + + } + + _onChildAdded( { child } ) { + + child.traverse( ( obj ) => { + + this._checkObject( obj ); + obj.addEventListener( 'childadded', this._onChildAdded ); + obj.addEventListener( 'childremoved', this._onChildRemoved ); + + } ); + + } + + _onChildRemoved( { child } ) { + + child.traverse( ( obj ) => { + + obj.removeEventListener( 'childadded', this._onChildAdded ); + obj.removeEventListener( 'childremoved', this._onChildRemoved ); + + } ); + + } + + _registerSSS( material ) { + + const reusingSlot = this._freeSSSSlots.length > 0; + const slot = reusingSlot ? this._freeSSSSlots.pop() : this._sssSlots.length; + this._sssSlots[ slot ] = material; + this._materialSlots.set( material, slot ); + material.sssSlotNode.value = slot; + material.addEventListener( 'dispose', () => this._unregisterSSS( material ) ); + if ( ! reusingSlot ) this._sssBufferNeedsRebuild = true; + + } + + _unregisterSSS( material ) { + + const slot = this._materialSlots.get( material ); + if ( slot === undefined ) return; + this._sssSlots[ slot ] = null; + this._materialSlots.delete( material ); + this._freeSSSSlots.push( slot ); + material.sssSlotNode.value = 0; + + } + + _rebuildSSSBuffer() { + + const count = this._sssSlots.length; + const entries = []; + for ( let i = 0; i < count * 2; i ++ ) entries.push( new Vector4() ); + this._sssBuffer = uniformArray( entries, 'vec4' ); + this._sssBufferNeedsRebuild = false; + if ( this._sssMaterial ) this._sssMaterial.needsUpdate = true; + + } + + _syncSSSBuffer() { + + const buf = this._sssBuffer.array; + for ( let slot = 1; slot < this._sssSlots.length; slot ++ ) { + + const mat = this._sssSlots[ slot ]; + if ( mat === null ) continue; + const sd = mat.scatteringDistanceNode.value; + const sc = mat.scatteringColorNode.value; + const i = slot * 2; + buf[ i ].set( sd.r, sd.g, sd.b, mat.strengthNode.value ); + buf[ i + 1 ].set( sc.r, sc.g, sc.b, mat.texturingModeNode.value ); + + } + + this._sssBuffer.needsUpdate = true; + + } + /** * Sets the size of the internal render targets. * @@ -383,6 +508,9 @@ class SSSSNode extends TempNode { this._cameraProjectionMatrix.value.copy( this._camera.projectionMatrix ); this._cameraProjectionMatrixInverse.value.copy( this._camera.projectionMatrixInverse ); + if ( this._sssBufferNeedsRebuild ) this._rebuildSSSBuffer(); + this._syncSSSBuffer(); + _quadMesh.material = this._sssMaterial; renderer.setRenderTarget( this._sssRenderTarget ); _quadMesh.render( renderer ); @@ -399,7 +527,8 @@ class SSSSNode extends TempNode { */ setup( builder ) { - const { colorNode, depthNode, albedoNode, normalNode, sssParams0Node, sssParams1Node } = this; + const { colorNode, depthNode, albedoNode, normalNode } = this; + const sssBuffer = this._sssBuffer; const { samples, outputMode } = this; const { fogType, fogNear, fogFar, fogDensity } = this; const fogColorUniform = this.fogColor; @@ -458,14 +587,15 @@ class SSSSNode extends TempNode { const centerFF = computeFogFactor( linearDepth ).toVar(); const centerColorDefogged = defog( centerColor.rgb, centerFF ).toVar(); - const _p0 = sssParams0Node.sample( vuv ).toVar(); - const _p1 = sssParams1Node.sample( vuv ).toVar(); + const slot = int( sssMask ).toVar(); + const _p0 = sssBuffer.element( slot.mul( 2 ) ).toVar(); + const _p1 = sssBuffer.element( slot.mul( 2 ).add( 1 ) ).toVar(); const pixelScatteringDistance = _p0.rgb; - const pixelWorldScale = _p0.a; + const pixelStrength = _p0.a; const pixelScatteringColor = _p1.rgb; - const pixelStrength = _p1.a; + const pixelTexturingMode = _p1.a; - const scatterDist = pixelScatteringDistance.mul( pixelWorldScale ).toVar(); + const scatterDist = pixelScatteringDistance.toVar(); const sR = float( 3.67 ).div( max( scatterDist.x, 0.0001 ) ).toVar(); const sG = float( 3.67 ).div( max( scatterDist.y, 0.0001 ) ).toVar(); const sB = float( 3.67 ).div( max( scatterDist.z, 0.0001 ) ).toVar(); @@ -497,8 +627,7 @@ class SSSSNode extends TempNode { const Brot = T.mul( sinA.negate() ).add( B.mul( cosA ) ).toVar(); const sampleWorldStep = radiusScale.mul( linearDepth ).div( _projScale ).toVar(); - // albedo.a stores SSSSNode.TEXTURING_MODE (1/2/3); derive albedoExp via 1.5 - mode*0.5 - const albedoExp = float( 1.5 ).sub( sssMask.mul( 0.5 ) ).toVar(); + const albedoExp = float( 1.0 ).sub( pixelTexturingMode.mul( 0.5 ) ).toVar(); const outFactor = pow( centerAlbedo, vec3( albedoExp ) ).toVar(); const totalR = float( 0.0 ).toVar(); @@ -620,6 +749,19 @@ class SSSSNode extends TempNode { */ dispose() { + this._scene.removeEventListener( 'childadded', this._onChildAdded ); + this._scene.removeEventListener( 'childremoved', this._onChildRemoved ); + this._scene.traverse( ( obj ) => { + + if ( obj !== this._scene ) { + + obj.removeEventListener( 'childadded', this._onChildAdded ); + obj.removeEventListener( 'childremoved', this._onChildRemoved ); + + } + + } ); + this._sssRenderTarget.dispose(); this._sssMaterial.dispose(); @@ -638,11 +780,13 @@ export default SSSSNode; * @param {TextureNode} depthNode - Scene depth texture. * @param {TextureNode} albedoNode - MRT albedo attachment (rgb = base color, a = SSS mask). * @param {PerspectiveCamera} camera - The scene camera. - * @param {TextureNode|null} [normalNode=null] - Optional view-space normal texture. - * @param {TextureNode|null} [sssParams0Node=null] - Optional per-object params texture (rgb = scatteringDistance, a = worldScale). - * @param {TextureNode|null} [sssParams1Node=null] - Optional per-object params texture (rgb = scatteringColor, a = strength). + * @param {Scene} scene - The scene to scan for {@link MeshSubsurfaceNodeMaterial} instances. + * @param {TextureNode|null} [normalNode=null] - Optional MRT view-space normals texture. When provided, + * the blur disk is oriented on each pixel's tangent plane instead of screen-space, which improves + * accuracy on oblique surfaces. Requires adding a `normals` slot to the scene MRT and passing + * `scenePass.getTextureNode('normals')` here. * @returns {SSSSNode} */ -export const subsurfaceScattering = ( colorNode, depthNode, albedoNode, camera, normalNode = null, sssParams0Node = null, sssParams1Node = null ) => new SSSSNode( colorNode, depthNode, albedoNode, camera, normalNode, sssParams0Node, sssParams1Node ); +export const subsurfaceScattering = ( colorNode, depthNode, albedoNode, camera, scene, normalNode = null ) => new SSSSNode( colorNode, depthNode, albedoNode, camera, scene, normalNode ); export { TEXTURING_MODE }; diff --git a/examples/webgpu_postprocessing_ssss.html b/examples/webgpu_postprocessing_ssss.html index 85880c0200971a..71ed87e76ab21e 100644 --- a/examples/webgpu_postprocessing_ssss.html +++ b/examples/webgpu_postprocessing_ssss.html @@ -68,7 +68,7 @@ await renderer.init(); - // + // camera / scene camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 0.01, 100 ); camera.position.set( 0, 0, 6 ); @@ -80,12 +80,12 @@ scene.environment = pmremGenerator.fromScene( new RoomEnvironment() ).texture; scene.environmentIntensity = 0.2; - // + // controls controls = new OrbitControls( camera, renderer.domElement ); controls.enableDamping = true; - // + // lights const keyLight = new THREE.SpotLight( 0xfff0e0, 60, 0, 0.5, 0.4 ); keyLight.position.set( 4, 3, 3 ); @@ -96,7 +96,7 @@ scene.add( new THREE.AmbientLight( 0x404060, 0.5 ) ); - // + // shell const loader = new GLTFLoader(); loader.setDRACOLoader( new DRACOLoader().setDecoderPath( DRACO_GLTF_CONFIG ) ); @@ -111,12 +111,12 @@ shell.scale.multiplyScalar( 2.5 / Math.max( shellSize.x, shellSize.y, shellSize.z ) ); const shellMaterial = new THREE.MeshSubsurfaceNodeMaterial( { - color: new THREE.Color( 0.85, 0.65, 0.55 ), + color: 0xD9A68C, roughness: 0.6, metalness: 0.0, } ); shellMaterial.scatteringDistanceNode.value.set( 0.25, 0.18, 0.12 ); - shellMaterial.scatteringColorNode.value.set( 1.0, 0.9, 0.8 ); + shellMaterial.scatteringColorNode.value.set( 0xFFE6CC ); shellMaterial.strengthNode.value = 0.7; shellMaterial.texturingModeNode.value = TEXTURING_MODE.NONE; // flat color, no albedo demodulation needed @@ -134,7 +134,7 @@ scene.add( shell ); - // + // head const textureLoader = new THREE.TextureLoader(); const skinMap = textureLoader.load( 'models/gltf/LeePerrySmith/Map-COL.jpg' ); @@ -162,22 +162,18 @@ const scenePass = pass( scene, camera ); scenePass.setMRT( mrt( { output, + // rgb: base color read back by the blur shader for albedo demodulation. + // a: SSS slot index — 0 = skip blur (default for non-SSS objects); + // MeshSubsurfaceNodeMaterial writes its auto-assigned slot here. albedo: vec4( diffuseColor.rgb, 0.0 ), - // Default zero for non-SSS materials; overridden per-pixel by MeshSubsurfaceNodeMaterial. - sssParams0: vec4( 0, 0, 0, 0 ), // rgb = scatteringDistance, a = worldScale - sssParams1: vec4( 0, 0, 0, 0 ), // rgb = scatteringColor, a = strength } ) ); const scenePassColor = scenePass.getTextureNode( 'output' ); const scenePassDepth = scenePass.getTextureNode( 'depth' ); const scenePassAlbedo = scenePass.getTextureNode( 'albedo' ); - const scenePassSSSParams0 = scenePass.getTextureNode( 'sssParams0' ); - const scenePassSSSParams1 = scenePass.getTextureNode( 'sssParams1' ); const subsurfaceScatteringPass = subsurfaceScattering( - scenePassColor, scenePassDepth, scenePassAlbedo, camera, - null, // normalNode - scenePassSSSParams0, scenePassSSSParams1, + scenePassColor, scenePassDepth, scenePassAlbedo, camera, scene, ); subsurfaceScatteringPass.samples.value = 32; @@ -211,21 +207,19 @@ 'None': TEXTURING_MODE.NONE, }; - const headFolder = renderer.inspector.createParameters( 'Head (skin)' ); + const headFolder = renderer.inspector.createParameters( 'Head' ); headFolder.add( head.material.texturingModeNode, 'value', texturingModeOptions ).name( 'texturing mode' ); headFolder.addColor( head.material.scatteringDistanceNode, 'value' ).name( 'scattering distance' ); headFolder.addColor( head.material.scatteringColorNode, 'value' ).name( 'scattering color' ); headFolder.add( head.material.strengthNode, 'value', 0, 1, 0.01 ).name( 'strength' ); - headFolder.add( head.material.worldScaleNode, 'value', 0.01, 10, 0.01 ).name( 'world scale' ); const shellFolder = renderer.inspector.createParameters( 'Shell' ); shellFolder.add( shellMaterial.texturingModeNode, 'value', texturingModeOptions ).name( 'texturing mode' ); shellFolder.addColor( shellMaterial.scatteringDistanceNode, 'value' ).name( 'scattering distance' ); shellFolder.addColor( shellMaterial.scatteringColorNode, 'value' ).name( 'scattering color' ); shellFolder.add( shellMaterial.strengthNode, 'value', 0, 1, 0.01 ).name( 'strength' ); - shellFolder.add( shellMaterial.worldScaleNode, 'value', 0.01, 10, 0.01 ).name( 'world scale' ); - // + // events window.addEventListener( 'resize', onWindowResize ); diff --git a/src/materials/nodes/MeshSubsurfaceNodeMaterial.js b/src/materials/nodes/MeshSubsurfaceNodeMaterial.js index d558a47de3bd68..fd73fd9ccb523d 100644 --- a/src/materials/nodes/MeshSubsurfaceNodeMaterial.js +++ b/src/materials/nodes/MeshSubsurfaceNodeMaterial.js @@ -6,14 +6,11 @@ import { Color } from '../../math/Color.js'; /** * A standard node material that opts into screen-space subsurface scattering - * when used with {@link SSSSNode}. Writes per-object SSS parameters into - * dedicated MRT slots (`sssParams0`, `sssParams1`) so the SSSS blur pass can - * apply a distinct scattering profile per material. + * when used with {@link SSSSNode}. Pass the scene to `subsurfaceScattering()` and + * SSSSNode will discover, register, and track this material automatically via + * scene graph events — no manual registration needed. * - * MRT layout written by this material: - * - `albedo`: rgb = base color, a = texturingMode (SSSSNode.TEXTURING_MODE; 0 = no SSS) - * - `sssParams0`: rgb = scatteringDistance (world units per channel), a = worldScale - * - `sssParams1`: rgb = scatteringColor (artistic tint), a = strength (blend factor) + * Call `dispose()` when the material is no longer needed. * * @augments MeshStandardNodeMaterial */ @@ -34,6 +31,8 @@ class MeshSubsurfaceNodeMaterial extends MeshStandardNodeMaterial { super( parameters ); + this.isMeshSubsurfaceNodeMaterial = true; + /** * Per-channel scattering radius in world units (r, g, b). * Larger values produce more translucency on each channel. @@ -57,30 +56,29 @@ class MeshSubsurfaceNodeMaterial extends MeshStandardNodeMaterial { this.strengthNode = uniform( 1.0 ); /** - * World-space multiplier applied to `scatteringDistance`. + * Albedo-SSS interaction mode. Values match SSSSNode.TEXTURING_MODE: + * 0 = POST_SCATTER, 1 = PRE_AND_POST_SCATTER, 2 = NONE. * * @type {UniformNode} + * @default 1 (PRE_AND_POST_SCATTER) */ - this.worldScaleNode = uniform( 1.0 ); + this.texturingModeNode = uniform( 1 ); /** - * Albedo-SSS interaction mode, stored directly in albedo.a. - * Values match SSSSNode.TEXTURING_MODE: 1 = POST_SCATTER, - * 2 = PRE_AND_POST_SCATTER, 3 = NONE. 0 is reserved for non-SSS pixels. + * Slot index in the shared SSS parameter buffer, written into `albedo.a` + * during the geometry pass. Assigned automatically by {@link SSSSNode}; + * do not set manually. * * @type {UniformNode} - * @default 2 (PRE_AND_POST_SCATTER) */ - this.texturingModeNode = uniform( 2 ); + this.sssSlotNode = uniform( 0 ); } setup( builder ) { this.mrtNode = mrt( { - albedo: vec4( diffuseColor.rgb, this.texturingModeNode ), - sssParams0: vec4( this.scatteringDistanceNode, this.worldScaleNode ), - sssParams1: vec4( this.scatteringColorNode, this.strengthNode ), + albedo: vec4( diffuseColor.rgb, this.sssSlotNode ), } ); super.setup( builder ); @@ -92,8 +90,8 @@ class MeshSubsurfaceNodeMaterial extends MeshStandardNodeMaterial { this.scatteringDistanceNode = source.scatteringDistanceNode; this.scatteringColorNode = source.scatteringColorNode; this.strengthNode = source.strengthNode; - this.worldScaleNode = source.worldScaleNode; this.texturingModeNode = source.texturingModeNode; + // sssSlotNode is NOT copied — each instance owns its own slot return super.copy( source ); From 7bfc945699ccd9c9ddfb1b5458511c0296b71247 Mon Sep 17 00:00:00 2001 From: Marco Fugaro Date: Mon, 8 Jun 2026 10:27:00 +0200 Subject: [PATCH 03/14] Better comments --- examples/jsm/tsl/display/SSSSNode.js | 37 +++++++++++++------ examples/webgpu_postprocessing_ssss.html | 4 +- .../nodes/MeshSubsurfaceNodeMaterial.js | 28 +++++++++----- 3 files changed, 45 insertions(+), 24 deletions(-) diff --git a/examples/jsm/tsl/display/SSSSNode.js b/examples/jsm/tsl/display/SSSSNode.js index 263285f75659a1..24fa7f632fc51b 100644 --- a/examples/jsm/tsl/display/SSSSNode.js +++ b/examples/jsm/tsl/display/SSSSNode.js @@ -76,25 +76,38 @@ function _generateNoiseTexture( size = 64 ) { } const TEXTURING_MODE = { - POST_SCATTER: 0, // albedoExp = 1.0 — full albedo demodulation - PRE_AND_POST_SCATTER: 1, // albedoExp = 0.5 — sqrt albedo demodulation - NONE: 2, // albedoExp = 0.0 — blur lit color directly + NONE: 0, + PRE_AND_POST_SCATTER: 1, + POST_SCATTER: 2, }; /** * Screen-space subsurface scattering (SSSS) post-processing node. * * Blurs the lit scene color using a Burley normalized diffusion profile sampled - * in screen space, with optional albedo-aware texturing modes (Unity HDRP-style): - * - * - `POST_SCATTER`: `albedo * blur(color / albedo)` — preserves high-frequency - * albedo detail; recommended for scanned skin textures. - * - `PRE_AND_POST_SCATTER`: `sqrt(albedo) * blur(color / sqrt(albedo))`. - * - `NONE`: `blur(color)` — blurs the lit color directly. + * in screen space, with optional albedo-aware texturing modes. * * Requires the scene to be rendered with an MRT that exposes a separate * albedo attachment (rgb = base color, a = SSS mask: 1 = SSS on, 0 = skip). * + * ```js + * const renderPipeline = new RenderPipeline( renderer ); + * const scenePass = pass( scene, camera ); + * scenePass.setMRT( mrt( { + * output: output, + * albedo: metalness.mix( vec4( 0 ), vec4( diffuseColor.rgb, 1 ) ), + * } ) ); + * + * const sss = subsurfaceScattering( + * scenePass.getTextureNode( 'output' ), + * scenePass.getTextureNode( 'depth' ), + * scenePass.getTextureNode( 'albedo' ), + * camera, scene + * ); + * + * renderPipeline.outputNode = sss.getTextureNode(); + * ``` + * * References: * - {@link https://advances.realtimerendering.com/s2018/Efficient%20screen%20space%20subsurface%20scattering%20Siggraph%202018.pdf} * - {@link https://graphics.pixar.com/library/ApproxBSSRDF/} @@ -422,7 +435,7 @@ class SSSSNode extends TempNode { const slot = reusingSlot ? this._freeSSSSlots.pop() : this._sssSlots.length; this._sssSlots[ slot ] = material; this._materialSlots.set( material, slot ); - material.sssSlotNode.value = slot; + material.subsurfaceSlotNode.value = slot; material.addEventListener( 'dispose', () => this._unregisterSSS( material ) ); if ( ! reusingSlot ) this._sssBufferNeedsRebuild = true; @@ -435,7 +448,7 @@ class SSSSNode extends TempNode { this._sssSlots[ slot ] = null; this._materialSlots.delete( material ); this._freeSSSSlots.push( slot ); - material.sssSlotNode.value = 0; + material.subsurfaceSlotNode.value = 0; } @@ -627,7 +640,7 @@ class SSSSNode extends TempNode { const Brot = T.mul( sinA.negate() ).add( B.mul( cosA ) ).toVar(); const sampleWorldStep = radiusScale.mul( linearDepth ).div( _projScale ).toVar(); - const albedoExp = float( 1.0 ).sub( pixelTexturingMode.mul( 0.5 ) ).toVar(); + const albedoExp = pixelTexturingMode.mul( 0.5 ).toVar(); const outFactor = pow( centerAlbedo, vec3( albedoExp ) ).toVar(); const totalR = float( 0.0 ).toVar(); diff --git a/examples/webgpu_postprocessing_ssss.html b/examples/webgpu_postprocessing_ssss.html index 71ed87e76ab21e..a6f1edbe961130 100644 --- a/examples/webgpu_postprocessing_ssss.html +++ b/examples/webgpu_postprocessing_ssss.html @@ -208,16 +208,16 @@ }; const headFolder = renderer.inspector.createParameters( 'Head' ); + headFolder.add( head.material.strengthNode, 'value', 0, 1, 0.01 ).name( 'strength' ); headFolder.add( head.material.texturingModeNode, 'value', texturingModeOptions ).name( 'texturing mode' ); headFolder.addColor( head.material.scatteringDistanceNode, 'value' ).name( 'scattering distance' ); headFolder.addColor( head.material.scatteringColorNode, 'value' ).name( 'scattering color' ); - headFolder.add( head.material.strengthNode, 'value', 0, 1, 0.01 ).name( 'strength' ); const shellFolder = renderer.inspector.createParameters( 'Shell' ); + shellFolder.add( shellMaterial.strengthNode, 'value', 0, 1, 0.01 ).name( 'strength' ); shellFolder.add( shellMaterial.texturingModeNode, 'value', texturingModeOptions ).name( 'texturing mode' ); shellFolder.addColor( shellMaterial.scatteringDistanceNode, 'value' ).name( 'scattering distance' ); shellFolder.addColor( shellMaterial.scatteringColorNode, 'value' ).name( 'scattering color' ); - shellFolder.add( shellMaterial.strengthNode, 'value', 0, 1, 0.01 ).name( 'strength' ); // events diff --git a/src/materials/nodes/MeshSubsurfaceNodeMaterial.js b/src/materials/nodes/MeshSubsurfaceNodeMaterial.js index fd73fd9ccb523d..e36200e9f26f1d 100644 --- a/src/materials/nodes/MeshSubsurfaceNodeMaterial.js +++ b/src/materials/nodes/MeshSubsurfaceNodeMaterial.js @@ -6,9 +6,7 @@ import { Color } from '../../math/Color.js'; /** * A standard node material that opts into screen-space subsurface scattering - * when used with {@link SSSSNode}. Pass the scene to `subsurfaceScattering()` and - * SSSSNode will discover, register, and track this material automatically via - * scene graph events — no manual registration needed. + * when used with {@link SSSSNode}. * * Call `dispose()` when the material is no longer needed. * @@ -49,7 +47,7 @@ class MeshSubsurfaceNodeMaterial extends MeshStandardNodeMaterial { this.scatteringColorNode = uniform( new Color( 1, 1, 1 ) ); /** - * Blend factor between the original and blurred color. + * Subsurface scattering strength. 0 = none, 1 = full. Expected range is [0, 1]. * * @type {UniformNode} */ @@ -57,12 +55,22 @@ class MeshSubsurfaceNodeMaterial extends MeshStandardNodeMaterial { /** * Albedo-SSS interaction mode. Values match SSSSNode.TEXTURING_MODE: - * 0 = POST_SCATTER, 1 = PRE_AND_POST_SCATTER, 2 = NONE. + * + * - `NONE` (0): `blur(color)` — blurs the lit color directly. Use for surfaces without + * a meaningful albedo texture (constant-color materials, metallic surfaces, debug + * scenarios). + * - `PRE_AND_POST_SCATTER` (1): `sqrt(albedo) * blur(color / sqrt(albedo))` — albedo + * partially bleeds into the blur, tinting the scattered light with the surface color. + * Use when strong pigmentation (birthmarks, bruises, tattoos) should influence the + * subsurface color, or for stylised/painterly skin where a softer texture boundary + * is desirable. + * - `POST_SCATTER` (2): `albedo * blur(color / albedo)` — preserves high-frequency + * albedo detail; recommended for scanned skin textures. * * @type {UniformNode} - * @default 1 (PRE_AND_POST_SCATTER) + * @default 2 (POST_SCATTER) */ - this.texturingModeNode = uniform( 1 ); + this.texturingModeNode = uniform( 2 ); /** * Slot index in the shared SSS parameter buffer, written into `albedo.a` @@ -71,14 +79,14 @@ class MeshSubsurfaceNodeMaterial extends MeshStandardNodeMaterial { * * @type {UniformNode} */ - this.sssSlotNode = uniform( 0 ); + this.subsurfaceSlotNode = uniform( 0 ); } setup( builder ) { this.mrtNode = mrt( { - albedo: vec4( diffuseColor.rgb, this.sssSlotNode ), + albedo: vec4( diffuseColor.rgb, this.subsurfaceSlotNode ), } ); super.setup( builder ); @@ -91,7 +99,7 @@ class MeshSubsurfaceNodeMaterial extends MeshStandardNodeMaterial { this.scatteringColorNode = source.scatteringColorNode; this.strengthNode = source.strengthNode; this.texturingModeNode = source.texturingModeNode; - // sssSlotNode is NOT copied — each instance owns its own slot + // subsurfaceSlotNode is NOT copied — each instance owns its own slot return super.copy( source ); From a1c40c6791c31770b2ce38ee4e8ba1d686327b28 Mon Sep 17 00:00:00 2001 From: Marco Fugaro Date: Mon, 8 Jun 2026 11:01:03 +0200 Subject: [PATCH 04/14] Cleanup --- examples/webgpu_postprocessing_ssss.html | 18 ++++++++--------- .../nodes/MeshSubsurfaceNodeMaterial.js | 20 ++++++++++++++++--- 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/examples/webgpu_postprocessing_ssss.html b/examples/webgpu_postprocessing_ssss.html index a6f1edbe961130..f23f8745eb2873 100644 --- a/examples/webgpu_postprocessing_ssss.html +++ b/examples/webgpu_postprocessing_ssss.html @@ -74,11 +74,7 @@ camera.position.set( 0, 0, 6 ); scene = new THREE.Scene(); - scene.background = new THREE.Color( 0xaaaaaa ); - - const pmremGenerator = new THREE.PMREMGenerator( renderer ); - scene.environment = pmremGenerator.fromScene( new RoomEnvironment() ).texture; - scene.environmentIntensity = 0.2; + scene.background = new THREE.Color( 0x111111 ); // controls @@ -87,14 +83,16 @@ // lights - const keyLight = new THREE.SpotLight( 0xfff0e0, 60, 0, 0.5, 0.4 ); + const keyLight = new THREE.SpotLight( 0xffffff, 60, 0, 0.5, 0.4 ); keyLight.position.set( 4, 3, 3 ); keyLight.castShadow = true; - keyLight.shadow.mapSize.set( 2048, 2048 ); + keyLight.shadow.mapSize.set( 1024, 1024 ); keyLight.shadow.bias = - 0.0001; scene.add( keyLight ); - scene.add( new THREE.AmbientLight( 0x404060, 0.5 ) ); + const pmremGenerator = new THREE.PMREMGenerator( renderer ); + scene.environment = pmremGenerator.fromScene( new RoomEnvironment() ).texture; + scene.environmentIntensity = 0.2; // shell @@ -115,8 +113,8 @@ roughness: 0.6, metalness: 0.0, } ); - shellMaterial.scatteringDistanceNode.value.set( 0.25, 0.18, 0.12 ); - shellMaterial.scatteringColorNode.value.set( 0xFFE6CC ); + shellMaterial.scatteringDistanceNode.value.set( 0.45, 0.35, 0.22 ); + shellMaterial.scatteringColorNode.value.set( 0xFFFFFF ); shellMaterial.strengthNode.value = 0.7; shellMaterial.texturingModeNode.value = TEXTURING_MODE.NONE; // flat color, no albedo demodulation needed diff --git a/src/materials/nodes/MeshSubsurfaceNodeMaterial.js b/src/materials/nodes/MeshSubsurfaceNodeMaterial.js index e36200e9f26f1d..b74495c428cc51 100644 --- a/src/materials/nodes/MeshSubsurfaceNodeMaterial.js +++ b/src/materials/nodes/MeshSubsurfaceNodeMaterial.js @@ -32,15 +32,29 @@ class MeshSubsurfaceNodeMaterial extends MeshStandardNodeMaterial { this.isMeshSubsurfaceNodeMaterial = true; /** - * Per-channel scattering radius in world units (r, g, b). - * Larger values produce more translucency on each channel. + * Main artistic SSS control. Each channel is an independent blur radius in world units, + * so it drives both the *size* and *color* of the scatter simultaneously: a larger value + * on a channel makes that wavelength bleed further under the surface, and the ratio + * between channels sets the apparent scatter color. + * + * The default `(0.5, 0.08, 0.03)` is human skin: red blurs ~6× wider than green, which + * is what makes a backlit ear glow red. Equal values (e.g. `(0.3, 0.3, 0.3)`) produce + * a neutral grey glow with no chromatic character. + * + * Tune by looking at thin backlit areas (ear tips, fingers): scale all channels up/down + * to control radius, adjust the ratio between channels to shift the scatter color. * * @type {UniformNode} */ this.scatteringDistanceNode = uniform( new Color( 0.5, 0.08, 0.03 ) ); /** - * Optional artistic tint multiplied onto the blurred result. + * Secondary color correction, applied as a multiply on the already-blurred result. + * Does not affect blur radius or profile shape — use it only to nudge the scatter hue + * after dialing in `scatteringDistanceNode`. Defaults to `(1, 1, 1)` (no effect). + * + * Useful when the per-channel blur widths give the right translucency feel but the + * resulting color needs a slight warm or cool shift without widening any channel. * * @type {UniformNode} */ From 9048cd9d48ea1ab0445c3c1579148ab7d8082e8a Mon Sep 17 00:00:00 2001 From: Marco Fugaro Date: Mon, 8 Jun 2026 11:23:20 +0200 Subject: [PATCH 05/14] Exclude non-sss materials from calculations --- examples/jsm/tsl/display/SSSSNode.js | 293 ++++++++++++++------------- 1 file changed, 147 insertions(+), 146 deletions(-) diff --git a/examples/jsm/tsl/display/SSSSNode.js b/examples/jsm/tsl/display/SSSSNode.js index 24fa7f632fc51b..df6a4ad7e8fdf0 100644 --- a/examples/jsm/tsl/display/SSSSNode.js +++ b/examples/jsm/tsl/display/SSSSNode.js @@ -595,154 +595,155 @@ class SSSSNode extends TempNode { const centerAlbedo = max( centerAlbedoSample.rgb, vec3( ALBEDO_EPS ) ).toVar(); const sssMask = centerAlbedoSample.a.toVar(); - const centerViewPos = getViewPos( centerDepth, vuv ).toVar(); - const linearDepth = centerViewPos.z.negate().toVar(); - const centerFF = computeFogFactor( linearDepth ).toVar(); - const centerColorDefogged = defog( centerColor.rgb, centerFF ).toVar(); - - const slot = int( sssMask ).toVar(); - const _p0 = sssBuffer.element( slot.mul( 2 ) ).toVar(); - const _p1 = sssBuffer.element( slot.mul( 2 ).add( 1 ) ).toVar(); - const pixelScatteringDistance = _p0.rgb; - const pixelStrength = _p0.a; - const pixelScatteringColor = _p1.rgb; - const pixelTexturingMode = _p1.a; - - const scatterDist = pixelScatteringDistance.toVar(); - const sR = float( 3.67 ).div( max( scatterDist.x, 0.0001 ) ).toVar(); - const sG = float( 3.67 ).div( max( scatterDist.y, 0.0001 ) ).toVar(); - const sB = float( 3.67 ).div( max( scatterDist.z, 0.0001 ) ).toVar(); - const sMin = min( sR, min( sG, sB ) ).toVar(); - - const worldRadius = float( maxR ).div( sMin ).toVar(); - const screenRadius = worldRadius.mul( _projScale ).div( linearDepth ).toVar(); - const effectiveMaxRadius = min( worldRadius.mul( _projScale ).div( _cameraNear ), _resolution.y.mul( 0.25 ) ); - const clampedRadius = min( screenRadius, effectiveMaxRadius ).toVar(); - const radiusScale = clampedRadius.div( float( maxR ) ).toVar(); - - const skipBlur = sssMask.lessThan( 0.5 ).toVar(); - const effectiveSamples = skipBlur.select( int( 0 ), int( samples ) ).toVar(); - const effectiveStrength = pixelStrength.mul( skipBlur.select( float( 0.0 ), float( 1.0 ) ) ).toVar(); - - const noiseUV = vuv.mul( _lowResolution ).div( 64.0 ); - const noiseVal = _noiseNode.sample( noiseUV ); - const cosA = noiseVal.r.toVar(); - const sinA = noiseVal.g.toVar(); - - // Tangent-plane disk basis; falls back to screen-aligned disk when no normalNode. - const centerNormal = normalNode - ? normalize( normalNode.sample( vuv ).rgb ).toVar() - : vec3( 0.0, 0.0, 1.0 ).toVar(); - const seedUp = abs( centerNormal.y ).lessThan( 0.99 ).select( vec3( 0.0, 1.0, 0.0 ), vec3( 1.0, 0.0, 0.0 ) ); - const T = normalize( seedUp.sub( centerNormal.mul( dot( seedUp, centerNormal ) ) ) ).toVar(); - const B = cross( centerNormal, T ).toVar(); - const Trot = T.mul( cosA ).add( B.mul( sinA ) ).toVar(); - const Brot = T.mul( sinA.negate() ).add( B.mul( cosA ) ).toVar(); - const sampleWorldStep = radiusScale.mul( linearDepth ).div( _projScale ).toVar(); - - const albedoExp = pixelTexturingMode.mul( 0.5 ).toVar(); - const outFactor = pow( centerAlbedo, vec3( albedoExp ) ).toVar(); - - const totalR = float( 0.0 ).toVar(); - const totalG = float( 0.0 ).toVar(); - const totalB = float( 0.0 ).toVar(); - const weightSumR = float( 0.0 ).toVar(); - const weightSumG = float( 0.0 ).toVar(); - const weightSumB = float( 0.0 ).toVar(); - - Loop( { start: int( 0 ), end: effectiveSamples, type: 'int', condition: '<' }, ( { i } ) => { - - const sampleData = _samplesU.element( i ); - const sx = sampleData.x.toVar(); - const sy = sampleData.y.toVar(); - const sr = sampleData.z.toVar(); - - const viewOffset = Trot.mul( sx ).add( Brot.mul( sy ) ).mul( sampleWorldStep ); - const viewSamplePos = centerViewPos.add( viewOffset ); - const clipPos = _cameraProjectionMatrix.mul( vec4( viewSamplePos, 1.0 ) ); - const ndc = clipPos.xy.div( clipPos.w ); - const sampleUV = clamp( ndc.mul( 0.5 ).add( 0.5 ), vec2( 0.0 ), vec2( 1.0 ) ); - - const sampledColor = sampleColor( sampleUV ); - const sampledDepth = sampleDepth( sampleUV ).toVar(); - const sampledAlbedo = max( sampleAlbedo( sampleUV ), vec3( ALBEDO_EPS ) ).toVar(); - const sampleViewPos = getViewPos( sampledDepth, sampleUV ).toVar(); - - const sampleFF = computeFogFactor( sampleViewPos.z.negate() ); - const sampledColorDefogged = defog( sampledColor.rgb, sampleFF ); - const inFactorSample = pow( sampledAlbedo, vec3( albedoExp ) ); - const irradiance = sampledColorDefogged.div( inFactorSample ).toVar(); - - const worldR = sr.div( sMin ).toVar(); - const dx = centerViewPos.x.sub( sampleViewPos.x ); - const dy = centerViewPos.y.sub( sampleViewPos.y ); - const dz = centerViewPos.z.sub( sampleViewPos.z ); - const worldDist = sqrt( dx.mul( dx ).add( dy.mul( dy ) ).add( dz.mul( dz ) ) ); - const depthDiff = abs( centerViewPos.z.sub( sampleViewPos.z ) ).toVar(); - const d = max( worldDist, 0.00001 ).toVar(); - - const wR = evalWeight( d, sR ).toVar(); - const wG = evalWeight( d, sG ).toVar(); - const wB = evalWeight( d, sB ).toVar(); - - const valid = depthDiff - .lessThan( worldR.mul( 2.0 ) ) - .and( sampledDepth.lessThan( 1.0 ) ) - .select( 1.0, 0.0 ) - .toVar(); - - const vR = wR.mul( valid ).toVar(); - const vG = wG.mul( valid ).toVar(); - const vB = wB.mul( valid ).toVar(); - - totalR.addAssign( vR.mul( irradiance.r ) ); - totalG.addAssign( vG.mul( irradiance.g ) ); - totalB.addAssign( vB.mul( irradiance.b ) ); - weightSumR.addAssign( vR ); - weightSumG.addAssign( vG ); - weightSumB.addAssign( vB ); - - } ); - - const blurredIrradiance = vec3( - totalR.div( max( weightSumR, 0.00001 ) ), - totalG.div( max( weightSumG, 0.00001 ) ), - totalB.div( max( weightSumB, 0.00001 ) ), - ); - // Disney Diffuse Fresnel transmission at the exit point in the view direction [Burley 2015]. - // F_dt(v) = 1 - 0.5 * (1 - |n·v|)^5 — models light refracting out of the surface. - const viewDir = normalize( centerViewPos.negate() ); - const NdotV = abs( dot( centerNormal, viewDir ) ); - const Fdt = float( 1.0 ).sub( float( 0.5 ).mul( pow( float( 1.0 ).sub( NdotV ), float( 5.0 ) ) ) ); - const blurred = blurredIrradiance.mul( outFactor ).mul( pixelScatteringColor ).mul( Fdt ); - const blendedColor = mix( centerColorDefogged, blurred, effectiveStrength ); - - const diff = blurred.sub( centerColorDefogged ).mul( 20.0 ).add( 0.5 ); - const depthVis = vec3( linearDepth.div( 10.0 ) ); - const weightsMax = max( weightSumR, max( weightSumG, weightSumB ) ).add( 0.0001 ); - const weightsVis = vec3( - weightSumR.div( weightsMax ), - weightSumG.div( weightsMax ), - weightSumB.div( weightsMax ), - ); - const albedoVis = centerAlbedo; - - const rawOut = outputMode - .greaterThan( 4.5 ) - .select( - albedoVis, - outputMode.greaterThan( 3.5 ).select( - weightsVis, - outputMode.greaterThan( 2.5 ).select( - depthVis, - outputMode.greaterThan( 1.5 ).select( blurred, outputMode.greaterThan( 0.5 ).select( diff, blendedColor ) ), - ), - ), + If( sssMask.greaterThanEqual( 0.5 ), () => { + + const centerViewPos = getViewPos( centerDepth, vuv ).toVar(); + const linearDepth = centerViewPos.z.negate().toVar(); + const centerFF = computeFogFactor( linearDepth ).toVar(); + const centerColorDefogged = defog( centerColor.rgb, centerFF ).toVar(); + + const slot = int( sssMask ).toVar(); + const _p0 = sssBuffer.element( slot.mul( 2 ) ).toVar(); + const _p1 = sssBuffer.element( slot.mul( 2 ).add( 1 ) ).toVar(); + const pixelScatteringDistance = _p0.rgb; + const pixelStrength = _p0.a; + const pixelScatteringColor = _p1.rgb; + const pixelTexturingMode = _p1.a; + + const scatterDist = pixelScatteringDistance.toVar(); + const sR = float( 3.67 ).div( max( scatterDist.x, 0.0001 ) ).toVar(); + const sG = float( 3.67 ).div( max( scatterDist.y, 0.0001 ) ).toVar(); + const sB = float( 3.67 ).div( max( scatterDist.z, 0.0001 ) ).toVar(); + const sMin = min( sR, min( sG, sB ) ).toVar(); + + const worldRadius = float( maxR ).div( sMin ).toVar(); + const screenRadius = worldRadius.mul( _projScale ).div( linearDepth ).toVar(); + const effectiveMaxRadius = min( worldRadius.mul( _projScale ).div( _cameraNear ), _resolution.y.mul( 0.25 ) ); + const clampedRadius = min( screenRadius, effectiveMaxRadius ).toVar(); + const radiusScale = clampedRadius.div( float( maxR ) ).toVar(); + + + const noiseUV = vuv.mul( _lowResolution ).div( 64.0 ); + const noiseVal = _noiseNode.sample( noiseUV ); + const cosA = noiseVal.r.toVar(); + const sinA = noiseVal.g.toVar(); + + // Tangent-plane disk basis; falls back to screen-aligned disk when no normalNode. + const centerNormal = normalNode + ? normalize( normalNode.sample( vuv ).rgb ).toVar() + : vec3( 0.0, 0.0, 1.0 ).toVar(); + const seedUp = abs( centerNormal.y ).lessThan( 0.99 ).select( vec3( 0.0, 1.0, 0.0 ), vec3( 1.0, 0.0, 0.0 ) ); + const T = normalize( seedUp.sub( centerNormal.mul( dot( seedUp, centerNormal ) ) ) ).toVar(); + const B = cross( centerNormal, T ).toVar(); + const Trot = T.mul( cosA ).add( B.mul( sinA ) ).toVar(); + const Brot = T.mul( sinA.negate() ).add( B.mul( cosA ) ).toVar(); + const sampleWorldStep = radiusScale.mul( linearDepth ).div( _projScale ).toVar(); + + const albedoExp = pixelTexturingMode.mul( 0.5 ).toVar(); + const outFactor = pow( centerAlbedo, vec3( albedoExp ) ).toVar(); + + const totalR = float( 0.0 ).toVar(); + const totalG = float( 0.0 ).toVar(); + const totalB = float( 0.0 ).toVar(); + const weightSumR = float( 0.0 ).toVar(); + const weightSumG = float( 0.0 ).toVar(); + const weightSumB = float( 0.0 ).toVar(); + + Loop( { start: int( 0 ), end: int( samples ), type: 'int', condition: '<' }, ( { i } ) => { + + const sampleData = _samplesU.element( i ); + const sx = sampleData.x.toVar(); + const sy = sampleData.y.toVar(); + const sr = sampleData.z.toVar(); + + const viewOffset = Trot.mul( sx ).add( Brot.mul( sy ) ).mul( sampleWorldStep ); + const viewSamplePos = centerViewPos.add( viewOffset ); + const clipPos = _cameraProjectionMatrix.mul( vec4( viewSamplePos, 1.0 ) ); + const ndc = clipPos.xy.div( clipPos.w ); + const sampleUV = clamp( ndc.mul( 0.5 ).add( 0.5 ), vec2( 0.0 ), vec2( 1.0 ) ); + + const sampledColor = sampleColor( sampleUV ); + const sampledDepth = sampleDepth( sampleUV ).toVar(); + const sampledAlbedo = max( sampleAlbedo( sampleUV ), vec3( ALBEDO_EPS ) ).toVar(); + const sampleViewPos = getViewPos( sampledDepth, sampleUV ).toVar(); + + const sampleFF = computeFogFactor( sampleViewPos.z.negate() ); + const sampledColorDefogged = defog( sampledColor.rgb, sampleFF ); + const inFactorSample = pow( sampledAlbedo, vec3( albedoExp ) ); + const irradiance = sampledColorDefogged.div( inFactorSample ).toVar(); + + const worldR = sr.div( sMin ).toVar(); + const dx = centerViewPos.x.sub( sampleViewPos.x ); + const dy = centerViewPos.y.sub( sampleViewPos.y ); + const dz = centerViewPos.z.sub( sampleViewPos.z ); + const worldDist = sqrt( dx.mul( dx ).add( dy.mul( dy ) ).add( dz.mul( dz ) ) ); + const depthDiff = abs( centerViewPos.z.sub( sampleViewPos.z ) ).toVar(); + const d = max( worldDist, 0.00001 ).toVar(); + + const wR = evalWeight( d, sR ).toVar(); + const wG = evalWeight( d, sG ).toVar(); + const wB = evalWeight( d, sB ).toVar(); + + const valid = depthDiff + .lessThan( worldR.mul( 2.0 ) ) + .and( sampledDepth.lessThan( 1.0 ) ) + .select( 1.0, 0.0 ) + .toVar(); + + const vR = wR.mul( valid ).toVar(); + const vG = wG.mul( valid ).toVar(); + const vB = wB.mul( valid ).toVar(); + + totalR.addAssign( vR.mul( irradiance.r ) ); + totalG.addAssign( vG.mul( irradiance.g ) ); + totalB.addAssign( vB.mul( irradiance.b ) ); + weightSumR.addAssign( vR ); + weightSumG.addAssign( vG ); + weightSumB.addAssign( vB ); + + } ); + + const blurredIrradiance = vec3( + totalR.div( max( weightSumR, 0.00001 ) ), + totalG.div( max( weightSumG, 0.00001 ) ), + totalB.div( max( weightSumB, 0.00001 ) ), ); + // Disney Diffuse Fresnel transmission at the exit point in the view direction [Burley 2015]. + // F_dt(v) = 1 - 0.5 * (1 - |n·v|)^5 — models light refracting out of the surface. + const viewDir = normalize( centerViewPos.negate() ); + const NdotV = abs( dot( centerNormal, viewDir ) ); + const Fdt = float( 1.0 ).sub( float( 0.5 ).mul( pow( float( 1.0 ).sub( NdotV ), float( 5.0 ) ) ) ); + const blurred = blurredIrradiance.mul( outFactor ).mul( pixelScatteringColor ).mul( Fdt ); + const blendedColor = mix( centerColorDefogged, blurred, pixelStrength ); + + const diff = blurred.sub( centerColorDefogged ).mul( 20.0 ).add( 0.5 ); + const depthVis = vec3( linearDepth.div( 10.0 ) ); + const weightsMax = max( weightSumR, max( weightSumG, weightSumB ) ).add( 0.0001 ); + const weightsVis = vec3( + weightSumR.div( weightsMax ), + weightSumG.div( weightsMax ), + weightSumB.div( weightsMax ), + ); + const albedoVis = centerAlbedo; + + const rawOut = outputMode + .greaterThan( 4.5 ) + .select( + albedoVis, + outputMode.greaterThan( 3.5 ).select( + weightsVis, + outputMode.greaterThan( 2.5 ).select( + depthVis, + outputMode.greaterThan( 1.5 ).select( blurred, outputMode.greaterThan( 0.5 ).select( diff, blendedColor ) ), + ), + ), + ); - // Re-apply fog at the center pixel's depth after the blur. - const foggedOut = mix( rawOut, fogColorUniform, centerFF ); - result.assign( vec4( foggedOut, centerColor.a ) ); + // Re-apply fog at the center pixel's depth after the blur. + const foggedOut = mix( rawOut, fogColorUniform, centerFF ); + result.assign( vec4( foggedOut, centerColor.a ) ); + + } ); } ); From e5cc82ca6f6b08ade9c1ce21d3b2819829f2290f Mon Sep 17 00:00:00 2001 From: Marco Fugaro Date: Mon, 8 Jun 2026 11:45:31 +0200 Subject: [PATCH 06/14] Shader optims --- examples/jsm/tsl/display/SSSSNode.js | 60 ++++++++++++++++------------ 1 file changed, 35 insertions(+), 25 deletions(-) diff --git a/examples/jsm/tsl/display/SSSSNode.js b/examples/jsm/tsl/display/SSSSNode.js index df6a4ad7e8fdf0..c8dbb9563239bb 100644 --- a/examples/jsm/tsl/display/SSSSNode.js +++ b/examples/jsm/tsl/display/SSSSNode.js @@ -288,10 +288,15 @@ class SSSSNode extends TempNode { this._cameraProjectionMatrix = uniform( camera.projectionMatrix ); /** + * Packed projection matrix elements for cheap view-space position reconstruction. + * _projDepthParams: [p22, p23, p32, p33] — used to recover view-Z from NDC depth. + * p32 = -1 (perspective) or 0 (orthographic) drives the unified formula. + * _projScaleXY: [1/p00, 1/p11] — precomputed reciprocals to recover view-X/Y. + * Works for any standard symmetric perspective or orthographic camera. * @private - * @type {UniformNode} */ - this._cameraProjectionMatrixInverse = uniform( camera.projectionMatrixInverse ); + this._projDepthParams = uniform( new Vector4() ); + this._projScaleXY = uniform( new Vector2() ); const allSamples = _precomputeSamples( _MAX_SAMPLES ); @@ -519,7 +524,9 @@ class SSSSNode extends TempNode { this._projScale.value = 0.5 * size.height * this._camera.projectionMatrix.elements[ 5 ]; this._cameraNear.value = this._camera.near; this._cameraProjectionMatrix.value.copy( this._camera.projectionMatrix ); - this._cameraProjectionMatrixInverse.value.copy( this._camera.projectionMatrixInverse ); + const pe = this._camera.projectionMatrix.elements; + this._projDepthParams.value.set( pe[ 10 ], pe[ 14 ], pe[ 11 ], pe[ 15 ] ); + this._projScaleXY.value.set( 1 / pe[ 0 ], 1 / pe[ 5 ] ); if ( this._sssBufferNeedsRebuild ) this._rebuildSSSBuffer(); this._syncSSSBuffer(); @@ -545,7 +552,7 @@ class SSSSNode extends TempNode { const { samples, outputMode } = this; const { fogType, fogNear, fogFar, fogDensity } = this; const fogColorUniform = this.fogColor; - const { _lowResolution, _projScale, _cameraNear, _resolution, _cameraProjectionMatrix, _cameraProjectionMatrixInverse, _samplesU, _noiseNode } = this; + const { _lowResolution, _projScale, _cameraNear, _resolution, _cameraProjectionMatrix, _projDepthParams, _projScaleXY, _samplesU, _noiseNode } = this; const maxR = this._maxR; const sampleColor = ( uvCoord ) => colorNode.sample( uvCoord ); @@ -554,15 +561,16 @@ class SSSSNode extends TempNode { const getViewPos = ( depthVal, coordVal ) => { - const z = depthVal.mul( 2.0 ).sub( 1.0 ); - const clipPos = vec4( coordVal.mul( 2.0 ).sub( 1.0 ), z, 1.0 ); - const viewPos = _cameraProjectionMatrixInverse.mul( clipPos ); - return viewPos.xyz.div( viewPos.w ); + const ndc = coordVal.mul( 2.0 ).sub( 1.0 ); + const ndcZ = depthVal.mul( 2.0 ).sub( 1.0 ); + // Unified formula valid for both perspective (p32=-1, p33=0) and + // orthographic (p32=0, p33=1) cameras. + const vz = _projDepthParams.y.sub( ndcZ.mul( _projDepthParams.w ) ).div( ndcZ.mul( _projDepthParams.z ).sub( _projDepthParams.x ) ); + const clipW = _projDepthParams.z.mul( vz ).add( _projDepthParams.w ); + return vec3( ndc.x.mul( clipW ).mul( _projScaleXY.x ), ndc.y.mul( clipW ).mul( _projScaleXY.y ), vz ); }; - const evalWeight = ( d, s ) => exp( s.mul( d ).negate() ).add( exp( s.mul( d ).div( 3.0 ).negate() ) ); - // Returns fog factor in [0,1]: 0 = no fog, 1 = full fog. const computeFogFactor = ( depth ) => { @@ -664,13 +672,18 @@ class SSSSNode extends TempNode { const sampledColor = sampleColor( sampleUV ); const sampledDepth = sampleDepth( sampleUV ).toVar(); - const sampledAlbedo = max( sampleAlbedo( sampleUV ), vec3( ALBEDO_EPS ) ).toVar(); const sampleViewPos = getViewPos( sampledDepth, sampleUV ).toVar(); const sampleFF = computeFogFactor( sampleViewPos.z.negate() ); const sampledColorDefogged = defog( sampledColor.rgb, sampleFF ); - const inFactorSample = pow( sampledAlbedo, vec3( albedoExp ) ); - const irradiance = sampledColorDefogged.div( inFactorSample ).toVar(); + const irradiance = sampledColorDefogged.toVar(); + + If( albedoExp.greaterThan( 0.0 ), () => { + + const sampledAlbedo = max( sampleAlbedo( sampleUV ), vec3( ALBEDO_EPS ) ); + irradiance.assign( sampledColorDefogged.div( pow( sampledAlbedo, vec3( albedoExp ) ) ) ); + + } ); const worldR = sr.div( sMin ).toVar(); const dx = centerViewPos.x.sub( sampleViewPos.x ); @@ -680,9 +693,8 @@ class SSSSNode extends TempNode { const depthDiff = abs( centerViewPos.z.sub( sampleViewPos.z ) ).toVar(); const d = max( worldDist, 0.00001 ).toVar(); - const wR = evalWeight( d, sR ).toVar(); - const wG = evalWeight( d, sG ).toVar(); - const wB = evalWeight( d, sB ).toVar(); + const sd = vec3( sR, sG, sB ).mul( d ); + const w = exp( sd.negate() ).add( exp( sd.div( 3.0 ).negate() ) ); const valid = depthDiff .lessThan( worldR.mul( 2.0 ) ) @@ -690,16 +702,14 @@ class SSSSNode extends TempNode { .select( 1.0, 0.0 ) .toVar(); - const vR = wR.mul( valid ).toVar(); - const vG = wG.mul( valid ).toVar(); - const vB = wB.mul( valid ).toVar(); + const v = w.mul( valid ); - totalR.addAssign( vR.mul( irradiance.r ) ); - totalG.addAssign( vG.mul( irradiance.g ) ); - totalB.addAssign( vB.mul( irradiance.b ) ); - weightSumR.addAssign( vR ); - weightSumG.addAssign( vG ); - weightSumB.addAssign( vB ); + totalR.addAssign( v.x.mul( irradiance.r ) ); + totalG.addAssign( v.y.mul( irradiance.g ) ); + totalB.addAssign( v.z.mul( irradiance.b ) ); + weightSumR.addAssign( v.x ); + weightSumG.addAssign( v.y ); + weightSumB.addAssign( v.z ); } ); From fdb21c2e1d2ac60b7e92900576e79c1accaf92a5 Mon Sep 17 00:00:00 2001 From: Marco Fugaro Date: Wed, 10 Jun 2026 00:33:54 +0200 Subject: [PATCH 07/14] Add temporal jitter and better resolutionScale --- examples/jsm/tsl/display/SSSSNode.js | 157 ++++++++++++++++++----- examples/webgpu_postprocessing_ssss.html | 33 +++-- 2 files changed, 148 insertions(+), 42 deletions(-) diff --git a/examples/jsm/tsl/display/SSSSNode.js b/examples/jsm/tsl/display/SSSSNode.js index c8dbb9563239bb..496fe2a5903e01 100644 --- a/examples/jsm/tsl/display/SSSSNode.js +++ b/examples/jsm/tsl/display/SSSSNode.js @@ -9,6 +9,16 @@ let _rendererState; const _GOLDEN_RATIO = ( 1 + Math.sqrt( 5 ) ) / 2; const _MAX_SAMPLES = 64; +/** + * Numerically inverts the Burley normalized diffusion CDF using Halley's method. + * Used to importance-sample the diffusion profile by mapping uniform random + * values to radial distances. + * + * @param {number} u - Uniform sample in (0, 1). + * @param {number} s - Burley shape parameter (controls falloff width). + * @param {number} [iterations=12] - Number of Halley iterations. + * @returns {number} Radial distance r such that CDF(r) ≈ u. + */ function _invertBurleyCDF( u, s, iterations = 12 ) { let r = - Math.log( Math.max( 1 - u, 1e-10 ) ) / s; @@ -33,6 +43,14 @@ function _invertBurleyCDF( u, s, iterations = 12 ) { } +/** + * Precomputes a Fibonacci-spiral disk of importance-sampled Burley diffusion + * profile offsets. Each entry is a `Vector3(x, y, r)` where `(x, y)` is the + * unit-disk direction and `r` is the radial distance drawn from the profile CDF. + * + * @param {number} numSamples - Number of samples to generate. + * @returns {Vector3[]} Array of sample offsets. + */ function _precomputeSamples( numSamples ) { const s = 1.0; @@ -51,7 +69,19 @@ function _precomputeSamples( numSamples ) { } -function _generateNoiseTexture( size = 64 ) { +/** + * Generates a tiling texture of random 2D unit vectors (cos θ, sin θ) used to + * rotate the sample disk per pixel, breaking up structured blur patterns. + * + * This is the "random kernel rotations" optimization from the Optimizations + * section of [Golubev 2018]. It trades structured undersampling artifacts for + * less objectionable noise, which a temporal resolve (e.g. `TRAANode`, enabled + * via the {@link SSSSNode#jitter} flag) cleans up over successive frames. + * + * @param {number} [size=64] - Width and height of the square texture in texels. + * @returns {DataTexture} RGBA Float texture with rotation vectors in the RG channels. + */ +function _generateWhiteNoiseTexture( size = 64 ) { const data = new Float32Array( size * size * 4 ); @@ -123,8 +153,6 @@ class SSSSNode extends TempNode { } - static TEXTURING_MODE = TEXTURING_MODE; - /** * Constructs a new SSSS node. * @@ -152,8 +180,8 @@ class SSSSNode extends TempNode { this.updateBeforeType = NodeUpdateType.FRAME; /** - * Maximum blur samples per pixel. The actual count scales down - * with the LOD factor for small screen-space disks. + * Maximum blur samples per pixel. The effective tap count used each frame is + * this value scaled by {@link SSSSNode#resolutionScale}. * * @type {UniformNode} * @default 32 @@ -210,13 +238,28 @@ class SSSSNode extends TempNode { this.fogDensity = uniform( 0.025 ); /** - * Fraction of full resolution at which the SSS blur runs. - * Values below 1 trade quality for performance. + * Performance knob in the range `(0, 1]`. Scales the number of diffusion taps + * per pixel to `round( samples * resolutionScale )`, striding them across the + * full kernel so the blur radius stays the same and only gets noisier (enable + * {@link SSSSNode#jitter} with a `TRAANode` to resolve that noise). The output + * always stays full resolution. * * @type {number} - * @default 1 + * @default 0.5 */ - this.resolutionScale = 1; + this.resolutionScale = 0.5; + + /** + * Whether to jitter the per-pixel sample rotation over time. Setting this + * property to `true` requires the usage of `TRAANode`, which resolves the + * resulting noise into a clean image while allowing a lower sample count. + * When `false`, the rotation is static so the raw output is stable without + * a temporal resolve. + * + * @type {boolean} + * @default false + */ + this.jitter = false; // private @@ -251,12 +294,8 @@ class SSSSNode extends TempNode { * @type {RenderTarget} */ this._sssRenderTarget = new RenderTarget( 1, 1, { depthBuffer: false, type: HalfFloatType } ); - this._sssRenderTarget.texture.name = 'SSSS.LowRes'; + this._sssRenderTarget.texture.name = 'SSSS'; - /** - * @private - * @type {RenderTarget} - */ /** * @private * @type {UniformNode} @@ -264,17 +303,50 @@ class SSSSNode extends TempNode { this._resolution = uniform( new Vector2() ); /** + * Resolution at which the per-pixel noise rotation tiles, i.e. + * `resolutionScale * resolution`. + * * @private * @type {UniformNode} */ this._lowResolution = uniform( new Vector2() ); + /** + * Effective number of blur taps per pixel: `round( samples * resolutionScale )`, + * recomputed each frame. This is the knob `resolutionScale` turns on the + * expensive path. + * + * @private + * @type {UniformNode} + */ + this._effectiveSamples = uniform( 32 ); + + /** + * Spacing between consecutive taps within the precomputed kernel + * (`samples / effectiveSamples`). A stride > 1 spreads the reduced tap set + * across the full kernel so the blur radius stays constant as + * `resolutionScale` drops. Equals 1 at full resolution. + * + * @private + * @type {UniformNode} + */ + this._sampleStride = uniform( 1.0 ); + /** * @private * @type {UniformNode} */ this._projScale = uniform( 1.0 ); + /** + * Golden-ratio noise UV shift applied when temporal filtering is enabled, + * kept in the [0, 1) range. Stays 0 when temporal filtering is disabled. + * + * @private + * @type {UniformNode} + */ + this._temporalNoiseOffset = uniform( 0 ); + /** * @private * @type {UniformNode} @@ -316,7 +388,7 @@ class SSSSNode extends TempNode { * @private * @type {TextureNode} */ - this._noiseNode = texture( _generateNoiseTexture() ); + this._noiseNode = texture( _generateWhiteNoiseTexture() ); /** * @private @@ -325,10 +397,6 @@ class SSSSNode extends TempNode { this._sssMaterial = new NodeMaterial(); this._sssMaterial.name = 'SSSS'; - /** - * @private - * @type {NodeMaterial} - */ /** * @private * @type {PassTextureNode} @@ -356,6 +424,18 @@ class SSSSNode extends TempNode { } + /** + * The internal render target. Exposed so that nodes like TRAANode can read + * its dimensions via the standard `passNode.renderTarget` convention. + * + * @type {RenderTarget} + */ + get renderTarget() { + + return this._sssRenderTarget; + + } + /** * Returns the result of the effect as a texture node. * @@ -488,7 +568,7 @@ class SSSSNode extends TempNode { } /** - * Sets the size of the internal render targets. + * Sets the size of the internal render target. * * @param {number} width - Output width in pixels. * @param {number} height - Output height in pixels. @@ -497,18 +577,18 @@ class SSSSNode extends TempNode { this._resolution.value.set( width, height ); + // The output stays full resolution (single pass). `resolutionScale` only + // tiles the noise rotation at a lower frequency; the matching reduction in + // the per-pixel tap count is applied via `_effectiveSamples` in updateBefore. const w = Math.max( 1, Math.round( this.resolutionScale * width ) ); const h = Math.max( 1, Math.round( this.resolutionScale * height ) ); this._lowResolution.value.set( w, h ); - // Output render target must stay at full resolution — without a separate - // composite pass there is no way to upscale a low-res SSS blur back to full - // res. resolutionScale only affects the noise UV tiling (_lowResolution). this._sssRenderTarget.setSize( width, height ); } /** - * Executes the SSS blur and bilateral upsample passes once per frame. + * Executes the SSS blur pass once per frame. * * @param {NodeFrame} frame - The current node frame. */ @@ -521,7 +601,18 @@ class SSSSNode extends TempNode { const size = renderer.getDrawingBufferSize( _size ); this.setSize( size.width, size.height ); + // resolutionScale turns down the expensive path: fewer taps per pixel, strided + // across the full kernel so the blur radius is unaffected (stride 1 at scale 1). + const effectiveSamples = Math.max( 1, Math.round( this.samples.value * this.resolutionScale ) ); + this._effectiveSamples.value = effectiveSamples; + this._sampleStride.value = this.samples.value / effectiveSamples; + this._projScale.value = 0.5 * size.height * this._camera.projectionMatrix.elements[ 5 ]; + // Advance the noise rotation each frame so TRAA can accumulate distinct samples. + // frameId is wrapped to keep the golden-ratio product small and precise. + this._temporalNoiseOffset.value = this.jitter + ? ( ( frame.frameId % 4096 ) * ( _GOLDEN_RATIO % 1 ) ) % 1 + : 0; this._cameraNear.value = this._camera.near; this._cameraProjectionMatrix.value.copy( this._camera.projectionMatrix ); const pe = this._camera.projectionMatrix.elements; @@ -540,7 +631,7 @@ class SSSSNode extends TempNode { } /** - * Builds the TSL shader graph for both passes. + * Builds the TSL shader graph for the SSS blur pass. * * @param {NodeBuilder} builder - The current node builder. * @return {PassTextureNode} @@ -549,10 +640,10 @@ class SSSSNode extends TempNode { const { colorNode, depthNode, albedoNode, normalNode } = this; const sssBuffer = this._sssBuffer; - const { samples, outputMode } = this; + const { outputMode } = this; const { fogType, fogNear, fogFar, fogDensity } = this; const fogColorUniform = this.fogColor; - const { _lowResolution, _projScale, _cameraNear, _resolution, _cameraProjectionMatrix, _projDepthParams, _projScaleXY, _samplesU, _noiseNode } = this; + const { _lowResolution, _projScale, _cameraNear, _resolution, _cameraProjectionMatrix, _projDepthParams, _projScaleXY, _samplesU, _noiseNode, _temporalNoiseOffset, _effectiveSamples, _sampleStride } = this; const maxR = this._maxR; const sampleColor = ( uvCoord ) => colorNode.sample( uvCoord ); @@ -631,7 +722,8 @@ class SSSSNode extends TempNode { const radiusScale = clampedRadius.div( float( maxR ) ).toVar(); - const noiseUV = vuv.mul( _lowResolution ).div( 64.0 ); + // Temporal offset (0 unless temporal filtering is enabled) shifts the noise lookup each frame. + const noiseUV = vuv.mul( _lowResolution ).div( 64.0 ).add( vec2( _temporalNoiseOffset ) ); const noiseVal = _noiseNode.sample( noiseUV ); const cosA = noiseVal.r.toVar(); const sinA = noiseVal.g.toVar(); @@ -657,9 +749,14 @@ class SSSSNode extends TempNode { const weightSumG = float( 0.0 ).toVar(); const weightSumB = float( 0.0 ).toVar(); - Loop( { start: int( 0 ), end: int( samples ), type: 'int', condition: '<' }, ( { i } ) => { + // `_effectiveSamples` = round( samples * resolutionScale ): the tap + // count is where resolutionScale cheapens the expensive path. + Loop( { start: int( 0 ), end: int( _effectiveSamples ), type: 'int', condition: '<' }, ( { i } ) => { - const sampleData = _samplesU.element( i ); + // Stride across the full kernel so fewer taps still span the + // whole blur radius (idx === i when resolutionScale is 1). + const idx = int( float( i ).add( 0.5 ).mul( _sampleStride ) ).toVar(); + const sampleData = _samplesU.element( idx ); const sx = sampleData.x.toVar(); const sy = sampleData.y.toVar(); const sr = sampleData.z.toVar(); diff --git a/examples/webgpu_postprocessing_ssss.html b/examples/webgpu_postprocessing_ssss.html index f23f8745eb2873..9062f76cb4e493 100644 --- a/examples/webgpu_postprocessing_ssss.html +++ b/examples/webgpu_postprocessing_ssss.html @@ -40,9 +40,10 @@

    Nt+y0GvX@Enin;pum|4D2-Jx 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