@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
40 lines (30 loc) • 1.01 kB
text/typescript
// 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;
}
}