anchor.diff:      member val Uv = Buffer.createVector2 uv
   
       member val Color = Buffer.createVector4 color
  -
  -//                let iPosition = shaderProgram.CreateVertexAttributeVector3 ("position")
  -//                let iUv = shaderProgram.CreateVertexAttributeVector2 ("in_uv")
  -//                let uTexture = shaderProgram.CreateUniformTexture2D ("uni_texture")
  -//                let uTextureResolution = shaderProgram.CreateUniformVector2("uTextureResolution")
  -//                let uView = shaderProgram.CreateUniformMatrix4x4 ("uni_view")
  -//                let uProjection = shaderProgram.CreateUniformMatrix4x4 ("uni_projection")
  -//                let uTime = shaderProgram.CreateUniformFloat ("uTime")
   
   [<Sealed>]
   type MeshInput (shaderProgram: ShaderProgram) =
  
positive.code: 
      let finalPipeline worldPipeline (getTime: unit -> float32) (getPosition: unit -> Vector3Buffer) =
          pipeline {
              let! finalShader = getShader "Fullscreen" FinalInput (fun _ -> ())
  
              let! renderTexture = captureFrame 1280 720 worldPipeline
  
              do! finalShader.Run (fun input draw ->
                  input.Time.Set (getTime ())
                  input.Position.Set (getPosition ())
                  input.RenderTexture.Set renderTexture
  
negative.code:                 shader
          )
  
      let runShader name createInput createOutput f =
          pipeline {
              let! shader = getShader name createInput createOutput
              return! shader.Run f
          }
  
  open Pipeline
  
  // *****************************************
  