WordPress for XOOPS

ソリッド表示で加工トレース実現への布石

『ソリッド表示で加工トレース』への布石のため、描画速度の向上に挑戦しています。
実はトレース中に回転させたりしなければ比較的簡単(影:シャドーマップの応用)に出来そうな気がしますが、それじゃつまらない。
トレース中でも回転させるには、トレース中の描画座標を保持しておかないといけない。

ここで現在NCVC内部で行っているソリッドモデル構築の処理手順を簡単に解説すると、
(1)深さ(デプス)情報を得るためにエンドミルの先端部分の形状を計算して全ブロック仮描画
 →ブロックごとに座標計算して即描画。全ブロックをシーケンシャルアクセスしているので遅い
(2)深さ情報をVRAMから取り出し三角形で形状を組み立て
 →現在でもマルチスレッド化して、そこそこ速い
(3)三角形座標を頂点バッファ(VBO)として描画
 →VBOによる三角形描画なので高速描画可能。現にどんな複雑な図形でも回転やら拡大縮小がスムーズ!

(1)の処理がボトルネックなので、まずここを高速化することを考えます。

現状の処理方法だとマルチスレッド化しにくいので、先に描画座標をドーンと計算し、そのあとまとめて描画という手順にすると、座標計算部分でマルチスレッド化できるゾ!っと
ただし、計算した座標をメモリに保持しておく必要があります。試しにトップページ画像の3枚目にある、39万7千ブロックのデータを読ませると、メモリオーバで処理中断でしたwww(32ビットプロセスで使えるメモリは2GBまで)
まぁこれは小分けに処理すりゃ済む話ですからね。

ちょっと光が見えてきたかな?

全体的な高速化の別解として、頂点シェーダを利用してGPU側で座標を作り出すということも考えてますが、まずは上記のこと(CPUで高速座標生成! GPUで高速描画!)を試してから。

トラックバック・ピンバックはありません

ご自分のサイトからトラックバックを送ることができます。

コメント 1 件

管理者 より:

(1)の処理のマルチスレッド化には成功したのですが、今度は
『計算した座標をメモリに保持しておく必要がある』
がボトルネックとなり、そんなに速くならなかった。CPUを無駄に使ってるだけ(笑)
もう少し研究が必要です...

コメントをどうぞ