view paper/cerium.tex @ 7:3aab00763c40

chapter "cerium" add
author admin@e055734.st.ie.u-ryukyu.ac.jp
date Wed, 18 Mar 2009 14:54:51 +0900
parents e7da353fafe2
children 60d0beada50d
line wrap: on
line source

\section{Cerium}

本論文で示しているゲームフレームワークは学生実験での使用を目的としている。
現在、学生実験では Playstation 3 を用いたゲームプログラミングを行っている。

これまでは Playstation 3 上での Linux 環境で SDL と OpenGL を用いて実験を行っていた。
OpenGL とは Silicon Graphics 社が中心となって開発された、OS や ハードウェアに依存しない
グラフィック処理のためのプログラミングインターフェイスである。

しかしながら Playstation 3 の PowerPC シングルプロセッサ上では Playstation 3 の特徴である 
Cell の性能は活かせない。
そこで同研究室の神里晃が OSmesa に手を加え、一部の機能を SPE に
演算させることにより、高速化させた。OSMesa とは OS やハードウェアに依存しないオフスクリーン
レンダリングライブラリである。しかし、OSMesa は機能が豊富な反面、よけいな演算が増え、
ソースコードは複雑で手を加えることが難しくなった。\cite{chiaki}

そのような理由から、我々は独自の Rendering Engine を持つことにした。その Rendering Engine を 
Cerium としている。Cerium は以下の 3 つの要素から構成されている。
 \\
\begin{itemize}
\item SceneGraph
\item Rendering Engine
\item Task Manager
\end{itemize}
 \\
\subsection{SceneGraph}

ゲームの中の一つの場面 (Scene) を構成するオブジェクトやその振る舞い、ゲームのルールの集合を SceneGraph
とする。SceneGraph の各ノードがゲームの一部であるオブジェクトの振る舞いやゲームのルールとなり、
ノードをたどり実行することでゲームの中の一つの場面となる。SceneGraph はゲームプログラムとしての
条件を満たす物なので、一つの SceneGraph で小さなゲームと言える。

\subsection{Rendering Engine}

Rendering Engine は Polygon から Span を生成する部分と Span に RGB を
マッピングし描画する部分と二つに分けることが出来る。
Span とは、Polygon に対するある特定の Y 座標に関するデータを抜き出した
ものである。

\subsection{Task Manger}

Task Manager は、Task と呼ばれる分割された各プログラムを
管理するライブラリである。Task 同士の依存関係を考慮しながら
メモリ上にマッピングし、SPE 上ではそのプログラムを
DMA 転送によりロードする。
SPE は 256KB という小さなデータ量しか持てず、
大量のプログラムを全て SPE 上に置いておくことはできない可能性がある。
そのため、必要な時に必要な実行プログラムだけが SPE 上にロード
されていることが望ましい。