Shaders for Shadows
Shader code for rendering shadows of translucent occluders, soft shadows and single scattering with moment shadow maps.
 All Classes Files Functions Variables Pages
Colors.fx
1 
3 void ChooseAdditiveColor(out float4 OutAdditiveColor,bool AdditiveLightingEnabled,float4 SourceColor){
4  OutAdditiveColor=AdditiveLightingEnabled?SourceColor:float4(0.0f,0.0f,0.0f,1.0f);
5 }
6 
8 void MultiplyColors(out float4 OutColor,float4 Argument1,float4 Argument2){
9  OutColor=Argument1*Argument2;
10 }
11 
14 void MultiplyColorsX2(out float4 OutColor,float4 Argument1,float4 Argument2){
15  OutColor.rgb=Argument1.rgb*Argument2.rgb*2.0f;
16  OutColor.a=Argument1.a*Argument2.a;
17 }
18 
21 void AddColors(out float4 OutColor,float4 Argument1,float4 Argument2){
22  OutColor.rgb=Argument1.rgb+Argument2.rgb;
23  OutColor.a=Argument1.a*Argument2.a;
24 }
25 
27 void SubtractColors(out float4 OutColor,float4 Argument1,float4 Argument2){
28  OutColor.rgb=Argument1.rgb-Argument2.rgb;
29  OutColor.a=Argument1.a*Argument2.a;
30 }
31 
34 void AddColorsSmooth(out float4 OutColor,float4 Argument1,float4 Argument2){
35  OutColor.rgb=Argument1.rgb+Argument2.rgb*(float3(1.0f,1.0f,1.0f)-Argument1.rgb);
36  OutColor.a=Argument1.a*Argument2.a;
37 }
38 
40 void AlphaBlendColors(out float4 OutColor,float4 Argument1,float4 Argument2){
41  OutColor.rgb=Argument1.rgb+(Argument2.rgb-Argument1.rgb)*Argument2.a;
42  OutColor.a=Argument1.a*Argument2.a;
43 }
44 
45 
48 void DotProduct3(out float4 OutColor,float4 Argument1,float4 Argument2){
49  OutColor.rgb=dot(Argument1.rgb*2.0f-float3(1.0f,1.0f,1.0f),Argument2.rgb*2.0f-float3(1.0f,1.0f,1.0f)).rrr;
50  OutColor.a=Argument1.a*Argument2.a;
51 }
52 
53 
55 void UseFirstColor(out float4 OutColor,float4 Argument1,float4 Argument2){
56  OutColor=Argument1;
57 }
58 
59 
61 void UseSecondColor(out float4 OutColor,float4 Argument1,float4 Argument2){
62  OutColor=Argument2;
63 }
64 
65 
68 void ApplyAlpha(out float4 OutColorAlpha,float4 Color,float Alpha){
69  OutColorAlpha.rgb=Color.rgb;
70  OutColorAlpha.a=Alpha;
71 }
72 
73 
76 void AppendAlpha(out float4 OutColorAlpha,float3 RGBColor,float4 RGBAColor){
77  OutColorAlpha.rgb=RGBColor;
78  OutColorAlpha.a=RGBAColor.a;
79 }
80 
82 void GetAlpha(out float OutAlpha,float4 Color){
83  OutAlpha=Color.a;
84 }
85 
89 void DiscardTransparentPixel(out bool OutDiscardPixel,float Alpha,float AlphaThreshold=0.03f){
90  OutDiscardPixel=(Alpha<AlphaThreshold);
91 }
92 
96 void DecodeBiasedVector(out float3 OutDirectionVector,float3 BiasedVector){
97  OutDirectionVector=BiasedVector*2.0f-float3(1.0f,1.0f,1.0f);
98 }
99 
100 
104 void LerpColors(out float4 OutLerpColor,float4 Color1,float4 Color2,float LerpScalar){
105  OutLerpColor=lerp(Color1,Color2,LerpScalar);
106 }
107 
108 
111 void SplitColorAndAlpha(out float3 OutColor,out float OutAlpha,float4 RGBAColor){
112  OutColor.rgb=RGBAColor.rgb;
113  OutAlpha=RGBAColor.a;
114 }