GLSL の覚え書き
シェーダープログラムはGPU内で動く。性質上並列(parallel)に実行される。
vertex shader
頂点ごとの処理内容。線分だったら始点と終点。頂点の最終的な位置を決定する。ついでに頂点ごとの属性 (attribute) から fragment shader に渡すものをどうするか決めたりする。
最終的に gl_Position にスクリーン座標を代入する。
fragment shader
ある断片ごとの処理内容。線分だったら始点から終点までの各要素を分割した1要素 (線分をレンダリングしてピクセル単位にしたときのピクセル単位)
最終的に gl_FragColor に vec4 型で色情報を代入する。
varying として vertex shader から渡された値は、各断片ごとに値が変更されて渡ってくる。
gl_FragCoord という変数があり、これには実際に処理しようとしているピクセル座標が入ってくる (スクリーン座標系)
gl_FragCoord から元の世界座標系を計算するのは面倒なので、fragment shader で世界座標系が欲しい場合 varying で座標を渡すのがてっとりばやい。
varying variables
varying は vertex shader と fragment shader とを繋ぐものだが、vertex shader でセットした値がそのまま fragment shader に渡るわけではない。fragment shader に渡るときに該当する fragment について計算された値が渡ってくる。
https://www.opengl.org/sdk/docs/tutorials/ClockworkCoders/varying.php
関連エントリー
- Raspberry Pi 2 B+ と 3.2inch LCD もともと初代 Raspberry Pi 用に買ったものだけれど、初代 Raspberry Pi をいよいよ捨てたので、ついでにいろいろ調べな...
- Lightroom のカタログを SQLite で読んで統計を出したりする .lrcat っていったい何なのか カタログファイルの実体である lrcat は SQLite の DB ファイルそのもの。sqlite3 ...
- Raspberry Pi + Wi-Fi アダプタが異常に遅い問題を解決 追記:最近別のアダプタに変えました 500 Can't connect to lowreal.net:443 (certificate ve...
- textarea.value は代入すると値が変わる 以下のような挙動をする。 var textarea = document.createElement('textarea'); textar...
- MacRuby でスクリーンキャスト用のキー履歴表示ツールを作る よくあるツールなんだけど、なかなか希望に叶うものというと見つけにくく、どうせなら自分で書いたらいいかと思ったので書いてみた。やってみたら割と...