//
// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//

sampler2D tex : s0;

uniform float4 mode : c0;

// Passthrough Pixel Shader
// Outputs texture 0 sampled at texcoord 0.
float4 passthroughps(float4 texcoord : TEXCOORD0) : COLOR
{
	return tex2D(tex, texcoord.xy);
};

// Luminance Conversion Pixel Shader
// Outputs sample(tex0, tc0).rrra.
// For LA output (pass A) set C0.X = 1, C0.Y = 0.
// For L output (A = 1) set C0.X = 0, C0.Y = 1.
float4 luminanceps(float4 texcoord : TEXCOORD0) : COLOR
{
	float4 tmp = tex2D(tex, texcoord.xy);
	tmp.w = tmp.w * mode.x + mode.y;
	return tmp.xxxw;
};

// RGB/A Component Mask Pixel Shader
// Outputs sample(tex0, tc0) with options to force RGB = 0 and/or A = 1.
// To force RGB = 0, set C0.X = 0, otherwise C0.X = 1.
// To force A = 1, set C0.Z = 0, C0.W = 1, otherwise C0.Z = 1, C0.W = 0.
float4 componentmaskps(float4 texcoord : TEXCOORD0) : COLOR
{
	float4 tmp = tex2D(tex, texcoord.xy);
	tmp.xyz = tmp.xyz * mode.x;
	tmp.w = tmp.w * mode.z + mode.w;
	return tmp;
};
