mirror of
https://github.com/dscyrescotti/Memola.git
synced 2026-07-13 16:22:49 +02:00
feat: exclude graphic texture if there is no elements in visible frame of canvas
This commit is contained in:
@@ -101,6 +101,7 @@ final class Renderer {
|
|||||||
|
|
||||||
viewPortRenderPass.descriptor = view.currentRenderPassDescriptor
|
viewPortRenderPass.descriptor = view.currentRenderPassDescriptor
|
||||||
viewPortRenderPass.excludesPhotoBackground = photoBackgroundRenderPass.clearsTexture
|
viewPortRenderPass.excludesPhotoBackground = photoBackgroundRenderPass.clearsTexture
|
||||||
|
viewPortRenderPass.excludesGraphic = cacheRenderPass.clearsTexture
|
||||||
viewPortRenderPass.photoBackgroundTexture = photoBackgroundRenderPass.photoBackgroundTexture
|
viewPortRenderPass.photoBackgroundTexture = photoBackgroundRenderPass.photoBackgroundTexture
|
||||||
viewPortRenderPass.cacheTexture = cacheRenderPass.cacheTexture
|
viewPortRenderPass.cacheTexture = cacheRenderPass.cacheTexture
|
||||||
viewPortRenderPass.draw(into: commandBuffer, on: canvas, with: self)
|
viewPortRenderPass.draw(into: commandBuffer, on: canvas, with: self)
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ class ViewPortRenderPass: RenderPass {
|
|||||||
|
|
||||||
weak var view: MTKView?
|
weak var view: MTKView?
|
||||||
|
|
||||||
|
var excludesGraphic: Bool = false
|
||||||
var excludesPhotoBackground: Bool = false
|
var excludesPhotoBackground: Bool = false
|
||||||
|
|
||||||
init(renderer: Renderer) {
|
init(renderer: Renderer) {
|
||||||
@@ -68,8 +69,10 @@ class ViewPortRenderPass: RenderPass {
|
|||||||
canvas.renderViewPortUpdate(device: renderer.device, renderEncoder: renderEncoder)
|
canvas.renderViewPortUpdate(device: renderer.device, renderEncoder: renderEncoder)
|
||||||
}
|
}
|
||||||
|
|
||||||
renderEncoder.setFragmentTexture(cacheTexture, index: 0)
|
if !excludesGraphic {
|
||||||
canvas.renderViewPortUpdate(device: renderer.device, renderEncoder: renderEncoder)
|
renderEncoder.setFragmentTexture(cacheTexture, index: 0)
|
||||||
|
canvas.renderViewPortUpdate(device: renderer.device, renderEncoder: renderEncoder)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
guard let viewPortPipelineState else {
|
guard let viewPortPipelineState else {
|
||||||
return false
|
return false
|
||||||
@@ -82,8 +85,10 @@ class ViewPortRenderPass: RenderPass {
|
|||||||
canvas.renderViewPort(device: renderer.device, renderEncoder: renderEncoder)
|
canvas.renderViewPort(device: renderer.device, renderEncoder: renderEncoder)
|
||||||
}
|
}
|
||||||
|
|
||||||
renderEncoder.setFragmentTexture(cacheTexture, index: 0)
|
if !excludesGraphic {
|
||||||
canvas.renderViewPort(device: renderer.device, renderEncoder: renderEncoder)
|
renderEncoder.setFragmentTexture(cacheTexture, index: 0)
|
||||||
|
canvas.renderViewPort(device: renderer.device, renderEncoder: renderEncoder)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
renderEncoder.endEncoding()
|
renderEncoder.endEncoding()
|
||||||
|
|||||||
Reference in New Issue
Block a user