This PR optimizes the rendering pipeline by batching the same elements and passing them together into draw call so that the amount of draw calls significantly drops resulting in the faster render rate without lagging.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
## 📋 Pull Request Information
**Original PR:** https://github.com/dscyrescotti/Memola/pull/48
**Author:** [@dscyrescotti](https://github.com/dscyrescotti)
**Created:** 6/24/2024
**Status:** ✅ Merged
**Merged:** 6/24/2024
**Merged by:** [@dscyrescotti](https://github.com/dscyrescotti)
**Base:** `main` ← **Head:** `feature/render-optimization`
---
### 📝 Commits (4)
- [`6c8d0ea`](https://github.com/dscyrescotti/Memola/commit/6c8d0ea9b63275a23ddfb8b79450278ed4859a17) chore: refactor render pipeline
- [`96bf805`](https://github.com/dscyrescotti/Memola/commit/96bf8056a91bfba76f999dd88f641ceed170908b) chore: add photo background render pass
- [`061be60`](https://github.com/dscyrescotti/Memola/commit/061be60b35da3e21665b1a43abecdd686e2fb98a) feat: save image in rectangle
- [`7946253`](https://github.com/dscyrescotti/Memola/commit/7946253b6005d62f02a4b35116b0fb7c70fff09f) chore: update element compare method
### 📊 Changes
**20 files changed** (+354 additions, -265 deletions)
<details>
<summary>View changed files</summary>
📝 `Memola.xcodeproj/project.pbxproj` (+4 -0)
📝 `Memola/Canvas/Abstracts/RenderPass.swift` (+1 -1)
📝 `Memola/Canvas/Contexts/GraphicContext.swift` (+1 -1)
📝 `Memola/Canvas/Core/Renderer.swift` (+7 -3)
📝 `Memola/Canvas/Elements/Core/Element.swift` (+23 -0)
➕ `Memola/Canvas/Elements/Core/ElementGroup.swift` (+51 -0)
📝 `Memola/Canvas/Elements/Geometries/Stroke/Core/AnyStroke.swift` (+4 -0)
📝 `Memola/Canvas/Elements/Geometries/Stroke/Core/Stroke.swift` (+1 -3)
📝 `Memola/Canvas/Elements/Geometries/Stroke/Strokes/PenStroke.swift` (+0 -2)
📝 `Memola/Canvas/Elements/Photo/Photo.swift` (+5 -2)
📝 `Memola/Canvas/RenderPasses/CacheRenderPass.swift` (+34 -43)
📝 `Memola/Canvas/RenderPasses/EraserRenderPass.swift` (+35 -50)
📝 `Memola/Canvas/RenderPasses/GraphicRenderPass.swift` (+52 -71)
📝 `Memola/Canvas/RenderPasses/PhotoBackgroundRenderPass.swift` (+14 -7)
📝 `Memola/Canvas/RenderPasses/PhotoRenderPass.swift` (+14 -8)
📝 `Memola/Canvas/RenderPasses/StrokeRenderPass.swift` (+87 -51)
📝 `Memola/Canvas/RenderPasses/ViewPortRenderPass.swift` (+3 -7)
📝 `Memola/Canvas/Tool/Core/Tool.swift` (+12 -10)
📝 `Memola/Canvas/View/Bridge/Views/DrawingView.swift` (+1 -1)
📝 `Memola/Features/Memo/PhotoPreview/PhotoItem.swift` (+5 -5)
</details>
### 📄 Description
### Description
This PR optimizes the rendering pipeline by batching the same elements and passing them together into draw call so that the amount of draw calls significantly drops resulting in the faster render rate without lagging.
---
<sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
📋 Pull Request Information
Original PR: https://github.com/dscyrescotti/Memola/pull/48
Author: @dscyrescotti
Created: 6/24/2024
Status: ✅ Merged
Merged: 6/24/2024
Merged by: @dscyrescotti
Base:
main← Head:feature/render-optimization📝 Commits (4)
6c8d0eachore: refactor render pipeline96bf805chore: add photo background render pass061be60feat: save image in rectangle7946253chore: update element compare method📊 Changes
20 files changed (+354 additions, -265 deletions)
View changed files
📝
Memola.xcodeproj/project.pbxproj(+4 -0)📝
Memola/Canvas/Abstracts/RenderPass.swift(+1 -1)📝
Memola/Canvas/Contexts/GraphicContext.swift(+1 -1)📝
Memola/Canvas/Core/Renderer.swift(+7 -3)📝
Memola/Canvas/Elements/Core/Element.swift(+23 -0)➕
Memola/Canvas/Elements/Core/ElementGroup.swift(+51 -0)📝
Memola/Canvas/Elements/Geometries/Stroke/Core/AnyStroke.swift(+4 -0)📝
Memola/Canvas/Elements/Geometries/Stroke/Core/Stroke.swift(+1 -3)📝
Memola/Canvas/Elements/Geometries/Stroke/Strokes/PenStroke.swift(+0 -2)📝
Memola/Canvas/Elements/Photo/Photo.swift(+5 -2)📝
Memola/Canvas/RenderPasses/CacheRenderPass.swift(+34 -43)📝
Memola/Canvas/RenderPasses/EraserRenderPass.swift(+35 -50)📝
Memola/Canvas/RenderPasses/GraphicRenderPass.swift(+52 -71)📝
Memola/Canvas/RenderPasses/PhotoBackgroundRenderPass.swift(+14 -7)📝
Memola/Canvas/RenderPasses/PhotoRenderPass.swift(+14 -8)📝
Memola/Canvas/RenderPasses/StrokeRenderPass.swift(+87 -51)📝
Memola/Canvas/RenderPasses/ViewPortRenderPass.swift(+3 -7)📝
Memola/Canvas/Tool/Core/Tool.swift(+12 -10)📝
Memola/Canvas/View/Bridge/Views/DrawingView.swift(+1 -1)📝
Memola/Features/Memo/PhotoPreview/PhotoItem.swift(+5 -5)📄 Description
Description
This PR optimizes the rendering pipeline by batching the same elements and passing them together into draw call so that the amount of draw calls significantly drops resulting in the faster render rate without lagging.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.