UNPKG

threepipe

Version:

A modern 3D viewer framework built on top of three.js, written in TypeScript, designed to make creating high-quality, modular, and extensible 3D experiences on the web simple and enjoyable.

19 lines (17 loc) 1.17 kB
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<Blob> { const target = <IRenderTarget>obj if (target.isWebGLRenderTarget && !target.renderManager) throw new Error('No renderManager on renderTarget') if (!target.isWebGLRenderTarget && !(<DataTexture>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, <WebGLRenderTarget>target, options) : this.parse(<DataTexture>obj, options) return new Blob([res], {type: 'image/x-exr'}) } }