はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Shader】GLSLの関数の引数のパラメーター修飾子について

はじめに

今回はGLSLの関数の引数のパラメーター修飾子についてまとめてみたいと思います。

種類

Qualifier Meaning
< none: default > same is in
in for function parameters passed into a function
out for function parameters passed back out of a function, but not initialized for use when passed in
inout for function parameters passed both into and out of a function

https://www.khronos.org/registry/OpenGL/specs/gl/GLSLangSpec.1.40.pdf

ネットでドキュメントと検索して一番上に出てきたpdfにはこのように書かれていました。

これを私なりに日本語訳してみたらこんな感じ。

修飾子 意味
何もつけない inと同じ
in 関数に渡すパラメータのために用いられる
out 関数呼び出し時には未定義だが、関数終了時に引数に反映される
inout 関数呼び出し時はinと同じで,関数終了時はoutと同じ
float Hoge(float a, in float b, out float c, inout float d){
    c = 1.0;
    d = 2.0;
    return a + b;
}