Mercurial > hg > Papers > 2008 > gongo-sigos
view cerium-rendering.tex @ 10:887d57278cb6
*** empty log message ***
author | gongo |
---|---|
date | Wed, 26 Mar 2008 12:59:31 +0900 |
parents | b70a62630a57 |
children | 6c558cd2ac8b |
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 転送し描画処理を行うわけだが、 全ての 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 される。