Revision: 51242
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51242
Author:   nazgul
Date:     2012-10-10 05:56:49 +0000 (Wed, 10 Oct 2012)
Log Message:
-----------
Color Management: fixed color management-less texture rendering

There was a missing check for whether color management enabled or not when
converting byte textures to linear space.

This commit also fixes wrong texture preview rendering, which was applying
sRGB transform twice, making procedural textures bright. This will make
float textures being previewed dark (in a linear space) but that's how it
used to behave in pre-OCIO color management.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/render/render_preview.c
    trunk/blender/source/blender/render/intern/include/render_types.h
    trunk/blender/source/blender/render/intern/source/envmap.c
    trunk/blender/source/blender/render/intern/source/pipeline.c
    trunk/blender/source/blender/render/intern/source/render_texture.c

Modified: trunk/blender/source/blender/editors/render/render_preview.c
===================================================================
--- trunk/blender/source/blender/editors/render/render_preview.c        
2012-10-10 04:47:53 UTC (rev 51241)
+++ trunk/blender/source/blender/editors/render/render_preview.c        
2012-10-10 05:56:49 UTC (rev 51242)
@@ -273,16 +273,7 @@
                
                /* exception: don't apply render part of display transform for 
texture previews or icons */
                if ((id && sp->pr_method == PR_ICON_RENDER) || id_type == 
ID_TE) {
-                       ColorManagedDisplaySettings *display_settings = 
&sce->display_settings;
-                       ColorManagedViewSettings *view_settings = 
&sce->view_settings;
-
-                       const char *default_view_name = 
IMB_colormanagement_view_get_default_name(display_settings->display_device);
-
-                       view_settings->exposure = 0.0f;
-                       view_settings->gamma = 1.0f;
-                       view_settings->flag &= ~COLORMANAGE_VIEW_USE_CURVES;
-
-                       BLI_strncpy(view_settings->view_transform, 
default_view_name, sizeof(view_settings->view_transform));
+                       BKE_scene_disable_color_management(sce);
                }
                
                if ((id && sp->pr_method == PR_ICON_RENDER) && id_type != ID_WO)
@@ -550,7 +541,7 @@
                                         *            color managed as well?
                                         */
                                        IMB_buffer_byte_from_float(rect_byte, 
rres.rectf,
-                                                                  4, dither, 
IB_PROFILE_SRGB, IB_PROFILE_LINEAR_RGB, do_predivide,
+                                                                  4, dither, 
IB_PROFILE_SRGB, IB_PROFILE_SRGB, do_predivide,
                                                                   rres.rectx, 
rres.recty, rres.rectx, rres.rectx);
                                }
 

Modified: trunk/blender/source/blender/render/intern/include/render_types.h
===================================================================
--- trunk/blender/source/blender/render/intern/include/render_types.h   
2012-10-10 04:47:53 UTC (rev 51241)
+++ trunk/blender/source/blender/render/intern/include/render_types.h   
2012-10-10 05:56:49 UTC (rev 51242)
@@ -120,6 +120,9 @@
        /* state settings */
        short flag, osa, ok, result_ok;
        
+       /* due to performance issues, getting initialized from color management 
settings once on Render initialization */
+       short scene_color_manage;
+       
        /* result of rendering */
        RenderResult *result;
        /* if render with single-layer option, other rendered layers are stored 
here */

Modified: trunk/blender/source/blender/render/intern/source/envmap.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/envmap.c  2012-10-10 
04:47:53 UTC (rev 51241)
+++ trunk/blender/source/blender/render/intern/source/envmap.c  2012-10-10 
05:56:49 UTC (rev 51242)
@@ -154,6 +154,7 @@
        
        RE_InitState(envre, NULL, &envre->r, NULL, cuberes, cuberes, NULL);
        envre->scene = re->scene;    /* unsure about this... */
+       envre->scene_color_manage = re->scene_color_manage;
        envre->lay = re->lay;
 
        /* view stuff in env render */

Modified: trunk/blender/source/blender/render/intern/source/pipeline.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/pipeline.c        
2012-10-10 04:47:53 UTC (rev 51241)
+++ trunk/blender/source/blender/render/intern/source/pipeline.c        
2012-10-10 05:56:49 UTC (rev 51242)
@@ -1519,6 +1519,7 @@
        
        re->main = bmain;
        re->scene = sce;
