diff options
Diffstat (limited to 'source/blender/editors/render')
-rw-r--r-- | source/blender/editors/render/render_intern.h | 1 | ||||
-rw-r--r-- | source/blender/editors/render/render_internal.c | 42 | ||||
-rw-r--r-- | source/blender/editors/render/render_ops.c | 1 |
3 files changed, 44 insertions, 0 deletions
diff --git a/source/blender/editors/render/render_intern.h b/source/blender/editors/render/render_intern.h index 26f313cb3fe..fb07b03c286 100644 --- a/source/blender/editors/render/render_intern.h +++ b/source/blender/editors/render/render_intern.h @@ -89,6 +89,7 @@ void TEXTURE_OT_envmap_clear_all(struct wmOperatorType *ot); /* render_internal.c */ void RENDER_OT_render(struct wmOperatorType *ot); +void RENDER_OT_shutter_curve_preset(struct wmOperatorType *ot); void render_view3d_update(struct RenderEngine *engine, const struct bContext *C); void render_view3d_draw(struct RenderEngine *engine, const struct bContext *C); diff --git a/source/blender/editors/render/render_internal.c b/source/blender/editors/render/render_internal.c index 57aafb549ac..f44374b1d7b 100644 --- a/source/blender/editors/render/render_internal.c +++ b/source/blender/editors/render/render_internal.c @@ -1640,3 +1640,45 @@ Scene *ED_render_job_get_current_scene(const bContext *C) } return NULL; } + +/* Motion blur curve preset */ + +static int render_shutter_curve_preset_exec(bContext *C, wmOperator *op) +{ + Scene *scene = CTX_data_scene(C); + CurveMapping *mblur_shutter_curve = &scene->r.mblur_shutter_curve; + CurveMap *cm = mblur_shutter_curve->cm; + int preset = RNA_enum_get(op->ptr, "shape"); + + cm->flag &= ~CUMA_EXTEND_EXTRAPOLATE; + mblur_shutter_curve->preset = preset; + curvemap_reset(cm, + &mblur_shutter_curve->clipr, + mblur_shutter_curve->preset, + CURVEMAP_SLOPE_POS_NEG); + curvemapping_changed(mblur_shutter_curve, false); + + return OPERATOR_FINISHED; +} + +void RENDER_OT_shutter_curve_preset(wmOperatorType *ot) +{ + PropertyRNA *prop; + static EnumPropertyItem prop_shape_items[] = { + {CURVE_PRESET_SHARP, "SHARP", 0, "Sharp", ""}, + {CURVE_PRESET_SMOOTH, "SMOOTH", 0, "Smooth", ""}, + {CURVE_PRESET_MAX, "MAX", 0, "Max", ""}, + {CURVE_PRESET_LINE, "LINE", 0, "Line", ""}, + {CURVE_PRESET_ROUND, "ROUND", 0, "Round", ""}, + {CURVE_PRESET_ROOT, "ROOT", 0, "Root", ""}, + {0, NULL, 0, NULL, NULL}}; + + ot->name = "Shutter Curve Preset"; + ot->description = "Set shutter curve"; + ot->idname = "RENDER_OT_shutter_curve_preset"; + + ot->exec = render_shutter_curve_preset_exec; + + prop = RNA_def_enum(ot->srna, "shape", prop_shape_items, CURVE_PRESET_SMOOTH, "Mode", ""); + RNA_def_property_translation_context(prop, BLT_I18NCONTEXT_ID_CURVE); /* Abusing id_curve :/ */ +} diff --git a/source/blender/editors/render/render_ops.c b/source/blender/editors/render/render_ops.c index f98083f7e74..c09e8576dc2 100644 --- a/source/blender/editors/render/render_ops.c +++ b/source/blender/editors/render/render_ops.c @@ -93,6 +93,7 @@ void ED_operatortypes_render(void) WM_operatortype_append(RENDER_OT_view_show); WM_operatortype_append(RENDER_OT_render); WM_operatortype_append(RENDER_OT_view_cancel); + WM_operatortype_append(RENDER_OT_shutter_curve_preset); /* render_opengl.c */ WM_operatortype_append(RENDER_OT_opengl); |