From 1d83e6880b1cbed531b63cae024bbadb70919471 Mon Sep 17 00:00:00 2001 From: Mugen87 Date: Wed, 30 Oct 2024 11:20:58 +0100 Subject: [PATCH 1/3] TSL: Add function for computing BPCEMs. --- examples/files.json | 1 + .../webgpu_materials_envmaps_bpcem.jpg | Bin 0 -> 25755 bytes examples/webgpu_materials_envmaps_bpcem.html | 215 ++++++++++++++++++ src/nodes/TSL.js | 1 + .../material/getParallaxCorrectNormal.js | 22 ++ 5 files changed, 239 insertions(+) create mode 100644 examples/screenshots/webgpu_materials_envmaps_bpcem.jpg create mode 100644 examples/webgpu_materials_envmaps_bpcem.html create mode 100644 src/nodes/functions/material/getParallaxCorrectNormal.js diff --git a/examples/files.json b/examples/files.json index c359ce4b7da78b..ccd0780575efdf 100644 --- a/examples/files.json +++ b/examples/files.json @@ -354,6 +354,7 @@ "webgpu_materials_arrays", "webgpu_materials_basic", "webgpu_materials_displacementmap", + "webgpu_materials_envmaps_bpcem", "webgpu_materials_envmaps", "webgpu_materials_lightmap", "webgpu_materials_matcap", diff --git a/examples/screenshots/webgpu_materials_envmaps_bpcem.jpg b/examples/screenshots/webgpu_materials_envmaps_bpcem.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e8c829440140c8a21df39d2371b6b892dec79015 GIT binary patch literal 25755 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 + + + three.js webgpu - materials - bpcem + + + + + + +
+ three.js - webgpu - box projected cube environment mapping (BPCEM)
+
+ + + + + + + + \ No newline at end of file diff --git a/src/nodes/TSL.js b/src/nodes/TSL.js index f7a2420198f168..ded6a8ef5bcc8d 100644 --- a/src/nodes/TSL.js +++ b/src/nodes/TSL.js @@ -156,5 +156,6 @@ export { default as V_GGX_SmithCorrelated } from './functions/BSDF/V_GGX_SmithCo export * from './lighting/LightUtils.js'; export { default as getGeometryRoughness } from './functions/material/getGeometryRoughness.js'; +export { default as getParallaxCorrectNormal } from './functions/material/getParallaxCorrectNormal.js'; export { default as getRoughness } from './functions/material/getRoughness.js'; export { default as getShIrradianceAt } from './functions/material/getShIrradianceAt.js'; diff --git a/src/nodes/functions/material/getParallaxCorrectNormal.js b/src/nodes/functions/material/getParallaxCorrectNormal.js new file mode 100644 index 00000000000000..8f82bc8a1bbaaa --- /dev/null +++ b/src/nodes/functions/material/getParallaxCorrectNormal.js @@ -0,0 +1,22 @@ +import { positionWorld } from '../../accessors/Position'; +import { float, Fn, min, normalize, sub, vec3 } from '../../tsl/TSLBase.js'; + +// https://devlog-martinsh.blogspot.com/2011/09/box-projected-cube-environment-mapping.html + +const getParallaxCorrectNormal = /*@__PURE__*/ Fn( ( [ normal, cubeSize, cubePos ] ) => { + + const nDir = normalize( normal ).toVar( 'nDir' ); + const rbmax = sub( float( 0.5 ).mul( cubeSize.sub( cubePos ) ), positionWorld ).div( nDir ).toVar( 'rbmax' ); + const rbmin = sub( float( - 0.5 ).mul( cubeSize.sub( cubePos ) ), positionWorld ).div( nDir ).toVar( 'rbmin' ); + const rbminmax = vec3().toVar( 'rbminmax' ); + rbminmax.x = nDir.x.greaterThan( float( 0 ) ).select( rbmax.x, rbmin.x ); + rbminmax.y = nDir.y.greaterThan( float( 0 ) ).select( rbmax.y, rbmin.y ); + rbminmax.z = nDir.z.greaterThan( float( 0 ) ).select( rbmax.z, rbmin.z ); + + const correction = min( min( rbminmax.x, rbminmax.y ), rbminmax.z ).toVar( 'correction' ); + const boxIntersection = positionWorld.add( nDir.mul( correction ) ).toVar( 'boxIntersection' ); + return boxIntersection.sub( cubePos ); + +} ); + +export default getParallaxCorrectNormal; From 247dc4b3c9606b8a3defa5422116268dc2470b60 Mon Sep 17 00:00:00 2001 From: Mugen87 Date: Wed, 30 Oct 2024 11:38:47 +0100 Subject: [PATCH 2/3] E2E: Add example to exception list. --- test/e2e/puppeteer.js | 1 + 1 file changed, 1 insertion(+) diff --git a/test/e2e/puppeteer.js b/test/e2e/puppeteer.js index a49e55c61e941d..6827d182def08e 100644 --- a/test/e2e/puppeteer.js +++ b/test/e2e/puppeteer.js @@ -158,6 +158,7 @@ const exceptionList = [ 'webgpu_tsl_vfx_linkedparticles', 'webgpu_tsl_vfx_tornado', 'webgpu_textures_anisotropy', + 'webgpu_materials_envmaps_bpcem', // WebGPU idleTime and parseTime too low 'webgpu_compute_particles', From 3c421fe2475d305d87287e0cea0173265669e975 Mon Sep 17 00:00:00 2001 From: sunag Date: Wed, 30 Oct 2024 12:03:26 -0300 Subject: [PATCH 3/3] added on resize --- examples/webgpu_materials_envmaps_bpcem.html | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/examples/webgpu_materials_envmaps_bpcem.html b/examples/webgpu_materials_envmaps_bpcem.html index 8e5c254ac231d8..a7eecffc41f6ba 100644 --- a/examples/webgpu_materials_envmaps_bpcem.html +++ b/examples/webgpu_materials_envmaps_bpcem.html @@ -166,6 +166,8 @@ renderer.setAnimationLoop( animate ); document.body.appendChild( renderer.domElement ); + window.addEventListener( 'resize', onWindowResize ); + // controls controls = new OrbitControls( camera, renderer.domElement ); @@ -189,6 +191,15 @@ } + function onWindowResize() { + + camera.aspect = window.innerWidth / window.innerHeight; + camera.updateProjectionMatrix(); + + renderer.setSize( window.innerWidth, window.innerHeight ); + + } + function updateCubeMap() { groundPlane.visible = false;