+       re->scene_color_manage = BKE_scene_check_color_management_enabled(sce);
        
        /* first call RE_ReadRenderResult on every renderlayer scene. this 
creates Render structs */
        
@@ -2014,6 +2015,7 @@
        
        re->main = bmain;
        re->scene = scene;
+       re->scene_color_manage = 
BKE_scene_check_color_management_enabled(scene);
        re->camera_override = camera_override;
        re->lay = lay;
        
@@ -2352,6 +2354,7 @@
 
        re->main = bmain;
        re->scene = sce;
+       re->scene_color_manage = BKE_scene_check_color_management_enabled(sce);
        re->lay = sce->lay;
 
        camera = RE_GetCamera(re);
@@ -2396,6 +2399,7 @@
                re = RE_NewRender(scene->id.name);
        RE_InitState(re, NULL, &scene->r, NULL, winx, winy, &disprect);
        re->scene = scene;
+       re->scene_color_manage = 
BKE_scene_check_color_management_enabled(scene);
        
        BLI_rw_mutex_lock(&re->resultmutex, THREAD_LOCK_WRITE);
        success = render_result_exr_file_read(re, 0);

Modified: trunk/blender/source/blender/render/intern/source/render_texture.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/render_texture.c  
2012-10-10 04:47:53 UTC (rev 51241)
+++ trunk/blender/source/blender/render/intern/source/render_texture.c  
2012-10-10 05:56:49 UTC (rev 51242)
@@ -1234,7 +1234,7 @@
                                ImBuf *ibuf = BKE_image_get_ibuf(tex->ima, 
&tex->iuser);
                                
                                /* don't linearize float buffers, assumed to be 
linear */
-                               if (ibuf && !(ibuf->rect_float))
+                               if (ibuf && !(ibuf->rect_float) && 
R.scene_color_manage)
                                        
IMB_colormanagement_colorspace_to_scene_linear_v3(&texres->tr, 
ibuf->rect_colorspace);
                        }
                }
@@ -2384,7 +2384,7 @@
                                        ImBuf *ibuf = BKE_image_get_ibuf(ima, 
&tex->iuser);
                                        
                                        /* don't linearize float buffers, 
assumed to be linear */
-                                       if (ibuf && !(ibuf->rect_float))
+                                       if (ibuf && !(ibuf->rect_float) && 
R.scene_color_manage)
                                                
IMB_colormanagement_colorspace_to_scene_linear_v3(tcol, ibuf->rect_colorspace);
                                }
                                
@@ -2896,7 +2896,7 @@
                        ImBuf *ibuf = BKE_image_get_ibuf(ima, 
&mtex->tex->iuser);
                        
                        /* don't linearize float buffers, assumed to be linear 
*/
-                       if (ibuf && !(ibuf->rect_float))
+                       if (ibuf && !(ibuf->rect_float) && R.scene_color_manage)
                                
IMB_colormanagement_colorspace_to_scene_linear_v3(&texres.tr, 
ibuf->rect_colorspace);
                }
 
@@ -3115,7 +3115,7 @@
                                        ImBuf *ibuf = BKE_image_get_ibuf(ima, 
&tex->iuser);
                                        
                                        /* don't linearize float buffers, 
assumed to be linear */
-                                       if (ibuf && !(ibuf->rect_float))
+                                       if (ibuf && !(ibuf->rect_float) && 
R.scene_color_manage)
                                                
IMB_colormanagement_colorspace_to_scene_linear_v3(tcol, ibuf->rect_colorspace);
                                }
 
@@ -3329,7 +3329,7 @@
                                        ImBuf *ibuf = BKE_image_get_ibuf(ima, 
&tex->iuser);
                                        
                                        /* don't linearize float buffers, 
assumed to be linear */
-                                       if (ibuf && !(ibuf->rect_float))
+                                       if (ibuf && !(ibuf->rect_float) && 
R.scene_color_manage)
                                                
IMB_colormanagement_colorspace_to_scene_linear_v3(&texres.tr, 
ibuf->rect_colorspace);
                                }
 

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to