Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- float4x4 WVPM;
- struct VS_IN
- {
- float2 UV : TEXCOORD0;
- float4 Normal : NORMAL;
- float4 Pos : POSITION0;
- };
- struct VS_OUT
- {
- float2 UV : TEXCOORD0;
- float4 Normal : TEXCOORD1;
- float4 Pos : SV_POSITION;
- };
- VS_OUT test_vs( VS_IN In )
- {
- VS_OUT Out;
- Out.UV = In.UV;
- Out.Pos = mul( WVPM, In.Pos );
- Out.Normal.xyz = In.Normal;
- Out.Normal.w = Out.Pos.z; //Depth
- return Out;
- }
- struct PS_IN
- {
- float2 UV : TEXCOORD0;
- float4 Normal : TEXCOORD1;
- };
- struct PS_OUT
- {
- float4 rt0 : SV_Target0;
- float4 rt1 : SV_Target1;
- };
- Texture2D Tex;
- SamplerState linSample
- {
- Filter = MIN_MAG_MIP_LINEAR;
- AddressU = Wrap;
- AddressV = Wrap;
- };
- float2 encode (float3 n) //Crytec's Spheremap Transform Normal Compression
- {
- float p = sqrt(n.z*8 + 8);
- return float2(n.xy/p + 0.5);
- }
- PS_OUT test_ps( PS_IN In )
- {
- PS_OUT MRT;
- float4 ColorEmission = Tex.Sample(linSample, In.UV);
- ColorEmission.a = 0; //Emission
- float2 n = encode(In.Normal);
- float depth = In.Normal.w;
- MRT.rt0 = ColorEmission;
- MRT.rt1 = float4(n, depth, depth);
- return MRT;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement