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

クォータニオン

コード:

Quaternion Structure for HLSL (mattatz) – GitHub Gist

定数

円周率を表す定義する。

static const float PI = 3.1415926525;Code language: Arduino (arduino)

または、acos を用いて定義する。

static const float PI = acos(-1.0);Code language: Arduino (arduino)

参考:

GLSL を HLSL に書き換える | さやちゃんぐ

PI in HLSL – GameDev.net

定数バッファ

ドキュメント:

定数バッファを作成する方法 | Microsoft Learn [公式]

シェーダー定数 | Microsoft Learn [公式]

定数変数のパッキング規則 | Microsoft Learn [公式]

バッファの概要 v11 | Microsoft Learn [公式]

参考:

定数バッファの生成 – Qiita

定数バッファ | いまさら Direct3D11 入門

Descriptor / DescriptorHeap / DescriptorTable / RootSignature | もんしょの巣穴

シェーダ内に定数を定義したつもりだが値が割り当てられない問題 | Yorung’s Hotfix

invalid input semantic POSITION エラー

現象:

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

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

原因:

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

対処法:

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

参考:

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

Visual Studio でコンパイルエラーが発生する

参考:

HLSL function problem – Game Development Stack Exchange

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

コメントを残す

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

Protected by reCAPTCHA