also new option: -sRGBtex, and renamed -sRGB to -sRGBlight
authorRudolf Polzer <divverent@xonotic.org>
Sat, 29 Oct 2011 14:33:46 +0000 (16:33 +0200)
committerRudolf Polzer <divverent@xonotic.org>
Sat, 29 Oct 2011 14:33:46 +0000 (16:33 +0200)
25 files changed:
tools/quake3/q3map2/branch-manager [deleted symlink]
tools/quake3/q3map2/bsp.c
tools/quake3/q3map2/game__null.h
tools/quake3/q3map2/game_darkplaces.h
tools/quake3/q3map2/game_dq.h
tools/quake3/q3map2/game_ef.h
tools/quake3/q3map2/game_etut.h
tools/quake3/q3map2/game_ja.h
tools/quake3/q3map2/game_jk2.h
tools/quake3/q3map2/game_nexuiz.h
tools/quake3/q3map2/game_prophecy.h
tools/quake3/q3map2/game_qfusion.h
tools/quake3/q3map2/game_quake3.h
tools/quake3/q3map2/game_quakelive.h
tools/quake3/q3map2/game_reaction.h
tools/quake3/q3map2/game_sof2.h
tools/quake3/q3map2/game_tenebrae.h
tools/quake3/q3map2/game_tremulous.h
tools/quake3/q3map2/game_wolf.h
tools/quake3/q3map2/game_wolfet.h
tools/quake3/q3map2/game_xonotic.h
tools/quake3/q3map2/light.c
tools/quake3/q3map2/light_bounce.c
tools/quake3/q3map2/light_ydnar.c
tools/quake3/q3map2/q3map2.h

diff --git a/tools/quake3/q3map2/branch-manager b/tools/quake3/q3map2/branch-manager
deleted file mode 120000 (symlink)
index c446238..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../../../branch-manager
\ No newline at end of file
index 54e14bf..f9fe902 100644 (file)
@@ -683,6 +683,7 @@ int BSPMain( int argc, char **argv )
        maxSurfaceVerts = game->maxSurfaceVerts;
        maxSurfaceIndexes = game->maxSurfaceIndexes;
        emitFlares = game->emitFlares;
+       texturesRGB = game->texturesRGB;
        
        /* process arguments */
        for( i = 1; i < (argc - 1); i++ )
@@ -918,6 +919,16 @@ int BSPMain( int argc, char **argv )
                        Sys_Printf( "Debug portal surfaces enabled\n" );
                        debugPortals = qtrue;
                }
