Mercurial > hg > Game > Cerium
annotate Renderer/Engine/Tapestry.h @ 1687:81bb9b2f35ca draft
change filename
author | Shohei KOKUBO |
---|---|
date | Tue, 13 Aug 2013 01:57:13 +0900 |
parents | d8b5648668bb |
children |
rev | line source |
---|---|
283 | 1 #ifndef INCLUDED_TAPESTRY |
2 #define INCLUDED_TAPESTRY | |
3 | |
539 | 4 #include "types.h" |
5 #include "viewer_types.h" | |
6 #include "MemorySegment.h" | |
7 #include "MemList.h" | |
283 | 8 |
9 /** | |
10 * image file name と tapestry DB の binary tree | |
11 * | |
12 * // PPE | |
13 * main memory の tapestry DB (Array) | |
539 | 14 * tapestry DB への accessor |
283 | 15 * |
16 * TapestryPtr getTapestry(int TapestryID); | |
17 * TilePtr getTile(TapestryPtr tapsetry, int tx, int ty, int scale); | |
18 * | |
19 * SPE が生成する tapestry List (in CreateSpan) | |
20 * (no texture image) | |
21 * @in TapestryDBPtr, Tapestry ID, x, y, tx, ty, px, py | |
22 * x, y : polygon の中の平面座標 | |
23 * tx, ty : texture の座標 | |
24 * px, py : texture の分割数 | |
25 * | |
26 * @out (TilePtr, tix1, tiy1, tix2, tiy2)* | |
539 | 27 * |
283 | 28 * |
29 * SPE に渡す tapestry List | |
30 * @in Tile | |
31 * | |
32 * // SPE | |
33 * SPE 内部での tapestry DB (Hash) | |
34 * TapestryID, scale, TilePtr, Tile | |
35 * | |
36 * | |
37 * SPE 内部での tapestry DB への accessor | |
38 * TileEntryPtr getTile(int TapestryID, int tx, int ty, int scale); | |
39 * | |
40 * if (TileEntry == NULL) { | |
41 * DMA read | |
42 * } | |
539 | 43 * |
283 | 44 * |
45 * Rendering | |
46 * 1pass Zbuffer と Texture の有無の判定 | |
47 * if (zbuffer ok) { | |
48 * if (texture ある) { | |
49 * zbuffer 、linebunf に書き込む | |
50 * } else { | |
51 * texture の load list に加える | |
52 * zbuffer だけ更新しておく | |
53 * } | |
54 * } else { | |
55 * 無視 | |
56 * } | |
57 * | |
58 * 1pass で texture が一杯になったら、中断して | |
59 * ここまでのを書き込んどけ | |
60 * | |
61 * | |
62 * 2pass rgb の書き込み | |
63 * | |
64 * if (zbuffer の値が自分と一緒) { | |
65 * read した texture みて | |
66 * 書き込め! | |
67 * } | |
68 * | |
69 */ | |
70 struct texture_block { | |
539 | 71 |
283 | 72 }; |
73 | |
539 | 74 typedef MemorySegment Tile, *TilePtr; |
283 | 75 |
1167 | 76 #define MAX_TILE 64 |
283 | 77 |
1162 | 78 |
283 | 79 /** |
80 * TileList 中の Tile の追い出しは、現在 FIFO で実装している | |
539 | 81 * これは汎用のサイズ別 freelist に置き換える |
82 * freelist は double linked list で、LRU をサポートする | |
83 */ | |
84 class TileList : public MemList { | |
85 TileList(MemorySegment* ms) : MemList(ms) {} | |
86 | |
87 /*! | |
88 中身は同じ | |
283 | 89 */ |
539 | 90 }; |
283 | 91 |
1161
cc1a50cac83d
use MemorySegment API for pp load. do not check execution of the cell side. to be continued..
Yutaka_Kinjyo
parents:
606
diff
changeset
|
92 |
283 | 93 typedef TileList* TileListPtr; |
94 | |
95 #endif |