Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Stockner <lukas.stockner@freenet.de>2017-05-03 19:33:02 +0300
committerLukas Stockner <lukas.stockner@freenet.de>2017-05-03 19:33:02 +0300
commit82e242cc7287ce56d10f88a76de5418a7b20e239 (patch)
treec513d6537cfd3d3a1b3d098a8a4f45c55611f165 /intern/cycles/blender/blender_session.cpp
parent2564d929fc5f75403bc5ca051fb33bc7b8874646 (diff)
parent15189baa5231d70c1363192eb01b83fa946f36f0 (diff)
Merge branch 'master' into blender2.8
Diffstat (limited to 'intern/cycles/blender/blender_session.cpp')
-rw-r--r--intern/cycles/blender/blender_session.cpp117
1 files changed, 14 insertions, 103 deletions
diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp
index 3e851adbf54..6f2e7065d97 100644
--- a/intern/cycles/blender/blender_session.cpp
+++ b/intern/cycles/blender/blender_session.cpp
@@ -247,90 +247,6 @@ void BlenderSession::free_session()
delete session;
}
-static PassType get_pass_type(BL::RenderPass& b_pass)
-{
- switch(b_pass.type()) {
- case BL::RenderPass::type_COMBINED:
- return PASS_COMBINED;
-
- case BL::RenderPass::type_Z:
- return PASS_DEPTH;
- case BL::RenderPass::type_MIST:
- return PASS_MIST;
- case BL::RenderPass::type_NORMAL:
- return PASS_NORMAL;
- case BL::RenderPass::type_OBJECT_INDEX:
- return PASS_OBJECT_ID;
- case BL::RenderPass::type_UV:
- return PASS_UV;
- case BL::RenderPass::type_VECTOR:
- return PASS_MOTION;
- case BL::RenderPass::type_MATERIAL_INDEX:
- return PASS_MATERIAL_ID;
-
- case BL::RenderPass::type_DIFFUSE_DIRECT:
- return PASS_DIFFUSE_DIRECT;
- case BL::RenderPass::type_GLOSSY_DIRECT:
- return PASS_GLOSSY_DIRECT;
- case BL::RenderPass::type_TRANSMISSION_DIRECT:
- return PASS_TRANSMISSION_DIRECT;
- case BL::RenderPass::type_SUBSURFACE_DIRECT:
- return PASS_SUBSURFACE_DIRECT;
-
- case BL::RenderPass::type_DIFFUSE_INDIRECT:
- return PASS_DIFFUSE_INDIRECT;
- case BL::RenderPass::type_GLOSSY_INDIRECT:
- return PASS_GLOSSY_INDIRECT;
- case BL::RenderPass::type_TRANSMISSION_INDIRECT:
- return PASS_TRANSMISSION_INDIRECT;
- case BL::RenderPass::type_SUBSURFACE_INDIRECT:
- return PASS_SUBSURFACE_INDIRECT;
-
- case BL::RenderPass::type_DIFFUSE_COLOR:
- return PASS_DIFFUSE_COLOR;
- case BL::RenderPass::type_GLOSSY_COLOR:
- return PASS_GLOSSY_COLOR;
- case BL::RenderPass::type_TRANSMISSION_COLOR:
- return PASS_TRANSMISSION_COLOR;
- case BL::RenderPass::type_SUBSURFACE_COLOR:
- return PASS_SUBSURFACE_COLOR;
-
- case BL::RenderPass::type_EMIT:
- return PASS_EMISSION;
- case BL::RenderPass::type_ENVIRONMENT:
- return PASS_BACKGROUND;
- case BL::RenderPass::type_AO:
- return PASS_AO;
- case BL::RenderPass::type_SHADOW:
- return PASS_SHADOW;
-
- case BL::RenderPass::type_DIFFUSE:
- case BL::RenderPass::type_COLOR:
- case BL::RenderPass::type_REFRACTION:
- case BL::RenderPass::type_SPECULAR:
- case BL::RenderPass::type_REFLECTION:
- return PASS_NONE;
-#ifdef WITH_CYCLES_DEBUG
- case BL::RenderPass::type_DEBUG:
- {
- switch(b_pass.debug_type()) {
- case BL::RenderPass::debug_type_BVH_TRAVERSED_NODES:
- return PASS_BVH_TRAVERSED_NODES;
- case BL::RenderPass::debug_type_BVH_TRAVERSED_INSTANCES:
- return PASS_BVH_TRAVERSED_INSTANCES;
- case BL::RenderPass::debug_type_BVH_INTERSECTIONS:
- return PASS_BVH_INTERSECTIONS;
- case BL::RenderPass::debug_type_RAY_BOUNCES:
- return PASS_RAY_BOUNCES;
- }
- break;
- }
-#endif
- }
-
- return PASS_NONE;
-}
-
static ShaderEvalType get_shader_type(const string& pass_type)
{
const char *shader_type = pass_type.c_str();
@@ -487,22 +403,11 @@ void BlenderSession::render()
/* add passes */
array<Pass> passes;
- Pass::add(PASS_COMBINED, passes);
-
if(session_params.device.advanced_shading) {
-
- /* loop over passes */
- BL::RenderLayer::passes_iterator b_pass_iter;
-
- for(b_rlay.passes.begin(b_pass_iter); b_pass_iter != b_rlay.passes.end(); ++b_pass_iter) {
- BL::RenderPass b_pass(*b_pass_iter);
- PassType pass_type = get_pass_type(b_pass);
-
- if(pass_type == PASS_MOTION && scene->integrator->motion_blur)
- continue;
- if(pass_type != PASS_NONE)
- Pass::add(pass_type, passes);
- }
+ passes = sync->sync_render_passes(b_rlay, *b_layer_iter);
+ }
+ else {
+ Pass::add(PASS_COMBINED, passes);
}
buffer_params.passes = passes;
@@ -757,19 +662,25 @@ void BlenderSession::do_write_update_render_result(BL::RenderResult& b_rr,
BL::RenderPass b_pass(*b_iter);
/* find matching pass type */
- PassType pass_type = get_pass_type(b_pass);
+ PassType pass_type = BlenderSync::get_pass_type(b_pass);
int components = b_pass.channels();
- /* copy pixels */
- if(!buffers->get_pass_rect(pass_type, exposure, sample, components, &pixels[0]))
+ bool read = false;
+ if(pass_type != PASS_NONE) {
+ /* copy pixels */
+ read = buffers->get_pass_rect(pass_type, exposure, sample, components, &pixels[0]);
+ }
+
+ if(!read) {
memset(&pixels[0], 0, pixels.size()*sizeof(float));
+ }
b_pass.rect(&pixels[0]);
}
}
else {
/* copy combined pass */
- BL::RenderPass b_combined_pass(b_rlay.passes.find_by_type(BL::RenderPass::type_COMBINED, b_rview_name.c_str()));
+ BL::RenderPass b_combined_pass(b_rlay.passes.find_by_name("Combined", b_rview_name.c_str()));
if(buffers->get_pass_rect(PASS_COMBINED, exposure, sample, 4, &pixels[0]))
b_combined_pass.rect(&pixels[0]);
}