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