渋谷ほととぎす通信

新しいこと、枯れたこと問わず大庭が興味を持ったものを調査、生活の効率を求める完全趣味の技術ブログ。基礎を大事にしています。

Unityでコンピュートシェーダを始めた時にトラブったこと3点



先日始めたコンピュートシェーダにおけるトラブル備忘録です。

1.FindKernelしてもカーネルが見つからない問題

そもそもカーネル名をタイポしているというのは除外すると、ほぼ9割型シェーダのコンパイルエラーが原因かと思います。
一応以下のような対処記事がありました。
UnityでComputeShaderのFindKernelが使えなかった時の対処方法 - Qiita
しかし、僕が出会った状況は、全てシェーダの記述ミスによるコンパイルエラーでした。

2.フロート型の書式でシェーダのコンパイルエラー

おそらくHLSL全般にいえるのかなという内容です。整数に対しfサフィックスをつけるとエラーです。

OKパターン

float a = 1.0f;

失敗パターン

float a = 20f;

3.コンピュートシェーダのコンパイルエラーは無言

コンソールにシェーダコンパイルのエラーなんて親切なことはしてくれません。目安はコンピュートシェーダのインスペクタです。

コンピュートシェーダコンパイル成功パターン
f:id:esakun:20181214224857p:plain

コンピュートシェーダコンパイル失敗パターン
f:id:esakun:20181214224940p:plain
この2つの違いは、カーネルが表示されているか、していないかです。コンソールで語ることはしないようです。

ひとこと

  • そろそろ人生2度目のキッザニアに行く予定