import {DataTexture, WebGLRenderTarget} from 'three' import {EXRExporter, EXRExporterParseOptions} from 'three/examples/jsm/exporters/EXRExporter.js' import {IExportWriter} from '../IExporter' import {IRenderTarget} from '../../rendering' export class EXRExporter2 extends EXRExporter implements IExportWriter { async parseAsync(obj: IRenderTarget|DataTexture, options: EXRExporterParseOptions): Promise { const target = obj if (target.isWebGLRenderTarget && !target.renderManager) throw new Error('No renderManager on renderTarget') if (!target.isWebGLRenderTarget && !(obj).isDataTexture) throw new Error('Invalid object type') if (target.isWebGLRenderTarget && target.textures.length > 1 && options.textureIndex === undefined) console.warn('RenderTarget has multiple textures, but no textureIndex specified. Using texture 0.') const res = target.isWebGLRenderTarget ? this.parse(target.renderManager!.webglRenderer, target, options) : this.parse(obj, options) return new Blob([res], {type: 'image/x-exr'}) } }