+               else if( !strcmp( argv[ i ], "-sRGBtex" ) )
+               {
+                       texturesRGB = qtrue;
+                       Sys_Printf( "Textures are in sRGB\n" );
+               }
+               else if( !strcmp( argv[ i ], "-nosRGBtex" ) )
+               {
+                       texturesRGB = qfalse;
+                       Sys_Printf( "Textures are linear\n" );
+               }
                else if( !strcmp( argv[ i ], "-altsplit" ) )
                {
                        Sys_Printf( "Alternate BSP splitting (by 27) enabled\n" );
index 0bc61e3..5ff6aba 100644 (file)
@@ -64,6 +64,7 @@ game_t struct
        0,                      /* lightmap width/height */
        0,                      /* lightmap gamma */
        qfalse,                 /* lightmap sRGB */
+       qfalse,                 /* texture sRGB */
        0,                      /* lightmap exposure */
        0,                      /* lightmap compensate */
        0,                      /* lightgrid scale */
index 653beb1..ab73baa 100644 (file)
@@ -55,6 +55,7 @@ game_t struct
        128,                            /* lightmap width/height */
        1.0f,                           /* lightmap gamma */
        qfalse,                         /* lightmap sRGB */
+       qfalse,                         /* texture sRGB */
        200.0f,                         /* lightmap exposure */
        1.0f,                           /* lightmap compensate */
        0.3f,                           /* lightgrid scale */
index 3d6cfe4..6507aec 100644 (file)
@@ -55,6 +55,7 @@ game_t struct
        128,                            /* lightmap width/height */
        1.2f,                           /* lightmap gamma */
        qfalse,                         /* lightmap sRGB */
+       qfalse,                         /* texture sRGB */
        200.0f,                         /* lightmap exposure */
        1.0f,                           /* lightmap compensate */
        0.3f,                           /* lightgrid scale */
index 4c08ab0..1113664 100644 (file)
@@ -114,6 +114,7 @@ game_t struct
        128,                            /* lightmap width/height */
        1.0f,                           /* lightmap gamma */
        qfalse,                         /* lightmap sRGB */
+       qfalse,                         /* texture sRGB */
        1.0f,                           /* lightmap exposure */
        1.0f,                           /* lightmap compensate */
        1.0f,                           /* lightgrid scale */
index ff79162..38bc083 100644 (file)
@@ -149,6 +149,7 @@ game_t struct
        128,                            /* lightmap width/height */
        1.0f,                           /* lightmap gamma */
        qtrue,                          /* lightmap sRGB */
+       qfalse,                         /* texture sRGB (yes, this is incorrect, but we better match ET:UT) */
        1.0f,                           /* lightmap exposure */
        1.0f,                           /* lightmap compensate */
        1.0f,                           /* lightgrid scale */
index 7f4a5fc..3a1a4d4 100644 (file)
@@ -68,6 +68,7 @@ game_t struct
        128,                            /* lightmap width/height */
        1.0f,                           /* lightmap gamma */
        qfalse,                         /* lightmap sRGB */
+       qfalse,                         /* texture sRGB */
        1.0f,                           /* lightmap exposure */
        1.0f,                           /* lightmap compensate */
        1.0f,                           /* lightgrid scale */
index 30bb3d3..4dd4d84 100644 (file)
@@ -65,6 +65,7 @@ game_t struct
        128,                            /* lightmap width/height */
        1.0f,                           /* lightmap gamma */
        qfalse,                         /* lightmap sRGB */
+       qfalse,                         /* texture sRGB */
        1.0f,                           /* lightmap exposure */
        1.0f,                           /* lightmap compensate */
        1.0f,                           /* lightgrid scale */
index 8e0785d..386cfd0 100644 (file)
@@ -64,6 +64,7 @@ game_t struct
        128,                            /* lightmap width/height */
        1.0f,                           /* lightmap gamma */
        qfalse,                         /* lightmap sRGB */
+       qfalse,                         /* texture sRGB */
        1.0f,                           /* lightmap exposure */
        1.0f,                           /* lightmap compensate */
        1.0f,                           /* lightgrid scale */
index a1a4c4b..6d8b0a2 100644 (file)
@@ -55,6 +55,7 @@ game_t struct
        128,                            /* lightmap width/height */
        1.0f,                           /* lightmap gamma */
        qfalse,                         /* lightmap sRGB */
+       qfalse,                         /* texture sRGB */
        200.0f,                         /* lightmap exposure */
        1.0f,                           /* lightmap compensate */
        0.4f,                           /* lightgrid scale */
index 0fd336c..681f75d 100644 (file)
@@ -116,6 +116,7 @@ game_t struct
        512,                            /* lightmap width/height */
        1.0f,                           /* lightmap gamma */
        qfalse,                         /* lightmap sRGB */
+       qfalse,                         /* texture sRGB */
        1.0f,                           /* lightmap exposure */
        1.0f,                           /* lightmap compensate */
        1.0f,                           /* lightgrid scale */
index be09468..76b3ff3 100644 (file)
@@ -113,6 +113,7 @@ game_t struct
        128,                            /* lightmap width/height */
        1.0f,                           /* lightmap gamma */
        qfalse,                         /* lightmap sRGB */
+       qfalse,                         /* texture sRGB */
        1.0f,                           /* lightmap exposure */
        1.0f,                           /* lightmap compensate */
        1.0f,                           /* lightgrid scale */
index a9425a8..ba781cd 100644 (file)
@@ -65,6 +65,7 @@ game_t struct
        128,                            /* lightmap width/height */
        1.0f,                           /* lightmap gamma */
        qfalse,                         /* lightmap sRGB */
+       qfalse,                         /* texture sRGB */
        1.0f,                           /* lightmap exposure */
        1.0f,                           /* lightmap compensate */
        1.0f,                           /* lightgrid scale */
index 97b01c4..ea59e35 100644 (file)
@@ -85,6 +85,7 @@ game_t struct
        128,                            /* lightmap width/height */
        1.0f,                           /* lightmap gamma */
        qfalse,                         /* lightmap sRGB */
+       qfalse,                         /* texture sRGB */
        1.0f,                           /* lightmap exposure */
        1.0f,                           /* lightmap compensate */
        1.0f,                           /* lightgrid scale */
index e7453f8..98081da 100644 (file)
@@ -140,6 +140,7 @@ game_t struct
        128,                                    /* lightmap width/height */
        1.0f,                                   /* lightmap gamma */
        qfalse,                                 /* lightmap sRGB */
+       qfalse,                                 /* texture sRGB */
        1.0f,                                   /* lightmap exposure */
        1.0f,                                   /* lightmap compensate */
        1.0f,                           /* lightgrid scale */
index 2117aa4..9e0658f 100644 (file)
@@ -113,6 +113,7 @@ game_t struct
        512,                            /* lightmap width/height */
        2.0f,                           /* lightmap gamma */
        qfalse,                         /* lightmap sRGB */
+       qfalse,                         /* texture sRGB */
        1.0f,                           /* lightmap exposure */
        1.0f,                           /* lightmap compensate */
        1.0f,                           /* lightgrid scale */
index 9a1cb79..08027fe 100644 (file)
@@ -71,6 +71,7 @@ game_t struct
        128,                            /* lightmap width/height */
        1.0f,                           /* lightmap gamma */
        qfalse,                         /* lightmap sRGB */
+       qfalse,                         /* texture sRGB */
        1.0f,                           /* lightmap exposure */
        1.0f,                           /* lightmap compensate */
        1.0f,                           /* lightgrid scale */
index fc55c88..94339e6 100644 (file)
@@ -130,6 +130,7 @@ game_t struct
        128,                            /* lightmap width/height */
        1.0f,                           /* lightmap gamma */
        qfalse,                         /* lightmap sRGB */
+       qfalse,                         /* texture sRGB */
        1.0f,                           /* lightmap exposure */
        1.0f,                           /* lightmap compensate */
        1.0f,                           /* lightgrid scale */
index fdda4d9..bcb3098 100644 (file)
@@ -67,6 +67,7 @@ game_t struct
        128,                            /* lightmap width/height */
        1.0f,                           /* lightmap gamma */
        qfalse,                         /* lightmap sRGB */
+       qfalse,                         /* texture sRGB */
        1.0f,                           /* lightmap exposure */
        1.0f,                           /* lightmap compensate */
        1.0f,                           /* lightgrid scale */
index 83d7715..2512193 100644 (file)
@@ -64,6 +64,7 @@ game_t struct
        128, /* lightmap width/height */
        1.0f, /* lightmap gamma */
        qfalse, /* lightmap sRGB */
+       qfalse, /* texture sRGB */
        1.0f, /* lightmap exposure */
        1.0f, /* lightmap compensate */
        1.0f, /* lightgrid scale */
index ffdd500..c7f1e72 100644 (file)
@@ -2077,6 +2077,12 @@ int LightMain( int argc, char **argv )
        else
                Sys_Printf( " lightmap colorspace: linear\n" );
 
+       texturesRGB = game->texturesRGB;
+       if(texturesRGB)
+               Sys_Printf( " texture colorspace: sRGB\n" );
+       else
+               Sys_Printf( " texture colorspace: linear\n" );
+
        lightmapCompensate = game->lightmapCompensate;
        Sys_Printf( " lightning compensation: %f\n", lightmapCompensate );
 
@@ -2235,18 +2241,30 @@ int LightMain( int argc, char **argv )
                        i++;
                }
                
