Invalid const register num エラーの解決

シェーダコンパイル時に表示される「Invalid const register num ~」は使用できる定数の上限数を超えていることを示します。他に関数の呼び出しや変数にも上限があります。(1) 数を減らす。(2) シェーダバージョンを上げる。(3) Unity のビルド時に実行バージョンを指定する。このページを読む

シェーダコンパイル時に表示される「Invalid const register num ~」は使用できる定数の上限数を超えていることを示します。他に関数の呼び出しや変数にも上限があります。(1) 数を減らす。(2) シェーダバージョンを上げる。(3) Unity のビルド時に実行バージョンを指定する。このページを読む

HLSL や Cg などのシェーダ言語では、配列を初期化しようとしたり、引数に配列を指定しようとして失敗するパターンがあります。執筆時時点での多くのシェーダ言語は動的にサイズが変わる配列を利用できないためです。このページを読む

Unity でシェーダを実装するとき "Upgrade NOTE: excluded shader from ~ because it uses unsized arrays #pragma exclude_renderers ~" のようなコードが挿入されることがあります。この問題は、固定長の配列が関数の内外、あるいは引数に定義されるために起こります。このページを読む

Unity では、 .shader ファイルの内部で参照する .cginc ファイルなど "のみ" を更新しても、そのファイルを自動で再コンパイルしないようです。バージョン 5.4.x でこの現象を確認しています。.shader ファイルも更新すると、合わせて更新されます。このページを読む

Unity でコンピュートシェーダを使う方法について、シンプルに解説します。ここでは適当な計算を GPU 上で実行して、その結果をテクスチャに書き込みます。多次元(2次元)のスレッドを活用するメリットが理解できるかと思います。(1) の続きのコンテンツです。このページを読む