text: //Matthew Shotton, R&D User Experience,© BBC 2015
  import ProcessingNode from "./processingnode";
  import { createElementTexutre } from "../utils.js";
  
  class CompositingNode extends ProcessingNode{
      /**
      * Initialise an instance of a Compositing Node. You should not instantiate this directly, but use VideoContest.createCompositingNode().
      */
      constructor(gl, renderGraph, definition){
          let placeholderTexture = createElementTexutre(gl);
          gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, new Uint8Array([0,0,0,0]));
          super(gl, renderGraph, definition, definition.inputs, false);
          this._placeholderTexture = placeholderTexture;
          this._displayName = "CompositingNode";
      }
  
      _render(){
          let gl = this._gl;        
          gl.bindFramebuffer(gl.FRAMEBUFFER, this._framebuffer);
          gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this._texture,0);
          gl.clearColor(0, 0, 0, 0); // green;
          gl.clear(gl.COLOR_BUFFER_BIT);
          gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
  
          this.inputs.forEach((node) => {
              if (node === undefined)return;
              super._render();
  
              //map the input textures input the node
              var texture = node._texture;
              let textureOffset = 0;
  
              for(let mapping of this._inputTextureUnitMapping ){
                  gl.activeTexture(mapping.textureUnit);
                  let textureLocation = gl.getUniformLocation(this._program, mapping.name);
                  gl.uniform1i(textureLocation, this._parameterTextureCount + textureOffset);
                  textureOffset += 1;
                  gl.bindTexture(gl.TEXTURE_2D, texture);
              }
  
              gl.drawArrays(gl.TRIANGLES, 0, 6);
          });
          
          gl.bindFramebuffer(gl.FRAMEBUFFER, null);
      }
  }
  
  export default CompositingNode;
  