All pastes #2122543 Raw Edit

Something

public text v1 · immutable
#2122543 ·published 2012-02-28 22:39 UTC
rendered paste body
#ifdef SHADER_MODEL // make safe to include in resource file to enforce dependency

float4 ConvertYUV(float4 color)
{
	float4 color2 = color;

	float fSat = SB_SATURATION / 100.0;
	float fBrt = SB_BRIGHTNESS / 100.0;
	float fCont = SB_CONTRAST / 100.0;

	float gY = color.r*0.299+color.g*0.587+color.b*0.114;
	float gCr = ( color.r-gY )*0.492*(0.5+fSat);
	float gCb = ( color.b-gY )*0.877*(0.5+fSat);

	gY = gY*(0.5+fCont);

	color2.r = gY+1.403*gCr;
	color2.g = gY - 0.344*gCb - 0.714*gCr;
	color2.b = gY+1.770*gCb;

	color2.r = color2.r*(0.5+fBrt);
	color2.g = color2.g*(0.5+fBrt);
	color2.b = color2.b*(0.5+fBrt);

	return color2;
}

#if SHADER_MODEL >= 0x400

Texture2D Texture;
SamplerState Sampler;

cbuffer cb0
{
	float4 BGColor;
};

struct PS_INPUT
{
	float4 p : SV_Position;
	float2 t : TEXCOORD0;
};

float4 ps_main(PS_INPUT input) : SV_Target0
{
	float4 c = Texture.Sample(Sampler, input.t);
	return ConvertYUV(c);
}


#elif SHADER_MODEL <= 0x300

sampler Texture : register(s0);

float4 g_params[1];

#define BGColor	(g_params[0])

struct PS_INPUT
{
	float2 t : TEXCOORD0;
};

float4 ps_main(PS_INPUT input) : COLOR
{
	float4 c = tex2D(Texture, input.t);
	return ConvertYUV(c);
}

#endif
#endif