正射影方式
魚眼レンズにおける正射影方式 (Orthographic Projection) は、射影方式のひとつ 中心の物体が大きく映りやすい
Mapping Function
$ rを画像の中心からの距離・$ fを焦点距離・$ \thetaを光軸からの角度としたとき、 $ r = f \sin(\theta)
$ \theta = \sin^{-1} \left( \frac{r}{f} \right)
GLSL
code:glsl
const float f = 1.0;
float r = length(p);
float theta = asin(r / f);
vec3 rd = vec3(sin(theta) * p / r, -cos(theta));
$ fが1のとき、これは球を平行投影した場合の球のサーフェスの座標と等しいってことになるので、もちろん以下のようにも書けるよ code:glsl
float r = length(p);
vec3 rd = vec3(p, sqrt(1.0 - r * r));