({
reader,
count,
renderer,
readback,
}: {
reader: Rgba8Readback;
count: number;
renderer?: THREE.WebGLRenderer;
readback: B;
})
| 301 | // Perform a render and readback operation for the given Rgba8Readback, |
| 302 | // and readback buffer (call ensureBuffer first). |
| 303 | async renderReadback<B extends ReadbackBuffer>({ |
| 304 | reader, |
| 305 | count, |
| 306 | renderer, |
| 307 | readback, |
| 308 | }: { |
| 309 | reader: Rgba8Readback; |
| 310 | count: number; |
| 311 | renderer?: THREE.WebGLRenderer; |
| 312 | readback: B; |
| 313 | }): Promise<B> { |
| 314 | this.renderer = renderer || this.renderer; |
| 315 | if (!this.renderer) { |
| 316 | throw new Error("No renderer"); |
| 317 | } |
| 318 | |
| 319 | this.ensureCapacity(count); |
| 320 | |
| 321 | const { program, material } = this.prepareProgramMaterial(reader); |
| 322 | program.update(); |
| 323 | |
| 324 | const renderState = this.saveRenderState(this.renderer); |
| 325 | |
| 326 | // Generate output |
| 327 | this.process({ count, material }); |
| 328 | |
| 329 | // Initiate readback |
| 330 | const promise = this.read({ readback }); |
| 331 | |
| 332 | this.resetRenderState(this.renderer, renderState); |
| 333 | return promise; |
| 334 | } |
| 335 | |
| 336 | getTexture(): THREE.DataArrayTexture | undefined { |
| 337 | return this.target?.texture; |
no test coverage detected