From 53ee3779eea24050c1b17a8413f50fc96580c754 Mon Sep 17 00:00:00 2001
From: Guilherme Avila <3927951+sciecode@users.noreply.github.com>
Date: Sun, 24 Sep 2023 06:22:08 -0300
Subject: [PATCH] EXRExporter: implements support for DataTexture export
(#26810)
* EXRExporter: DataTexture support
Signed-off-by: Guilherme Avila <3927951+sciecode@users.noreply.github.com>
* EXRExporter: update API & docs
Signed-off-by: Guilherme Avila <3927951+sciecode@users.noreply.github.com>
* Examples: add misc_exporter_exr
Signed-off-by: Guilherme Avila <3927951+sciecode@users.noreply.github.com>
* fix MIME-type
Signed-off-by: Guilherme Avila <3927951+sciecode@users.noreply.github.com>
* update DataTexture usage example
Signed-off-by: Guilherme Avila <3927951+sciecode@users.noreply.github.com>
* update screenshot
Signed-off-by: Guilherme Avila <3927951+sciecode@users.noreply.github.com>
---------
Signed-off-by: Guilherme Avila <3927951+sciecode@users.noreply.github.com>
---
docs/examples/en/exporters/EXRExporter.html | 9 +
examples/files.json | 1 +
examples/jsm/exporters/EXRExporter.js | 126 ++++++++---
examples/misc_exporter_exr.html | 224 ++++++++++++++++++++
examples/screenshots/misc_exporter_exr.jpg | Bin 0 -> 66755 bytes
5 files changed, 336 insertions(+), 24 deletions(-)
create mode 100644 examples/misc_exporter_exr.html
create mode 100644 examples/screenshots/misc_exporter_exr.jpg
diff --git a/docs/examples/en/exporters/EXRExporter.html b/docs/examples/en/exporters/EXRExporter.html
index fba1be4c981a52..21439b0b185d99 100644
--- a/docs/examples/en/exporters/EXRExporter.html
+++ b/docs/examples/en/exporters/EXRExporter.html
@@ -78,6 +78,15 @@
[method:null parse]( [param:WebGLRenderer renderer], [param:WebGLRenderTarge
Generates a .exr output from the input render target.
+ [method:null parse]( [param:DataTexture dataTexture], [param:Object options] )
+
+ [page:Function dataTexture] — DataTexture containing data used for exporting EXR image.
+ [page:Options options] — Export options (details above).
+
+
+ Generates a .exr output from the input data texture.
+
+
Source
diff --git a/examples/files.json b/examples/files.json
index 34354521893aff..fca287ce853442 100644
--- a/examples/files.json
+++ b/examples/files.json
@@ -409,6 +409,7 @@
"misc_exporter_ply",
"misc_exporter_stl",
"misc_exporter_usdz",
+ "misc_exporter_exr",
"misc_lookat"
],
"css2d": [
diff --git a/examples/jsm/exporters/EXRExporter.js b/examples/jsm/exporters/EXRExporter.js
index 388dfdf1a2a166..bd1d8202d2d83d 100644
--- a/examples/jsm/exporters/EXRExporter.js
+++ b/examples/jsm/exporters/EXRExporter.js
@@ -21,61 +21,107 @@ const ZIP_COMPRESSION = 3;
class EXRExporter {
- parse( renderer, renderTarget, options ) {
+ parse( arg1, arg2, arg3 ) {
- if ( ! supported( renderer, renderTarget ) ) return undefined;
+ if ( ! arg1 || ! ( arg1.isWebGLRenderer || arg1.isDataTexture ) ) {
- const info = buildInfo( renderTarget, options ),
- dataBuffer = getPixelData( renderer, renderTarget, info ),
- rawContentBuffer = reorganizeDataBuffer( dataBuffer, info ),
- chunks = compressData( rawContentBuffer, info );
+ throw Error( 'EXRExporter.parse: Unsupported first parameter, expected instance of WebGLRenderer or DataTexture.' );
- return fillData( chunks, info );
+ } else if ( arg1.isWebGLRenderer ) {
- }
+ const renderer = arg1, renderTarget = arg2, options = arg3;
-}
+ supportedRTT( renderTarget );
+
+ const info = buildInfoRTT( renderTarget, options ),
+ dataBuffer = getPixelData( renderer, renderTarget, info ),
+ rawContentBuffer = reorganizeDataBuffer( dataBuffer, info ),
+ chunks = compressData( rawContentBuffer, info );
+
+ return fillData( chunks, info );
-function supported( renderer, renderTarget ) {
+ } else if ( arg1.isDataTexture ) {
- if ( ! renderer || ! renderer.isWebGLRenderer ) {
+ const texture = arg1, options = arg2;
- console.error( 'EXRExporter.parse: Unsupported first parameter, expected instance of WebGLRenderer.' );
+ supportedDT( texture );
- return false;
+ const info = buildInfoDT( texture, options ),
+ dataBuffer = texture.image.data,
+ rawContentBuffer = reorganizeDataBuffer( dataBuffer, info ),
+ chunks = compressData( rawContentBuffer, info );
+
+ return fillData( chunks, info );
+
+ }
}
+}
+
+function supportedRTT( renderTarget ) {
+
if ( ! renderTarget || ! renderTarget.isWebGLRenderTarget ) {
- console.error( 'EXRExporter.parse: Unsupported second parameter, expected instance of WebGLRenderTarget.' );
+ throw Error( 'EXRExporter.parse: Unsupported second parameter, expected instance of WebGLRenderTarget.' );
+
+ }
+
+ if ( renderTarget.isWebGLCubeRenderTarget || renderTarget.isWebGL3DRenderTarget || renderTarget.isWebGLArrayRenderTarget ) {
- return false;
+ throw Error( 'EXRExporter.parse: Unsupported render target type, expected instance of WebGLRenderTarget.' );
}
if ( renderTarget.texture.type !== FloatType && renderTarget.texture.type !== HalfFloatType ) {
- console.error( 'EXRExporter.parse: Unsupported WebGLRenderTarget texture type.' );
-
- return false;
+ throw Error( 'EXRExporter.parse: Unsupported WebGLRenderTarget texture type.' );
}
if ( renderTarget.texture.format !== RGBAFormat ) {
- console.error( 'EXRExporter.parse: Unsupported WebGLRenderTarget texture format, expected RGBAFormat.' );
+ throw Error( 'EXRExporter.parse: Unsupported WebGLRenderTarget texture format, expected RGBAFormat.' );
+
+ }
+
+}
+
+function supportedDT( texture ) {
+
+ if ( texture.type !== FloatType && texture.type !== HalfFloatType ) {
+
+ throw Error( 'EXRExporter.parse: Unsupported DataTexture texture type.' );
+
+ }
+
+ if ( texture.format !== RGBAFormat ) {
+
+ throw Error( 'EXRExporter.parse: Unsupported DataTexture texture format, expected RGBAFormat.' );
+
+ }
+
+ if ( ! texture.image.data ) {
+
+ throw Error( 'EXRExporter.parse: Invalid DataTexture image data.' );
+
+ }
+
+ if ( texture.type === FloatType && texture.image.data.constructor.name !== 'Float32Array' ) {
- return false;
+ throw Error( 'EXRExporter.parse: DataTexture image data doesn\'t match type, expected \'Float32Array\'.' );
}
+ if ( texture.type === HalfFloatType && texture.image.data.constructor.name !== 'Uint16Array' ) {
- return true;
+ throw Error( 'EXRExporter.parse: DataTexture image data doesn\'t match type, expected \'Uint16Array\'.' );
+
+ }
}
-function buildInfo( renderTarget, options = {} ) {
+function buildInfoRTT( renderTarget, options = {} ) {
const compressionSizes = {
0: 1,
@@ -87,7 +133,6 @@ function buildInfo( renderTarget, options = {} ) {
HEIGHT = renderTarget.height,
TYPE = renderTarget.texture.type,
FORMAT = renderTarget.texture.format,
- COLOR_SPACE = renderTarget.texture.colorSpace,
COMPRESSION = ( options.compression !== undefined ) ? options.compression : ZIP_COMPRESSION,
EXPORTER_TYPE = ( options.type !== undefined ) ? options.type : HalfFloatType,
OUT_TYPE = ( EXPORTER_TYPE === FloatType ) ? 2 : 1,
@@ -99,7 +144,40 @@ function buildInfo( renderTarget, options = {} ) {
height: HEIGHT,
type: TYPE,
format: FORMAT,
- colorSpace: COLOR_SPACE,
+ compression: COMPRESSION,
+ blockLines: COMPRESSION_SIZE,
+ dataType: OUT_TYPE,
+ dataSize: 2 * OUT_TYPE,
+ numBlocks: Math.ceil( HEIGHT / COMPRESSION_SIZE ),
+ numInputChannels: 4,
+ numOutputChannels: NUM_CHANNELS,
+ };
+
+}
+
+function buildInfoDT( texture, options = {} ) {
+
+ const compressionSizes = {
+ 0: 1,
+ 2: 1,
+ 3: 16
+ };
+
+ const WIDTH = texture.image.width,
+ HEIGHT = texture.image.height,
+ TYPE = texture.type,
+ FORMAT = texture.format,
+ COMPRESSION = ( options.compression !== undefined ) ? options.compression : ZIP_COMPRESSION,
+ EXPORTER_TYPE = ( options.type !== undefined ) ? options.type : HalfFloatType,
+ OUT_TYPE = ( EXPORTER_TYPE === FloatType ) ? 2 : 1,
+ COMPRESSION_SIZE = compressionSizes[ COMPRESSION ],
+ NUM_CHANNELS = 4;
+
+ return {
+ width: WIDTH,
+ height: HEIGHT,
+ type: TYPE,
+ format: FORMAT,
compression: COMPRESSION,
blockLines: COMPRESSION_SIZE,
dataType: OUT_TYPE,
diff --git a/examples/misc_exporter_exr.html b/examples/misc_exporter_exr.html
new file mode 100644
index 00000000000000..3f2038014a4bc0
--- /dev/null
+++ b/examples/misc_exporter_exr.html
@@ -0,0 +1,224 @@
+
+
+
+ three.js webgl - exporter - exr
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/screenshots/misc_exporter_exr.jpg b/examples/screenshots/misc_exporter_exr.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..ca42edb589fa49ba99b83835f7882aadbd8d2f20
GIT binary patch
literal 66755
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