diff --git a/reaction/README b/reaction/README index db14c5bd..0026fa8d 100644 --- a/reaction/README +++ b/reaction/README @@ -235,8 +235,9 @@ New cvars red-cyan glasses: 1 red-blue: 2 red-green: 3 + green-magenta: 4 To swap the colors for left and right eye - just add 3 to the value for the wanted + just add 4 to the value for the wanted color combination. For red-blue and red-green you probably want to enable r_greyscale diff --git a/reaction/code/renderer/tr_cmds.c b/reaction/code/renderer/tr_cmds.c index abcbe07b..fe3fd133 100644 --- a/reaction/code/renderer/tr_cmds.c +++ b/reaction/code/renderer/tr_cmds.c @@ -297,7 +297,8 @@ void RE_StretchPic ( float x, float y, float w, float h, #define MODE_RED_CYAN 1 #define MODE_RED_BLUE 2 #define MODE_RED_GREEN 3 -#define MODE_MAX MODE_RED_GREEN +#define MODE_GREEN_MAGENTA 4 +#define MODE_MAX MODE_GREEN_MAGENTA void R_SetColorMode(GLboolean *rgba, stereoFrame_t stereoFrame, int colormode) { @@ -313,16 +314,26 @@ void R_SetColorMode(GLboolean *rgba, stereoFrame_t stereoFrame, int colormode) colormode -= MODE_MAX; } - if(stereoFrame == STEREO_LEFT) - rgba[1] = rgba[2] = GL_FALSE; - else if(stereoFrame == STEREO_RIGHT) + if(colormode == MODE_GREEN_MAGENTA) { - rgba[0] = GL_FALSE; - - if(colormode == MODE_RED_BLUE) + if(stereoFrame == STEREO_LEFT) + rgba[0] = rgba[2] = GL_FALSE; + else if(stereoFrame == STEREO_RIGHT) rgba[1] = GL_FALSE; - else if(colormode == MODE_RED_GREEN) - rgba[2] = GL_FALSE; + } + else + { + if(stereoFrame == STEREO_LEFT) + rgba[1] = rgba[2] = GL_FALSE; + else if(stereoFrame == STEREO_RIGHT) + { + rgba[0] = GL_FALSE; + + if(colormode == MODE_RED_BLUE) + rgba[1] = GL_FALSE; + else if(colormode == MODE_RED_GREEN) + rgba[2] = GL_FALSE; + } } }