[Bf-blender-cvs] [7ad48ff] multiview: Merge remote-tracking branch 'origin/master' into multiview
Dalai Felinto
noreply at git.blender.org
Sat Mar 21 14:13:17 CET 2015
Commit: 7ad48ff467e388bc5a7619c95ef1338613509483
Author: Dalai Felinto
Date: Sat Mar 21 14:09:59 2015 +0100
Branches: multiview
https://developer.blender.org/rB7ad48ff467e388bc5a7619c95ef1338613509483
Merge remote-tracking branch 'origin/master' into multiview
Conflicts:
source/blender/render/intern/source/external_engine.c
===================================================================
===================================================================
diff --cc source/blender/blenkernel/BKE_scene.h
index 292e365,c191f38..14c1a5f
--- a/source/blender/blenkernel/BKE_scene.h
+++ b/source/blender/blenkernel/BKE_scene.h
@@@ -126,19 -125,16 +126,19 @@@ void BKE_scene_update_for_newframe_ex(s
struct SceneRenderLayer *BKE_scene_add_render_layer(struct Scene *sce, const char *name);
bool BKE_scene_remove_render_layer(struct Main *main, struct Scene *scene, struct SceneRenderLayer *srl);
+struct SceneRenderView *BKE_scene_add_render_view(struct Scene *sce, const char *name);
+bool BKE_scene_remove_render_view(struct Scene *scene, struct SceneRenderView *srv);
+
/* render profile */
- int get_render_subsurf_level(struct RenderData *r, int level);
- int get_render_child_particle_number(struct RenderData *r, int num);
- int get_render_shadow_samples(struct RenderData *r, int samples);
- float get_render_aosss_error(struct RenderData *r, float error);
+ int get_render_subsurf_level(const struct RenderData *r, int level);
+ int get_render_child_particle_number(const struct RenderData *r, int num);
+ int get_render_shadow_samples(const struct RenderData *r, int samples);
+ float get_render_aosss_error(const struct RenderData *r, float error);
- bool BKE_scene_use_new_shading_nodes(struct Scene *scene);
+ bool BKE_scene_use_new_shading_nodes(const struct Scene *scene);
- bool BKE_scene_uses_blender_internal(struct Scene *scene);
- bool BKE_scene_uses_blender_game(struct Scene *scene);
+ bool BKE_scene_uses_blender_internal(const struct Scene *scene);
+ bool BKE_scene_uses_blender_game(const struct Scene *scene);
void BKE_scene_disable_color_management(struct Scene *scene);
bool BKE_scene_check_color_management_enabled(const struct Scene *scene);
diff --cc source/blender/blenkernel/intern/scene.c
index 4fcb06c,c28d741..eed86e0
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@@ -1917,45 -1889,9 +1917,45 @@@ bool BKE_scene_remove_render_layer(Mai
return true;
}
+/* return default view */
+SceneRenderView *BKE_scene_add_render_view(Scene *sce, const char *name)
+{
+ SceneRenderView *srv;
+
+ if (!name)
+ name = DATA_("RenderView");
+
+ srv = MEM_callocN(sizeof(SceneRenderView), "new render view");
+ BLI_strncpy(srv->name, name, sizeof(srv->name));
+ BLI_uniquename(&sce->r.views, srv, DATA_("RenderView"), '.', offsetof(SceneRenderView, name), sizeof(srv->name));
+ BLI_addtail(&sce->r.views, srv);
+
+ return srv;
+}
+
+bool BKE_scene_remove_render_view(Scene *scene, SceneRenderView *srv)
+{
+ const int act = BLI_findindex(&scene->r.views, srv);
+
+ if (act == -1) {
+ return false;
+ }
+ else if (scene->r.views.first == scene->r.views.last) {
+ /* ensure 1 view is kept */
+ return false;
+ }
+
+ BLI_remlink(&scene->r.views, srv);
+ MEM_freeN(srv);
+
+ scene->r.actview = 0;
+
+ return true;
+}
+
/* render simplification */
- int get_render_subsurf_level(RenderData *r, int lvl)
+ int get_render_subsurf_level(const RenderData *r, int lvl)
{
if (r->mode & R_SIMPLIFY)
return min_ii(r->simplify_subsurf, lvl);
diff --cc source/blender/render/intern/source/external_engine.c
index d633478,653f3f0..45b0395
--- a/source/blender/render/intern/source/external_engine.c
+++ b/source/blender/render/intern/source/external_engine.c
@@@ -369,31 -368,18 +369,37 @@@ void RE_engine_set_error_message(Render
}
}
+void RE_engine_actview_set(RenderEngine *engine, const char *viewname)
+{
+ Render *re = engine->re;
+ RE_SetActiveRenderView(re, viewname);
+}
+
+float RE_engine_get_camera_shift_x(RenderEngine *engine, Object *camera)
+{
+ Render *re = engine->re;
+ return BKE_camera_multiview_shift_x(re ? &re->r : NULL, camera, re->viewname);
+}
+
+void RE_engine_get_camera_model_matrix(RenderEngine *engine, Object *camera, float *r_modelmat)
+{
+ Render *re = engine->re;
+ BKE_camera_multiview_model_matrix(re ? &re->r : NULL, camera, re->viewname, (float (*)[4])r_modelmat);
+}
+
+
- void RE_engine_get_current_tiles(Render *re, int *total_tiles_r, rcti **tiles_r)
+ rcti* RE_engine_get_current_tiles(Render *re, int *total_tiles_r, bool *r_needs_free)
{
+ static rcti tiles_static[BLENDER_MAX_THREADS];
+ const int allocation_step = BLENDER_MAX_THREADS;
RenderPart *pa;
int total_tiles = 0;
- rcti *tiles = NULL;
- int allocation_size = 0, allocation_step = BLENDER_MAX_THREADS;
+ rcti *tiles = tiles_static;
+ int allocation_size = BLENDER_MAX_THREADS;
+
+ BLI_rw_mutex_lock(&re->partsmutex, THREAD_LOCK_READ);
+
+ *r_needs_free = false;
if (re->engine && (re->engine->flag & RE_ENGINE_HIGHLIGHT_TILES) == 0) {
*total_tiles_r = 0;
diff --cc source/blender/render/intern/source/pipeline.c
index ec3caa6,b397db7..31324b1
--- a/source/blender/render/intern/source/pipeline.c
+++ b/source/blender/render/intern/source/pipeline.c
@@@ -1358,10 -1256,23 +1360,11 @@@ static void threaded_tile_processor(Ren
BLI_thread_queue_free(donequeue);
BLI_thread_queue_free(workqueue);
- if (re->result->do_exr_tile) {
- BLI_rw_mutex_lock(&re->resultmutex, THREAD_LOCK_WRITE);
- render_result_exr_file_end(re);
- BLI_rw_mutex_unlock(&re->resultmutex);
- }
-
- if (re->r.scemode & R_EXR_CACHE_FILE) {
- BLI_rw_mutex_lock(&re->resultmutex, THREAD_LOCK_WRITE);
- render_result_exr_file_cache_write(re);
- BLI_rw_mutex_unlock(&re->resultmutex);
- }
-
/* unset threadsafety */
g_break = 0;
-
+ BLI_rw_mutex_lock(&re->partsmutex, THREAD_LOCK_WRITE);
RE_parts_free(re);
+ BLI_rw_mutex_unlock(&re->partsmutex);
re->viewplane = viewplane; /* restore viewplane, modified by pano render */
}
More information about the Bf-blender-cvs
mailing list