Skip to content

Commit 5cdd147

Browse files
committed
cvars
1 parent 30f6d90 commit 5cdd147

File tree

7 files changed

+35
-7
lines changed

7 files changed

+35
-7
lines changed

src/engine/renderer/gl_shader.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -589,6 +589,16 @@ static std::string GenEngineConstants() {
589589
AddConst( str, "r_RimExponent", r_rimExponent->value );
590590
}
591591

592+
if ( r_cheapSRGB.Get() )
593+
{
594+
AddDefine( str, "r_cheapSRGB", 1 );
595+
}
596+
597+
if ( r_linearBlending.Get() )
598+
{
599+
AddDefine( str, "r_linearBlending", 1 );
600+
}
601+
592602
if ( r_showLightTiles->integer )
593603
{
594604
AddDefine( str, "r_showLightTiles", 1 );

src/engine/renderer/glsl_source/cameraEffects_fp.glsl

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,12 @@ void main()
3939

4040
vec4 original = texture2D(u_CurrentMap, st);
4141

42-
if (u_DelinearizeScreen == 1)
43-
{
44-
convertToSRGB(original.rgb);
45-
}
42+
#if defined(r_linearBlending)
43+
if (u_DelinearizeScreen == 1)
44+
{
45+
convertToSRGB(original.rgb);
46+
}
47+
#endif
4648

4749
vec4 color = clamp(original, 0.0, 1.0);
4850

src/engine/renderer/glsl_source/colorSpace_fp.glsl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#define SRGB_NAIVE
22

33
void convertFromSRGB(inout vec3 color) {
4-
#if defined(SRGB_CHEAP)
4+
#if defined(r_cheapSRGB)
55
float gamma = 2.2;
66
color = pow(color, vec3(gamma));
77

@@ -47,7 +47,7 @@ void convertFromSRGB(inout vec3 color) {
4747
}
4848

4949
void convertToSRGB(inout vec3 color) {
50-
#if defined(SRGB_CHEAP)
50+
#if defined(r_cheapSRGB)
5151
float gamma = 2.2;
5252
color = pow(color, vec3(1/gamma));
5353
#elif defined(SRGB_NAIVE)

src/engine/renderer/glsl_source/generic_fp.glsl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ void main()
4848
}
4949
#endif
5050

51-
#if !defined(GENERIC_2D)
51+
#if !defined(GENERIC_2D) && defined(r_linearBlending)
5252
if (u_LinearizeTexture == 1) {
5353
convertFromSRGB(color.rgb);
5454
}

src/engine/renderer/glsl_source/lightMapping_fp.glsl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,12 @@ void main()
205205
color.rgb += glow;
206206
#endif
207207

208+
#if !defined(r_linearBlending)
209+
if (u_LinearizeTexture == 1) {
210+
convertToSRGB(color.rgb);
211+
}
212+
#endif
213+
208214
outputColor = color;
209215

210216
// Debugging.

src/engine/renderer/tr_init.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,10 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
176176
cvar_t *r_halfLambertLighting;
177177
cvar_t *r_rimLighting;
178178
cvar_t *r_rimExponent;
179+
180+
Cvar::Cvar<bool> r_cheapSRGB("r_cheapSRGB", "use cheap sRGB computation when converting images", Cvar::NONE, false);
181+
Cvar::Cvar<bool> r_linearBlending("r_linearBlending", "also blend framebuffers in linear space", Cvar::NONE, true);
182+
179183
cvar_t *r_gamma;
180184
cvar_t *r_lockpvs;
181185
cvar_t *r_noportals;
@@ -1241,6 +1245,9 @@ ScreenshotCmd screenshotPNGRegistration("screenshotPNG", ssFormat_t::SSF_PNG, "p
12411245
r_rimExponent = Cvar_Get( "r_rimExponent", "3", CVAR_CHEAT | CVAR_LATCH );
12421246
AssertCvarRange( r_rimExponent, 0.5, 8.0, false );
12431247

1248+
Cvar::Latch( r_cheapSRGB );
1249+
Cvar::Latch( r_linearBlending );
1250+
12441251
r_drawBuffer = Cvar_Get( "r_drawBuffer", "GL_BACK", CVAR_CHEAT );
12451252
r_lockpvs = Cvar_Get( "r_lockpvs", "0", CVAR_CHEAT );
12461253
r_noportals = Cvar_Get( "r_noportals", "0", CVAR_CHEAT );

src/engine/renderer/tr_local.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3022,6 +3022,9 @@ enum class deluxeMode_t { NONE, GRID, MAP };
30223022
extern cvar_t *r_rimLighting;
30233023
extern cvar_t *r_rimExponent;
30243024

3025+
extern Cvar::Cvar<bool> r_cheapSRGB;
3026+
extern Cvar::Cvar<bool> r_linearBlending;
3027+
30253028
extern cvar_t *r_logFile; // number of frames to emit GL logs
30263029

30273030
extern cvar_t *r_clear; // force screen clear every frame

0 commit comments

Comments
 (0)