- Add support for linearly desaturating images via r_greyscale
- Use correct luminance values for rendering textures Patch submitted by Forrest Voight.
This commit is contained in:
parent
13836e5f4a
commit
e66abb3237
6 changed files with 61 additions and 8 deletions
|
@ -459,9 +459,18 @@ static void ProjectDlightTexture_altivec( void ) {
|
|||
{
|
||||
float luminance;
|
||||
|
||||
luminance = (dl->color[0] * 255.0f + dl->color[1] * 255.0f + dl->color[2] * 255.0f) / 3;
|
||||
luminance = LUMA(dl->color[0], dl->color[1], dl->color[2]) * 255.0f;
|
||||
floatColor[0] = floatColor[1] = floatColor[2] = luminance;
|
||||
}
|
||||
else if(r_greyscale->value)
|
||||
{
|
||||
float luminance;
|
||||
|
||||
luminance = LUMA(dl->color[0], dl->color[1], dl->color[2]) * 255.0f;
|
||||
floatColor[0] = LERP(dl->color[0] * 255.0f, luminance, r_greyscale->value);
|
||||
floatColor[1] = LERP(dl->color[1] * 255.0f, luminance, r_greyscale->value);
|
||||
floatColor[2] = LERP(dl->color[2] * 255.0f, luminance, r_greyscale->value);
|
||||
}
|
||||
else
|
||||
{
|
||||
floatColor[0] = dl->color[0] * 255.0f;
|
||||
|
@ -612,10 +621,19 @@ static void ProjectDlightTexture_scalar( void ) {
|
|||
if(r_greyscale->integer)
|
||||
{
|
||||
float luminance;
|
||||
|
||||
luminance = (dl->color[0] * 255.0f + dl->color[1] * 255.0f + dl->color[2] * 255.0f) / 3;
|
||||
|
||||
luminance = LUMA(dl->color[0], dl->color[1], dl->color[2]) * 255.0f;
|
||||
floatColor[0] = floatColor[1] = floatColor[2] = luminance;
|
||||
}
|
||||
else if(r_greyscale->value)
|
||||
{
|
||||
float luminance;
|
||||
|
||||
luminance = LUMA(dl->color[0], dl->color[1], dl->color[2]) * 255.0f;
|
||||
floatColor[0] = LERP(dl->color[0] * 255.0f, luminance, r_greyscale->value);
|
||||
floatColor[1] = LERP(dl->color[1] * 255.0f, luminance, r_greyscale->value);
|
||||
floatColor[2] = LERP(dl->color[2] * 255.0f, luminance, r_greyscale->value);
|
||||
}
|
||||
else
|
||||
{
|
||||
floatColor[0] = dl->color[0] * 255.0f;
|
||||
|
@ -964,11 +982,22 @@ static void ComputeColors( shaderStage_t *pStage )
|
|||
if(r_greyscale->integer)
|
||||
{
|
||||
int scale;
|
||||
for(i = 0; i < tess.numVertexes; i++)
|
||||
{
|
||||
scale = LUMA(tess.svars.colors[i][0], tess.svars.colors[i][1], tess.svars.colors[i][2]);
|
||||
tess.svars.colors[i][0] = tess.svars.colors[i][1] = tess.svars.colors[i][2] = scale;
|
||||
}
|
||||
}
|
||||
else if(r_greyscale->value)
|
||||
{
|
||||
float scale;
|
||||
|
||||
for(i = 0; i < tess.numVertexes; i++)
|
||||
{
|
||||
scale = (tess.svars.colors[i][0] + tess.svars.colors[i][1] + tess.svars.colors[i][2]) / 3;
|
||||
tess.svars.colors[i][0] = tess.svars.colors[i][1] = tess.svars.colors[i][2] = scale;
|
||||
scale = LUMA(tess.svars.colors[i][0], tess.svars.colors[i][1], tess.svars.colors[i][2]);
|
||||
tess.svars.colors[i][0] = LERP(tess.svars.colors[i][0], scale, r_greyscale->value);
|
||||
tess.svars.colors[i][1] = LERP(tess.svars.colors[i][1], scale, r_greyscale->value);
|
||||
tess.svars.colors[i][2] = LERP(tess.svars.colors[i][2], scale, r_greyscale->value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue