概要

参考:

Cg – Wikipedia

Shader 言語について HLSL/GLSL/Cg – teratail

導入

参考:

最近分かってきた Unity Cg/HLSL シェーダのあれこれ | Mugichoko’s blog

プラグマ

#pragma target 3.0
#pragma exclude_renderers vulkan
#pragma vertex vert
#pragma fragment fragCode language: Arduino (arduino)

ドキュメント:

HLSL のプラグマディレクティブ | Unity マニュアル [公式]

データ型

参考:

データ型 | Microsoft Docs [公式]

ベクトル

参考:

Vector 型 | Microsoft Docs [公式]

Per-Component 算術演算 | Microsoft Docs [公式]

dot

ドキュメント:

dot | Microsoft Learn [公式]

dot | Cg Toolkit Documentation [Official]

参考:

dot | The Book of Shaders

hlsl dot function – Stack Overflow

What’s the difference between dot and * in HLSL – GameDev.net

Dot product vs Direct vector components sum performance in shaders – Stack Overflow

関数

ドキュメント:

組み込み関数 – HLSL | Microsoft Learn [公式]

参考:

手続き的にテクスチャ生成など行うとき使用頻度の高い関数 – Qiita

シェーダー関数 | さやちゃんぐ bot スクラップス

GLSL Functions | Shaderific

線形補間 (lerp)

ドキュメント:

lerp | Microsoft Learn [公式]

lerp | Cg Toolkit Documentation [Official]

saturate

ドキュメント:

saturate | Microsoft Learn [公式]

saturate | Cg Toolkit Documentation [Official]

参考:

saturate vs max | Nyahoon Games Pte. Ltd.

clamp

ドキュメント:

clamp | Microsoft Learn [公式]

smoothstep

三次関数近似

float smoothstep(float edge0, float edge1, float x)
{
    float t = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);
    return t * t * (3.0 - 2.0 * t);
}Code language: Arduino (arduino)

参考:

smoothstep – Qiita

smoothstep | The Book of Shaders

clip

  • スカラー値が 0 未満の場合にピクセルを破棄する。
  • あるいは、ベクトルの何れかの成分が 0 未満の場合にピクセルを破棄する。
  • 使用する場合は、「Render Queue」を Alpha Test に設定する。

ドキュメント:

clip | Microsoft Learn [公式]

参考:

clip や discard を使うときには Render Queue を Alpha Test にする話 | LIGHT11

アルファテストがレガシーなものになっていた件 | 渋谷ほととぎす通信

ノイズ

参考:

Noise | The Book of Shaders

UV 座標

参考:

UV スクロールをやってみる – Qiita

UV を回転させる | KENTO

UV 編 | 波打際のブログさん

TEXCOORD の z, w について | 株式会社ロジカルビート

Texture Mapping in Cg/HLSL | codinBlack

Center UV co-ordinates, converting GLSL to CG/HLSL – Unity Forum

互換命令

参考:

GLSL を HLSL に書き換える – Qiita

GLSL / HLSL / Metal 命令対応表 | HYPER でんち

GLSL と HLSL の対応を示すリファレンス | Microsoft Docs [公式]

implicit truncation of vector type 警告

現象:

暗黙的にベクトルの長さを切り詰めている旨の警告が発生する。

implicit truncation of vector type

対処法:

  • スウィズルを使用する。
  • 適切な長さのベクトル型を使用する。
  • 適切にキャストする。

参考:

shader warnings? – Unity Forum

implicit truncation of vector type error – Stack Overflow

ドキュメント

Cg Standard Library Documentation | NVIDIA [Official]

リファレンス – HLSL | Microsoft Learn [公式]

言語構文 – HLSL | Microsoft Learn [公式]

エラーと警告 – HLSL | Microsoft Learn [公式]

プログラミング ガイド – HLSL | Microsoft Learn [公式]

上位レベルシェーダー言語 (HLSL) | Microsoft Learn [公式]

まとめ

HLSL リファレンスまとめ

チュートリアル

Unity で暖を取る! GLSL を Cg/HLSL に書き換えて楽しもう!! | Unity Learning Materials

Noise Shader

リポジトリ:

keijiro/NoiseShader: Noise Shader Library for Unity – GitHub

WebGL Noise

リポジトリ:

ashima/webgl-noise: Procedural Noise Shader Routines Compatible with WebGL – GitHub

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

コメントを残す

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

Protected by reCAPTCHA