Revision: 30872
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=30872
Author:   blendix
Date:     2010-07-29 12:09:20 +0200 (Thu, 29 Jul 2010)

Log Message:
-----------
Fix #23073: glsl and 3d view background color didn't take color managment into
account yet, should now be consistent with render.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
    trunk/blender/source/blender/gpu/intern/gpu_material.c
    trunk/blender/source/blender/gpu/intern/gpu_shader_material.glsl
    trunk/blender/source/blender/gpu/intern/gpu_shader_material.glsl.c

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_draw.c     
2010-07-29 08:08:34 UTC (rev 30871)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_draw.c     
2010-07-29 10:09:20 UTC (rev 30872)
@@ -1968,6 +1968,7 @@
 {
        Scene *sce;
        Base *base;
+       float backcol[3];
        int bwinx, bwiny;
 
        glPushMatrix();
@@ -1987,7 +1988,11 @@
 
        /* set background color, fallback on the view background color */
        if(scene->world) {
-               glClearColor(scene->world->horr, scene->world->horg, 
scene->world->horb, 0.0);
+               if(scene->r.color_mgt_flag & R_COLOR_MANAGEMENT)
+                       linearrgb_to_srgb_v3_v3(backcol, &scene->world->horr);
+               else
+                       copy_v3_v3(backcol, &scene->world->horr);
+               glClearColor(backcol[0], backcol[1], backcol[2], 0.0);
        }
        else {
                UI_ThemeClearColor(TH_BACK);    
@@ -2205,6 +2210,7 @@
        Scene *sce;
        Base *base;
        Object *ob;
+       float backcol[3];
        int retopo= 0, sculptparticle= 0;
        Object *obact = OBACT;
        char *grid_unit= NULL;
@@ -2223,8 +2229,13 @@
        }
 
        /* clear background */
-       if((v3d->flag2 & V3D_RENDER_OVERRIDE) && scene->world)
-               glClearColor(scene->world->horr, scene->world->horg, 
scene->world->horb, 0.0);
+       if((v3d->flag2 & V3D_RENDER_OVERRIDE) && scene->world) {
+               if(scene->r.color_mgt_flag & R_COLOR_MANAGEMENT)
+                       linearrgb_to_srgb_v3_v3(backcol, &scene->world->horr);
+               else
+                       copy_v3_v3(backcol, &scene->world->horr);
+               glClearColor(backcol[0], backcol[1], backcol[2], 0.0);
+       }
        else
                UI_ThemeClearColor(TH_BACK);
 

Modified: trunk/blender/source/blender/gpu/intern/gpu_material.c
===================================================================
--- trunk/blender/source/blender/gpu/intern/gpu_material.c      2010-07-29 
08:08:34 UTC (rev 30871)
+++ trunk/blender/source/blender/gpu/intern/gpu_material.c      2010-07-29 
10:09:20 UTC (rev 30872)
@@ -1004,6 +1004,10 @@
                                        else
                                                GPU_link(mat, "set_value_one", 
&tin);
                                }
+
+                               if(tex->type==TEX_IMAGE)
+                                       if(mat->scene->r.color_mgt_flag & 
R_COLOR_MANAGEMENT)
+                                               GPU_link(mat, 
"srgb_to_linearrgb", tcol, tcol);
                                
                                if(mtex->mapto & MAP_COL) {
                                        GPUNodeLink *colfac;
@@ -1244,6 +1248,9 @@
                mat->obcolalpha = 1;
                GPU_link(mat, "shade_alpha_obcolor", shr->combined, 
GPU_builtin(GPU_OBCOLOR), &shr->combined);
        }
+
+       if(mat->scene->r.color_mgt_flag & R_COLOR_MANAGEMENT)
+               GPU_link(mat, "linearrgb_to_srgb", shr->combined, 
&shr->combined);
 }
 
 GPUNodeLink *GPU_blender_material(GPUMaterial *mat, Material *ma)

