         }()
         
         cmGrayScale.commit()
+        cmGaussian.commit()
         cmRender.commit()
     }
 }

            let encoder = commandBuffer.makeRenderCommandEncoder(descriptor: renderPassDescriptor)
            encoder.setRenderPipelineState(pipelineState)
            encoder.setVertexBytes(VSRenderer.vertexData, length: dataSize, at: 0)
            encoder.setFragmentTexture(textureOut, at: 0)
            encoder.drawPrimitives(type: .triangle, vertexStart: 0,
                                   vertexCount: VSRenderer.vertexData.count,
                                   instanceCount: VSRenderer.vertexData.count/3)

    
    private var pipelineState: MTLRenderPipelineState?
    private var psGrayScale: MTLComputePipelineState?
    private var guassian:MPSUnaryImageKernel?
    
    struct VSVertex {
        let position:vector_float2
