diff options
author | Lukas Stockner <lukas.stockner@freenet.de> | 2015-01-14 21:14:45 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2015-01-14 21:22:24 +0300 |
commit | 4118c1b4e6ae04988c310d785bd1802c46187e3a (patch) | |
tree | a645f7be743dae48886283579236b1022c867c2f /intern/cycles/render/camera.cpp | |
parent | 193871ae7da35548688d7b9ccadde66e4f35d2fd (diff) |
Cycles: Adding field-of-view options to the equirectangular panorama camera
This patch adds the option to set minimum/maximum latitude/longitude values for
the equirectangular panorama camera in Cycles, as discussed in T34400.
The separate functions in kernel_projection.h are needed because the regular
ones are also used as helper functions for environment map sampling.
Reviewers: #cycles, sergey
Reviewed By: #cycles, sergey
Subscribers: dingto, sergey, brecht
Differential Revision: https://developer.blender.org/D960
Diffstat (limited to 'intern/cycles/render/camera.cpp')
-rw-r--r-- | intern/cycles/render/camera.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/intern/cycles/render/camera.cpp b/intern/cycles/render/camera.cpp index 54f1be2f384..5b0d51e60c2 100644 --- a/intern/cycles/render/camera.cpp +++ b/intern/cycles/render/camera.cpp @@ -47,6 +47,10 @@ Camera::Camera() panorama_type = PANORAMA_EQUIRECTANGULAR; fisheye_fov = M_PI_F; fisheye_lens = 10.5f; + latitude_min = -M_PI_2_F; + latitude_max = M_PI_2_F; + longitude_min = -M_PI_F; + longitude_max = M_PI_F; fov = M_PI_4_F; sensorwidth = 0.036f; @@ -253,6 +257,8 @@ void Camera::device_update(Device *device, DeviceScene *dscene, Scene *scene) kcam->panorama_type = panorama_type; kcam->fisheye_fov = fisheye_fov; kcam->fisheye_lens = fisheye_lens; + kcam->equirectangular_range = make_float4(longitude_min - longitude_max, -longitude_min, + latitude_min - latitude_max, -latitude_min + M_PI_2_F); /* sensor size */ kcam->sensorwidth = sensorwidth; @@ -316,7 +322,11 @@ bool Camera::modified(const Camera& cam) (aperture_ratio == cam.aperture_ratio) && (panorama_type == cam.panorama_type) && (fisheye_fov == cam.fisheye_fov) && - (fisheye_lens == cam.fisheye_lens)); + (fisheye_lens == cam.fisheye_lens) && + (latitude_min == cam.latitude_min) && + (latitude_max == cam.latitude_max) && + (longitude_min == cam.longitude_min) && + (longitude_max == cam.longitude_max)); } bool Camera::motion_modified(const Camera& cam) |