view rendering.tex @ 0:5a47ca319df5

Initial revision
author akira
date Mon, 03 Mar 2008 20:38:53 +0900
parents
children dd72cabc3aff
line wrap: on
line source

\section{レンダリングエンジン}
PS3Linuxでは以前我々が扱っていたPS2Linuxと違いGDPに直接アクセスすること
ができない。しかし、フレームバッファは扱うことができる。そこでMesa
\cite{bib:Mesa}のフレー
ムバッファ用ドライバであるOSMesaを使ってゲーム開発を行っていた。しかし、
OSMesaはメインメモリ依存でCellのようなマルチコアアーキテクチャを活かすよ
うな分割を行うことは容易ではない。\\
そこで我々はシーングラフ、レンダリングエンジン、タスクマネージャからなる
Ceriumを作ることにした。\\
ゲームの中の一つの場面(Scene)を構成するオブジェクトやその振る舞い、ゲー
ムのルールの集合をSceneGraphとする。SceneGraphの各ノードがゲームの一部で
あるオブジェクトのファイルやゲームのルールとなり、ノードをたどり実行する
ことでゲームの中の一つの場面となる。SceneGraphはゲームプログラムとしての
条件を満たす物なので、一つのSceneGraphで小さなゲームと言える。\\
レンダリングエンジンはOSMesaの機能を簡素化し、よりシンプルに設計されたフ
レームワークである。OSMesaではいろいろな機能を付加し続けた結果、様々な計
算の部分でコピーがたくさん行われていた。それはCPUに多大な負荷を与えると
ともに動作が遅くなる大きな要因となっていた。そこで我々が提案するレンダリ
ングエンジンはシーングラフからポリゴンの各頂点を受け取り、頂点からSPANを
生成し、SPANniにtai対応するテクスチャを生成するシンプルな物を目指す。\\
タスクマネージャはタスクを管理するライブラリで、タスクと呼ばれる分割され
た各プログラムを依存関係を考慮しながらメモリ上にマッピングし、SPU上では
そのプログラムをDMAによりロードする。\\
これらをCbCで実装すると次のようになる。
\input{./src/render.c}