HSV 変換

定義通り
float3 hsv2rgb(float3 hsv)
{
    float3 rgb = saturate(
        abs(fmod(hsv.x * 6.0 + float3(0.0, 4.0, 2.0), 6.0) - 3.0));
    return hsv.z * (1.0 - hsv.y + hsv.y * rgb);
}Code language: Arduino (arduino)
改良スムーズバージョン
float3 hsv2rgb(float3 hsv)
{
    float3 rgb = smoothstep(2.0, 1.0,
        abs(fmod(hsv.x * 6.0 + float3(0.0, 4.0, 2.0), 6.0) - 3.0));
    return hsv.z * (1.0 - hsv.y * rgb);
}Code language: Arduino (arduino)

コード:

A Simple HLSL Shader Code to Convert HSV to RGB Colors (iUltimateLP) – GitHub Gist

デモ:

Smooth HSV (Inigo Quilez) | Shadertoy

RGB to HSV / HSL (tayloia) | Shadertoy

RGB / HSV Tween Compare (sss88028) | Shadertoy

参考:

HSV2RGB 関数 – Qiita

RGB と HSV を相互に色相変換する | KAZUPON 研究室

HSV 変換 | t-pot

RGB を HSV に変換して明るさとかを変えるシェーダー (Unity) | KAYAC engineers’ blog

色について | The Book of Shaders

RGB to HSV / HSL / HCY / HCL in HLSL | chilliant.com

Fast Branchless RGB to HSV Conversion in GLSL | Lol Engine

RGB to HSV controls – Unity Forum

switch 文

属性
  • flatten
  • branch
  • forcecase
  • call

ドキュメント:

switch ステートメント | Microsoft Learn [公式]

参考:

シェーダモデル 3.x 以前の HLSL で switch 文を使うときの注意 | Neareal

switch attributes – GameDev.net

回転行列

コード:

3×3 Rotation Matrix (keijiro) – GitHub Gist

invalid input semantic POSITION エラー

現象:

POSITION セマンティクスが不正である旨のエラーが発生する。

error X4502: invalid input semantic 'POSITION': Legal indices are in [1,15]

原因:

  • ピクセルシェーダーの入力として POSITION セマンティクスを使用することはできない。

対処法:

  • POSITION に相当する値が必要な場合は、他のセマンティクスを経由して渡す。

参考:

ビルド時にエラー invalid input semantic ‘POSITION’ が出力される – Qiita

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Protected by reCAPTCHA