シェーダーを使って描画する

ここに記載する内容は、私も正確に把握できていないので、参考程度にご覧ください。

ガボールパッチや、正弦波などのように、リアルタイムに描画するには処理負荷が高くなる刺激を用いる場合に、グラフィクスカードのシェーダーを使用する方法があります。

この機能は、ヘルプ内で、procedural texture (mapping) などと呼ばれています。

近年、グラフィクスカードが高性能になるにつれて、GLSLと呼ばれるようなシェーディング言語を使用してシェーダーを自分でプログラムできるようになったそうです。(かつてのグラフィクスカードではシェーダーの機能は固定されていた)シェーダーをプログラミングすることで、複雑な刺激を素早く描画することが可能になります。

(ただし、GLSL、バーテックスシェーダー、フラグメントシェーダーに対応したグラフィクスカードを備えているとき)

シェーダーをプログラムする方法として、PTBでは次の関数が用意されています。

  • CreateProceduralGabor
  • CreateProceduralGaussBlob
  • CreateProceduralNoise
  • CreateProceduralSineGrating

基本的な使い方は、周波数や標準偏差など、刺激を規定する変数を引数として渡します。関数を呼び出した段階ではテクスチャーそのものが作成されるわけではない点に注意してください。

デモプログラムは次の通りです。

  • ProceduralGaborDemo
  • ProceduralGarboriumDemo
  • ProceduralNoiseDemo

参考資料