2011/04/06

GLSL 的 Call by value-return

也可稱為Call by copy-restore, Call by value-result
簡單的說是可以自己指定呼叫function時的參數是否會在返回時複製到呼叫function的process

有三種modifier

  • in  --  複製進function,不返回複製
  • out -- 只在返回時複製,進入function時是未定義
  • inout -- 複製進function且返回複製

in 可搭配 const,其餘不行,不指定時預設為in

範例如下

void ComputeCoord(in vec3 normal,
                                    vec3 tangent,
                                    inout vec3 coord)

給予normal , tangent與coord,呼叫後會返回複製coord
normal -> normal
tangent -> tangent
coord -> coord'


Ref:
http://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_copy-restore
橘皮書  http://www.3dshaders.com/home/

沒有留言 :