Skip to content
Go back

butano/varoom-3dの3D描画アルゴリズム

· Updated:

butano/varoom-3dの3D描画に関して個人的にまとめたものです。内容を信頼しないでください。

おおまかな流れ#

  • 投影した頂点のリストを作る
  • 投影した頂点の構成する面が画面内に入っているか、で可視面のリストを作る
  • 可視面リストをZソートする
  • 可視面ごとに:
    • ブレゼンハムのアルゴリズム?で、面を構成する水平線分のリストを作る
    • 線分ごとに、それを描画するスプライトとして情報をDMAソースのメモリに書き込む
  • HDMAでHBLANKごとにスプライト情報を転送する

メモ#

  • 3Dモデルを使っている箇所は意外と少ない
    • コース自体はMODE7?
    • 自機や敵機は普通のスプライト?
    • 3Dモデルはpropだけ?
  • スプライトを使う方法なので、最大スプライト数(128からその他用途分を差し引いた数)で描画限界が決まってしまうが、ハードウェアで高速に処理できる
  • 3D用スプライトのタイルは1~64ドットのラインを描画できるように⊿のようなかたちに事前にまとめてあり、スプライトは描画時に対応する水平の線が画面に映るようにY座標が調整される
    • この仕組みだと、テクスチャマッピングはできなさそう?
  • 計算を高速に行うために割り算もLUT化してある

参考文献#