Alright cheers! Daniel Salazar patazstudio.com
On Sat, Oct 13, 2012 at 7:55 AM, Brecht Van Lommel <brechtvanlom...@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 > <zan...@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 >> <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 > _______________________________________________ > Bf-committers mailing list > Bf-committers@blender.org > http://lists.blender.org/mailman/listinfo/bf-committers _______________________________________________ Bf-committers mailing list Bf-committers@blender.org http://lists.blender.org/mailman/listinfo/bf-committers