template project, first version
This commit is contained in:
66
DirectXTK/Src/Shaders/Common.fxh
Normal file
66
DirectXTK/Src/Shaders/Common.fxh
Normal file
@@ -0,0 +1,66 @@
|
||||
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
|
||||
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
|
||||
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
|
||||
// PARTICULAR PURPOSE.
|
||||
//
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
//
|
||||
// http://go.microsoft.com/fwlink/?LinkId=248929
|
||||
// http://create.msdn.com/en-US/education/catalog/sample/stock_effects
|
||||
|
||||
|
||||
float ComputeFogFactor(float4 position)
|
||||
{
|
||||
return saturate(dot(position, FogVector));
|
||||
}
|
||||
|
||||
|
||||
void ApplyFog(inout float4 color, float fogFactor)
|
||||
{
|
||||
color.rgb = lerp(color.rgb, FogColor * color.a, fogFactor);
|
||||
}
|
||||
|
||||
|
||||
void AddSpecular(inout float4 color, float3 specular)
|
||||
{
|
||||
color.rgb += specular * color.a;
|
||||
}
|
||||
|
||||
|
||||
float3 BiasX2(float3 x)
|
||||
{
|
||||
return 2.0f * x - 1.0f;
|
||||
}
|
||||
|
||||
|
||||
struct CommonVSOutput
|
||||
{
|
||||
float4 Pos_ps;
|
||||
float4 Diffuse;
|
||||
float3 Specular;
|
||||
float FogFactor;
|
||||
};
|
||||
|
||||
|
||||
CommonVSOutput ComputeCommonVSOutput(float4 position)
|
||||
{
|
||||
CommonVSOutput vout;
|
||||
|
||||
vout.Pos_ps = mul(position, WorldViewProj);
|
||||
vout.Diffuse = DiffuseColor;
|
||||
vout.Specular = 0;
|
||||
vout.FogFactor = ComputeFogFactor(position);
|
||||
|
||||
return vout;
|
||||
}
|
||||
|
||||
|
||||
#define SetCommonVSOutputParams \
|
||||
vout.PositionPS = cout.Pos_ps; \
|
||||
vout.Diffuse = cout.Diffuse; \
|
||||
vout.Specular = float4(cout.Specular, cout.FogFactor);
|
||||
|
||||
|
||||
#define SetCommonVSOutputParamsNoFog \
|
||||
vout.PositionPS = cout.Pos_ps; \
|
||||
vout.Diffuse = cout.Diffuse;
|
||||
Reference in New Issue
Block a user