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 <brechtvanlom...@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-...@blender.org > http://lists.blender.org/mailman/listinfo/bf-blender-cvs _______________________________________________ Bf-committers mailing list Bf-committers@blender.org http://lists.blender.org/mailman/listinfo/bf-committers