comparison resume/A-6-1-065746.tex @ 3:641a3389548d

fix
author aaa
date Thu, 29 Oct 2009 17:14:14 +0900
parents 224fa99e11d0
children ee82eba61e01
comparison
equal deleted inserted replaced
2:224fa99e11d0 3:641a3389548d
85 85
86 \section{Cerium} 86 \section{Cerium}
87 Cerium とは当研究室で開発した Cell 上で動作するゲームフレームワークである。 87 Cerium とは当研究室で開発した Cell 上で動作するゲームフレームワークである。
88 Cerium は SceneGraph、OSMesa に代表される Rendering Engine、そしてそれらの実行単位を Task とし、動的に全てのコアが動作する様な割り振りを行うカーネル TaskManager で構成されている。 88 Cerium は SceneGraph、OSMesa に代表される Rendering Engine、そしてそれらの実行単位を Task とし、動的に全てのコアが動作する様な割り振りを行うカーネル TaskManager で構成されている。
89 89
90 現在、Cerium では SceneGraph の Move, Collision を PPE でシーケンシャルに処理しているので、この部分の処理を SPE を用いて並列に処理するように変更する。
91
90 %ゲーム内で使用するオブジェクトは Cerium 独自の xml 形式で書かれており、xml ファイルを読込んで SceneGraph を生成する。 92 %ゲーム内で使用するオブジェクトは Cerium 独自の xml 形式で書かれており、xml ファイルを読込んで SceneGraph を生成する。
91 %Rendering に関しては処理を Task 単位に分割して SPE に投入して処理しているが、SceneGraph の処理は PPE 1つで行っている。 93 %Rendering に関しては処理を Task 単位に分割して SPE に投入して処理しているが、SceneGraph の処理は PPE 1つで行っている。
92 %SceneGraph の move, collision の処理は PPE で行っている。しかし PPE に単純な演算の繰り返しをさせるのは好ましくない。 94 %SceneGraph の move, collision の処理は PPE で行っている。しかし PPE に単純な演算の繰り返しをさせるのは好ましくない。
93 %そこで、SceneGraph の処理も Task に分割して SPE に投入し、Rendering と並行に走らせる事で処理速度の向上を計る。 95 %そこで、SceneGraph の処理も Task に分割して SPE に投入し、Rendering と並行に走らせる事で処理速度の向上を計る。
94 96
95 \section{SceneGraph の並列処理} 97 \section{SceneGraph の並列処理}
96 \subsection{vacuum} 98 \subsection{vacuum}
97 6基の SPE を用いたSceneGraph の処理の例題として、学生実験で作成されたゲーム vacuum を使用する。 99 6基の SPE を用いたSceneGraph の処理の例題として、学生実験で作成されたゲーム vacuum を使用する。
98
99 vacuum には自機と吸収ブロック、敵ブロックの3種類のオブジェクトがあり、自機を上下左右に移動させ、ボタンを押している間は自機の周りのブロックを引き寄せ、うまく吸収ブロックだけを自機と衝突させるゲームである。 100 vacuum には自機と吸収ブロック、敵ブロックの3種類のオブジェクトがあり、自機を上下左右に移動させ、ボタンを押している間は自機の周りのブロックを引き寄せ、うまく吸収ブロックだけを自機と衝突させるゲームである。
100 101
102 Move, Collision を SPE で処理する際に、SPE には SceneGraph ノードは送らない。代わりに vacuum の Move, Collision に必要な情報をまとめた Property を送る。
103
104 Property は SceneGraph ノードと1対1で対応しており、Coordinates, Angle, 親子関係の情報, 生成消滅の情報を持つ。
105 %SceneGraph ノードにはポリゴンを形成するための点やテクスチャの座標等が含まれている。これらの情報を全て SPE に送ると Local Store に入りきらない。そのため Move、Collision に必要な Coordinates, Angle, 親子関係の情報、生成消滅の情報を持つ Property の配列を作成する。
106 SceneGraph の tree と Property のバッファは二つ用意する。
101 107
102 \subsection{Move} 108 \subsection{Move}
103 vacuum のオブジェクトは全て独立して動くので 109 vacuum のオブジェクトは全て独立して動くので、使用する SPE に均等に Property を割り振る。
104 \subsection{Collision} 110 SPE でオブジェクトの種類毎の Move 処理を行い、Property を更新して PPE に返す。
105 vaccum の Collision は自機と吸収ブロック(Collision A)、自機と敵ブロック(Collision B)の二つがある。
106 Collision の種類毎に SPE で動作する Collision Task を作成する。Collision A Task は自機のノードと吸収ブロックのノードを渡す。Collision B Task には自機のノードと敵ブロックのノードを渡す。
107
108 しかし、SceneGraph ノードにはポリゴンを形成するための点やテクスチャの座標等が含まれている。これらの情報を全て SPE に送ると Local Store に入りきらないので、Move、Collision に必要な Coordinates, Angle, 親子関係の情報、生成消滅の情報を持つ Property の配列を作成する。Property は例題毎に用意して適宜要素を変更する。
109 Property は各ノードと1対1で対応している。SceneGraph の処理と Rendering を並行に実行するため Property の配列と SceneGraph の tree は2つ用意する。
110 111
111 \if0 112 \if0
112 \begin{figure}[htb] 113 \begin{figure}[htb]
113 \begin{center} 114 \begin{center}
114 \includegraphics[scale=0.43]{image/pipe.pdf} 115 \includegraphics[scale=0.43]{image/Move.pdf}
115 \caption{SceneGraph と Rendering の並列処理} 116 \caption{vacuum の Move}
116 \label{fig:pipe} 117 \label{fig:Move}
117 \end{center} 118 \end{center}
118 \end{figure} 119 \end{figure}
119 \fi 120 \fi
120 121
122 \subsection{Collision}
123 vaccum の Collision は自機と吸収ブロック(Collision A)、自機と敵ブロック(Collision B)の二つがある。
124 Collision の種類毎に SPE で動作する Collision Task を作成する。どちらの Collision も自機とブロックの衝突判定しか行わないので SPE には自機とブロックの Property を送り、SPE で2者間の衝突判定を行い、Property を更新して PPE に返す。
125
121 \begin{figure}[htb] 126 \begin{figure}[htb]
122 \begin{center} 127 \begin{center}
123 \includegraphics[scale=0.43]{image/sgToSPE.pdf} 128 \includegraphics[scale=0.43]{image/Collision.pdf}
124 \caption{Move, Collision Task を各 SPE に渡す} 129 \caption{Move, Collision Task を各 SPE に渡す}
125 \label{fig:sgToSPE} 130 \label{fig:sgToSPE}
126 \end{center} 131 \end{center}
127 \end{figure} 132 \end{figure}
128 133
129 All Move が実行されると 134 SPE は受け取った Property を用いて Move, Collision の処理を行い、Property の値を更新してPPE に返す、PPE 側では返されてきた Property の情報を元に SceneGraph を作成し Tree を再構成して Rendering に渡す。
130
131 \if0
132 \begin{figure}[htb]
133 \begin{center}
134 \includegraphics[scale=0.4]{image/SceneGraphTask.pdf}
135 \caption{各 SPE に投入する SceneGraphTask}
136 \label{fig:SceneGraphTask}
137 \end{center}
138 \end{figure}
139 \fi
140
141 SPE は受け取った Property を用いて Move, Collision の処理を行い、Property の値を更新してPPE に返す、PPE 側では返されてきた Property の情報を元に SceneGraph し Tree を再構成して Rendering に渡す。
142 135
143 \section{まとめと今後の課題} 136 \section{まとめと今後の課題}
144 \begin{itemize} 137 \begin{itemize}
145 \item 現在は SPE 1基で SceneGraph を処理する例題の作成途中なので、複数 SPE に均等に処理を割り振る例題の作成。 138 \item 現在は SPE 1基で SceneGraph を処理する例題の作成途中なので、複数 SPE に均等に処理を割り振る例題の作成。
146 \item Property から SceneGraph を生成し tree を構築する部分において、SceneGraph の新規生成と削除を考慮した設計を行う。 139 \item Property から SceneGraph を生成し tree を構築する部分において、SceneGraph の新規生成と削除を考慮した設計を行う。