Mercurial > hg > Papers > 2008 > akira-ieice
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}