Modified: trunk/blender/source/blender/gpu/intern/gpu_shader_material.glsl
===================================================================
--- trunk/blender/source/blender/gpu/intern/gpu_shader_material.glsl    
2010-07-29 08:08:34 UTC (rev 30871)
+++ trunk/blender/source/blender/gpu/intern/gpu_shader_material.glsl    
2010-07-29 10:09:20 UTC (rev 30872)
@@ -75,6 +75,38 @@
        outcol = vec4(rgb, hsv.w);
 }
 
+float srgb_to_linearrgb(float c)
+{
+       if(c < 0.04045)
+               return (c < 0.0)? 0.0: c * (1.0/12.92);
+       else
+               return pow((c + 0.055)*(1.0/1.055), 2.4);
+}
+
+float linearrgb_to_srgb(float c)
+{
+       if(c < 0.0031308)
+               return (c < 0.0)? 0.0: c * 12.92;
+       else
+               return 1.055 * pow(c, 1.0/2.4) - 0.055f;
+}
+
+void srgb_to_linearrgb(vec4 col_from, out vec4 col_to)
+{
+       col_to.r = srgb_to_linearrgb(col_from.r);
+       col_to.g = srgb_to_linearrgb(col_from.g);
+       col_to.b = srgb_to_linearrgb(col_from.b);
+       col_to.a = col_from.a;
+}
+
+void linearrgb_to_srgb(vec4 col_from, out vec4 col_to)
+{
+       col_to.r = linearrgb_to_srgb(col_from.r);
+       col_to.g = linearrgb_to_srgb(col_from.g);
+       col_to.b = linearrgb_to_srgb(col_from.b);
+       col_to.a = col_from.a;
+}
+
 #define M_PI 3.14159265358979323846
 
 /*********** SHADER NODES ***************/

Modified: trunk/blender/source/blender/gpu/intern/gpu_shader_material.glsl.c
===================================================================
--- trunk/blender/source/blender/gpu/intern/gpu_shader_material.glsl.c  
2010-07-29 08:08:34 UTC (rev 30871)
+++ trunk/blender/source/blender/gpu/intern/gpu_shader_material.glsl.c  
2010-07-29 10:09:20 UTC (rev 30872)
@@ -1,192 +1,214 @@
 /* DataToC output of file <gpu_shader_material_glsl> */
 
