view paper/finally.tex @ 14:4d6138d7d935

*** empty log message ***
author akira
date Sun, 17 Feb 2008 14:04:11 +0900
parents c12d7a3c1cc2
children 2d92b9d0576e
line wrap: on
line source

\chapter{まとめと今後の課題}
\section{まとめ}
本稿ではCell Broadband Engineを用いて、新たなゲームフレームワークの提案を行った。PlayStation3ではGDPを使うことができないので、PlayStation3に搭載されているハードウェアを100\%活用できないという欠点がある。しかし、ps3fbという従来のLinuxに搭載されているフレームバッファがあるので、PlayStation3以外でテストを行うことが可能となるのは利点でもある。\\
まず例題としてOSMesaのSpanを描画するルーチンをSPUを使って並列処理するように実装した。その結果、それなりの結果を得ることができた。このOSMesaで実験を行ったことにより、zバッファの並列化を行うことが大きな成果と言える。その上で、よりゲーム班が使いやすいフレームワークを提案し実装している。\\
このフレームワークのプロジェクトはまだ始まったばかりである。実装されていない部分や直す余地があるところがたくさんある。今後に残された課題を示す。
\section{今後の課題}
\subsection{CbCの導入}
今回ゲームプログラムを行った上で、改めてゲームプログラミングは状態遷移で記述すべきものの一つであることを感じた。そこで本研究室で開発されている言語Continuation based C(CbC)がゲームプログラミングに向いている。\cite{scenario}\\
シーングラフとレンダリングエンジンをCbCで記述すれば、時最適化されたgccのコードに比べれば実行速度は落ちるが、それでもより信頼性の高いプログラミングで実装することが可能となる。
\subsection{より精度の高い演算}
ポリゴンからspanを生成するときにある程度の誤差は修正するように実装したが、それでも誤差は残る。この誤差をより小さくする計算方法があることはわかっている。それらを実装し、より鮮明な画像を表示することが必要である。
\subsection{SIMDによる実装}
SPUには、SIMDによる並列演算が可能となっている。今現在SIMDによる実装は行われていないが、実際は単純に並列実行するよりもSIMDの方が効果が大きいと期待している。
\subsection{動的なゲームの作成}
今回我々が作ったレンダリングエンジンはテクスチャを張った立方体を回転する例題を想定すると動くことは想定できる。が、複雑なゲームを実行すると新たな問題が生じる可能性がある。例えばs-dandyのようなゲームではボスのような巨大なテクスチャを必要とするものやちいさくてもたくさん出てくる敵キャラなどを実装することにより、新たな問題提起になりうる。
\subsection{Shading}
シェーディングとは光源を基にモデルに対して陰影をつけるこである。光源を想定した構造体の定義は済んでいるが、それはまだ実装されていないため、実装する必要がある。と
\subsection{Alpha blending}
アルファブレンディングはアルファという値を使い、透明具合を判断する物である。モデルが重なり合ったとき、普通は上にある方が描画される。しかし、透明の設定をしていると、下の物が見える可能性を残している。その透明もしくは半透明をアルファ値から読み取り実装する必要がある。
\subsection{z sort}
OSMesaではどちらが手前にあるのかという判断をzバッファを用いて判断していた。しかし、それはSPUに画面全体のzバッファを保持することができずy座標ごとにspanをソートし送り出す工夫を施さなければならない。しかし、zソートはzバッファと違い、面に対してどちらが手前にあるかというのを判断し、おくにある面から描画していく手法である。そうすることにより、後に描画される方が必ず手前にくる。そうすることでSPUはzバッファがいらなくなる。
\subsection{評価}
今回我々が実装しているCeriumはまだ途中段階までしか実装できていない。よって評価を下すことができない。完成させた上で評価することも課題の一つと言える。