[HN Gopher] Why High FOV Sucks - Fixing It with Panini Projection
       ___________________________________________________________________
        
       Why High FOV Sucks - Fixing It with Panini Projection
        
       Author : Eduard
       Score  : 34 points
       Date   : 2026-02-24 20:27 UTC (2 hours ago)
        
 (HTM) web link (www.youtube.com)
 (TXT) w3m dump (www.youtube.com)
        
       | shannifin wrote:
       | Nice! I wanted to do this sort of thing when I was playing around
       | with 3D game programming in the late 90s / early 2000s, to
       | capture how a wider FOV looks in movies. Alas, computers were too
       | slow and I was too inexperienced anyway.
        
       | pyrolistical wrote:
       | I find it funny people play on the highest fov in first person
       | shooters to their own detriment.
       | 
       | They think the higher fov is a pure win as it allows them to see
       | more but in reality it is a tradeoff making targets in front of
       | them smaller.
        
         | 5G_activated wrote:
         | there is a long standing problem in Team Fortress 2 where the
         | default FOV is 75, as it was on the console ports of the Orange
         | Box, and it's believed to turn off a lot of new players and
         | enrage regulars because they just don't see things in the
         | periphery that everyone else playing at the maximum FOV of 90
         | does.
        
         | mhitza wrote:
         | Part of the reason why I don't play many, if at all, modern
         | FPS. Claustrophobic, disorienting, small FOV are something I
         | cannot get used to.
        
       | jsheard wrote:
       | Unreal supports Panini out of the box, but very few games seem to
       | use it or any other alternative projection.
       | 
       | https://dev.epicgames.com/documentation/en-us/unreal-engine/...
       | 
       | HYPER DEMON may be the best known and most extreme exception, it
       | renders 180 degrees in front of you, then renders 180 degrees
       | behind you as a red-tinted overlay, giving full 360 degree
       | awareness if you can wrap your brain around it.
       | 
       | https://www.youtube.com/watch?v=ScglDSi9KUs
        
         | zokier wrote:
         | Weird that UE also implements this as purely postprocessing
         | filter. Surely there is more efficient way to render directly
         | using panini projection, or at least something closer to it?
         | Could you do it in vertex shader or something
        
           | jsheard wrote:
           | You could _kinda_ do it in the vertex shader, but the
           | geometry would have to be very finely tessellated for the
           | curve to look right since each individual triangle would
           | still have straight edges. Alternatively you could raytrace
           | the camera instead, which makes it trivial to use any
           | projection, but that 's a non-trivial departure from how most
           | engines work. Post-process is the least intrusive way to do
           | it.
           | 
           | I'm not sure what HYPER DEMON does, it's actually built on a
           | custom engine so they could really specialize into the crazy
           | FOV if they wanted to.
        
       | dima55 wrote:
       | I would love for us to move past the idea that non-pinhole
       | projections have "distortion", and we should strive to remove
       | this "distortion" by reprojecting stuff to pinhole models. In
       | practice, ALL projections distort straight lines and/or shapes
       | and/or sizes, so if you use the pinhole projection everywhere,
       | your images look like crap (see iphone wide-lens camera output
       | for instance). Most of the normal non-pinhole projection
       | functions work fine for wide lenses, while behaving like a
       | pinhole lens with long lenses:
       | https://en.wikipedia.org/wiki/Fisheye_lens#Mapping_function
        
       ___________________________________________________________________
       (page generated 2026-02-24 23:01 UTC)