[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55961] trunk/blender: Fix for material icon rendering with cycles

Sergey Sharybin sergey.vfx at gmail.com
Thu Apr 11 14:49:58 CEST 2013


Revision: 55961
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55961
Author:   nazgul
Date:     2013-04-11 12:49:57 +0000 (Thu, 11 Apr 2013)
Log Message:
-----------
Fix for material icon rendering with cycles

Materials icons used to miss transparent background
and were using world environment which didn't give
so nice results.

Reviewed by Brecht, thanks!

Modified Paths:
--------------
    trunk/blender/intern/cycles/blender/blender_shader.cpp
    trunk/blender/source/blender/editors/render/render_preview.c

Modified: trunk/blender/intern/cycles/blender/blender_shader.cpp
===================================================================
--- trunk/blender/intern/cycles/blender/blender_shader.cpp	2013-04-11 12:37:33 UTC (rev 55960)
+++ trunk/blender/intern/cycles/blender/blender_shader.cpp	2013-04-11 12:49:57 UTC (rev 55961)
@@ -886,7 +886,16 @@
 	}
 
 	PointerRNA cscene = RNA_pointer_get(&b_scene.ptr, "cycles");
-	background->transparent = get_boolean(cscene, "film_transparent");
+
+	/* when doing preview render check for BI's transparency settings,
+	 * this is so because bledner's preview render routines are not able
+	 * to tweak all cycles's settings depending on different circumstances
+	 */
+	if(b_engine.is_preview() == false)
+		background->transparent = get_boolean(cscene, "film_transparent");
+	else
+		background->transparent = b_scene.render().alpha_mode() == BL::RenderSettings::alpha_mode_TRANSPARENT;
+
 	background->use = render_layer.use_background;
 
 	if(background->modified(prevbackground))

Modified: trunk/blender/source/blender/editors/render/render_preview.c
===================================================================
--- trunk/blender/source/blender/editors/render/render_preview.c	2013-04-11 12:37:33 UTC (rev 55960)
+++ trunk/blender/source/blender/editors/render/render_preview.c	2013-04-11 12:49:57 UTC (rev 55961)
@@ -382,6 +382,10 @@
 					}
 					else {
 						sce->lay = 1 << MA_SPHERE_A;
+
+						/* same as above, use current scene world to light sphere */
+						if (BKE_scene_use_new_shading_nodes(scene))
+							sce->world = scene->world;
 					}
 				}
 				else {
@@ -1026,6 +1030,7 @@
 {
 	IconPreview *ip = (IconPreview *)customdata;
 	IconPreviewSize *cur_size = ip->sizes.first;
+	int use_new_shading = BKE_scene_use_new_shading_nodes(ip->scene);
 
 	while (cur_size) {
 		ShaderPreview *sp = MEM_callocN(sizeof(ShaderPreview), "Icon ShaderPreview");
@@ -1038,8 +1043,12 @@
 		sp->pr_method = PR_ICON_RENDER;
 		sp->pr_rect = cur_size->rect;
 		sp->id = ip->id;
-		sp->pr_main = G_pr_main;
 
+		if (use_new_shading)
+			sp->pr_main = G_pr_main_cycles;
+		else
+			sp->pr_main = G_pr_main;
+
 		common_preview_startjob(sp, stop, do_update, progress);
 		shader_preview_free(sp);
 




More information about the Bf-blender-cvs mailing list