* -saturation light switch, default = 1, affects lightmaps and vertex color; > 1 = saturate, 0 = grayscale, < 0 = complementary colors

This commit is contained in:
Garux 2021-03-08 13:34:58 +03:00
parent ac1dd904f1
commit 858ec974f7
4 changed files with 26 additions and 2 deletions

View File

@ -583,7 +583,6 @@ $(INSTALLDIR)/q3map2.$(EXE): \
libddslib.$(A) \
libfilematch.$(A) \
libl_net.$(A) \
libmathlib.$(A) \
libpicomodel.$(A) \
$(if $(findstring $(OS),Win32),icons/q3map2.o,) \
@ -749,7 +748,6 @@ $(INSTALLDIR)/radiant.$(EXE): \
libcmdlib.$(A) \
libgtkutil.$(A) \
libl_net.$(A) \
libmathlib.$(A) \
libprofile.$(A) \
libquickhull.$(A) \
libxmllib.$(A) \

View File

@ -2248,6 +2248,13 @@ int LightMain( int argc, char **argv ){
lightmapContrast = ( 259 * ( lightmapContrast + 255 ) ) / ( 255 * ( 259 - lightmapContrast ) );
}
/* Lighting saturation */
else if( striEqual( argv[ i ], "-saturation" ) ){
g_lightmapSaturation = atof( argv[ i + 1 ] );
Sys_Printf( "Lighting saturation set to %f\n", g_lightmapSaturation );
i++;
}
/* ydnar switches */
else if ( striEqual( argv[ i ], "-bounce" ) ) {
bounce = std::max( 0, atoi( argv[ i + 1 ] ) );

View File

@ -32,6 +32,21 @@
#include "q3map2.h"
// http://www.graficaobscura.com/matrix/index.html
static void color_saturate( Vector3& color, float saturation ){
/* This is the luminance vector. Notice here that we do not use the standard NTSC weights of 0.299, 0.587, and 0.114.
The NTSC weights are only applicable to RGB colors in a gamma 2.2 color space. For linear RGB colors these values are better. */
const Vector3 rgb2gray( 0.3086, 0.6094, 0.0820 );
Matrix4 tra( g_matrix4_identity );
tra.x().vec3().set( rgb2gray.x() * ( 1 - saturation ) );
tra.y().vec3().set( rgb2gray.y() * ( 1 - saturation ) );
tra.z().vec3().set( rgb2gray.z() * ( 1 - saturation ) );
tra.xx() += saturation;
tra.yy() += saturation;
tra.zz() += saturation;
matrix4_transform_direction( tra, color );
}
/*
@ -53,6 +68,9 @@ Vector3b ColorToBytes( const Vector3& color, float scale ){
/* make a local copy */
Vector3 sample = color * scale;
if( g_lightmapSaturation != 1 )
color_saturate( sample, g_lightmapSaturation );
/* muck with it */
gamma = 1.0f / lightmapGamma;
for ( i = 0; i < 3; i++ )

View File

@ -2345,6 +2345,7 @@ Q_EXTERN float lightmapExposure Q_ASSIGN( 0.0f );
Q_EXTERN float lightmapCompensate Q_ASSIGN( 1.0f );
Q_EXTERN float lightmapBrightness Q_ASSIGN( 1.0f );
Q_EXTERN float lightmapContrast Q_ASSIGN( 1.0f );
inline float g_lightmapSaturation = 1;
/* ydnar: for runtime tweaking of falloff tolerance */
Q_EXTERN float falloffTolerance Q_ASSIGN( 1.0f );