動的な分岐はできるので、下記のようにループ回数に上限があれば代用することができます。動的なループに対応していない。シェーダー実行時にループ回数が変動する場合はコンパイルできない。ループ回数が静的に求まる場合はコンパイルできる。動的分岐はできるので、静的ループと組み合わせて擬似的に動的ループ相当を再現できる。コンパイルすると下記のように展開されていると考えられます。使うとそのシンボルを再定義することができない。再定義しても参照エラーが発生する。#endif再定義したシンボルが無効になっています。使って関数から値を返すことができない。宣言を行った場合に発生。ライティング結果が入りません。宣言が有効に機能していないことがわかります。宣言を行うと変数渡しが可能です。問題なく動作しています。同じように正しく動いています。用いられるように構造体を使う方法があります。付く場合とつかない場合があります。指定した部分書き込みができません。動作しますが非推奨な方法だと思われます。