[PR #48] [MERGED] Optimize renderer frame rate #60

Closed
opened 2025-12-29 05:19:22 +01:00 by adam · 0 comments
Owner

📋 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: mainHead: feature/render-optimization


📝 Commits (4)

  • 6c8d0ea chore: refactor render pipeline
  • 96bf805 chore: add photo background render pass
  • 061be60 feat: save image in rectangle
  • 7946253 chore: 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.

## 📋 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>
adam added the pull-request label 2025-12-29 05:19:22 +01:00
adam closed this issue 2025-12-29 05:19:22 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/Memola#60