Skip to content

Commit 31c3003

Browse files
committed
Fix liquid shader compile error
1 parent e8c4c1a commit 31c3003

File tree

6 files changed

+50
-8
lines changed

6 files changed

+50
-8
lines changed

src/engine/renderer/Material.cpp

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1191,6 +1191,8 @@ void BindShaderLiquid( Material* material ) {
11911191
// Select shader permutation.
11921192
gl_liquidShaderMaterial->SetHeightMapInNormalMap( material->hasHeightMapInNormalMap );
11931193
gl_liquidShaderMaterial->SetReliefMapping( material->enableReliefMapping );
1194+
gl_liquidShaderMaterial->SetGridDeluxeMapping( material->enableGridDeluxeMapping );
1195+
gl_liquidShaderMaterial->SetGridLighting( material->enableGridLighting );
11941196

11951197
// Bind shader program.
11961198
gl_liquidShaderMaterial->BindProgram( material->deformIndex );
@@ -1372,17 +1374,27 @@ void ProcessMaterialHeatHaze( Material* material, shaderStage_t* pStage, drawSur
13721374
material->program = gl_heatHazeShaderMaterial->GetProgram( pStage->deformIndex );
13731375
}
13741376

1375-
void ProcessMaterialLiquid( Material* material, shaderStage_t* pStage, drawSurf_t* /* drawSurf */ ) {
1377+
void ProcessMaterialLiquid( Material* material, shaderStage_t* pStage, drawSurf_t* drawSurf ) {
13761378
material->shader = gl_liquidShaderMaterial;
13771379

1380+
lightMode_t lightMode;
1381+
deluxeMode_t deluxeMode;
1382+
SetLightDeluxeMode( drawSurf, pStage->type, lightMode, deluxeMode );
1383+
13781384
material->hasHeightMapInNormalMap = pStage->hasHeightMapInNormalMap;
13791385
material->enableReliefMapping = pStage->enableReliefMapping;
13801386
material->deformIndex = pStage->deformIndex;
1387+
material->enableGridDeluxeMapping = true;
1388+
material->enableGridLighting = true;
13811389

13821390
gl_liquidShaderMaterial->SetHeightMapInNormalMap( pStage->hasHeightMapInNormalMap );
13831391

13841392
gl_liquidShaderMaterial->SetReliefMapping( pStage->enableReliefMapping );
13851393

1394+
gl_liquidShaderMaterial->SetGridDeluxeMapping( deluxeMode == deluxeMode_t::GRID );
1395+
1396+
gl_liquidShaderMaterial->SetGridLighting( lightMode == lightMode_t::GRID );
1397+
13861398
material->program = gl_liquidShaderMaterial->GetProgram( pStage->deformIndex );
13871399
}
13881400

src/engine/renderer/ShadeCommon.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,11 @@ template<typename Obj> void SetLightDeluxeMode( Obj* obj,
147147
148148
This is doable for some complex multi-stage materials. */
149149
}
150+
else if( stageType == stageType_t::ST_LIQUIDMAP )
151+
{
152+
lightMode = tr.modelLight;
153+
deluxeMode = tr.modelDeluxe;
154+
}
150155
else if ( obj->bspSurface )
151156
{
152157
lightMode = tr.worldLight;

src/engine/renderer/gl_shader.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2956,6 +2956,8 @@ GLShader_liquid::GLShader_liquid( GLShaderManager *manager ) :
29562956
u_SpecularExponent( this ),
29572957
u_LightGridOrigin( this ),
29582958
u_LightGridScale( this ),
2959+
GLCompileMacro_USE_GRID_DELUXE_MAPPING( this ),
2960+
GLCompileMacro_USE_GRID_LIGHTING( this ),
29592961
GLCompileMacro_USE_HEIGHTMAP_IN_NORMALMAP( this ),
29602962
GLCompileMacro_USE_RELIEF_MAPPING( this )
29612963
{
@@ -2998,6 +3000,8 @@ GLShader_liquidMaterial::GLShader_liquidMaterial( GLShaderManager* manager ) :
29983000
u_SpecularExponent( this ),
29993001
u_LightGridOrigin( this ),
30003002
u_LightGridScale( this ),
3003+
GLCompileMacro_USE_GRID_DELUXE_MAPPING( this ),
3004+
GLCompileMacro_USE_GRID_LIGHTING( this ),
30013005
GLCompileMacro_USE_HEIGHTMAP_IN_NORMALMAP( this ),
30023006
GLCompileMacro_USE_RELIEF_MAPPING( this ) {
30033007
}

src/engine/renderer/gl_shader.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4568,6 +4568,8 @@ class GLShader_liquid :
45684568
public u_SpecularExponent,
45694569
public u_LightGridOrigin,
45704570
public u_LightGridScale,
4571+
public GLCompileMacro_USE_GRID_DELUXE_MAPPING,
4572+
public GLCompileMacro_USE_GRID_LIGHTING,
45714573
public GLCompileMacro_USE_HEIGHTMAP_IN_NORMALMAP,
45724574
public GLCompileMacro_USE_RELIEF_MAPPING
45734575
{
@@ -4603,6 +4605,8 @@ class GLShader_liquidMaterial :
46034605
public u_SpecularExponent,
46044606
public u_LightGridOrigin,
46054607
public u_LightGridScale,
4608+
public GLCompileMacro_USE_GRID_DELUXE_MAPPING,
4609+
public GLCompileMacro_USE_GRID_LIGHTING,
46064610
public GLCompileMacro_USE_HEIGHTMAP_IN_NORMALMAP,
46074611
public GLCompileMacro_USE_RELIEF_MAPPING {
46084612
public:

src/engine/renderer/glsl_source/liquid_fp.glsl

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,12 @@ void main()
130130

131131
// compute light color from light grid
132132
vec3 ambientColor, lightColor;
133-
ReadLightGrid(texture3D(u_LightGrid1, lightGridPos), ambientColor, lightColor);
133+
#if defined(USE_GRID_LIGHTING) || defined(USE_GRID_DELUXE_MAPPING)
134+
ReadLightGrid(texture3D(u_LightGrid1, lightGridPos), ambientColor, lightColor);
135+
#else // !( defined(USE_GRID_LIGHTING) && defined(USE_GRID_DELUXE_MAPPING) )
136+
ambientColor = vec3( 0.0, 0.0, 0.0 );
137+
lightColor = vec3( 0.0, 0.0, 0.0 );
138+
#endif
134139

135140
// compute light direction in world space
136141
vec4 texel = texture3D(u_LightGrid2, lightGridPos);
@@ -139,11 +144,15 @@ void main()
139144
vec4 diffuse = vec4(0.0, 0.0, 0.0, 1.0);
140145

141146
// compute the specular term
142-
#if defined(USE_REFLECTIVE_SPECULAR)
143-
computeDeluxeLight(lightDir, normal, viewDir, lightColor, diffuse, reflectColor, color, u_EnvironmentMap0, u_EnvironmentMap1);
144-
#else // !USE_REFLECTIVE_SPECULAR
145-
computeDeluxeLight(lightDir, normal, viewDir, lightColor, diffuse, reflectColor, color);
146-
#endif // !USE_REFLECTIVE_SPECULAR
147+
#if defined(USE_DELUXE_MAPPING) || defined(USE_GRID_DELUXE_MAPPING)
148+
#if defined(USE_REFLECTIVE_SPECULAR)
149+
computeDeluxeLight(lightDir, normal, viewDir, lightColor, diffuse, reflectColor, color, u_EnvironmentMap0, u_EnvironmentMap1);
150+
#else // !USE_REFLECTIVE_SPECULAR
151+
computeDeluxeLight(lightDir, normal, viewDir, lightColor, diffuse, reflectColor, color);
152+
#endif // !USE_REFLECTIVE_SPECULAR
153+
#else // !USE_DELUXE_MAPPING && !USE_GRID_DELUXE_MAPPING
154+
computeLight(lightColor, diffuse, color);
155+
#endif // !USE_DELUXE_MAPPING && !USE_GRID_DELUXE_MAPPING
147156

148157
outputColor = color;
149158

src/engine/renderer/tr_shade.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2244,17 +2244,25 @@ void Render_liquid( shaderStage_t *pStage )
22442244
// Tr3B: don't allow blend effects
22452245
GL_State( pStage->stateBits & ~( GLS_SRCBLEND_BITS | GLS_DSTBLEND_BITS | GLS_DEPTHMASK_TRUE ) );
22462246

2247+
lightMode_t lightMode;
2248+
deluxeMode_t deluxeMode;
2249+
SetLightDeluxeMode( &tess, pStage->type, lightMode, deluxeMode );
2250+
22472251
// choose right shader program
22482252
gl_liquidShader->SetHeightMapInNormalMap( pStage->hasHeightMapInNormalMap );
22492253

22502254
gl_liquidShader->SetReliefMapping( pStage->enableReliefMapping );
22512255

2256+
gl_liquidShader->SetGridDeluxeMapping( deluxeMode == deluxeMode_t::GRID );
2257+
2258+
gl_liquidShader->SetGridLighting( lightMode == lightMode_t::GRID );
2259+
22522260
// enable shader, set arrays
22532261
gl_liquidShader->BindProgram( pStage->deformIndex );
22542262
gl_liquidShader->SetRequiredVertexPointers();
22552263

22562264
// set uniforms
2257-
VectorCopy( backEnd.viewParms.orientation.origin, viewOrigin ); // in world space
2265+
VectorCopy( backEnd.viewParms.orientation.origin, viewOrigin ); // in world space
22582266

22592267
fogDensity = RB_EvalExpression( &pStage->fogDensityExp, 0.001 );
22602268
VectorCopy( tess.svars.color.ToArray(), fogColor );

0 commit comments

Comments
 (0)