aboutsummaryrefslogtreecommitdiff
path: root/mp/src/materialsystem/stdshaders/vr_distort_texture_ps2x.fxc
blob: 23ff3f5fbfa2a558d4d37c7b7b7c7807f8623bc4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// DYNAMIC: "CMBO_USERENDERTARGET" "0..1"

#include "shader_constant_register_map.h"
#include "common_ps_fxc.h"

sampler BaseTextureSampler		: register( s0 );
sampler DistortMapTextureSampler		: register( s1 );


struct PS_INPUT
{
	float2 vBaseTexCoord		: TEXCOORD0;
};


float4 main( PS_INPUT i ) : COLOR
{
	float2 vOriginal = i.vBaseTexCoord.xy;

	float4 vRead = tex2D( DistortMapTextureSampler, vOriginal );

	float2 vGreen;
	vGreen.r = ( vRead.x + vRead.z ) / 2.0;
	vGreen.g = ( vRead.y + vRead.w ) / 2.0;

	float4 vFinal;
	vFinal.r = tex2D( BaseTextureSampler, vRead.xy ).r;
	vFinal.ga = tex2D( BaseTextureSampler, vGreen ).ga;
	vFinal.b = tex2D( BaseTextureSampler, vRead.zw ).b;
	
	float fBoundsCheck;
	#if ( CMBO_USERENDERTARGET )
	{
		fBoundsCheck = saturate( dot( (vGreen.xy < float2(0.01,0.01)), float2(1,1)) + dot( (vGreen.xy > float2(0.99,0.99)), float2(1,1)) );
	}
	#else
	{
		fBoundsCheck = saturate( dot( (vGreen.xy < float2(0.005,0.005)), float2(1,1)) + dot( (vGreen.xy > float2(0.995,0.995)), float2(1,1))
			+ (vGreen.x > 0.495 && vGreen.x < 0.505 ) );
	}
	#endif

	vFinal.xyz = lerp( vFinal.xyz, float3(0,0,0), fBoundsCheck );

	return vFinal;
}