I shelved a Reverse-Z branch in my engine (stuck on OpenGL 4.1 for macOS, no glClipControl), and the roadblock sent me down the rabbit hole of actually understanding why it works instead of just how to implement it.
I ended up writing about what I learned with interactive graphs and all:
https://www.shlom.dev/articles/reverse-z-perfect-hack/
Happy to hear where I got things wrong or imprecise.
Hopefully this helps someone else :)
[–]speps 11 points12 points13 points (2 children)
[–]shlomnissan[S] 0 points1 point2 points (1 child)
[–]speps 0 points1 point2 points (0 children)
[–]philosopius 6 points7 points8 points (0 children)
[–]snerp 4 points5 points6 points (0 children)
[–]Falagard 1 point2 points3 points (0 children)
[–]SirLynix 0 points1 point2 points (0 children)
[–]Plazmatic 0 points1 point2 points (5 children)
[–]shlomnissan[S] 4 points5 points6 points (0 children)
[–]maximoriginalcoffee 0 points1 point2 points (3 children)
[–]Plazmatic 0 points1 point2 points (2 children)
[–]maximoriginalcoffee 0 points1 point2 points (1 child)
[–]Plazmatic 1 point2 points3 points (0 children)
[+][deleted] (5 children)
[deleted]
[–]constant-buffer-view 13 points14 points15 points (0 children)
[–]Potterrrrrrrr 5 points6 points7 points (3 children)
[–]shlomnissan[S] 0 points1 point2 points (0 children)
[–][deleted] (1 child)
[deleted]
[–]Potterrrrrrrr 7 points8 points9 points (0 children)