-int datatoc_gpu_shader_material_glsl_size= 33537;
+int datatoc_gpu_shader_material_glsl_size= 34246;
 char datatoc_gpu_shader_material_glsl[]= {
- 10,
-102,108,111, 97,116, 32,101,120,112, 95, 98,108,101,110,100,101,114, 
40,102,108,111, 97,116, 32,102, 41, 10,123, 10,  9,114,101,
-116,117,114,110, 32,112,111,119, 40, 50, 46, 55, 49, 56, 50, 56, 49, 56, 50, 
56, 52, 54, 44, 32,102, 41, 59, 10,125, 10, 10,118,
-111,105,100, 32,114,103, 98, 95,116,111, 95,104,115,118, 40,118,101, 99, 52, 
32,114,103, 98, 44, 32,111,117,116, 32,118,101, 99,
- 52, 32,111,117,116, 99,111,108, 41, 10,123, 10,  9,102,108,111, 97,116, 32, 
99,109, 97,120, 44, 32, 99,109,105,110, 44, 32,104,
- 44, 32,115, 44, 32,118, 44, 32, 99,100,101,108,116, 97, 59, 10,  9,118,101, 
99, 51, 32, 99, 59, 10, 10,  9, 99,109, 97,120, 32,
- 61, 32,109, 97,120, 40,114,103, 98, 91, 48, 93, 44, 32,109, 97,120, 
40,114,103, 98, 91, 49, 93, 44, 32,114,103, 98, 91, 50, 93,
- 41, 41, 59, 10,  9, 99,109,105,110, 32, 61, 32,109,105,110, 40,114,103, 98, 
91, 48, 93, 44, 32,109,105,110, 40,114,103, 98, 91,
- 49, 93, 44, 32,114,103, 98, 91, 50, 93, 41, 41, 59, 10,  9, 
99,100,101,108,116, 97, 32, 61, 32, 99,109, 97,120, 45, 99,109,105,
-110, 59, 10, 10,  9,118, 32, 61, 32, 99,109, 97,120, 59, 10,  9,105,102, 32, 
40, 99,109, 97,120, 33, 61, 48, 46, 48, 41, 10,  9,
-  9,115, 32, 61, 32, 99,100,101,108,116, 97, 47, 99,109, 97,120, 59, 10,  
9,101,108,115,101, 32,123, 10,  9,  9,115, 32, 61, 32,
- 48, 46, 48, 59, 10,  9,  9,104, 32, 61, 32, 48, 46, 48, 59, 10,  9,125, 10, 
10,  9,105,102, 32, 40,115, 32, 61, 61, 32, 48, 46,
- 48, 41, 32,123, 10,  9,  9,104, 32, 61, 32, 48, 46, 48, 59, 10,  9,125, 10,  
9,101,108,115,101, 32,123, 10,  9,  9, 99, 32, 61,
- 32, 40,118,101, 99, 51, 40, 99,109, 97,120, 44, 32, 99,109, 97,120, 44, 32, 
99,109, 97,120, 41, 32, 45, 32,114,103, 98, 46,120,
-121,122, 41, 47, 99,100,101,108,116, 97, 59, 10, 10,  9,  9,105,102, 32, 
40,114,103, 98, 46,120, 61, 61, 99,109, 97,120, 41, 32,
-104, 32, 61, 32, 99, 91, 50, 93, 32, 45, 32, 99, 91, 49, 93, 59, 10,  9,  
9,101,108,115,101, 32,105,102, 32, 40,114,103, 98, 46,
-121, 61, 61, 99,109, 97,120, 41, 32,104, 32, 61, 32, 50, 46, 48, 32, 43, 32, 
99, 91, 48, 93, 32, 45, 32, 32, 99, 91, 50, 93, 59,
- 10,  9,  9,101,108,115,101, 32,104, 32, 61, 32, 52, 46, 48, 32, 43, 32, 99, 
91, 49, 93, 32, 45, 32, 99, 91, 48, 93, 59, 10, 10,
-  9,  9,104, 32, 47, 61, 32, 54, 46, 48, 59, 10, 10,  9,  9,105,102, 32, 
40,104, 60, 48, 46, 48, 41, 10,  9,  9,  9,104, 32, 43,
- 61, 32, 49, 46, 48, 59, 10,  9,125, 10, 10,  9,111,117,116, 99,111,108, 32, 
61, 32,118,101, 99, 52, 40,104, 44, 32,115, 44, 32,
-118, 44, 32,114,103, 98, 46,119, 41, 59, 10,125, 10, 10,118,111,105,100, 
32,104,115,118, 95,116,111, 95,114,103, 98, 40,118,101,
- 99, 52, 32,104,115,118, 44, 32,111,117,116, 32,118,101, 99, 52, 
32,111,117,116, 99,111,108, 41, 10,123, 10,  9,102,108,111, 97,
-116, 32,105, 44, 32,102, 44, 32,112, 44, 32,113, 44, 32,116, 44, 32,104, 44, 
32,115, 44, 32,118, 59, 10,  9,118,101, 99, 51, 32,
-114,103, 98, 59, 10, 10,  9,104, 32, 61, 32,104,115,118, 91, 48, 93, 59, 10,  
9,115, 32, 61, 32,104,115,118, 91, 49, 93, 59, 10,
-  9,118, 32, 61, 32,104,115,118, 91, 50, 93, 59, 10, 10,  9,105,102, 40,115, 
61, 61, 48, 46, 48, 41, 32,123, 10,  9,  9,114,103,
- 98, 32, 61, 32,118,101, 99, 51, 40,118, 44, 32,118, 44, 32,118, 41, 59, 10,  
9,125, 10,  9,101,108,115,101, 32,123, 10,  9,  9,
-105,102, 40,104, 61, 61, 49, 46, 48, 41, 10,  9,  9,  9,104, 32, 61, 32, 48, 
46, 48, 59, 10,  9,  9, 10,  9,  9,104, 32, 42, 61,
- 32, 54, 46, 48, 59, 10,  9,  9,105, 32, 61, 32,102,108,111,111,114, 40,104, 
41, 59, 10,  9,  9,102, 32, 61, 32,104, 32, 45, 32,
-105, 59, 10,  9,  9,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,102, 44, 
32,102, 44, 32,102, 41, 59, 10,  9,  9,112, 32, 61, 32,
-118, 42, 40, 49, 46, 48, 45,115, 41, 59, 10,  9,  9,113, 32, 61, 32,118, 42, 
40, 49, 46, 48, 45, 40,115, 42,102, 41, 41, 59, 10,
-  9,  9,116, 32, 61, 32,118, 42, 40, 49, 46, 48, 45, 40,115, 42, 40, 49, 46, 
48, 45,102, 41, 41, 41, 59, 10,  9,  9, 10,  9,  9,
-105,102, 32, 40,105, 32, 61, 61, 32, 48, 46, 48, 41, 32,114,103, 98, 32, 61, 
32,118,101, 99, 51, 40,118, 44, 32,116, 44, 32,112,
- 41, 59, 10,  9,  9,101,108,115,101, 32,105,102, 32, 40,105, 32, 61, 61, 32, 
49, 46, 48, 41, 32,114,103, 98, 32, 61, 32,118,101,
- 99, 51, 40,113, 44, 32,118, 44, 32,112, 41, 59, 10,  9,  9,101,108,115,101, 
32,105,102, 32, 40,105, 32, 61, 61, 32, 50, 46, 48,
- 41, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,112, 44, 32,118, 44, 
32,116, 41, 59, 10,  9,  9,101,108,115,101, 32,105,102,
- 32, 40,105, 32, 61, 61, 32, 51, 46, 48, 41, 32,114,103, 98, 32, 61, 
32,118,101, 99, 51, 40,112, 44, 32,113, 44, 32,118, 41, 59,
- 10,  9,  9,101,108,115,101, 32,105,102, 32, 40,105, 32, 61, 61, 32, 52, 46, 
48, 41, 32,114,103, 98, 32, 61, 32,118,101, 99, 51,
- 40,116, 44, 32,112, 44, 32,118, 41, 59, 10,  9,  9,101,108,115,101, 
32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,118, 44, 32,
-112, 44, 32,113, 41, 59, 10,  9,125, 10, 10,  9,111,117,116, 99,111,108, 32, 
61, 32,118,101, 99, 52, 40,114,103, 98, 44, 32,104,
-115,118, 46,119, 41, 59, 10,125, 10, 10, 35,100,101,102,105,110,101, 32, 77, 
95, 80, 73, 32, 51, 46, 49, 52, 49, 53, 57, 50, 54,
- 53, 51, 53, 56, 57, 55, 57, 51, 50, 51, 56, 52, 54, 10, 10, 47, 42, 42, 42, 
42, 42, 42, 42, 42, 42, 42, 42, 32, 83, 72, 65, 68,
- 69, 82, 32, 78, 79, 68, 69, 83, 32, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 
42, 42, 42, 42, 42, 47, 10, 10,118,111,105,100, 32,
-118, 99,111,108, 95, 97,116,116,114,105, 98,117,116,101, 40,118,101, 99, 52, 
32, 97,116,116,118, 99,111,108, 44, 32,111,117,116,
- 32,118,101, 99, 52, 32,118, 99,111,108, 41, 10,123, 10,  9,118, 99,111,108, 
32, 61, 32,118,101, 99, 52, 40, 97,116,116,118, 99,
-111,108, 46,120, 47, 50, 53, 53, 46, 48, 44, 32, 97,116,116,118, 99,111,108, 
46,121, 47, 50, 53, 53, 46, 48, 44, 32, 97,116,116,
-118, 99,111,108, 46,122, 47, 50, 53, 53, 46, 48, 44, 32, 49, 46, 48, 41, 59, 
10,125, 10, 10,118,111,105,100, 32,117,118, 95, 97,
-116,116,114,105, 98,117,116,101, 40,118,101, 99, 50, 32, 97,116,116,117,118, 
44, 32,111,117,116, 32,118,101, 99, 51, 32,117,118,

@@ Diff output truncated at 10240 characters. @@

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

Reply via email to