-               else if( !strcmp( argv[ i ], "-sRGB" ) )
+               else if( !strcmp( argv[ i ], "-sRGBlight" ) )
                {
                        lightmapsRGB = qtrue;
                        Sys_Printf( "Lighting is in sRGB\n" );
                }
 
-               else if( !strcmp( argv[ i ], "-nosRGB" ) )
+               else if( !strcmp( argv[ i ], "-nosRGBlight" ) )
                {
                        lightmapsRGB = qfalse;
                        Sys_Printf( "Lighting is linear\n" );
                }
 
+               else if( !strcmp( argv[ i ], "-sRGBtex" ) )
+               {
+                       texturesRGB = qtrue;
+                       Sys_Printf( "Textures are in sRGB\n" );
+               }
+
+               else if( !strcmp( argv[ i ], "-nosRGBtex" ) )
+               {
+                       texturesRGB = qfalse;
+                       Sys_Printf( "Textures are linear\n" );
+               }
+
                else if( !strcmp( argv[ i ], "-exposure" ) )
                {
                        f = atof( argv[ i + 1 ] );
index 0e59dde..d78c6de 100644 (file)
@@ -233,6 +233,14 @@ qboolean RadSampleImage( byte *pixels, int width, int height, float st[ 2 ], flo
        pixels += (y * width * 4) + (x * 4);
        VectorCopy( pixels, color );
        color[ 3 ] = pixels[ 3 ];
+
+       if(texturesRGB)
+       {
+               color[0] = Image_LinearFloatFromsRGBFloat(color[0] * (1.0 / 255.0)) * 255.0;
+               color[1] = Image_LinearFloatFromsRGBFloat(color[1] * (1.0 / 255.0)) * 255.0;
+               color[2] = Image_LinearFloatFromsRGBFloat(color[2] * (1.0 / 255.0)) * 255.0;
+       }
+
        return qtrue;
 }
 
index 09a8e48..b01084d 100644 (file)
@@ -44,7 +44,6 @@ ColorToBytes()
 ydnar: moved to here 2001-02-04
 */
 
-#define Image_sRGBFloatFromLinear(c) (((c) < 0.8014848f) ? (c) * 0.05046875f : 1.055f * (float)pow((c)*(1.0f/256.0f), 1.0f/2.4f) - 0.055f)
 void ColorToBytes( const float *color, byte *colorBytes, float scale )
 {
        int             i;
@@ -125,9 +124,9 @@ void ColorToBytes( const float *color, byte *colorBytes, float scale )
        /* sRGB lightmaps */
        if(lightmapsRGB)
        {
-               sample[0] = floor(Image_sRGBFloatFromLinear(sample[0]) * 255.0 + 0.5);
-               sample[1] = floor(Image_sRGBFloatFromLinear(sample[1]) * 255.0 + 0.5);
-               sample[2] = floor(Image_sRGBFloatFromLinear(sample[2]) * 255.0 + 0.5);
+               sample[0] = floor(Image_sRGBFloatFromLinearFloat(sample[0] * (1.0 / 255.0)) * 255.0 + 0.5);
+               sample[1] = floor(Image_sRGBFloatFromLinearFloat(sample[1] * (1.0 / 255.0)) * 255.0 + 0.5);
+               sample[2] = floor(Image_sRGBFloatFromLinearFloat(sample[2] * (1.0 / 255.0)) * 255.0 + 0.5);
        }
        
        /* store it off */
index 9172415..8c240ea 100644 (file)
@@ -566,6 +566,7 @@ typedef struct game_s
        int                                     lightmapSize;                                   /* bsp lightmap width/height */
        float                           lightmapGamma;                                  /* default lightmap gamma */
        qboolean                        lightmapsRGB;                                   /* default lightmap sRGB mode */
+       qboolean                        texturesRGB;                                    /* default texture sRGB mode */
        float                           lightmapExposure;                               /* default lightmap exposure */
        float                           lightmapCompensate;                             /* default lightmap compensate value */
        float                           gridScale;                                              /* vortex: default lightgrid scale (affects both directional and ambient spectres) */
@@ -2298,6 +2299,7 @@ Q_EXTERN qboolean                 inGrid Q_ASSIGN(0);
 /* ydnar: lightmap gamma/compensation */
 Q_EXTERN float                         lightmapGamma Q_ASSIGN( 1.0f );
 Q_EXTERN float                         lightmapsRGB Q_ASSIGN( qfalse );
+Q_EXTERN float                         texturesRGB Q_ASSIGN( qfalse );
 Q_EXTERN float                         lightmapExposure Q_ASSIGN( 1.0f );
 Q_EXTERN float                         lightmapCompensate Q_ASSIGN( 1.0f );
 
@@ -2540,5 +2542,8 @@ Q_EXTERN bspAdvertisement_t       bspAds[ MAX_MAP_ADVERTISEMENTS ];
 
 #define AUTOEXPAND_BY_REALLOC_BSP(suffix, def) AUTOEXPAND_BY_REALLOC(bsp##suffix, numBSP##suffix, allocatedBSP##suffix, def)
 
+#define Image_LinearFloatFromsRGBFloat(c) (((c) <= 0.04045f) ? (c) * (1.0f / 12.92f) : (float)pow(((c) + 0.055f)*(1.0f/1.055f), 2.4f))
+#define Image_sRGBFloatFromLinearFloat(c) (((c) < 0.0031308f) ? (c) * 12.92f : 1.055f * (float)pow((c), 1.0f/2.4f) - 0.055f)
+
 /* end marker */
 #endif