@@ -56,6 +56,9 @@ BEGIN_VS_SHADER( Water_DX90,
5656 SHADER_PARAM( SCROLL1 , SHADER_PARAM_TYPE_COLOR , " " , " " )
5757 SHADER_PARAM( SCROLL2 , SHADER_PARAM_TYPE_COLOR , " " , " " )
5858 SHADER_PARAM( BLURREFRACT , SHADER_PARAM_TYPE_BOOL , " 0" , " Cause the refraction to be blurry on ps2b hardware" )
59+ #ifdef NEO
60+ SHADER_PARAM ( LIGHTMAPWATERFOG , SHADER_PARAM_TYPE_BOOL , " 0" , " Cast shadows onto the fog component of the water surface" )
61+ #endif // NEO
5962 END_SHADER_PARAMS
6063
6164 SHADER_INIT_PARAMS ()
@@ -179,6 +182,7 @@ BEGIN_VS_SHADER( Water_DX90,
179182 inline void DrawReflectionRefraction ( IMaterialVar **params, IShaderShadow* pShaderShadow,
180183 IShaderDynamicAPI* pShaderAPI, bool bReflection, bool bRefraction )
181184 {
185+ bool blightMapWaterFog = params[LIGHTMAPWATERFOG ]->GetIntValue ();
182186 SHADOW_STATE
183187 {
184188 SetInitialShadowState ( );
@@ -205,6 +209,15 @@ BEGIN_VS_SHADER( Water_DX90,
205209 pShaderShadow->EnableSRGBRead ( SHADER_SAMPLER3 , true );
206210 }
207211 }
212+ #ifdef NEO
213+ if (blightMapWaterFog)
214+ {
215+ // LIGHTMAP
216+ pShaderShadow->EnableTexture ( SHADER_SAMPLER3 , true );
217+ pShaderShadow->EnableSRGBRead ( SHADER_SAMPLER3 , true );
218+ }
219+ #endif // NEO
220+
208221 // normal map
209222 pShaderShadow->EnableTexture ( SHADER_SAMPLER4 , true );
210223 // Normalizing cube map
@@ -216,7 +229,11 @@ BEGIN_VS_SHADER( Water_DX90,
216229 // texcoord1 : lightmap texcoord
217230 // texcoord2 : lightmap texcoord offset
218231 int numTexCoords = 1 ;
232+ #ifdef NEO
233+ if ( params[BASETEXTURE ]->IsTexture () || blightMapWaterFog )
234+ #else
219235 if ( params[BASETEXTURE ]->IsTexture () )
236+ #endif // NEO
220237 {
221238 numTexCoords = 3 ;
222239 }
@@ -228,6 +245,11 @@ BEGIN_VS_SHADER( Water_DX90,
228245 DECLARE_STATIC_VERTEX_SHADER ( water_vs20 );
229246 SET_STATIC_VERTEX_SHADER_COMBO ( MULTITEXTURE ,fabs (Scroll1.x ) > 0.0 );
230247 SET_STATIC_VERTEX_SHADER_COMBO ( BASETEXTURE , params[BASETEXTURE ]->IsTexture () );
248+ #ifdef NEO
249+ SET_STATIC_VERTEX_SHADER_COMBO (LIGHTMAPWATERFOG , blightMapWaterFog);
250+ #else // Still custom NEO code
251+ SET_STATIC_VERTEX_SHADER_COMBO (LIGHTMAPWATERFOG , 0 );
252+ #endif // NEO
231253 SET_STATIC_VERTEX_SHADER ( water_vs20 );
232254
233255 // "REFLECT" "0..1"
@@ -243,6 +265,11 @@ BEGIN_VS_SHADER( Water_DX90,
243265 SET_STATIC_PIXEL_SHADER_COMBO ( BASETEXTURE , params[BASETEXTURE ]->IsTexture () );
244266 SET_STATIC_PIXEL_SHADER_COMBO ( BLURRY_REFRACT , params[BLURREFRACT ]->GetIntValue () );
245267 SET_STATIC_PIXEL_SHADER_COMBO ( NORMAL_DECODE_MODE , (int ) NORMAL_DECODE_NONE );
268+ #ifdef NEO
269+ SET_STATIC_PIXEL_SHADER_COMBO (LIGHTMAPWATERFOG , blightMapWaterFog);
270+ #else // Still custom NEO code
271+ SET_STATIC_PIXEL_SHADER_COMBO (LIGHTMAPWATERFOG , 0 );
272+ #endif // NEO
246273 SET_STATIC_PIXEL_SHADER ( water_ps20b );
247274 }
248275 else
@@ -282,6 +309,12 @@ BEGIN_VS_SHADER( Water_DX90,
282309 BindTexture ( SHADER_SAMPLER1 , BASETEXTURE , FRAME );
283310 pShaderAPI->BindStandardTexture ( SHADER_SAMPLER3 , TEXTURE_LIGHTMAP );
284311 }
312+ #ifdef NEO
313+ else if (blightMapWaterFog)
314+ {
315+ pShaderAPI->BindStandardTexture ( SHADER_SAMPLER3 , TEXTURE_LIGHTMAP );
316+ }
317+ #endif // NEO
285318
286319 pShaderAPI->BindStandardTexture ( SHADER_SAMPLER5 , TEXTURE_NORMALIZATION_CUBEMAP_SIGNED );
287320
0 commit comments