Open14

シェーダーに入門をする

慕狼ゆに慕狼ゆに

オブジェクトが描画される手順

  • 頂点の映る位置を算出する
  • ポリゴンの表裏を確認する
  • 描画する画素を決定する
  • Z Bufferの値を比較する
  • 画素を描画する
  • Z Bufferの値を更新する
慕狼ゆに慕狼ゆに

Z Bufferは重なりの値っぽい。Z-indexみたいな感じっぽさを感じている

慕狼ゆに慕狼ゆに
  • ポリゴンの表裏を確認する

  • 描画する画素を決定する

  • Zbufferの値を比較する

  • Zbufferの値を更新する
    は設定の変更のみができる

  • 頂点の映る位置を算出する

  • 画素を描画する
    では任意のプログラムを実行できる

頂点を操作するためのプログラムをVertex シェーダー
画素を描画するためのプログラムをFragment シェーダー
と呼ぶことがある

慕狼ゆに慕狼ゆに

頂点をいじれば、オブジェクトの形を変えられるし、描画をいじればオブジェクトの色を変えられる

慕狼ゆに慕狼ゆに

Microsoft:HLSL(Hight Level Shader Language)
OpenGL:GLSL( OpenGL Shader Language)
NVIDIA: Cg言語
あとは、Unity固有のShaderLab

慕狼ゆに慕狼ゆに

float4型がvecter4と同じって会話をして、なんで三次元空間なのに4次元目があるんだ?って思って調べたら、オブジェクトを並行移動させたりするのに使うらしい(W成分、同次座標系)
https://xr-hub.com/archives/12124

慕狼ゆに慕狼ゆに

float4 vertex: POSITIONはセマンティクスと呼ぶ
その値の意味や目的をレンダリングパイプラインに明示する役割がある

慕狼ゆに慕狼ゆに

構造体はclassみたいなもんって話を聞いた
構造体は、値を定義できて、型みたいに関数の戻り値として使える

慕狼ゆに慕狼ゆに

シェーダーの実行順

  • Vertex shader
  • Tessellation
    • ハルシェーダー(HS)
    • Domain shader
  • Geometory shader
  • Fragment shader