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 される。
%%