Advertisement
Guest User

Untitled

a guest
Feb 27th, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.41 KB | None | 0 0
  1. export default class FBO {
  2. private _renderer: THREE.WebGLRenderer;
  3. private _fboScene: THREE.Scene;
  4. private _orthographicCamera: THREE.OrthographicCamera;
  5. private _renderTarget: THREE.WebGLRenderTarget;
  6.  
  7. constructor(width: number, height: number, renderer: THREE.WebGLRenderer, shader: THREE.ShaderMaterial, filtering?: any) {
  8. this._renderer = renderer;
  9. let gl: WebGLRenderingContext = this._renderer.getContext();
  10.  
  11. if (!gl.getExtension('OES_texture_float')) {
  12. throw new Error('Float textures are not supported');
  13. }
  14.  
  15. if (gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS) == false) {
  16. throw new Error('Vertex shader cannot read textures');
  17. }
  18.  
  19. this._orthographicCamera = new THREE.OrthographicCamera(-1, 1, 1, -1, 1 / Math.pow( 2, 53 ), 1);
  20.  
  21. this._renderTarget = new THREE.WebGLRenderTarget(width, height, {
  22. minFilter: filtering != null ? filtering : THREE.NearestFilter,
  23. magFilter: filtering != null ? filtering : THREE.NearestFilter,
  24. format: THREE.RGBFormat,
  25. type: THREE.FloatType,
  26. });
  27.  
  28. this._fboScene = new THREE.Scene();
  29. let geometry = new THREE.PlaneGeometry( 2, 2, 2 );
  30. let plane = new THREE.Mesh( geometry, shader );
  31. this._fboScene.add( plane );
  32. }
  33.  
  34. public render() {
  35. this._renderer.render(this._fboScene, this._orthographicCamera, this._renderTarget);
  36. }
  37.  
  38. get texture(): THREE.Texture {
  39. return this._renderTarget.texture;
  40. }
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement