From 5443d157a31480fbffb4ba607d5eaee32f1cb8f1 Mon Sep 17 00:00:00 2001 From: Nathan Bierema Date: Sun, 22 Sep 2024 15:41:03 -0400 Subject: [PATCH] KTX2Exporter: Add support for WebGPURenderer. (#1243) * KTX2Exporter: Add support for WebGPURenderer. * Update three.js * Add examples * Update patch and delete examples --- examples-testing/changes.patch | 24 ++++++++++++------- three.js | 2 +- .../examples/jsm/exporters/EXRExporter.d.ts | 3 ++- .../examples/jsm/exporters/KTX2Exporter.d.ts | 4 +++- 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/examples-testing/changes.patch b/examples-testing/changes.patch index 03a23dbc9..cdfdb9676 100644 --- a/examples-testing/changes.patch +++ b/examples-testing/changes.patch @@ -1119,7 +1119,7 @@ index 40a62fb1..cb9d3f59 100644 save(new Blob([buffer], { type: 'application/octet-stream' }), filename); } diff --git a/examples-testing/examples/misc_exporter_exr.ts b/examples-testing/examples/misc_exporter_exr.ts -index c239a65f..1b774b55 100644 +index f4a189bb..1cd5fb27 100644 --- a/examples-testing/examples/misc_exporter_exr.ts +++ b/examples-testing/examples/misc_exporter_exr.ts @@ -5,7 +5,14 @@ import { EXRExporter, ZIP_COMPRESSION, ZIPS_COMPRESSION, NO_COMPRESSION } from ' @@ -1138,7 +1138,7 @@ index c239a65f..1b774b55 100644 const params = { target: 'pmrem', -@@ -148,7 +155,7 @@ function exportFile() { +@@ -148,7 +155,7 @@ async function exportFile() { saveArrayBuffer(result, params.target + '.exr'); } @@ -12749,7 +12749,7 @@ index 1ad6d264..10b32582 100644 renderer.render(scene, camera); } diff --git a/examples-testing/examples/webgl_tonemapping.ts b/examples-testing/examples/webgl_tonemapping.ts -index 08115cf3..f68d7a8d 100644 +index 9945826c..db817304 100644 --- a/examples-testing/examples/webgl_tonemapping.ts +++ b/examples-testing/examples/webgl_tonemapping.ts @@ -1,22 +1,35 @@ @@ -12804,23 +12804,29 @@ index 08115cf3..f68d7a8d 100644 render(); @@ -99,7 +112,7 @@ async function init() { - const toneMappingFolder = gui.addFolder('tone mapping'); + const toneMappingFolder = gui.addFolder('Tone Mapping'); toneMappingFolder - .add(params, 'toneMapping', Object.keys(toneMappingOptions)) + .add(params, 'toneMapping', Object.keys(toneMappingOptions) as ToneMapping[]) + .name('type') .onChange(function () { - updateGUI(toneMappingFolder); -@@ -131,7 +144,7 @@ async function init() { +@@ -140,11 +153,11 @@ async function init() { gui.open(); } -function updateGUI(folder) { +function updateGUI(folder: GUI) { - if (guiExposure !== null) { - guiExposure.destroy(); - guiExposure = null; + if (params.toneMapping === 'None') { +- guiExposure.hide(); ++ guiExposure!.hide(); + } else { +- guiExposure.show(); ++ guiExposure!.show(); + } + } + diff --git a/examples-testing/examples/webgl_ubo.ts b/examples-testing/examples/webgl_ubo.ts index 01064f11..814edd87 100644 --- a/examples-testing/examples/webgl_ubo.ts diff --git a/three.js b/three.js index 59c9820c4..3b84981a3 160000 --- a/three.js +++ b/three.js @@ -1 +1 @@ -Subproject commit 59c9820c4116552d4fcafc6b2e69742bf31470d8 +Subproject commit 3b84981a3dfa81fc5462d0e61ad9a1e3848225be diff --git a/types/three/examples/jsm/exporters/EXRExporter.d.ts b/types/three/examples/jsm/exporters/EXRExporter.d.ts index edce11f3d..34fe1f445 100644 --- a/types/three/examples/jsm/exporters/EXRExporter.d.ts +++ b/types/three/examples/jsm/exporters/EXRExporter.d.ts @@ -6,6 +6,7 @@ */ import { DataTexture, TextureDataType, WebGLRenderer, WebGLRenderTarget } from "three"; +import { WebGPURenderer } from "three/webgpu"; export const NO_COMPRESSION: 0; export const ZIPS_COMPRESSION: 2; @@ -18,7 +19,7 @@ export interface EXRExporterParseOptions { export class EXRExporter { parse( - renderer: WebGLRenderer, + renderer: WebGLRenderer | WebGPURenderer, renderTarget: WebGLRenderTarget, options?: EXRExporterParseOptions, ): Promise; diff --git a/types/three/examples/jsm/exporters/KTX2Exporter.d.ts b/types/three/examples/jsm/exporters/KTX2Exporter.d.ts index b2c644e28..f24b17838 100644 --- a/types/three/examples/jsm/exporters/KTX2Exporter.d.ts +++ b/types/three/examples/jsm/exporters/KTX2Exporter.d.ts @@ -1,5 +1,7 @@ import { Data3DTexture, DataTexture, WebGLRenderer, WebGLRenderTarget } from "three"; +import { WebGPURenderer } from "three/webgpu"; export class KTX2Exporter { - parse(arg1: Data3DTexture | DataTexture | WebGLRenderer, arg2?: WebGLRenderTarget): Uint8Array; + parse(renderer: WebGLRenderer | WebGPURenderer, rtt?: WebGLRenderTarget): Promise; + parse(texture: Data3DTexture | DataTexture): Promise; }