Commit: 869945f37432b6762e8486c904e178236354aa8e
Author: Dalai Felinto
Date:   Thu Aug 14 16:25:30 2014 +0200
Branches: testbuild
https://developer.blender.org/rB869945f37432b6762e8486c904e178236354aa8e

Anamorphic Lens - test patch (only works when blades == 0)

===================================================================

M       intern/cycles/blender/addon/properties.py
M       intern/cycles/blender/addon/ui.py
M       intern/cycles/blender/blender_camera.cpp
M       intern/cycles/kernel/kernel_camera.h
M       intern/cycles/kernel/kernel_types.h
M       intern/cycles/render/camera.cpp
M       intern/cycles/render/camera.h

===================================================================

diff --git a/intern/cycles/blender/addon/properties.py 
b/intern/cycles/blender/addon/properties.py
index b4a1b10..d3fff84 100644
--- a/intern/cycles/blender/addon/properties.py
+++ b/intern/cycles/blender/addon/properties.py
@@ -544,6 +544,14 @@ class CyclesCameraSettings(bpy.types.PropertyGroup):
                 subtype='ANGLE',
                 default=0,
                 )
+        cls.anamorphic_factor = FloatProperty(
+                name="Anamorphic Lens",
+                description="Lens for anamorphic distortion",
+                min=0.1,
+                subtype='DISTANCE',
+                precision=4,
+                default=1,
+                )
         cls.panorama_type = EnumProperty(
                 name="Panorama Type",
                 description="Distortion to use for the calculation",
diff --git a/intern/cycles/blender/addon/ui.py 
b/intern/cycles/blender/addon/ui.py
index 4a13f26..8d63b8b 100644
--- a/intern/cycles/blender/addon/ui.py
+++ b/intern/cycles/blender/addon/ui.py
@@ -469,6 +469,9 @@ class CyclesCamera_PT_dof(CyclesButtonsPanel, Panel):
         sub.prop(ccam, "aperture_blades", text="Blades")
         sub.prop(ccam, "aperture_rotation", text="Rotation")
 
+        col.separator()
+        col.prop(ccam, "anamorphic_factor")
+
 
 class Cycles_PT_context_material(CyclesButtonsPanel, Panel):
     bl_label = ""
diff --git a/intern/cycles/blender/blender_camera.cpp 
b/intern/cycles/blender/blender_camera.cpp
index 1a85561..8725b5b 100644
--- a/intern/cycles/blender/blender_camera.cpp
+++ b/intern/cycles/blender/blender_camera.cpp
@@ -46,6 +46,8 @@ struct BlenderCamera {
 
        float2 pixelaspect;
 
+       float anamorphic;
+
        PanoramaType panorama_type;
        float fisheye_fov;
        float fisheye_lens;
@@ -167,6 +169,7 @@ static void blender_camera_from_object(BlenderCamera *bcam, 
BL::Object b_ob, boo
                bcam->apertureblades = RNA_int_get(&ccamera, "aperture_blades");
                bcam->aperturerotation = RNA_float_get(&ccamera, 
"aperture_rotation");
                bcam->focaldistance = blender_camera_focal_distance(b_ob, 
b_camera);
+               bcam->anamorphic = RNA_float_get(&ccamera, "anamorphic_factor");
 
                bcam->shift.x = b_camera.shift_x();
                bcam->shift.y = b_camera.shift_y();
@@ -328,6 +331,9 @@ static void blender_camera_sync(Camera *cam, BlenderCamera 
*bcam, int width, int
        cam->fisheye_fov = bcam->fisheye_fov;
        cam->fisheye_lens = bcam->fisheye_lens;
 
+       /* anamorphic */
+       cam->anamorphic = bcam->anamorphic;
+
        /* perspective */
        cam->fov = 2.0f * atanf((0.5f * sensor_size) / bcam->lens / 
aspectratio);
        cam->focaldistance = bcam->focaldistance;
diff --git a/intern/cycles/kernel/kernel_camera.h 
b/intern/cycles/kernel/kernel_camera.h
index 6b03abe..2b06435 100644
--- a/intern/cycles/kernel/kernel_camera.h
+++ b/intern/cycles/kernel/kernel_camera.h
@@ -21,6 +21,12 @@ CCL_NAMESPACE_BEGIN
 ccl_device float2 camera_sample_aperture(KernelGlobals *kg, float u, float v)
 {
        float blades = kernel_data.cam.blades;
+       float anamorphic = kernel_data.cam.anamorphic;
+
+       /* apply anamorphic effect */
+       if(anamorphic != 1.0f) {
+               u = ((((u * 2.0f) - 1.0f) * (1.0f / anamorphic)) + 1.0f) * 0.5f;
+       }
 
        if(blades == 0.0f) {
                /* sample disk */
diff --git a/intern/cycles/kernel/kernel_types.h 
b/intern/cycles/kernel/kernel_types.h
index 0ee7e60..8fa1350 100644
--- a/intern/cycles/kernel/kernel_types.h
+++ b/intern/cycles/kernel/kernel_types.h
@@ -758,9 +758,11 @@ typedef struct KernelCamera {
        /* render size */
        float width, height;
        int resolution;
+
+       /* anamorphic lens */
+       float anamorphic;
        int pad1;
        int pad2;
-       int pad3;
 
        /* more matrices */
        Transform screentoworld;
diff --git a/intern/cycles/render/camera.cpp b/intern/cycles/render/camera.cpp
index 8659fe4..ada7881 100644
--- a/intern/cycles/render/camera.cpp
+++ b/intern/cycles/render/camera.cpp
@@ -38,6 +38,8 @@ Camera::Camera()
        motion.post = transform_identity();
        use_motion = false;
 
+       anamorphic = 1.0f;
+
        type = CAMERA_PERSPECTIVE;
        panorama_type = PANORAMA_EQUIRECTANGULAR;
        fisheye_fov = M_PI_F;
@@ -241,6 +243,9 @@ void Camera::device_update(Device *device, DeviceScene 
*dscene, Scene *scene)
        /* type */
        kcam->type = type;
 
+       /* anamorphy */
+       kcam->anamorphic = anamorphic;
+
        /* panorama */
        kcam->panorama_type = panorama_type;
        kcam->fisheye_fov = fisheye_fov;
@@ -291,6 +296,7 @@ bool Camera::modified(const Camera& cam)
                (viewplane == cam.viewplane) &&
                (border == cam.border) &&
                (matrix == cam.matrix) &&
+               (anamorphic == cam.anamorphic) &&
                (panorama_type == cam.panorama_type) &&
                (fisheye_fov == cam.fisheye_fov) &&
                (fisheye_lens == cam.fisheye_lens));
diff --git a/intern/cycles/render/camera.h b/intern/cycles/render/camera.h
index c28670b..7c4c561 100644
--- a/intern/cycles/render/camera.h
+++ b/intern/cycles/render/camera.h
@@ -54,6 +54,9 @@ public:
        float fisheye_fov;
        float fisheye_lens;
 
+       /* anamorphy */
+       float anamorphic;
+
        /* sensor */
        float sensorwidth;
        float sensorheight;

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to