feat: exclude graphic texture if there is no elements in visible frame of canvas

This commit is contained in:
dscyrescotti
2024-06-27 11:24:26 +07:00
parent 78e14c65aa
commit 307d818993
2 changed files with 10 additions and 4 deletions

View File

@@ -101,6 +101,7 @@ final class Renderer {
viewPortRenderPass.descriptor = view.currentRenderPassDescriptor
viewPortRenderPass.excludesPhotoBackground = photoBackgroundRenderPass.clearsTexture
viewPortRenderPass.excludesGraphic = cacheRenderPass.clearsTexture
viewPortRenderPass.photoBackgroundTexture = photoBackgroundRenderPass.photoBackgroundTexture
viewPortRenderPass.cacheTexture = cacheRenderPass.cacheTexture
viewPortRenderPass.draw(into: commandBuffer, on: canvas, with: self)

View File

@@ -22,6 +22,7 @@ class ViewPortRenderPass: RenderPass {
weak var view: MTKView?
var excludesGraphic: Bool = false
var excludesPhotoBackground: Bool = false
init(renderer: Renderer) {
@@ -68,8 +69,10 @@ class ViewPortRenderPass: RenderPass {
canvas.renderViewPortUpdate(device: renderer.device, renderEncoder: renderEncoder)
}
renderEncoder.setFragmentTexture(cacheTexture, index: 0)
canvas.renderViewPortUpdate(device: renderer.device, renderEncoder: renderEncoder)
if !excludesGraphic {
renderEncoder.setFragmentTexture(cacheTexture, index: 0)
canvas.renderViewPortUpdate(device: renderer.device, renderEncoder: renderEncoder)
}
} else {
guard let viewPortPipelineState else {
return false
@@ -82,8 +85,10 @@ class ViewPortRenderPass: RenderPass {
canvas.renderViewPort(device: renderer.device, renderEncoder: renderEncoder)
}
renderEncoder.setFragmentTexture(cacheTexture, index: 0)
canvas.renderViewPort(device: renderer.device, renderEncoder: renderEncoder)
if !excludesGraphic {
renderEncoder.setFragmentTexture(cacheTexture, index: 0)
canvas.renderViewPort(device: renderer.device, renderEncoder: renderEncoder)
}
}
renderEncoder.endEncoding()