diff options
Diffstat (limited to 'intern/cycles/blender')
-rw-r--r-- | intern/cycles/blender/blender_object.cpp | 7 | ||||
-rw-r--r-- | intern/cycles/blender/blender_session.cpp | 14 |
2 files changed, 12 insertions, 9 deletions
diff --git a/intern/cycles/blender/blender_object.cpp b/intern/cycles/blender/blender_object.cpp index 2ea0b27dff8..6ffc8c81ce6 100644 --- a/intern/cycles/blender/blender_object.cpp +++ b/intern/cycles/blender/blender_object.cpp @@ -432,6 +432,11 @@ void BlenderSync::sync_objects(BL::SpaceView3D b_v3d, int motion) /* object loop */ BL::Scene::objects_iterator b_ob; BL::Scene b_sce = b_scene; + /* modifier result type (not exposed as enum in C++ API) + * 1 : eModifierMode_Realtime + * 2 : eModifierMode_Render + */ + int dupli_settings = preview ? 1 : 2; bool cancel = false; @@ -446,7 +451,7 @@ void BlenderSync::sync_objects(BL::SpaceView3D b_v3d, int motion) if(b_ob->is_duplicator() && !object_render_hide_duplis(*b_ob)) { /* dupli objects */ - b_ob->dupli_list_create(b_scene, 2); + b_ob->dupli_list_create(b_scene, dupli_settings); BL::Object::dupli_list_iterator b_dup; diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp index ef578493901..09e7472caf2 100644 --- a/intern/cycles/blender/blender_session.cpp +++ b/intern/cycles/blender/blender_session.cpp @@ -592,16 +592,14 @@ bool BlenderSession::draw(int w, int h) /* draw */ BufferParams buffer_params = BlenderSync::get_buffer_params(b_render, b_scene, b_v3d, b_rv3d, scene->camera, width, height); + DeviceDrawParams draw_params; - if(session->params.display_buffer_linear) - b_engine.bind_display_space_shader(b_scene); - - bool draw_ok = !session->draw(buffer_params); + if(session->params.display_buffer_linear) { + draw_params.bind_display_space_shader_cb = function_bind(&BL::RenderEngine::bind_display_space_shader, &b_engine, b_scene); + draw_params.unbind_display_space_shader_cb = function_bind(&BL::RenderEngine::unbind_display_space_shader, &b_engine); + } - if(session->params.display_buffer_linear) - b_engine.unbind_display_space_shader(); - - return draw_ok; + return !session->draw(buffer_params, draw_params); } void BlenderSession::get_status(string& status, string& substatus) |