add game&rawdata
This commit is contained in:
parent
0133cd976c
commit
49b34b5546
45731 changed files with 709831 additions and 0 deletions
67
gamedata/shaders/r3/waterd.ps
Normal file
67
gamedata/shaders/r3/waterd.ps
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
#include "common.h"
|
||||
#include "shared\waterconfig.h"
|
||||
|
||||
struct v2p
|
||||
{
|
||||
float2 tbase : TEXCOORD0;
|
||||
float2 tdist0 : TEXCOORD1;
|
||||
float2 tdist1 : TEXCOORD2;
|
||||
#ifdef USE_SOFT_WATER
|
||||
#ifdef NEED_SOFT_WATER
|
||||
float4 tctexgen: TEXCOORD3;
|
||||
#endif // USE_SOFT_WATER
|
||||
#endif // NEED_SOFT_WATER
|
||||
float4 hpos : SV_Position;
|
||||
};
|
||||
|
||||
Texture2D s_distort;
|
||||
#define POWER .5h
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Pixel
|
||||
float4 main( v2p I ) : SV_Target
|
||||
{
|
||||
// float4 t_base = tex2D( s_base, I.tbase );
|
||||
float4 t_base = s_base.Sample( smp_base, I.tbase );
|
||||
|
||||
// float2 t_d0 = tex2D( s_distort, I.tdist0 );
|
||||
// float2 t_d1 = tex2D( s_distort, I.tdist1 );
|
||||
float2 t_d0 = s_distort.Sample( smp_base, I.tdist0 );
|
||||
float2 t_d1 = s_distort.Sample( smp_base, I.tdist1 );
|
||||
float2 distort = (t_d0+t_d1)*0.5; // average
|
||||
float2 zero = float2( 0.5, 0.5 );
|
||||
float2 faded = lerp( distort, zero, t_base.a );
|
||||
|
||||
// Igor: additional depth test
|
||||
#ifdef USE_SOFT_WATER
|
||||
#ifdef NEED_SOFT_WATER
|
||||
float alphaDistort;
|
||||
// float4 _P = tex2Dproj (s_position, I.tctexgen);
|
||||
float2 PosTc = I.tctexgen.xy/I.tctexgen.z;
|
||||
#ifdef GBUFFER_OPTIMIZATION
|
||||
gbuffer_data gbd = gbuffer_load_data( PosTc, I.hpos );
|
||||
#else
|
||||
gbuffer_data gbd = gbuffer_load_data( PosTc );
|
||||
#endif
|
||||
//float4 _P = s_position.Sample( smp_nofilter, PosTc);
|
||||
float4 _P = float4( gbd.P, gbd.mtl );
|
||||
float waterDepth = _P.z-I.tctexgen.z;
|
||||
alphaDistort = saturate(5*waterDepth);
|
||||
faded = lerp ( zero, faded, alphaDistort);
|
||||
#endif // NEED_SOFT_WATER
|
||||
#endif // USE_SOFT_WATER & NEED_SOFT_WATER
|
||||
|
||||
float2 faded_bx2 = (faded*2-1)*W_DISTORT_POWER;
|
||||
float faded_dot = dot (float3(faded_bx2,0),.75 ); //0.75
|
||||
float alpha = .5f ; //abs (faded_dot);
|
||||
|
||||
|
||||
faded = faded*POWER - .5*POWER + 0.5 ;
|
||||
|
||||
// out
|
||||
// Igor: need for alpha water
|
||||
#ifdef NEED_SOFT_WATER
|
||||
return float4( faded, 0.0h, alpha );
|
||||
#else // NEED_SOFT_WATER
|
||||
return float4( faded, .08h, alpha );
|
||||
#endif // NEED_SOFT_WATER
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue