diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 70b008361aee9b..8c1459d4f39280 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Git checkout - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - name: Install Node uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6 with: @@ -50,7 +50,7 @@ jobs: CI: ${{ matrix.CI }} steps: - name: Git checkout - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - name: Install Node uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6 with: diff --git a/.github/workflows/codeql-code-scanning.yml b/.github/workflows/codeql-code-scanning.yml index 72bffc6667df38..e9d8a7816c9c0c 100644 --- a/.github/workflows/codeql-code-scanning.yml +++ b/.github/workflows/codeql-code-scanning.yml @@ -26,20 +26,20 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # v4 + uses: github/codeql-action/init@45cbd0c69e560cd9e7cd7f8c32362050c9b7ded2 # v4 with: languages: ${{ matrix.language }} config-file: ./.github/codeql-config.yml queries: security-and-quality - name: Autobuild - uses: github/codeql-action/autobuild@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # v4 + uses: github/codeql-action/autobuild@45cbd0c69e560cd9e7cd7f8c32362050c9b7ded2 # v4 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # v4 + uses: github/codeql-action/analyze@45cbd0c69e560cd9e7cd7f8c32362050c9b7ded2 # v4 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/read-size.yml b/.github/workflows/read-size.yml index 0922828e2a0637..04e22904ec28c0 100644 --- a/.github/workflows/read-size.yml +++ b/.github/workflows/read-size.yml @@ -20,7 +20,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Git checkout - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - name: Install Node uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6 with: diff --git a/.github/workflows/report-size.yml b/.github/workflows/report-size.yml index 41892a3253db81..f7919903afbe6c 100644 --- a/.github/workflows/report-size.yml +++ b/.github/workflows/report-size.yml @@ -56,7 +56,7 @@ jobs: # This runs on the base branch of the PR, meaning "dev" - name: Git checkout - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - name: Install Node uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6 with: diff --git a/examples/index.html b/examples/index.html index ca3bbf887b3d29..db62e4fc725fd7 100644 --- a/examples/index.html +++ b/examples/index.html @@ -103,6 +103,7 @@

three.js

