UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

40 lines (30 loc) 1.01 kB
// Helper for passes that need to fill the viewport with a single quad. import {BufferGeometry} from 'three'; import {Mesh} from 'three'; import {OrthographicCamera} from 'three'; import {Float32BufferAttribute} from 'three'; import {WebGLRenderer} from 'three'; import {Material} from 'three'; const _camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1); // https://github.com/mrdoob/three.js/pull/21358 const _geometry = new BufferGeometry(); _geometry.setAttribute('position', new Float32BufferAttribute([-1, 3, 0, -1, -1, 0, 3, -1, 0], 3)); _geometry.setAttribute('uv', new Float32BufferAttribute([0, 2, 0, 0, 2, 0], 2)); export class FullScreenQuad { private _mesh: Mesh; constructor(material?: Material) { this._mesh = new Mesh(_geometry, material); } dispose() { this._mesh.geometry.dispose(); } render(renderer: WebGLRenderer) { renderer.render(this._mesh, _camera); } get material() { return this._mesh.material; } set material(value) { this._mesh.material = value; } }