ホーム » スタッフ » 斉藤徹 » 最適化と3次元表示

2010年1月
« 12月   2月 »
 12
3456789
10111213141516
17181920212223
24252627282930
31  

最近の投稿(電子情報)

アーカイブ

カテゴリー

最適化と3次元表示

前回の2次元の座標変換に引き続き、3次元表示について説明を行う。 ただし、グラフィックス処理では、大量のデータ処理から命令の効率よい実行が 求められることが多いので、最適化についても説明を行う。

最適化

C言語のプログラムが機械語に変換されて実行されるが、コンパイル&リンクの間に、 最適化という「効率よく命令が実行するように命令を組み替える処理」が行われる。 オプティマイザによる自動の最適化も重要だけど、複雑なプログラムでは プログラマ自身も最適化を考慮しておくべき。

  • CPUの高速化に比べ主記憶(DRAM)のスピードは遅い。このため、キャッシュメモリ(SRAM)を 活用し、利用頻度の高いデータは極力キャッシュに保存されるように命令を書き換えたり、 CPU内のレジスタを極力使うように最適化が行われる。
  • 繰り返しの中で変化しない値を何度も計算で求めるのは効率が悪い。 ループの中で変化しない計算はループ前に求めるように最適化をすべき。
  • 8bitコンピュータを用いた組み込み系では、CPUが整数の乗算/除算命令が無かったりする。 このため、乗算除算を極力行わないようにすべき。 また、もう少しマシな組み込み系でも、CPUに浮動小数点演算機構が組み込まれていなかったりする。こういうプロセッサでは、浮動小数点演算も極力行わないようにする。
  • 最近のコンピュータでは、a*b+c*dといった積和演算や、byteデータ数個に同じ演算を施すといったことが多く、CPUが専用の計算命令を持っている。こういうプロセッサでは、 こういう命令を極力使うように最適化が行われる。

3次元表示

n データを視覚的に表示する場合、3次元表示は重要であり、 簡単な表示では、等軸測投影や2軸測投影といった方法がとられる。 2軸測投影をさらに簡略化した方法で斜軸投影もあるが、 座標軸が直交していないので表示が歪んで見える場合もある。

3次元で見えるためには、遠近法も重要であり、簡単な図法では2消点透視図がとられる。 実際には、投影面と視点による縮小表示などが行われる。

しかし、ここまでの話では、物体の表示座標を求めているだけ。 グラフィックスでは、このあと、陰面処理光源処理(シェーディング)テクスチャマッピングといった、 処理が行われる。