This is a fascinating topic, especially when considering how this was achieved back in the days. We now take it for granted, but this was not a simple feature to have in your game in 199x ( x<6 ;) ).<p>For anyone interested: I have a detailed write up on the topic here in the context of 1990s renderers <a href="https://github.com/sylefeb/tinygpus/tree/main?tab=readme-ov-file#on-perspective-correct-texturing">https://github.com/sylefeb/tinygpus/tree/main?tab=readme-ov-...</a> ; a video discussing texture mapping with a hardware twist <a href="https://youtu.be/2ZAIIDXoBis?si=MvQXH2ltqWmvFMdt&t=1072" rel="nofollow">https://youtu.be/2ZAIIDXoBis?si=MvQXH2ltqWmvFMdt&t=1072</a> ; and have a shadertoy to compare perspective correct texture mapping on/off <a href="https://www.shadertoy.com/view/ftKSzR" rel="nofollow">https://www.shadertoy.com/view/ftKSzR</a>
Reminded me of Quake's trick[1] of calculating the perspective correction every 16 pixels, as you then effectively got it for free on a Pentium processor.<p>[1]: <a href="https://www.bluesnews.com/abrash/chap68.shtml" rel="nofollow">https://www.bluesnews.com/abrash/chap68.shtml</a>
An alternative explanation: <a href="https://gabrielgambetta.com/computer-graphics-from-scratch/14-textures.html#pespective-correct-texture-mapping" rel="nofollow">https://gabrielgambetta.com/computer-graphics-from-scratch/1...</a>
I think computing 2D barycentric coordinates by inverting a 3x3 matrix whose last column is [1, 1, 1] is a bit wasteful.<p>The proper solution is this: <a href="https://gamedev.stackexchange.com/a/63203" rel="nofollow">https://gamedev.stackexchange.com/a/63203</a>
[author] Thanks for reposting this! It was a small but cool learning that all perspective correction needs is dividing screen-space barycentrics by vertex depths and normalizing. I wanted to share my understanding of the math.<p>3D graphics is a rich and old field with lots of tricks like this. It's cool to see faster algorithms and alternative explanations in the comments!
The funny thing about this was that by the time you'd finished a 10 hour session of Tomb Raider you got used to the effect, so reality looked weirdly distorted for a while after.