Really cool stuff, I was working on the same thing a while back, some 3 years ago
Had some issues with interpolation, you can see lines on the sprite if you look closely. Probably lack of secondary reprojection.
At the time I was going full steam ahead on this,
- added support for complex objects, not just a single mesh
- variable atlas resolution
- variable grid resolution so you can trade spatial for angular resolution
- full octahedron and hemioct
- debug visualization tools
- margins to support mipmaps without bleeding
- depth/normal/pbr + albedo/alpha bakes, so you can fully relight the thing and do proper depth compositing
Here is an example of a reasonable and unreasonable grid resolution on the same atlas resolution
Spent an ungodly amount of time on optimizing the bake.
Implemented Sprite fitting to reduce overdraw
Pick a number of points, say 4 - and the tool will fit a convex hull around it with that number of points. Lets you cut down on overdraw. Humus wrote about it over a decade ago, I thought it was a really cool idea.
I still want to bring this to production someday, maybe in Shade. Anyway, Kudos on making it work!
My references
- [2021] Rendering a Sphere on a Quad by Ben Golus
- [2018] Octahedral Impostors by Ryan Brucks
- [2018] https://github.com/xraxra/IMP
- [2018] GitHub - wojtekpil/Godot-Octahedral-Impostors: Octahedral Impostors implementation for Godot Game Engine
- [2011] BN11 : “Real-time Realistic Rendering and Lighting of Forests” by Eric Bruneton, Fabrice Neyret
- [2007] TSK07: “Fast (Spherical) Light Field Rendering with Per-Pixel Depth.” by Severin Todt, Christof Rezk-Salama and Andreas Kolb
- [1995] MO95: Nelson Max and Keiichi Ohsaki. Rendering trees from precomputed z-buffer views. In Eurographics Rendering Workshop, pages 45–54, 1995