Mercurial > hg > Papers > 2008 > gongo-sigos
view cerium-rendering.tex @ 15:6c558cd2ac8b
*** empty log message ***
author | gongo |
---|---|
date | Sat, 29 Mar 2008 09:33:55 +0900 |
parents | b70a62630a57 |
children |
line wrap: on
line source
\subsection{Rendering Engine} \label{sec-rendering-engine} Rendering Engine は Polygon から Span を生成する部分と Span に RGB を マッピングし描画する部分と二つに分けることが出来る。 Span とは、Polygon に対するある特定の Y 座標に関するデータを抜き出した ものである (\figref{fig-span}) 。 \begin{figure}[tb] \begin{center} \includegraphics[scale=0.48]{figure/span.pdf} \caption{Span} \label{fig-span} \end{center} \end{figure} %%Span はテクスチャ情報のアドレスと高さと幅、それに加えて %%ポリゴンのある Y 座標に対する左端のピクセル情報、右端のピクセル情報、 %%そして Span の長さを持つ。 生成された Span を SPE が DMA で受け取り、Z Buffer を用いて Frame Buffer に書き込むピクセルの座標に対応する RGB 値を、 テクスチャデータから取り出して書き込む。 テクスチャデータは、プログラム起動時に一度だけ DMA で全て取得する。 Frame Buffer は mmap されているので、ピクセルデータを DMA 転送することで 描画している。 %% %%生成された Span を SPE に DMA 転送し描画処理を行うわけだが、 %%全ての Span を SPE に送るのは問題がある。 %%先に述べたように、SPE が扱えるメモリ領域は 256KB と非常に小さい。 %%本研究の画面環境が 1920x1080 であるため、Span の情報は元より、 %%描画に使う Z Buffer のサイズも、 %%1 line だけで 1920 * 4byte(RGB$\alpha$) = 7 KB となる。 %%そこで、SPE に DMA 転送する前に、Y 座標を 8 line 毎に %%Span のリストを生成する。これを SpanPack とする。 %%8 line 毎にとっている理由は、SPE が持てる Z Buffer が 8 line 分 (60KB) %%ぐらいだろうという見解からくるものである。 %% %%Span が持つ情報からテクスチャを計算し、ピクセル毎の RGB$\alpha$情報を %%取得する。しかし、SPE の メモリ領域の問題から、あらかじめ %%全てのテクスチャを転送しておくことが不可能な場合がある。 %%それらを考慮し、テクスチャを分割する必要がある。 %%テクスチャは、8x8 の大きさに分割される。 %%Span はそれぞれのテクスチャに沿って生成される。つまり、 %%Span 一つにつき、分割したテクスチャ一つが DMA される。 %%