Skip to content

Commit c74d6f9

Browse files
committed
renderer: implement mapCompleteOverBright in GLSL
1 parent 8f276c4 commit c74d6f9

12 files changed

+176
-50
lines changed

src/engine/renderer/gl_shader.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1573,6 +1573,7 @@ void GLShader_generic2D::SetShaderProgramUniforms( shaderProgram_t *shaderProgra
15731573

15741574
GLShader_generic::GLShader_generic( GLShaderManager *manager ) :
15751575
GLShader( "generic", ATTR_POSITION | ATTR_TEXCOORD | ATTR_QTANGENT, manager ),
1576+
u_LightFactor( this ),
15761577
u_TextureMatrix( this ),
15771578
u_ViewOrigin( this ),
15781579
u_ViewUp( this ),
@@ -1610,6 +1611,7 @@ void GLShader_generic::SetShaderProgramUniforms( shaderProgram_t *shaderProgram
16101611
GLShader_lightMapping::GLShader_lightMapping( GLShaderManager *manager ) :
16111612
GLShader( "lightMapping",
16121613
ATTR_POSITION | ATTR_TEXCOORD | ATTR_QTANGENT | ATTR_COLOR, manager ),
1614+
u_LightFactors( this ),
16131615
u_TextureMatrix( this ),
16141616
u_SpecularExponent( this ),
16151617
u_ColorModulate( this ),

src/engine/renderer/gl_shader.h

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1425,6 +1425,36 @@ class GLCompileMacro_USE_ALPHA_TESTING :
14251425
}
14261426
};
14271427

1428+
class u_LightFactor :
1429+
GLUniform1i
1430+
{
1431+
public:
1432+
u_LightFactor( GLShader *shader ) :
1433+
GLUniform1i( shader, "u_LightFactor" )
1434+
{
1435+
}
1436+
1437+
void SetUniform_LightFactor( const int lightFactor )
1438+
{
1439+
this->SetValue( lightFactor );
1440+
}
1441+
};
1442+
1443+
class u_LightFactors :
1444+
GLUniform2i
1445+
{
1446+
public:
1447+
u_LightFactors( GLShader *shader ) :
1448+
GLUniform2i( shader, "u_LightFactors" )
1449+
{
1450+
}
1451+
1452+
void SetUniform_LightFactors( const ivec2_t lightFactors )
1453+
{
1454+
this->SetValue( lightFactors );
1455+
}
1456+
};
1457+
14281458
class u_TextureMatrix :
14291459
GLUniformMatrix4f
14301460
{
@@ -2359,6 +2389,7 @@ class GLShader_generic2D :
23592389

23602390
class GLShader_generic :
23612391
public GLShader,
2392+
public u_LightFactor,
23622393
public u_TextureMatrix,
23632394
public u_ViewOrigin,
23642395
public u_ViewUp,
@@ -2388,6 +2419,7 @@ class GLShader_generic :
23882419

23892420
class GLShader_lightMapping :
23902421
public GLShader,
2422+
public u_LightFactors,
23912423
public u_TextureMatrix,
23922424
public u_SpecularExponent,
23932425
public u_ColorModulate,

src/engine/renderer/glsl_source/generic_fp.glsl

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
2323
/* generic_fp.glsl */
2424

2525
uniform sampler2D u_ColorMap;
26+
27+
#if !defined(GENERIC_2D) && defined(USE_TCGEN_LIGHTMAP)
28+
uniform int u_LightFactor;
29+
#endif
30+
2631
uniform float u_AlphaThreshold;
2732

2833
IN(smooth) vec2 var_TexCoords;
@@ -47,6 +52,10 @@ void main()
4752
}
4853
#endif
4954

