Mercurial > hg > Members > kono > Cerium
diff Renderer/Engine/viewer.cc @ 985:e40dd2384357
fix light data update
author | root@henri.cr.ie.u-ryukyu.ac.jp |
---|---|
date | Fri, 01 Oct 2010 02:49:38 +0900 |
parents | df5185513c2d |
children | ac437c3cf766 |
line wrap: on
line diff
--- a/Renderer/Engine/viewer.cc Fri Oct 01 01:25:45 2010 +0900 +++ b/Renderer/Engine/viewer.cc Fri Oct 01 02:49:38 2010 +0900 @@ -762,24 +762,6 @@ game_task->spawn(); } -HTaskPtr -Viewer::update_task_create(void *data, int size, - int load_id, int spe_id, HTaskPtr wait) -{ - - HTaskPtr data_update = manager->create_task(DataUpdate); - data_update->add_inData(data,size); - data_update->set_param(0,size); - data_update->set_param(1,load_id); - data_update->set_cpu((CPU_TYPE)(spe_id)); - if (wait != NULL) { - wait->wait_for(data_update); - } - data_update->spawn(); - - return data_update; - -} void Viewer::common_draw(HTaskPtr task_next) @@ -790,8 +772,6 @@ //Light info update - //HTaskPtr data_update; - HTaskPtr data_update_wait; int light_num = 4; int size = sizeof(float)*4*light_num; //xyz+alpha(4) * light_num(4) int light_size = size / sizeof(float); @@ -805,28 +785,20 @@ } light_sysswitch[0] = light_sysswitch_stock; - - data_update_wait = manager->create_task(DataUpdate); - data_update_wait->add_inData(light_xyz,size); - data_update_wait->set_param(0,size); - data_update_wait->set_param(1,Light); - data_update_wait->set_cpu((CPU_TYPE)((int)SPE_0)); - - for (int i = 1; i < spe_num; i++) { - update_task_create(light_xyz,size,Light,(int)SPE_0+i,data_update_wait); + + + HTask *data_update_wait = 0; + for (int i = 0; i < spe_num; i++) { + data_update_wait = manager->create_task(DataUpdate); + data_update_wait->set_param(0,3); + data_update_wait->set_param(1,Light); // GlobalSet ID base + data_update_wait->set_inData(0,light_xyz,size); // Light + data_update_wait->set_inData(1,light_switch,light_num * sizeof(int)); // LightSwitch = Light+1 + data_update_wait->set_inData(2,light_sysswitch,16); // LightSysSwitch = Light+2 + data_update_wait->set_cpu((CPU_TYPE)(SPE_0+i)); + data_update_wait->spawn(); } - size = light_num * sizeof(int); - - for (int i = 0; i < spe_num; i++) { - update_task_create(light_switch,size,LightSwitch,(int)SPE_0+i,data_update_wait); - } - - size = 16; // LightSysSwitch は 4byte. 残り 12byte は DMA転送の為のパディング - - for (int i = 0; i < spe_num; i++) { - update_task_create(light_sysswitch,size,LightSysSwitch,(int)SPE_0+i,data_update_wait); - } ppack->clear(); @@ -881,7 +853,6 @@ task_draw_array->spawn_task_array(task_draw->next()); task_draw_array->set_cpu(SPE_ANY); task_next->wait_for(task_draw_array); - task_draw_array->wait_for(data_update_wait); task_draw_array->spawn(); @@ -930,7 +901,6 @@ task_draw->set_cpu(SPE_ANY); task_next->wait_for(task_draw); - task_draw->wait_for(data_update_wait); task_draw->spawn(); startx += split_screen_w; @@ -944,7 +914,6 @@ } - data_update_wait->spawn(); if (profile) { if (frames % 50 == 49) { manager->show_profile();