aboutsummaryrefslogtreecommitdiffstats
path: root/code/renderer/tr_image.c
diff options
context:
space:
mode:
authorthilo <thilo@edf5b092-35ff-0310-97b2-ce42778d08ea>2008-04-27 17:32:14 +0000
committerthilo <thilo@edf5b092-35ff-0310-97b2-ce42778d08ea>2008-04-27 17:32:14 +0000
commita1757f0abe8b9780d4c85415bc0fc9af1af31ff2 (patch)
treea84aba4e58244abb55e324cda0fdd04774ce1cca /code/renderer/tr_image.c
parent7eec87380d6b4bbf0ffa4f8ea258b8853c0428bc (diff)
downloadioquake3-aero-a1757f0abe8b9780d4c85415bc0fc9af1af31ff2.tar.gz
ioquake3-aero-a1757f0abe8b9780d4c85415bc0fc9af1af31ff2.zip
- Implement stereo rendering with anaglyph images.
- Add r_greyscale for black&white rendering git-svn-id: svn://svn.icculus.org/quake3/trunk@1328 edf5b092-35ff-0310-97b2-ce42778d08ea
Diffstat (limited to 'code/renderer/tr_image.c')
-rw-r--r--code/renderer/tr_image.c74
1 files changed, 53 insertions, 21 deletions
diff --git a/code/renderer/tr_image.c b/code/renderer/tr_image.c
index 339d91c..737370f 100644
--- a/code/renderer/tr_image.c
+++ b/code/renderer/tr_image.c
@@ -558,7 +558,16 @@ static void Upload32( unsigned *data,
c = width*height;
scan = ((byte *)data);
samples = 3;
- if (!lightMap) {
+
+ if(lightMap)
+ {
+ if(r_greyscale->integer)
+ internalFormat = GL_LUMINANCE;
+ else
+ internalFormat = GL_RGB;
+ }
+ else
+ {
for ( i = 0; i < c; i++ )
{
if ( scan[i*4+0] > rMax )
@@ -582,41 +591,64 @@ static void Upload32( unsigned *data,
// select proper internal format
if ( samples == 3 )
{
- if ( glConfig.textureCompression == TC_S3TC )
+ if(r_greyscale->integer)
{
- internalFormat = GL_RGB4_S3TC;
- }
- else if ( r_texturebits->integer == 16 )
- {
- internalFormat = GL_RGB5;
- }
- else if ( r_texturebits->integer == 32 )
- {
- internalFormat = GL_RGB8;
+ if(r_texturebits->integer == 16)
+ internalFormat = GL_LUMINANCE8;
+ else if(r_texturebits->integer == 32)
+ internalFormat = GL_LUMINANCE16;
+ else
+ internalFormat = GL_LUMINANCE;
}
else
{
- internalFormat = 3;
+ if ( glConfig.textureCompression == TC_S3TC )
+ {
+ internalFormat = GL_RGB4_S3TC;
+ }
+ else if ( r_texturebits->integer == 16 )
+ {
+ internalFormat = GL_RGB5;
+ }
+ else if ( r_texturebits->integer == 32 )
+ {
+ internalFormat = GL_RGB8;
+ }
+ else
+ {
+ internalFormat = GL_RGB;
+ }
}
}
else if ( samples == 4 )
{
- if ( r_texturebits->integer == 16 )
- {
- internalFormat = GL_RGBA4;
- }
- else if ( r_texturebits->integer == 32 )
+ if(r_greyscale->integer)
{
- internalFormat = GL_RGBA8;
+ if(r_texturebits->integer == 16)
+ internalFormat = GL_LUMINANCE8_ALPHA8;
+ else if(r_texturebits->integer == 32)
+ internalFormat = GL_LUMINANCE16_ALPHA16;
+ else
+ internalFormat = GL_LUMINANCE_ALPHA;
}
else
{
- internalFormat = 4;
+ if ( r_texturebits->integer == 16 )
+ {
+ internalFormat = GL_RGBA4;
+ }
+ else if ( r_texturebits->integer == 32 )
+ {
+ internalFormat = GL_RGBA8;
+ }
+ else
+ {
+ internalFormat = GL_RGBA;
+ }
}
}
- } else {
- internalFormat = 3;
}
+
// copy or resample data as appropriate for first MIP level
if ( ( scaled_width == width ) &&
( scaled_height == height ) ) {