Mercurial > hg > Members > kono > Cerium
annotate Renderer/Engine/ChangeLog @ 618:360032cc500e
worked. Cell fix. (not yet tested)
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 14 Nov 2009 21:17:02 +0900 |
parents | 735f76483bb2 |
children | c7b5c99252ad |
rev | line source |
---|---|
618
360032cc500e
worked. Cell fix. (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
507
diff
changeset
|
1 2009-11-14 Shinji Kono <kono@ie.u-ryukyu.ac.jp> |
360032cc500e
worked. Cell fix. (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
507
diff
changeset
|
2 |
360032cc500e
worked. Cell fix. (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
507
diff
changeset
|
3 DrawSpan の dma_write を追放。なんでこんなになっていたかは謎。 |
360032cc500e
worked. Cell fix. (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
507
diff
changeset
|
4 |
360032cc500e
worked. Cell fix. (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
507
diff
changeset
|
5 これで、renew Task を落とせます。 |
360032cc500e
worked. Cell fix. (not yet tested)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
507
diff
changeset
|
6 |
507 | 7 2009-08-06 Shinji Kono <kono@ie.u-ryukyu.ac.jp> |
8 | |
9 DrawSpan の reboot/ TASK_DRAW_SPAN2 は、使ってないのね。 | |
10 | |
11 | |
283 | 12 2009-03-29 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp> |
13 | |
14 * Makefile | |
15 SGlist.{cpp,h} を make clean で消去し、 | |
16 make で自動生成するようにしました。 | |
17 けどなんか他のファイルと同じ書きかたしても | |
18 上手く行かなかった。何か見落としてるかもしれない。誰か直(ry | |
19 | |
20 2009-02-12 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp> | |
21 | |
22 * task/CreatePolygonFromSceneGraph.cpp (CreatePolygonFromSceneGraph::run): fix | |
23 下にあわせる様に | |
24 | |
25 * SceneGraph.cpp (SceneGraph::SceneGraph, SceneGraph::init) | |
26 (SceneGraph::finalize_original): fix | |
27 今まで、Polygon が持つ vertex, normal, texture coordinate ってのが | |
28 | |
29 --------------------------------------- | |
30 data = | vertex | normal | texture | sizeof(data) = size*3 | |
31 --------------------------------------- | |
32 \ size / \ size / \ size / | |
33 | |
34 てな感じで、SceneGraph->data の中に 3 つ入ってたわけです。 | |
35 これだと、アクセスする時にどれがどれかわからんくなるし、 | |
36 ソース読む時に迷う(経験談)ので、data を消して、代わりに | |
37 coord_xyz, normal, coord_tex を作りました。 | |
38 | |
39 * polygon.cpp (Polygon::pickup_coordinate) | |
40 (Polygon::pickup_normal, Polygon::pickup_texture): | |
41 | |
42 2009-02-10 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp> | |
43 | |
44 * Makefile.macosx (depend): fix | |
45 depend.inc とかを吐き出す様にしました | |
46 | |
47 * Camera.cpp (Camera::Camera, Camera::updateView) | |
48 (Camera::updatePerspective, Camera::updateScreen) | |
49 (Camera::update): fix | |
50 なんとかカメラできてるっぽいです。 | |
51 Perspective とかも聞いてるし、中心に向かって遠くなってる。 | |
52 あとは行列演算をもうちょいこぎれいにすればいい感じかなー。 | |
53 | |
54 残りは、ユーザ側からの設定。例えば | |
55 1. 車の運転席目線(FPS) | |
56 2. 車の後ろから(TPS) | |
57 3. 車の前から(SPS) | |
58 | |
59 的なのを、ユーザが CameraData みたいな構造体に | |
60 zd とか yd とかを設定して camera->set(data) とかやれば | |
61 反映するみたいな!みたいな! | |
62 | |
63 2009-02-09 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp> | |
64 | |
65 * SceneGraphRoot.cpp (SceneGraphRoot::allExecute) | |
66 (SceneGraphRoot): fix | |
67 SceneGraph を root から走査していきながら | |
68 その都度コピーしていき、最終的に全体の新しい SceneGraph ができる。 | |
69 削除されていればコピーしない、っていうのは簡単だけど | |
70 追加された場合、コピー元に追加されるのは困るので | |
71 コピーしたやつに追加って形にしたら今のコードになった。 | |
72 めんどくさいっちゃめんどくさい。もっと綺麗な書き方あるかね | |
73 | |
74 | |
75 2009-02-01 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp> | |
76 | |
77 * SceneGraph.cpp (SceneGraph::SceneGraph) | |
78 (SceneGraph::SceneGraph, SceneGraph::SceneGraph) | |
79 (SceneGraph::finalize_original, SceneGraph) | |
80 (SceneGraph::finalize_copy): add, fix | |
81 今のところ、SceneGraph の作られ方は | |
82 | |
83 a1. xml ファイルから生成 (sgid 毎、sg_src[] に格納) | |
84 a2. ID を指定し、sg_src[id] の SceneGraph を複製 | |
85 a3. xml も ID も指定しない、何も表示しない SceneGraph | |
86 | |
87 a1 の時はポリゴンデータ(data[])を生成するわけだけど、 | |
88 a2 でも、オリジナルと同じ data[] を持つ必要は(今は)ない。 | |
89 なので、a2 の場合、data[] は a1 と同じ場所を指せば良い。 | |
90 しかし、今までは、SceneGraph::~SceneGraph では | |
91 どんな SceneGraph でも | |
92 | |
93 delete [] data; | |
94 | |
95 とかやってたので、それならということで | |
96 | |
97 b1. a1 用の、Desturctor で data[] を delete する finalize_original() | |
98 b2. a2,a3 用の、data[] を削除しない finalize_copy() | |
99 | |
100 を用意し、a1,a2,a3 の Consturoctor で、どっちかを設定する。 | |
101 | |
102 2009-01-30 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp> | |
103 | |
104 * spe/DrawSpan.cpp (DrawSpan::drawDot1): add | |
105 span->length_x == 1 の処理。 | |
106 | |
107 (DrawSpan::drawDot2): add | |
108 Dot1 の続き。要は Dot1 で load して、Dot2 で wait->書き込みって感じ | |
109 しかし、1ドットだとそこまで待つ必要もないかなって感じなので | |
110 今は Dot 2には何も書いてない。ちゃんとしらべて、必要そうだったら | |
111 ここで書き込みを行う | |
112 | |
113 (DrawSpan::drawLine1): add | |
114 span->length_x > 1 の処理。 | |
115 いくつか Load パターンを考えてる途中 | |
116 | |
117 1. 全部 load | |
118 1. z buf で描きこむと判断したとき、その pixel の texture tile を | |
119 load する。(すでにある、ないに関わらず。ある場合は、実際には | |
120 Load の処理は行われないが) | |
121 2. Line2 で描画する(ここで使う tile はすでに全部読み込まれてるとする | |
122 | |
123 2. 無い物だけload | |
124 1. 書き込むと判断したとき、tile があるかどうかを調べ | |
125 あればそのまま linebuf に、無ければ load を掛けて continue; | |
126 このとき、load した(つまりまだ書き込まれてない) 場所を覚えておく | |
127 2. Line2 で、1. で覚えた場所から再び計算して描画する。 | |
128 tile はすでに全部読み込まれているとする | |
129 | |
130 まだあったけど忘れた。 | |
131 今のところ描画領域が 256x8、もしくは512x8 で、 | |
132 単純に考えて、領域pixel と texture pixel が一緒だと考えると | |
133 一個の Span で最大 64 (512/8) 個の tile があればいいと考えられる。 | |
134 一個の SPE には Tile を 128 個持っておけるし、 | |
135 今は Span を二つ平行して処理しているので、 | |
136 途中で Tile が足りなくなる!ってことはないはず。 | |
137 とまあ、いろいろ考えてたんだけど、何書けばいいのか忘れた。。 | |
138 思い出したらまた書きます。 | |
139 | |
140 2009-01-26 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp> | |
141 | |
142 * spe/CreateSpan.cpp (CreateSpan::run): fix | |
143 ポリゴンをx軸に水平に分割し、その二つを計算するってのが | |
144 half_triangelで、上としたで、何故か渡すテクスチャの情報が違う。 | |
145 なんでだろうと思いつつも、今まで特に問題が出なかったから無視してたが、 | |
146 今回、三つのSceneGraph を動かしてる時に問題発生。 | |
147 それぞれ違うテクスチャを貼ってるのに、なぜかそれらのうちの半分が | |
148 別のテクスチャが貼られていた。簡単に言うと、A,B,C の SG があった。 | |
149 | |
150 A: 正常 | |
151 B: 右上だけ A のテクスチャ | |
152 C: 右上だけ A のテクスチャ | |
153 | |
154 といった具合。わけがわからなかったんだが、 | |
155 half_triangle に渡すやつの所為だと気づきました | |
156 なんでここだけ pp->tri[0].tex_info.addr とか渡してんのか未だに謎。 | |
157 単なる書き間違いか直し間違いか。微妙なところ。 | |
158 これ書いた後輩はもう居ない | |
159 | |
160 | |
161 * SceneGraphIterator.cpp (SceneGraphIterator::hasNext) | |
162 (SceneGraphIterator::next): fix | |
163 検索する引数を int id に変更。 | |
164 | |
165 * SceneGraph.h (class SceneGraph): add variable | |
166 int flag_drawbale : この SceneGraph は描画する物かどうか | |
167 int sgid : SceneGraph の ID 。ID は SGList.h にあるものを使う | |
168 | |
169 * SceneGraphIterator.cpp : add file | |
170 SceneGraph を走査する用。 | |
171 基本、Java の Iterator を参考にしてます。 | |
172 追加機能としては | |
173 | |
174 - hasNext(const char* name); | |
175 名前が name の SceneGraph があるかどうか | |
176 | |
177 - next(const char* name); | |
178 名前が name の SceneGraph まで進ませる | |
179 | |
180 * SceneGraphIterator.cpp : TODO | |
181 hasNext とかは名前じゃなくて ID が良いかなーとも思うけどね。 | |
182 てかその方がいいな。あとで直します | |
183 | |
184 * ieshoot.cpp (ieboss_move): add | |
185 (ieboss_collision): add | |
186 BOSSの動きを追加。 | |
187 IETAMA が数回衝突したら BOSS を消すって処理。 | |
188 | |
189 * SceneGraphIterator.cpp (SceneGraphIterator::next): fix | |
190 break してなかった。そりゃ取れないわ | |
191 | |
192 * SceneGraph.cpp (SceneGraph::realRemoveFromTree): fix | |
193 | |
194 < p1 = p1->next; | |
195 < p = p->next; | |
196 ===== | |
197 > p1 = p1->brother; | |
198 > p = p->brother; | |
199 | |
200 | |
201 * viewer.cpp (Viewer::run_draw): fix | |
202 Spanの無い部分を塗りつぶす処理はタスクを走らせず、 | |
203 そのまま memset とかの方が早い。 | |
204 まとめてするタスクを立ち上げるってのもいいかもしれない。 | |
205 あと、memsetで指定する値が、0xFF と 0x00 とで速度が違う。 | |
206 universe だと、 | |
207 | |
208 0xFF 24fps | |
209 0x00 30fps | |
210 | |
211 なんだろう。0x00 だと、ただのクリアになるから速いってことかな。 | |
212 | |
213 * Camera.h (class Camera): add | |
214 とりあえず Camera を作って、これを SceneGraph の Top にした。 | |
215 | |
216 * SceneGraph.cpp (SceneGraph::realRemoveFromTree): add | |
217 realRemove() の Tree構造用。削除後の tree top を返す様にしている。 | |
218 まあ top が消えなければ返す必要も無いし、top が消えるってことは | |
219 SceneGraph そのものが消えるってことでそうは無い・・はずだけどね。 | |
220 (SceneGraph::realRemoveFromList): add | |
221 realRemove() の list用。削除後の list top を返す様にしている。 | |
222 (SceneGraph::realRemoveFromTree): fix | |
223 < p->next = p1->next; | |
224 === | |
225 > p->brother = p1->brother; | |
226 | |
227 2009-01-25 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp> | |
228 | |
229 * add (tools/create_sglist): new | |
230 必要な SceneGraph xml file から SceneGraph を抽出し、 | |
231 名前と対応する ID を SGList.h に出力する。 | |
232 また、名前から ID を求める sglist_table を SGList.cpp に出力する。 | |
233 | |
234 * SceneGraph.cpp (SceneGraph::remove): add | |
235 User API。ここで削除するのではなく、まずはフラグを立てるだけ | |
236 ここですぐに消すと、allExecute() の走査で何気に困る | |
237 | |
238 (SceneGraph::isRemoved): add | |
239 この SceneGraph 削除フラグが立っているかどうか | |
240 | |
241 (SceneGraph::realRemove): TODO | |
242 子を持つ SceneGraph が消された場合、 | |
243 その子孫を全て削除するかどうか。まあ削除するのかな。 | |
244 | |
245 (SceneGraph::realRemove): add | |
246 Cerium System で呼ばれる。 | |
247 remove flag の立った SceneGraph を削除する。 | |
248 parentやbrother、next は繋ぎ直す。 | |
249 | |
250 * SceneGraphRoot.cpp (SceneGraphRoot::addNext): add | |
251 sg_available_list に追加していく | |
252 木の操作が要らないアクセスの際にはこっちの方がいい。 | |
253 | |
254 (SceneGraphRoot::setSceneData): add | |
255 Cerium に SceneGraph の tree を渡す。Cerium はこの tree を辿って | |
256 処理を行う | |
257 | |
258 (SceneGraphRoot::createFromXMLfile): add | |
259 xml file を指定して、そこから SceneGraph を生成し、 | |
260 sg_src に格納する。ユーザはこの SceneGraph を直接は扱えない。 | |
261 以下に示す createSceneGraph の、読み込み元データとして保存しておく。 | |
262 | |
263 (SceneGraphRoot::createSceneGraph): add | |
264 オリジナルの SceneGraph を clone してユーザに返す。 | |
265 この SceneGraph をユーザが操作する。 | |
266 | |
267 * SceneGraphRoot.h (class SceneGraphRoot): new variables | |
268 sg_src, sg_exec_list, sg_draw_list, sg_available_list | |
269 | |
270 * addfile (SceneGraphRoot.cpp) | |
271 SceneGraph を管理するクラス、ってところか。 | |
272 Root ってのは SceneGraph という名前からすると | |
273 一番親と思われそうで微妙です。変えるかも。 | |
274 | |
275 2009-01-12 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp> | |
276 | |
277 * Joystick.cpp: TODO | |
278 使用している Joystick が | |
279 | |
280 1. PS3 コントローラ | |
281 2. PS2 コントローラにUSB変換をかましたやつ | |
282 | |
283 によってボタンの番号配置が違うので | |
284 そこを自動的に取得して割り振りたい | |
285 | |
286 SDL_JoystickName() で名前取れるんだけど | |
287 全部共通なのかなー。「PS3って文字列があるか否か」でわけてもいいけど | |
288 | |
289 * Joystick.cpp: fix | |
290 コントローラボタンの番号を PS3 コントローラに合わせました。 | |
291 | |
292 - 参考 | |
293 PS3 Linux SDLでプログラミング -コントローラを使う- | |
294 http://yun.cup.com/ps3sdl007.html | |
295 | |
296 アナログスティックの方はまだです | |
297 | |
298 2009-01-08 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp> | |
299 | |
300 * spe/DrawSpanRenew.cpp (DrawSpanRenew::run): fix | |
301 next_spack を free() していたが、do-while の最初で | |
302 next_spack = NULL とかやっている。 | |
303 DrawSpan だと、free するのは free_spack ってやつなので | |
304 問題なかったが、なぜここは free(next_spack) とかやってるのか。 | |
305 というわけで、next_spack,spack 両方用の | |
306 free_spack1, free_spack2 を生成して、これを free させることに。 | |
307 これで、ようやくまともに動くようになった。けど微妙です。 | |
308 遅いですね。 | |
309 | |
310 * addFile : DrawSpanRenew.cpp | |
311 DrawSpan の再起動 ver。 | |
312 | |
313 2008-12-22 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp> | |
314 | |
315 * fix | |
316 charles を Fedora 10 に上げて、コンパイラが新しくなったせいか、 | |
317 以下のような warning が出始めた | |
318 | |
319 warning: deprecated conversion from string constant to 'char *' | |
320 | |
321 まあよくわからんが、例えば | |
322 | |
323 char *str = "hoge"; | |
324 | |
325 みたいな所だとこの warning が出る。これを | |
326 | |
327 const char *str = "hoge"; | |
328 | |
329 にすると消えた。 | |
330 以後こういう形に統一しろよ的なやつなのかな。 | |
331 | |
332 2008-12-19 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp> | |
333 | |
334 * viewer.cpp (Viewer::run_draw): fix | |
335 startx, endx に対して、start_y, end_y って名前は統一されてなくて | |
336 わかりづらいので、starty, endy に変更 | |
337 | |
338 * main.cpp (init): fix | |
339 bpp (BitsPerPixel) の値がデフォルトで 0 になっていた。 | |
340 今のレンダリング方式では 32 がデフォルトなので、間違ってた。 | |
341 今まで気づかなかったのは | |
342 | |
343 1. SDL_SetVideoMode に bpp = 0 で渡される | |
344 2. SDL が開発・実行環境に合わせて bpp を設定 | |
345 3. 今までそれが 32 になってた | |
346 | |
347 しかし、ゲーム班の環境では bpp = 16 になってしまったため、 | |
348 その次の bitmap の allocate の時に | |
349 screen->pitch*height = 16*width*height となり、 | |
350 DrawSpan では 32 のつもりで書き込んでいたため領域外への | |
351 メモリ書き込み->エラー | |
352 | |
353 ゲーム班ありがとう | |
354 | |
355 2008-12-16 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp> | |
356 | |
357 * SceneGraph.cpp (makeTapestry): add | |
358 SceneGraph::get_data にあったけど、ごちゃごちゃしてたので | |
359 関数として生成 | |
360 | |
361 * viewer.cpp (Viewer::run_init, Viewer::run_draw): fix | |
362 * spe/DrawSpan.cpp (DrawSpan::zRow_init): delete | |
363 | |
364 Z Buffering に使う zRow は DrawSpan で毎回生成、初期化するのではなく、 | |
365 PPE で生成、初期化を行っておき、DrawSpan に add_inData で | |
366 DMA で渡すという方法に変更。速度的にはほんのちょっとしか(ry | |
367 | |
368 * spe/CreateSpan.cpp (CreateSpan::half_triangle): fix | |
369 getScale に渡す tex_width,tex_height を修正。 | |
370 比較にそのまま tex_width, tex_height を使うと、 | |
371 Span が持つテクスチャが全体の一部分だったとしても | |
372 比較結果で縮小が行われてしまうため。 | |
373 | |
374 - 例 | |
375 span->length_x = 32; | |
376 tex_width = 128; | |
377 tex_x_len = (span->tex_x2 - span->tex_x1) = (0.5 - 0.3) = 0.2; | |
378 | |
379 今までの処理だと、span->length_x < tex_width の結果により | |
380 縮小されたテクスチャを使うことになる。 | |
381 しかし、実際に Span が使う Texture の長さは | |
382 | |
383 tex_width*tex_x_len = 24 | |
384 | |
385 なので、縮小を行う必要は無い | |
386 | |
387 | |
388 2008-12-12 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp> | |
389 | |
390 * SceneGraph.cpp (SceneGraph::get_data): Todo | |
391 テクスチャの縦横が 8 の倍数でなければ弾く処理を入れる。 | |
392 | |
393 * spe/DrawSpan.cpp (DrawSpan::run): Todo | |
394 テクスチャの座標計算と、そこから取得できる Tile の DMA を | |
395 一スレッドで処理しているのでそれを分けないといけない | |
396 | |
397 * spe/CreateSpan.cpp (getTapestry): Add | |
398 (getScale): Add | |
399 | |
400 * memo: 雑記 | |
401 ようやくこいつに ChangeLog を加えました。 | |
402 なんか emacs で「C-x 4 a」とかすると、ChangeLog の entry が | |
403 加えれられるんだけど、上の階層のを探しにいくので、TaskManager/ のに | |
404 加えようとしてたわけさ。まあそういう仕様なんだけど。 | |
405 で、だからといって不可能ってわけじゃないから書けばよかったんだが。 | |
406 | |
407 要するに、これからはちゃんと書いていこうと思います。 |