今日シェーダープログラムを書いているときに、残りを見つけるために%
を使用しなければならない状況に遭遇しました。 GLSLは、現在のバージョンでは使用できないというエラーを表示しました。
私はいくつかの問題を試しました。 GLSLは、再帰関数とwhileループをサポートしていません。これは、(a % b)
の結果を取得できる関数を作成する場合に必要です。
だから、私は現在立ち往生しています。誰かがこれを手伝ってくれる?
編集。 このWebサイト のシェーダーコードを参照コードとして使用して、CRT画面をエミュレートしようとしました。特定の行と列のピクセルの色を変更したかったので、モジュロ演算子を使用する必要がありました。
最初は、モジュラス関数は%
演算子を使用して実行されると思いました。動作しなかったので、モジュラス関数の回避策として再帰関数/ whileループを使用してみましたが、どちらも動作しませんでした。
GLSLは、再帰関数とwhileループをサポートしていません。これは、(a%b)の結果を得ることができる関数を作成する場合に必要です。
まず、_a mod b
_を計算するために、再帰もループも必要ありません。これはa - (b * floor(a/b))
で簡単に実行できます。
これは、組み込みのmod
関数が行うこととまったく同じです。お使いのバージョンのGLSLが_%
_演算子をサポートしていない場合は、実数の整数も取得できない可能性があります。したがって、値に対してmod
関数を使用するだけです。