[Bf-committers] [Bf-blender-cvs] SVN commit: /data/svn/bf-blender [51233] trunk/blender/intern/cycles: Cycles: camera motion blur enabled.

Daniel Salazar - 3Developer.com zanqdo at gmail.com
Sun Oct 14 02:15:13 CEST 2012


Alright cheers!

Daniel Salazar
patazstudio.com


On Sat, Oct 13, 2012 at 7:55 AM, Brecht Van Lommel
<brechtvanlommel at pandora.be> wrote:
> I'd like to get it working in the viewport, but there's some difficult
> technical issues to solve. It breaks animation tools when enabled,
> since it has to go back and forth a frame to find motion vectors, and
> then all unkeyed changes are lost just like they would be when doing
> it manually as a user.
>
> Brecht.
>
> On Fri, Oct 12, 2012 at 12:46 AM, Daniel Salazar - 3Developer.com
> <zanqdo at gmail.com> wrote:
>> Very nice speed and result. I wonder if this can eventually be made to
>> work in the viewport, it would be a shame not to
>>
>> cheers!
>>
>> Daniel Salazar
>> patazstudio.com
>>
>>
>> On Tue, Oct 9, 2012 at 12:37 PM, Brecht Van Lommel
>> <brechtvanlommel at pandora.be> wrote:
>>> Revision: 51233
>>>           http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51233
>>> Author:   blendix
>>> Date:     2012-10-09 18:37:14 +0000 (Tue, 09 Oct 2012)
>>> Log Message:
>>> -----------
>>> Cycles: camera motion blur enabled.
>>>
>>> Still more work needed to get object motion blur ready.
>>>
>>> Modified Paths:
>>> --------------
>>>     trunk/blender/intern/cycles/blender/addon/ui.py
>>>     trunk/blender/intern/cycles/blender/blender_object.cpp
>>>     trunk/blender/intern/cycles/blender/blender_sync.cpp
>>>     trunk/blender/intern/cycles/kernel/kernel_bvh.h
>>>     trunk/blender/intern/cycles/kernel/kernel_camera.h
>>>     trunk/blender/intern/cycles/kernel/kernel_object.h
>>>     trunk/blender/intern/cycles/kernel/kernel_path.h
>>>     trunk/blender/intern/cycles/kernel/kernel_shader.h
>>>     trunk/blender/intern/cycles/kernel/kernel_types.h
>>>     trunk/blender/intern/cycles/render/camera.cpp
>>>     trunk/blender/intern/cycles/render/mesh.cpp
>>>     trunk/blender/intern/cycles/render/object.cpp
>>>
>>> Modified: trunk/blender/intern/cycles/blender/addon/ui.py
>>> ===================================================================
>>> --- trunk/blender/intern/cycles/blender/addon/ui.py     2012-10-09 18:20:56 UTC (rev 51232)
>>> +++ trunk/blender/intern/cycles/blender/addon/ui.py     2012-10-09 18:37:14 UTC (rev 51233)
>>> @@ -131,13 +131,9 @@
>>>
>>>
>>>  class CyclesRender_PT_motion_blur(CyclesButtonsPanel, Panel):
>>> -    bl_label = "Motion Blur"
>>> +    bl_label = "Camera Motion Blur"
>>>      bl_options = {'DEFAULT_CLOSED'}
>>>
>>> -    @classmethod
>>> -    def poll(cls, context):
>>> -        return False
>>> -
>>>      def draw_header(self, context):
>>>          rd = context.scene.render
>>>
>>>
>>> Modified: trunk/blender/intern/cycles/blender/blender_object.cpp
>>> ===================================================================
>>> --- trunk/blender/intern/cycles/blender/blender_object.cpp      2012-10-09 18:20:56 UTC (rev 51232)
>>> +++ trunk/blender/intern/cycles/blender/blender_object.cpp      2012-10-09 18:37:14 UTC (rev 51233)
>>> @@ -17,6 +17,7 @@
>>>   */
>>>
>>>  #include "camera.h"
>>> +#include "integrator.h"
>>>  #include "graph.h"
>>>  #include "light.h"
>>>  #include "mesh.h"
>>> @@ -227,7 +228,9 @@
>>>                                 object->use_motion = true;
>>>                         }
>>>
>>> -                       sync_mesh_motion(b_ob, object->mesh, motion);
>>> +                       /* mesh deformation blur not supported yet */
>>> +                       if(!scene->integrator->motion_blur)
>>> +                               sync_mesh_motion(b_ob, object->mesh, motion);
>>>                 }
>>>
>>>                 return;
>>>
>>> Modified: trunk/blender/intern/cycles/blender/blender_sync.cpp
>>> ===================================================================
>>> --- trunk/blender/intern/cycles/blender/blender_sync.cpp        2012-10-09 18:20:56 UTC (rev 51232)
>>> +++ trunk/blender/intern/cycles/blender/blender_sync.cpp        2012-10-09 18:37:14 UTC (rev 51233)
>>> @@ -149,6 +149,9 @@
>>>
>>>  void BlenderSync::sync_integrator()
>>>  {
>>> +#ifdef __CAMERA_MOTION__
>>> +       BL::RenderSettings r = b_scene.render();
>>> +#endif
>>>         PointerRNA cscene = RNA_pointer_get(&b_scene.ptr, "cycles");
>>>
>>>         experimental = (RNA_enum_get(&cscene, "feature_set") != 0);
>>> @@ -175,7 +178,7 @@
>>>         integrator->layer_flag = render_layer.layer;
>>>
>>>         integrator->sample_clamp = get_float(cscene, "sample_clamp");
>>> -#ifdef __MOTION__
>>> +#ifdef __CAMERA_MOTION__
>>>         integrator->motion_blur = (!preview && r.use_motion_blur());
>>>  #endif
>>>
>>>
>>> Modified: trunk/blender/intern/cycles/kernel/kernel_bvh.h
>>> ===================================================================
>>> --- trunk/blender/intern/cycles/kernel/kernel_bvh.h     2012-10-09 18:20:56 UTC (rev 51232)
>>> +++ trunk/blender/intern/cycles/kernel/kernel_bvh.h     2012-10-09 18:37:14 UTC (rev 51233)
>>> @@ -349,7 +349,7 @@
>>>
>>>  #ifdef __INTERSECTION_REFINE__
>>>         if(isect->object != ~0) {
>>> -#ifdef __MOTION__
>>> +#ifdef __OBJECT_MOTION__
>>>                 Transform tfm = sd->ob_itfm;
>>>  #else
>>>                 Transform tfm = object_fetch_transform(kg, isect->object, ray->time, OBJECT_INVERSE_TRANSFORM);
>>> @@ -370,7 +370,7 @@
>>>         P = P + D*rt;
>>>
>>>         if(isect->object != ~0) {
>>> -#ifdef __MOTION__
>>> +#ifdef __OBJECT_MOTION__
>>>                 Transform tfm = sd->ob_tfm;
>>>  #else
>>>                 Transform tfm = object_fetch_transform(kg, isect->object, ray->time, OBJECT_TRANSFORM);
>>>
>>> Modified: trunk/blender/intern/cycles/kernel/kernel_camera.h
>>> ===================================================================
>>> --- trunk/blender/intern/cycles/kernel/kernel_camera.h  2012-10-09 18:20:56 UTC (rev 51232)
>>> +++ trunk/blender/intern/cycles/kernel/kernel_camera.h  2012-10-09 18:37:14 UTC (rev 51233)
>>> @@ -63,7 +63,7 @@
>>>         /* transform ray from camera to world */
>>>         Transform cameratoworld = kernel_data.cam.cameratoworld;
>>>
>>> -#ifdef __MOTION__
>>> +#ifdef __CAMERA_MOTION__
>>>         if(kernel_data.cam.have_motion)
>>>                 transform_motion_interpolate(&cameratoworld, &kernel_data.cam.motion, ray->time);
>>>  #endif
>>> @@ -106,7 +106,7 @@
>>>         /* transform ray from camera to world */
>>>         Transform cameratoworld = kernel_data.cam.cameratoworld;
>>>
>>> -#ifdef __MOTION__
>>> +#ifdef __CAMERA_MOTION__
>>>         if(kernel_data.cam.have_motion)
>>>                 transform_motion_interpolate(&cameratoworld, &kernel_data.cam.motion, ray->time);
>>>  #endif
>>> @@ -180,7 +180,7 @@
>>>         /* transform ray from camera to world */
>>>         Transform cameratoworld = kernel_data.cam.cameratoworld;
>>>
>>> -#ifdef __MOTION__
>>> +#ifdef __CAMERA_MOTION__
>>>         if(kernel_data.cam.have_motion)
>>>                 transform_motion_interpolate(&cameratoworld, &kernel_data.cam.motion, ray->time);
>>>  #endif
>>> @@ -212,7 +212,7 @@
>>>         float raster_x = x + kernel_tex_interp(__filter_table, filter_u, FILTER_TABLE_SIZE);
>>>         float raster_y = y + kernel_tex_interp(__filter_table, filter_v, FILTER_TABLE_SIZE);
>>>
>>> -#ifdef __MOTION__
>>> +#ifdef __CAMERA_MOTION__
>>>         /* motion blur */
>>>         if(kernel_data.cam.shuttertime == 0.0f)
>>>                 ray->time = TIME_INVALID;
>>>
>>> Modified: trunk/blender/intern/cycles/kernel/kernel_object.h
>>> ===================================================================
>>> --- trunk/blender/intern/cycles/kernel/kernel_object.h  2012-10-09 18:20:56 UTC (rev 51232)
>>> +++ trunk/blender/intern/cycles/kernel/kernel_object.h  2012-10-09 18:37:14 UTC (rev 51233)
>>> @@ -31,7 +31,7 @@
>>>  {
>>>         Transform tfm;
>>>
>>> -#ifdef __MOTION__
>>> +#ifdef __OBJECT_MOTION__
>>>         /* if we do motion blur */
>>>         if(sd->flag & SD_OBJECT_MOTION) {
>>>                 /* fetch motion transforms */
>>> @@ -70,7 +70,7 @@
>>>
>>>  __device_inline void object_position_transform(KernelGlobals *kg, ShaderData *sd, float3 *P)
>>>  {
>>> -#ifdef __MOTION__
>>> +#ifdef __OBJECT_MOTION__
>>>         *P = transform_point(&sd->ob_tfm, *P);
>>>  #else
>>>         Transform tfm = object_fetch_transform(kg, sd->object, TIME_INVALID, OBJECT_TRANSFORM);
>>> @@ -80,7 +80,7 @@
>>>
>>>  __device_inline void object_inverse_position_transform(KernelGlobals *kg, ShaderData *sd, float3 *P)
>>>  {
>>> -#ifdef __MOTION__
>>> +#ifdef __OBJECT_MOTION__
>>>         *P = transform_point(&sd->ob_itfm, *P);
>>>  #else
>>>         Transform tfm = object_fetch_transform(kg, sd->object, TIME_INVALID, OBJECT_INVERSE_TRANSFORM);
>>> @@ -90,7 +90,7 @@
>>>
>>>  __device_inline void object_inverse_normal_transform(KernelGlobals *kg, ShaderData *sd, float3 *N)
>>>  {
>>> -#ifdef __MOTION__
>>> +#ifdef __OBJECT_MOTION__
>>>         *N = normalize(transform_direction_transposed(&sd->ob_tfm, *N));
>>>  #else
>>>         Transform tfm = object_fetch_transform(kg, sd->object, TIME_INVALID, OBJECT_TRANSFORM);
>>> @@ -100,7 +100,7 @@
>>>
>>>  __device_inline void object_normal_transform(KernelGlobals *kg, ShaderData *sd, float3 *N)
>>>  {
>>> -#ifdef __MOTION__
>>> +#ifdef __OBJECT_MOTION__
>>>         *N = normalize(transform_direction_transposed(&sd->ob_itfm, *N));
>>>  #else
>>>         Transform tfm = object_fetch_transform(kg, sd->object, TIME_INVALID, OBJECT_INVERSE_TRANSFORM);
>>> @@ -110,7 +110,7 @@
>>>
>>>  __device_inline void object_dir_transform(KernelGlobals *kg, ShaderData *sd, float3 *D)
>>>  {
>>> -#ifdef __MOTION__
>>> +#ifdef __OBJECT_MOTION__
>>>         *D = transform_direction(&sd->ob_tfm, *D);
>>>  #else
>>>         Transform tfm = object_fetch_transform(kg, sd->object, 0.0f, OBJECT_TRANSFORM);
>>> @@ -120,7 +120,7 @@
>>>
>>>  __device_inline float3 object_location(KernelGlobals *kg, ShaderData *sd)
>>>  {
>>> -#ifdef __MOTION__
>>> +#ifdef __OBJECT_MOTION__
>>>         return make_float3(sd->ob_tfm.x.w, sd->ob_tfm.y.w, sd->ob_tfm.z.w);
>>>  #else
>>>         Transform tfm = object_fetch_transform(kg, sd->object, 0.0f, OBJECT_TRANSFORM);
>>>
>>> Modified: trunk/blender/intern/cycles/kernel/kernel_path.h
>>> ===================================================================
>>> --- trunk/blender/intern/cycles/kernel/kernel_path.h    2012-10-09 18:20:56 UTC (rev 51232)
>>> +++ trunk/blender/intern/cycles/kernel/kernel_path.h    2012-10-09 18:37:14 UTC (rev 51233)
>>> @@ -343,7 +343,7 @@
>>>                                 light_ray.P = ray_offset(sd.P, sd.Ng);
>>>                                 light_ray.D = ao_D;
>>>                                 light_ray.t = kernel_data.background.ao_distance;
>>> -#ifdef __MOTION__
>>> +#ifdef __OBJECT_MOTION__
>>>                                 light_ray.time = sd.time;
>>>  #endif
>>>
>>> @@ -368,7 +368,7 @@
>>>                                 BsdfEval L_light;
>>>                                 bool is_lamp;
>>>
>>> -#ifdef __MOTION__
>>> +#ifdef __OBJECT_MOTION__
>>>                                 light_ray.time = sd.time;
>>>  #endif
>>>
>>> @@ -520,7 +520,7 @@
>>>                                 light_ray.P = ray_offset(sd.P, sd.Ng);
>>>                                 light_ray.D = ao_D;
>>>                                 light_ray.t = kernel_data.background.ao_distance;
>>> -#ifdef __MOTION__
>>> +#ifdef __OBJECT_MOTION__
>>>                                 light_ray.time = sd.time;
>>>  #endif
>>>
>>> @@ -545,7 +545,7 @@
>>>                                 BsdfEval L_light;
>>>                                 bool is_lamp;
>>>
>>> -#ifdef __MOTION__
>>> +#ifdef __OBJECT_MOTION__
>>>                                 light_ray.time = sd.time;
>>>  #endif
>>>
>>> @@ -728,7 +728,7 @@
>>>                                         light_ray.P = ray_offset(sd.P, sd.Ng);
>>>                                         light_ray.D = ao_D;
>>>                                         light_ray.t = kernel_data.background.ao_distance;
>>> -#ifdef __MOTION__
>>> +#ifdef __OBJECT_MOTION__
>>>                                         light_ray.time = sd.time;
>>>  #endif
>>>
>>> @@ -748,7 +748,7 @@
>>>                         BsdfEval L_light;
>>>                         bool is_lamp;
>>>
>>> -#ifdef __MOTION__
>>> +#ifdef __OBJECT_MOTION__
>>>                         light_ray.time = sd.time;
>>>  #endif
>>>
>>> @@ -867,7 +867,7 @@
>>>                                 bsdf_ray.dP = sd.dP;
>>>                                 bsdf_ray.dD = bsdf_domega_in;
>>>  #endif
>>> -#ifdef __MOTION__
>>> +#ifdef __OBJECT_MOTION__
>>>                                 bsdf_ray.time = sd.time;
>>>  #endif
>>>
>>> @@ -925,7 +925,7 @@
>>>         float lens_u = path_rng(kg, &rng, sample, PRNG_LENS_U);
>>>         float lens_v = path_rng(kg, &rng, sample, PRNG_LENS_V);
>>>
>>> -#ifdef __MOTION__
>>> +#ifdef __CAMERA_MOTION__
>>>         float time = path_rng(kg, &rng, sample, PRNG_TIME);
>>>  #else
>>>         float time = 0.0f;
>>>
>>> Modified: trunk/blender/intern/cycles/kernel/kernel_shader.h
>>> ===================================================================
>>> --- trunk/blender/intern/cycles/kernel/kernel_shader.h  2012-10-09 18:20:56 UTC (rev 51232)
>>> +++ trunk/blender/intern/cycles/kernel/kernel_shader.h  2012-10-09 18:37:14 UTC (rev 51233)
>>> @@ -68,7 +68,7 @@
>>>  #endif
>>>
>>>         /* matrices and time */
>>> -#ifdef __MOTION__
>>> +#ifdef __OBJECT_MOTION__
>>>         sd->ob_tfm = object_fetch_transform(kg, sd->object, ray->time, OBJECT_TRANSFORM);
>>>         sd->ob_itfm = object_fetch_transform(kg, sd->object, ray->time, OBJECT_INVERSE_TRANSFORM);
>>>
>>> @@ -171,7 +171,7 @@
>>>         }
>>>  #endif
>>>
>>> -#ifdef __MOTION__
>>> +#ifdef __OBJECT_MOTION__
>>>         sd->time = time;
>>>
>>>         sd->ob_tfm = object_fetch_transform(kg, sd->object, time, OBJECT_TRANSFORM);
>>> @@ -275,7 +275,7 @@
>>>         sd->I = -sd->P;
>>>         sd->shader = kernel_data.background.shader;
>>>         sd->flag = kernel_tex_fetch(__shader_flag, (sd->shader & SHADER_MASK)*2);
>>> -#ifdef __MOTION__
>>> +#ifdef __OBJECT_MOTION__
>>>         sd->time = ray->time;
>>>  #endif
>>>         sd->ray_length = 0.0f;
>>>
>>> Modified: trunk/blender/intern/cycles/kernel/kernel_types.h
>>> ===================================================================
>>> --- trunk/blender/intern/cycles/kernel/kernel_types.h   2012-10-09 18:20:56 UTC (rev 51232)
>>> +++ trunk/blender/intern/cycles/kernel/kernel_types.h   2012-10-09 18:37:14 UTC (rev 51233)
>>> @@ -108,7 +108,8 @@
>>>  #define __PASSES__
>>>  #define __BACKGROUND_MIS__
>>>  #define __AO__
>>> -//#define __MOTION__
>>> +#define __CAMERA_MOTION__
>>> +//#define __OBJECT_MOTION__
>>>  #endif
>>>
>>>  //#define __SOBOL_FULL_SCREEN__
>>> @@ -129,7 +130,7 @@
>>>         PRNG_FILTER_V = 1,
>>>         PRNG_LENS_U = 2,
>>>         PRNG_LENS_V = 3,
>>> -#ifdef __MOTION__
>>> +#ifdef __CAMERA_MOTION__
>>>         PRNG_TIME = 4,
>>>         PRNG_UNUSED = 5,
>>>         PRNG_BASE_NUM = 6,
>>> @@ -426,7 +427,7 @@
>>>
>>> @@ Diff output truncated at 10240 characters. @@
>>> _______________________________________________
>>> Bf-blender-cvs mailing list
>>> Bf-blender-cvs at blender.org
>>> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
>> _______________________________________________
>> Bf-committers mailing list
>> Bf-committers at blender.org
>> http://lists.blender.org/mailman/listinfo/bf-committers
> _______________________________________________
> Bf-committers mailing list
> Bf-committers at blender.org
> http://lists.blender.org/mailman/listinfo/bf-committers


More information about the Bf-committers mailing list