From e7a94ca70ff3a14a7e60a9a9e05a2fd3b24e0d33 Mon Sep 17 00:00:00 2001 From: Michael Herzog Date: Sun, 4 Jan 2026 10:19:29 +0100 Subject: [PATCH] TSL: Add `exponentialHeightFogFactor()`. (#32659) --- examples/files.json | 1 + examples/screenshots/webgpu_fog_height.jpg | Bin 0 -> 64487 bytes examples/webgpu_fog_height.html | 148 +++++++++++++++++++++ src/Three.TSL.js | 1 + src/nodes/fog/Fog.js | 21 ++- 5 files changed, 170 insertions(+), 1 deletion(-) create mode 100644 examples/screenshots/webgpu_fog_height.jpg create mode 100644 examples/webgpu_fog_height.html diff --git a/examples/files.json b/examples/files.json index df2beea6a62ee5..a68d269d829064 100644 --- a/examples/files.json +++ b/examples/files.json @@ -332,6 +332,7 @@ "webgpu_depth_texture", "webgpu_display_stereo", "webgpu_equirectangular", + "webgpu_fog_height", "webgpu_hdr", "webgpu_instance_mesh", "webgpu_instance_path", diff --git a/examples/screenshots/webgpu_fog_height.jpg b/examples/screenshots/webgpu_fog_height.jpg new file mode 100644 index 0000000000000000000000000000000000000000..80573f9fa7f404e7ca27bb7e39f49dd1399f18b1 GIT binary patch literal 64487 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 literal 0 HcmV?d00001 diff --git a/examples/webgpu_fog_height.html b/examples/webgpu_fog_height.html new file mode 100644 index 00000000000000..a37a102d422583 --- /dev/null +++ b/examples/webgpu_fog_height.html @@ -0,0 +1,148 @@ + + + + three.js webgpu - height fog + + + + + + +
+ + +
+ three.jsHeight Fog +
+ + + Exponential Height Fog with TSL. + +
+ + + + + + diff --git a/src/Three.TSL.js b/src/Three.TSL.js index 63d38f9039a891..608c2fb17a326f 100644 --- a/src/Three.TSL.js +++ b/src/Three.TSL.js @@ -177,6 +177,7 @@ export const equal = TSL.equal; export const equirectUV = TSL.equirectUV; export const exp = TSL.exp; export const exp2 = TSL.exp2; +export const exponentialHeightFogFactor = TSL.exponentialHeightFogFactor; export const expression = TSL.expression; export const faceDirection = TSL.faceDirection; export const faceForward = TSL.faceForward; diff --git a/src/nodes/fog/Fog.js b/src/nodes/fog/Fog.js index e84383f184f677..644b2646b5304c 100644 --- a/src/nodes/fog/Fog.js +++ b/src/nodes/fog/Fog.js @@ -1,4 +1,4 @@ -import { positionView } from '../accessors/Position.js'; +import { positionView, positionWorld } from '../accessors/Position.js'; import { smoothstep } from '../math/MathNode.js'; import { Fn, output, vec4 } from '../tsl/TSLBase.js'; @@ -62,6 +62,25 @@ export const densityFogFactor = Fn( ( [ density ], builder ) => { } ); +/** + * Constructs a new height fog factor node. This fog factor requires a Y-up coordinate system. + * + * @tsl + * @function + * @param {Node} density - Defines the fog density. + * @param {Node} height - The height threshold in world space. Everything below this y-coordinate is affected by fog. + */ +export const exponentialHeightFogFactor = Fn( ( [ density, height ], builder ) => { + + const viewZ = getViewZNode( builder ); + + const distance = height.sub( positionWorld.y ).max( 0 ).toConst(); + const m = distance.mul( viewZ ).toConst(); + + return density.mul( density, m, m ).negate().exp().oneMinus(); + +} ); + /** * This class can be used to configure a fog for the scene. * Nodes of this type are assigned to `Scene.fogNode`.