2020年2月21日金曜日

テクスチャが読み込めるようになった







 1枚目がテクスチャの割当、2枚目がUVマッピング、3枚目がテクスチャを反映したレンダリング。
 そういえば、あいえるたんのサイドテールって向かって右側なんだよな。ネクタイのILの文字も逆だし、左右逆。左右逆で正常に表示できてるってことは、ポリの裏表も逆。

 処理の流れとしては、ポリゴンの変形・選別、ラスタライズ、ポストエフェクト、に大別できる。
 ポリゴンの変形は、ローカル座標からグローバル座標へ変換し、視線ベクトルで裏表を判定した後、表だけをキューに入れる。
 ラスタライズは、キューのポリゴンを、スクリーン座標に変換し、各種バッファへの書き込みを行う。テクスチャIDやUV値、深度値や、グローバル座標での法線ベクトルなどを、スクリーン座標1ピクセル毎に計算する。バッファへの書き込み時に深度値を参照する(Zソートは行っていない)。
 ポストエフェクトは、テクスチャIDとUV値から、テクセルを読み出して、光線ベクトルと法線ベクトルから陰影を計算する、という処理を行う。
 ポストエフェクトは、ラスタライズの後、くらいの意味なので、本来は別の名前を使うべき(or別の処理を指している)気がする。テクスチャの張り込みとか、かなりの処理をポストエフェクトで行っている。少なくとも、ポストエフェクト前では一面真っ白な画面しか得られない(頂点カラーを設定すれば多少の陰影は出てくるが、今の所、頂点カラーは未対応。。。)。

 テクスチャが読み込めるようになったことで一区切りついたので、とりあえずは最適化かなぁ。あちこちリソース食ってそうな部分がある。
 他には、パイプラインの変更とか。せめてローカルとグローバルでポリゴン扱う構造が違うのはどうにかしたい。くっそ面倒。。。水道管ゲームやってるんじゃねぇんだぞ!!!

***

 株式会社インフィニットループのマスコットキャラクターのモデルデータ「あいえるたん3Dモデル」を使用しています。
 配布元:https://www.infiniteloop.co.jp/special/iltan/

0 件のコメント:

コメントを投稿