What's Changed
See the blog post post that explain this in more detail:
This release focuses on performance improvements across all systems, particularly benefiting devices with integrated graphics:
- Removed custom layer batching: Benchmarking revealed LÖVE's native batching was more efficient
- Implemented canvas pooling: Separate pools for standard and stencil buffers reduce memory allocations
- Optimized shader effect pipeline: New ping-pong buffer system improves multi-effect rendering
- Added stencil state tracking: Completes GPU state management for more efficient rendering
- Improved profiler: Canvas caching for overlays and optimized memory allocation
- Enhanced FPS display: More accurate calculations with lower performance impact
Benchmarks show an average 3.5% FPS improvement on high-end systems and 12.9% improvement on systems with integrated graphics.
- perf(render): defer layer sorting until compositing by @flexiondotorg in #23
- refactor(canvas): optimise canvas creation by @flexiondotorg in #24
- perf(rendering): optimize layer signature generation with numeric hashing by @flexiondotorg in #25
- perf(rendering): optimize layer batching with single-layer fast path by @flexiondotorg in #26
- perf(canvas): implement separate canvas pools for standard and stencil buffers by @flexiondotorg in #27
- perf(effects): optimize shader effect application pipeline by @flexiondotorg in #28
- perf(layers): optimize layer signature calculation algorithm by @flexiondotorg in #29
- perf(renderer): optimize layer batch drawing with hybrid approach by @flexiondotorg in #30
- perf(rendering): optimize shader state changes with caching system by @flexiondotorg in #31
- perf(rendering): optimise blend mode state changes with tracking system by @flexiondotorg in #32
- perf(rendering): implement stencil state tracking system by @flexiondotorg in #33
- fix(profiler): removes redundant state change counts by @flexiondotorg in #34
- perf(profiler): optimize memory allocation in getState function by @flexiondotorg in #35
- feat(profiler): display average FPS by @flexiondotorg in #36
- perf(rendering): remove layer batching optimizations by @flexiondotorg in #37
- feat(rendering): reinstate sequential shader effect chaining by @flexiondotorg in #38
- refactor(rendering): make sharedEffectsTable local to compositeLayersOnScreen by @flexiondotorg in #39
- refactor(profiler): clean up getState() and remove unused layer properties by @flexiondotorg in #40
- perf(profiler): optimize overlay rendering with canvas caching by @flexiondotorg in #41
- refactor(profiler): simplify overlay toggling with unified state management by @flexiondotorg in #42
- perf(overlay) cache FPS overlay and improve content change detection by @flexiondotorg in #43
- docs: updates demo descriptions and order by @flexiondotorg in #44
Full Changelog: 1.0.5...1.0.6