if ( validRedirects.has( file ) === true ) { selectFile( file ); + links[ file ].scrollIntoView( { block: 'center' } ); viewer.src = validRedirects.get( file ); viewer.style.display = 'unset'; @@ -269,7 +270,7 @@

three.js

function updateFilter( files, tags ) { let v = filterInput.value.trim(); - v = v.replace( /\s+/gi, ' ' ); // replace multiple whitespaces with a single one + v = v.replace( /[\s_]+/gi, ' ' ); // replace multiple whitespaces or underscores with a single one if ( v !== '' ) { diff --git a/examples/screenshots/webgpu_cubemap_adjustments.jpg b/examples/screenshots/webgpu_cubemap_adjustments.jpg index aaed42d6d057d7..1975d95d8e1772 100644 Binary files a/examples/screenshots/webgpu_cubemap_adjustments.jpg and b/examples/screenshots/webgpu_cubemap_adjustments.jpg differ diff --git a/examples/screenshots/webgpu_parallax_uv.jpg b/examples/screenshots/webgpu_parallax_uv.jpg index 1936a033bc2b22..b2770a9dc08703 100644 Binary files a/examples/screenshots/webgpu_parallax_uv.jpg and b/examples/screenshots/webgpu_parallax_uv.jpg differ diff --git a/examples/textures/equirectangular/752-hdri-skies-com_1k.hdr b/examples/textures/equirectangular/752-hdri-skies-com_1k.hdr new file mode 100644 index 00000000000000..9da5a0a2314ace Binary files /dev/null and b/examples/textures/equirectangular/752-hdri-skies-com_1k.hdr differ diff --git a/examples/webgpu_cubemap_adjustments.html b/examples/webgpu_cubemap_adjustments.html index fb70fda4274b5d..d0e0215bc54bbe 100644 --- a/examples/webgpu_cubemap_adjustments.html +++ b/examples/webgpu_cubemap_adjustments.html @@ -17,7 +17,8 @@ Adjust/modify the scene's background and environment.
- Battle Damaged Sci-fi Helmet by theblueturtle_ + Battle Damaged Sci-fi Helmet by theblueturtle_.
+ HDR by Poly Haven and HDRI Skies.
@@ -37,7 +38,7 @@ import * as THREE from 'three/webgpu'; import { uniform, mix, pmremTexture, reference, positionLocal, hue, saturation, positionWorld, normalWorld, positionWorldDirection, reflectVector } from 'three/tsl'; - import { HDRCubeTextureLoader } from 'three/addons/loaders/HDRCubeTextureLoader.js'; + import { HDRLoader } from 'three/addons/loaders/HDRLoader.js'; import { OrbitControls } from 'three/addons/controls/OrbitControls.js'; import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'; @@ -60,23 +61,21 @@ scene = new THREE.Scene(); - // cube textures + // HDR textures - const hdrUrls = [ 'px.hdr', 'nx.hdr', 'py.hdr', 'ny.hdr', 'pz.hdr', 'nz.hdr' ]; - const cube1Texture = await new HDRCubeTextureLoader() - .setPath( './textures/cube/pisaHDR/' ) - .loadAsync( hdrUrls ); + const hdr1Texture = await new HDRLoader() + .loadAsync( './textures/equirectangular/pedestrian_overpass_1k.hdr' ); - cube1Texture.generateMipmaps = true; - cube1Texture.minFilter = THREE.LinearMipmapLinearFilter; + hdr1Texture.mapping = THREE.EquirectangularReflectionMapping; + hdr1Texture.generateMipmaps = true; + hdr1Texture.minFilter = THREE.LinearMipmapLinearFilter; - const cube2Urls = [ 'posx.jpg', 'negx.jpg', 'posy.jpg', 'negy.jpg', 'posz.jpg', 'negz.jpg' ]; - const cube2Texture = await new THREE.CubeTextureLoader() - .setPath( './textures/cube/Park2/' ) - .loadAsync( cube2Urls ); + const hdr2Texture = await new HDRLoader() + .loadAsync( './textures/equirectangular/752-hdri-skies-com_1k.hdr' ); - cube2Texture.generateMipmaps = true; - cube2Texture.minFilter = THREE.LinearMipmapLinearFilter; + hdr2Texture.mapping = THREE.EquirectangularReflectionMapping; + hdr2Texture.generateMipmaps = true; + hdr2Texture.minFilter = THREE.LinearMipmapLinearFilter; // nodes and environment @@ -101,7 +100,7 @@ const custom1UV = reflectNode.xyz.mul( uniform( rotateY1Matrix ) ); const custom2UV = reflectNode.xyz.mul( uniform( rotateY2Matrix ) ); - const mixCubeMaps = mix( pmremTexture( cube1Texture, custom1UV ), pmremTexture( cube2Texture, custom2UV ), positionNode.y.add( mixNode ).clamp() ); + const mixCubeMaps = mix( pmremTexture( hdr1Texture, custom1UV ), pmremTexture( hdr2Texture, custom2UV ), positionNode.y.add( mixNode ).clamp() ); const proceduralEnv = mix( mixCubeMaps, normalWorld, proceduralNode ); @@ -156,23 +155,22 @@ // gui const gui = renderer.inspector.createParameters( 'Settings' ); - + gui.add( adjustments, 'mix', - 1, 2, 0.01 ); gui.add( { blurBackground: blurNode.value }, 'blurBackground', 0, 1, 0.01 ).onChange( value => { blurNode.value = value; } ); - gui.add( { offsetCube1: 0 }, 'offsetCube1', 0, Math.PI * 2, 0.01 ).onChange( value => { + gui.add( { offsetHDR1: 0 }, 'offsetHDR1', 0, Math.PI * 2, 0.01 ).onChange( value => { rotateY1Matrix.makeRotationY( value ); } ); - gui.add( { offsetCube2: 0 }, 'offsetCube2', 0, Math.PI * 2, 0.01 ).onChange( value => { + gui.add( { offsetHDR2: 0 }, 'offsetHDR2', 0, Math.PI * 2, 0.01 ).onChange( value => { rotateY2Matrix.makeRotationY( value ); } ); - gui.add( adjustments, 'mix', - 1, 2, 0.01 ); gui.add( adjustments, 'procedural', 0, 1, 0.01 ); gui.add( adjustments, 'intensity', 0, 5, 0.01 ); gui.add( adjustments, 'hue', 0, Math.PI * 2, 0.01 ); diff --git a/examples/webgpu_parallax_uv.html b/examples/webgpu_parallax_uv.html index 2bff1fac4207d1..c3e21b2373d5dc 100644 --- a/examples/webgpu_parallax_uv.html +++ b/examples/webgpu_parallax_uv.html @@ -17,6 +17,7 @@ Textures by ambientCG. + HDR by HDRI Skies. @@ -34,9 +35,12 @@