tips:glsl:start
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| tips:glsl:start [2021/10/15 09:23] – yuuho | tips:glsl:start [2022/01/24 01:00] (現在) – [ビルトイン関数] yuuho | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| ====== GLSL ====== | ====== GLSL ====== | ||
| - | < | + | WebGL2 の context をここでは変数名 '' |
| + | |||
| + | === シェーダーのテンプレート === | ||
| + | |||
| + | 最初の行に改行などを挟まず ''# | ||
| + | なので、文字列リテラル(バッククォート1つで囲む改行可能文字列)を使う場合は、 | ||
| + | 最初の行にバックスラッシュを入れるなどの調整があったほうが良い。 | ||
| + | |||
| + | * ''# | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | **テンプレ** | ||
| + | < | ||
| #version 300 es | #version 300 es | ||
| void main(){ | void main(){ | ||
| 行 8: | 行 21: | ||
| </ | </ | ||
| - | < | + | < |
| #version 300 es | #version 300 es | ||
| precision mediump float; | precision mediump float; | ||
| 行 16: | 行 29: | ||
| </ | </ | ||
| - | ないとエラー | ||
| + | === WebGL2 とその他 GLSL の書き方の違い === | ||
| + | 古い書き方をしているサイトのコードなどに騙されないように。 | ||
| - | * 古い | + | これらは並列実行用。 |
| - | * '' | + | |
| - | * '' | + | |
| - | * 新しい | + | |
| - | * '' | + | |
| - | * '' | + | |
| + | ^ 古い ^ 新しい ^ | ||
| + | | '' | ||
| + | | '' | ||
| + | |||
| + | カメラ行列など、すべての頂点に対して同じ変数を使うとなったら、 | ||
| + | '' | ||
| + | |||
| + | |||
| + | === 予約語など === | ||
| * 最初からある変数 | * 最初からある変数 | ||
| 行 40: | 行 58: | ||
| * 頂点シェーダが出力した座標の補間値が各画素について計算されていて | * 頂点シェーダが出力した座標の補間値が各画素について計算されていて | ||
| * フラグメントシェーダはその画素の正確な座標を利用して画素値を決めるっぽい? | * フラグメントシェーダはその画素の正確な座標を利用して画素値を決めるっぽい? | ||
| + | |||
| + | ==== ビルトイン関数 ==== | ||
| + | |||
| + | |'' | ||
| + | | '' | ||
| + | | '' | ||
| + | |||
| + | その他 [[https:// | ||
| + | |||
| + | |||
| + | **webgl2 context** | ||
| + | * '' | ||
| + | |||
| + | ==== 未整理メモ ==== | ||
| + | * WebGL2RenderingContext は WebGLRenderingContext のすべてのメソッドを持っている | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * 三角形のどこかの頂点がはみ出していても、三角形全体がなくなるわけではなくて、台形みたいに表示される。 | ||
| + | * -1 が手前、 +1 が奥というかたちで depth 判定される。 | ||
| + | |||
| + | * OpenGL は右手座標系という話が巷では流れているが、クリッピング座標系は左手系なので最初から左手座標系で考えると良い。右手と言われているのは、古の OpenGL で用意されていた行列とかが右手系用のものが多かったから? | ||
| + | * '' | ||
| + | |||
| + | * →x ↑y | ||
| + | |||
| + | * 射影行列の z は正確に線形変換するわけではなくて、大小関係(前後関係)さえ保存されていれば良いので、 1/z のパラメータとして表現される。 | ||
| + | * {{: | ||
| + | |||
| + | |||
| + | === TRIANGLES STRIP の仕組み === | ||
| + | ^ type ^ face index ^ vertex index ^^^ | ||
| + | | **0**,1,2 | F0 | **V0** | ||
| + | | 1,**0**,2 | F1 | V2 | **V1** | ||
| + | | **0**,1,2 | F2 | **V2** | ||
| + | | 1,**0**,2 | F3 | V4 | **V3** | ||
| + | | **0**,1,2 | F4 | **V4** | ||
| + | | 1,**0**,2 | F5 | V6 | **V5** | ||
| + | | **0**,1,2 | F6 | **V6** | ||
| + | | 1,**0**,2 | F7 | V8 | **V7** | ||
| + | | ... ||||| | ||
| + | |||
| + | うまく一回の strip 呼び出しで描画できなさそうなときは半時計回りの三角形を挟んで無かったことにする? | ||
| + | |||
| + | |||
tips/glsl/start.1634289790.txt.gz · 最終更新: 2021/10/15 09:23 by yuuho
