Danbias/Code/OysterGraphics/Shader/Passes/Post/PostPass.hlsl

30 lines
978 B
HLSL
Raw Normal View History

2014-01-08 07:01:59 +01:00
Texture2D Diffuse : register(t0);
Texture2D Specular : register(t1);
Texture2D Ambient : register(t2);
RWTexture2D<float4> Output;
2014-02-07 16:51:35 +01:00
cbuffer Size : register(b0)
{
int2 Pixels;
}
#define AmbFactor 0.3f;
2014-01-08 07:01:59 +01:00
[numthreads(16, 16, 1)]
void main( uint3 DTid : SV_DispatchThreadID )
{
float4 Light = Diffuse[DTid.xy] + Specular[DTid.xy];
2014-02-07 08:34:01 +01:00
float4 Amb = float4(Ambient[DTid.xy/2].xyz,1);// * Ambient[DTid.xy/2].w,1);
//Output[DTid.xy] = float4(Ambient[DTid.xy/2].xyz /* * Ambient[DTid.xy/2].w */, 1);
2014-01-22 16:31:33 +01:00
//Output[DTid.xy] = Diffuse[DTid.xy] + Specular[DTid.xy];
2014-02-10 01:03:10 +01:00
//Output[DTid.xy] = Light + Amb * AmbFactor;
2014-02-07 15:52:07 +01:00
//Output[DTid.xy] = Ambient[DTid.xy/2].w;
2014-02-10 01:03:10 +01:00
float4 GUI;
uint2 index = DTid.xy/2 + int2(Pixels.x/2,0);
float3 PostLight = Light.xyz + Amb.xyz * AmbFactor;
GUI = float4(Ambient[index]);
PostLight = PostLight * (1-GUI.w);
//Output[DTid.xy] = float4((GUI.xyz * GUI.w) + ((Light + Amb * AmbFactor) * (1 - GUI.w)),0);
Output[DTid.xy] = float4((GUI.xyz * GUI.w) + PostLight, 1);
2014-01-08 07:01:59 +01:00
}