55+
#if !defined(GENERIC_2D) && defined(USE_TCGEN_LIGHTMAP)
56+
color.rgb *= u_LightFactor;
57+
#endif
58+
5059
#if defined(USE_DEPTH_FADE) || defined(USE_VERTEX_SPRITE)
5160
float depth = texture2D(u_DepthMap, gl_FragCoord.xy / r_FBufSize).x;
5261
float fadeDepth = 0.5 * var_FadeDepth.x / var_FadeDepth.y + 0.5;

src/engine/renderer/glsl_source/lightMapping_fp.glsl

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ uniform sampler2D u_DiffuseMap;
2626
uniform sampler2D u_MaterialMap;
2727
uniform sampler2D u_GlowMap;
2828

29+
uniform ivec2 u_LightFactors;
30+
#define u_LightFactor u_LightFactors[0]
2931
uniform float u_AlphaThreshold;
3032
uniform vec3 u_ViewOrigin;
3133

@@ -110,8 +112,8 @@ void main()
110112
vec3 lightDir = normalize(2.0 * deluxe.xyz - 1.0);
111113
#elif defined(USE_GRID_DELUXE_MAPPING)
112114
// Compute light direction in world space from light grid.
113-
vec4 texel = texture3D(u_LightGrid2, lightGridPos);
114-
vec3 lightDir = normalize(texel.xyz - (128.0 / 255.0));
115+
vec4 texelDir = texture3D(u_LightGrid2, lightGridPos);
116+
vec3 lightDir = normalize(texelDir.xyz - (128.0 / 255.0));
115117
#endif
116118

117119
#if defined(USE_LIGHT_MAPPING)
@@ -121,8 +123,12 @@ void main()
121123
color.rgb = vec3(0.0);
122124
#else
123125
// Compute light color from lightgrid.
126+
vec4 texelColor = texture3D(u_LightGrid1, lightGridPos);
127+
128+
texelColor.rgb *= u_LightFactor;
129+
124130
vec3 ambientColor, lightColor;
125-
ReadLightGrid(texture3D(u_LightGrid1, lightGridPos), ambientColor, lightColor);
131+
ReadLightGrid(texelColor, ambientColor, lightColor);
126132

127133
color.rgb = ambientColor * r_AmbientScale * diffuse.rgb;
128134
#endif
@@ -153,6 +159,10 @@ void main()
153159
lightColor /= clamp(dot(normalize(var_Normal), lightDir), 0.3, 1.0);
154160
#endif
155161

162+
#if defined(USE_LIGHT_MAPPING)
163+
lightColor.rgb *= u_LightFactor;
164+
#endif
165+
156166
// Blend static light.
157167
#if defined(USE_DELUXE_MAPPING) || defined(USE_GRID_DELUXE_MAPPING)
158168
computeDeluxeLight(lightDir, normal, viewDir, lightColor, diffuse, material, color);

src/engine/renderer/glsl_source/lightMapping_vp.glsl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ uniform mat4 u_TextureMatrix;
3838

3939
uniform mat4 u_ModelViewProjectionMatrix;
4040

41+
uniform ivec2 u_LightFactors;
42+
#define u_VertexLightFactor u_LightFactors[1]
43+
4144
uniform float u_Time;
4245

4346
uniform vec4 u_ColorModulate;
@@ -66,6 +69,8 @@ void main()
6669

6770
VertexFetch(position, LB, color, texCoord, lmCoord);
6871

72+
color.rgb *= u_VertexLightFactor;
73+
6974
color = color * u_ColorModulate + u_Color;
7075

7176
DeformVertex(position, LB.normal, texCoord, color, u_Time);

src/engine/renderer/shaders.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include "blurY_vp.glsl.h"
1414
#include "cameraEffects_fp.glsl.h"
1515
#include "cameraEffects_vp.glsl.h"
16+
#include "colorSpace_vp.glsl.h"
1617
#include "computeLight_fp.glsl.h"
1718
#include "contrast_fp.glsl.h"
1819
#include "contrast_vp.glsl.h"

0 commit comments

Comments
 (0)