                     let sequenceItem:MHomeImageSequenceItem = sequence.items[indexMainItem]
                     sequenceItem.createTexture(textureLoader:textureLoader)
                     
-                    let destinationTexture:MTLTexture = newCanvasTexure(
-                        pixelFormat:mainTexturePixelFormat,
-                        width:mainTextureWidth,
-                        height:mainTextureHeight)
+                    guard
+                        
+                        let overTexture:MTLTexture = sequenceItem.texture
+                    
+                    else
+                    {
+                        continue
+                    }
+                    
+                    let metalFilter:MetalFilter = MetalFilter(device:device)
+                    metalFilter.mtlFunction = mtlFunction
+                    
+                    let commandBuffer:MTLCommandBuffer = commandQueue.makeCommandBuffer()
+                    metalFilter.encode(
+                        commandBuffer:commandBuffer,
+                        sourceTexture:overTexture,
+                        destinationTexture:baseTexture)
+                    commandBuffer.commit()
+                    commandBuffer.waitUntilCompleted()
                 }
             }
             
             guard
                 
-                let textureImage:UIImage = finalTexture.exportImage()
+                let textureImage:UIImage = baseTexture.exportImage()
                 
             else
             {

    {
        self.device = device
        self.commandQueue = commandQueue
        self.textureLoader = textureLoader
        
        if let main:MHomeImageSequenceRaw = main

{
    private weak var device:MTLDevice!
    private weak var commandQueue:MTLCommandQueue!
    private weak var mtlFunction:MTLFunction!
    private weak var textureLoader:MTKTextureLoader!
    private let kTextureMipMapped:Bool = false
    private let kTextureDepth:Int = 1
