3 void ChooseAdditiveColor(out float4 OutAdditiveColor,
bool AdditiveLightingEnabled,float4 SourceColor){
4 OutAdditiveColor=AdditiveLightingEnabled?SourceColor:float4(0.0f,0.0f,0.0f,1.0f);
8 void MultiplyColors(out float4 OutColor,float4 Argument1,float4 Argument2){
9 OutColor=Argument1*Argument2;
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;
21 void AddColors(out float4 OutColor,float4 Argument1,float4 Argument2){
22 OutColor.rgb=Argument1.rgb+Argument2.rgb;
23 OutColor.a=Argument1.a*Argument2.a;
27 void SubtractColors(out float4 OutColor,float4 Argument1,float4 Argument2){
28 OutColor.rgb=Argument1.rgb-Argument2.rgb;
29 OutColor.a=Argument1.a*Argument2.a;
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;
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;
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;
55 void UseFirstColor(out float4 OutColor,float4 Argument1,float4 Argument2){
61 void UseSecondColor(out float4 OutColor,float4 Argument1,float4 Argument2){
68 void ApplyAlpha(out float4 OutColorAlpha,float4 Color,
float Alpha){
69 OutColorAlpha.rgb=Color.rgb;
70 OutColorAlpha.a=Alpha;
76 void AppendAlpha(out float4 OutColorAlpha,float3 RGBColor,float4 RGBAColor){
77 OutColorAlpha.rgb=RGBColor;
78 OutColorAlpha.a=RGBAColor.a;
82 void GetAlpha(out
float OutAlpha,float4 Color){
89 void DiscardTransparentPixel(out
bool OutDiscardPixel,
float Alpha,
float AlphaThreshold=0.03f){
90 OutDiscardPixel=(Alpha<AlphaThreshold);
96 void DecodeBiasedVector(out float3 OutDirectionVector,float3 BiasedVector){
97 OutDirectionVector=BiasedVector*2.0f-float3(1.0f,1.0f,1.0f);
104 void LerpColors(out float4 OutLerpColor,float4 Color1,float4 Color2,
float LerpScalar){
105 OutLerpColor=lerp(Color1,Color2,LerpScalar);
111 void SplitColorAndAlpha(out float3 OutColor,out
float OutAlpha,float4 RGBAColor){
112 OutColor.rgb=RGBAColor.rgb;
113 OutAlpha=RGBAColor.a;