슬라이더를 사용하여 색조/채도/밝기를 변경하는 데 도움이되는 Silverlight 용 픽셀 셰이더를 만들고 싶습니다. * 색조 슬라이더 범위의 값을 갖는다 : [-180, 180] * 채도 슬라이더 범위의 값을 갖는다 : [-100, 100] * 밝기 슬라이더는 범위 값을 갖는다 : [-100, 100]HLSL 색조 변경 알고리즘
I 채도 및 밝기 값을 조작 할 수있는 픽셀 쉐이더를 만들 수있었습니다. 그러나 색상 값을 변경하는 알고리즘을 찾을 수 있습니다. 누구나 내게 알고리즘을 제공 할 수 있습니까? 고맙습니다.
가 여기 내 HLSL 코드 : 색 공간 사이
/// <summary>The brightness offset.</summary>
/// <minValue>-180</minValue>
/// <maxValue>180</maxValue>
/// <defaultValue>0</defaultValue>
float Hue : register(C0);
/// <summary>The saturation offset.</summary>
/// <minValue>-100</minValue>
/// <maxValue>100</maxValue>
/// <defaultValue>0</defaultValue>
float Saturation : register(C1);
/// <summary>The lightness offset.</summary>
/// <minValue>-100</minValue>
/// <maxValue>100</maxValue>
/// <defaultValue>0</defaultValue>
float Lightness : register(C2);
sampler2D input : register(S0);
//--------------------------------------------------------------------------------------
// Pixel Shader
//--------------------------------------------------------------------------------------
float4 main(float2 uv : TEXCOORD) : COLOR
{
// some vars
float saturation = Saturation/100 + 1;
float lightness = Lightness/100;
float3 luminanceWeights = float3(0.299,0.587,0.114);
// input raw pixel
float4 srcPixel = tex2D(input, uv);
// Apply saturation
float luminance = dot(srcPixel, luminanceWeights);
float4 dstPixel = lerp(luminance, srcPixel, saturation);
// Apply lightness
dstPixel.rgb += lightness;
//retain the incoming alpha
dstPixel.a = srcPixel.a;
return dstPixel;
}