次のようにグラデーション四角形(実際には色相スペクトル)を描画するにはどうすればよいですか:
ピクセルごとに描画しようと思ったのですが、時間がかかります(メモリ)。頂点バッファーを使用して 4 つの異なるグラデーション四角形を描画することを考えましたが、それは良いはずですが、それを行う別の方法はありますか?
このような色効果は、手続き的にピクセル シェーダーに実装するのが非常に簡単です。
これは、HLSL に採用された私の GLSL シェーダーからのコードです (vec3 を float3 に、clamp を saturate に名前変更するなど)。HLSL としてテストされていないことに注意してください。
struct PSInput
{
float2 texcoord;
};
float3 HueToRGB(in float h)
{
float3 rgb = 0.0f;
rgb.r = abs(h * 6.0f - 3.0f) - 1.0f;
rgb.g = 2.0f - abs(h * 6.0f - 2.0f);
rgb.b = 2.0f - abs(h * 6.0f - 4.0f);
rgb = saturate(rgb);
return rgb;
}
void main() : SV_Target
{
float3 colorRGB = HueToRGB(in.texcoord.x);
return float4(colorRGB, 1.0f);
}
色をより詳細に制御するには、次のことができます。
ハッピーコーディング!