According to MathWorld, the gnomonic projection is a nonconformal map projection obtained by projecting points P_1 (or P_2) on the surface of sphere from a sphere’s center O to point P in a plane that is tangent to a point S (Coxeter 1969, p. 93). In a gnomonic projection, great circles are mapped to straight lines. The gnomonic projection represents the image formed by a spherical lens, and is sometimes known as the rectilinear projection.

Code Motivation

I haven’t seen a code which is able to generate large amounts of gnomonic projection from 360 images masssively in parallel, so I open sourced my ShaderToy program for such a purpose.

Usually previous methods creates a camera with a projection matrix, a cube or sphere to approximate the rectilinear projection from human eyes. However, texturing a mesh can be expensive and what if you don’t really want to pre-define a projection matrix?

Here comes using a quad to generate gnomonic projection centralized at any given point.

Interaction Instructions

Move mouse to change the central point.

Press space for the Equirectangular Projection;

Press number 1, 2, 3 for three different FoVs.

Live Demo


I think the code is self-explained, and thus can be used as a basic tutorial for projection mapping from a cube map.