         }
         
         let destinationTexture:MTLTexture = drawable.texture
+        filterTexture(
+            sourceTexture:sourceTexture,
+            destinationTexture:destinationTexture)
+        commandBuffer.present(drawable)
+        commandBuffer.commit()
+        
+        super.draw()
+    }
+    
+    //MARK: public
+    
+    func filterTexture(sourceTexture:MTLTexture, destinationTexture:MTLTexture)
+    {
+        guard
+            
+            let metalFitlerType:MetalFilter.Type = controller.viewHome.viewMenu.selectedItem?.filter
+            
+            else
+        {
+            return
+        }
+        
         let commandBuffer:MTLCommandBuffer = controller.commandQueue.makeCommandBuffer()
         let metalFilter:MetalFilter = metalFitlerType.init(device:controller.device)
         

    {
        guard
        
            let metalFitlerType:MetalFilter.Type = controller.viewHome.viewMenu.selectedItem?.filter,
            let drawable:CAMetalDrawable = currentDrawable,
            let sourceTexture:MTLTexture = controller.sourceTexture
        

            commandBuffer:commandBuffer,
            sourceTexture:sourceTexture,
            destinationTexture:destinationTexture)
    }
}
