comparison Renderer/Engine/viewer.cc @ 793:c260205d3185

add light switch api
author yutaka@localhost.localdomain
date Mon, 03 May 2010 05:09:58 +0900
parents f2497e0ecd7c
children 496a8159e840
comparison
equal deleted inserted replaced
792:f2497e0ecd7c 793:c260205d3185
111 int light_size = size / sizeof(float); 111 int light_size = size / sizeof(float);
112 112
113 light_xyz_stock = (float *)manager->allocate(size); 113 light_xyz_stock = (float *)manager->allocate(size);
114 light_xyz = (float *)manager->allocate(size); 114 light_xyz = (float *)manager->allocate(size);
115 115
116
117 for (int i = 0; i < light_size ; i++) { 116 for (int i = 0; i < light_size ; i++) {
118 light_xyz[i] = 0.0f; 117 light_xyz[i] = 0.0f;
119 } 118 }
120 119
121 for(int i = 0; i < spe_num; i++) { 120 for(int i = 0; i < spe_num; i++) {
126 data_load->spawn(); 125 data_load->spawn();
127 } 126 }
128 127
129 size = light_num * sizeof(int); 128 size = light_num * sizeof(int);
130 light_switch = (int*)manager->allocate(size); 129 light_switch = (int*)manager->allocate(size);
130
131 for (int i = 0; i < light_num; i++) { 131 for (int i = 0; i < light_num; i++) {
132 light_switch[i] = 0; 132 light_switch[i] = 0;
133 } 133 }
134 134
135 for(int i = 0; i < spe_num; i++) { 135 for(int i = 0; i < spe_num; i++) {
139 data_load->set_cpu((CPU_TYPE)((int)SPE_0 + i)); 139 data_load->set_cpu((CPU_TYPE)((int)SPE_0 + i));
140 data_load->spawn(); 140 data_load->spawn();
141 } 141 }
142 142
143 size = 16; // LightSysSwitch は 4byte. 残り 12byte は DMA転送の為のパディング 143 size = 16; // LightSysSwitch は 4byte. 残り 12byte は DMA転送の為のパディング
144
145 light_sysswitch = (int*)manager->allocate(size);
146
147 for (int i = 0; i < size / sizeof(int); i++) {
148 light_sysswitch[i] = 0;
149 }
144 150
145 for(int i = 0; i < spe_num; i++) { 151 for(int i = 0; i < spe_num; i++) {
146 HTaskPtr data_load = manager->create_task(DataLoad); 152 HTaskPtr data_load = manager->create_task(DataLoad);
147 data_load->set_param(0,(memaddr)size); 153 data_load->set_param(0,(memaddr)size);
148 data_load->set_param(1,(memaddr)LightSysSwitch); 154 data_load->set_param(1,(memaddr)LightSysSwitch);
322 328
323 sgroot->updateControllerState(); 329 sgroot->updateControllerState();
324 sgroot->allExecute(width, height); 330 sgroot->allExecute(width, height);
325 light_xyz_stock = sgroot->getLightVector(); 331 light_xyz_stock = sgroot->getLightVector();
326 light_switch_stock = sgroot->getLightSwitch(); 332 light_switch_stock = sgroot->getLightSwitch();
333 light_sysswitch_stock = sgroot->getLightSysSwitch();
327 //sgroot->checkRemove(); 334 //sgroot->checkRemove();
328 335
329 // ここから下は Rendering という関数にする 336 // ここから下は Rendering という関数にする
330 rendering(task_next); 337 rendering(task_next);
331 } 338 }
511 //task_next = manager->create_task(Dummy); 518 //task_next = manager->create_task(Dummy);
512 //task_next->set_post(post2runLoop, (void*)this); 519 //task_next->set_post(post2runLoop, (void*)this);
513 520
514 //Light info update 521 //Light info update
515 522
516 HTaskPtr data_update; 523 //HTaskPtr data_update;
517 HTaskPtr data_update_wait; 524 HTaskPtr data_update_wait;
518 int light_num = 4; 525 int light_num = 4;
519 int size = sizeof(float)*4*light_num; //xyz+alpha(4) * light_num(4) 526 int size = sizeof(float)*4*light_num; //xyz+alpha(4) * light_num(4)
520 int light_size = size / sizeof(float); 527 int light_size = size / sizeof(float);
521 528
524 } 531 }
525 532
526 for (int i = 0; i < light_num; i++) { 533 for (int i = 0; i < light_num; i++) {
527 light_switch[i] = light_switch_stock[i]; 534 light_switch[i] = light_switch_stock[i];
528 } 535 }
536
537 light_sysswitch[0] = light_sysswitch_stock;
529 538
530 data_update_wait = manager->create_task(DataUpdate); 539 data_update_wait = manager->create_task(DataUpdate);
531 data_update_wait->add_inData(light_xyz,size); 540 data_update_wait->add_inData(light_xyz,size);
532 data_update_wait->set_param(0,size); 541 data_update_wait->set_param(0,size);
533 data_update_wait->set_param(1,Light); 542 data_update_wait->set_param(1,Light);
538 } 547 }
539 548
540 size = light_num * sizeof(int); 549 size = light_num * sizeof(int);
541 550
542 for (int i = 0; i < spe_num; i++) { 551 for (int i = 0; i < spe_num; i++) {
543 update_task_create(light_xyz,size,LightSwitch,(int)SPE_0+i,data_update_wait); 552 update_task_create(light_switch,size,LightSwitch,(int)SPE_0+i,data_update_wait);
544 } 553 }
545 554
546 size = 16; // LightSysSwitch は 4byte. 残り 12byte は DMA転送の為のパディング 555 size = 16; // LightSysSwitch は 4byte. 残り 12byte は DMA転送の為のパディング
547 556
548 for (int i = 0; i < spe_num; i++) { 557 for (int i = 0; i < spe_num; i++) {
549 update_task_create(light_xyz,size,LightSysSwitch,(int)SPE_0+i,data_update_wait); 558 update_task_create(light_sysswitch,size,LightSysSwitch,(int)SPE_0+i,data_update_wait);
550 } 559 }
551 560
552 561
553 ppack->clear(); 562 ppack->clear();
554 for (int i = 0; i < spackList_length; i++) { 563 for (int i = 0; i < spackList_length; i++) {