annotate old/simple_render/spe/CreatePolygonPack.cpp @ 507:735f76483bb2

Reorganization..
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 12 Oct 2009 09:39:35 +0900
parents TaskManager/Test/simple_render/spe/CreatePolygonPack.cpp@f64d75473f95
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
83
9b0b11bf4085 *** empty log message ***
gongo
parents:
diff changeset
1 #include <stdio.h>
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
2 #include <stdlib.h>
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
3 #include <malloc.h>
83
9b0b11bf4085 *** empty log message ***
gongo
parents:
diff changeset
4 #include "CreatePolygonPack.h"
9b0b11bf4085 *** empty log message ***
gongo
parents:
diff changeset
5 #include "polygon_pack.h"
9b0b11bf4085 *** empty log message ***
gongo
parents:
diff changeset
6 #include "scene_graph_pack.h"
9b0b11bf4085 *** empty log message ***
gongo
parents:
diff changeset
7
88
504899860e66 *** empty log message ***
gongo
parents: 87
diff changeset
8
504899860e66 *** empty log message ***
gongo
parents: 87
diff changeset
9 void
504899860e66 *** empty log message ***
gongo
parents: 87
diff changeset
10 CreatePolygonPack::read(void)
504899860e66 *** empty log message ***
gongo
parents: 87
diff changeset
11 {
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
12 SchedTask::read();
88
504899860e66 *** empty log message ***
gongo
parents: 87
diff changeset
13 }
504899860e66 *** empty log message ***
gongo
parents: 87
diff changeset
14
83
9b0b11bf4085 *** empty log message ***
gongo
parents:
diff changeset
15 int
9b0b11bf4085 *** empty log message ***
gongo
parents:
diff changeset
16 CreatePolygonPack::run(void *rbuf, void *wbuf)
9b0b11bf4085 *** empty log message ***
gongo
parents:
diff changeset
17 {
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
18 SceneGraphPack *sgp = (SceneGraphPack*)rbuf;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
19 PolygonPack *pp = (PolygonPack*)wbuf;
83
9b0b11bf4085 *** empty log message ***
gongo
parents:
diff changeset
20
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
21 float xyz1[4],xyz2[4],xyz3[4];
83
9b0b11bf4085 *** empty log message ***
gongo
parents:
diff changeset
22
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
23 for (int i = 0; i < sgp->info.size; i++) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
24 SceneGraphNodePtr node = &sgp->node[i];
83
9b0b11bf4085 *** empty log message ***
gongo
parents:
diff changeset
25
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
26 int n,nt,pt;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
27 for(n=0,nt=0,pt=0; n<node->size*3; n+=9,nt+=6,pt++) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
28 xyz1[0] = node->vertex[n];
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
29 xyz1[1] = node->vertex[n+1];
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
30 xyz1[2] = node->vertex[n+2]*-1;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
31 xyz1[3] = 1;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
32 xyz2[0] = node->vertex[n+3];
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
33 xyz2[1] = node->vertex[n+3+1];
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
34 xyz2[2] = node->vertex[n+3+2]*-1;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
35 xyz2[3] = 1;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
36 xyz3[0] = node->vertex[n+6];
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
37 xyz3[1] = node->vertex[n+6+1];
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
38 xyz3[2] = node->vertex[n+6+2]*-1;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
39 xyz3[3] = 1;
83
9b0b11bf4085 *** empty log message ***
gongo
parents:
diff changeset
40
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
41 rotate(xyz1, node->translation);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
42 rotate(xyz2, node->translation);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
43 rotate(xyz3, node->translation);
83
9b0b11bf4085 *** empty log message ***
gongo
parents:
diff changeset
44
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
45 pp->tri[pt].ver1.x = xyz1[0];
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
46 pp->tri[pt].ver1.y = xyz1[1];
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
47 pp->tri[pt].ver1.z = xyz1[2];
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
48 pp->tri[pt].ver1.tex_x = node->texture[nt];
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
49 pp->tri[pt].ver1.tex_y = node->texture[nt+1];
83
9b0b11bf4085 *** empty log message ***
gongo
parents:
diff changeset
50
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
51 pp->tri[pt].ver2.x = xyz2[0];
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
52 pp->tri[pt].ver2.y = xyz2[1];
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
53 pp->tri[pt].ver2.z = xyz2[2];
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
54 pp->tri[pt].ver2.tex_x = node->texture[nt+2];
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
55 pp->tri[pt].ver2.tex_y = node->texture[nt+2+1];
83
9b0b11bf4085 *** empty log message ***
gongo
parents:
diff changeset
56
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
57 pp->tri[pt].ver3.x = xyz3[0];
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
58 pp->tri[pt].ver3.y = xyz3[1];
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
59 pp->tri[pt].ver3.z = xyz3[2];
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
60 pp->tri[pt].ver3.tex_x = node->texture[nt+4];
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
61 pp->tri[pt].ver3.tex_y = node->texture[nt+4+1];
83
9b0b11bf4085 *** empty log message ***
gongo
parents:
diff changeset
62
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
63 pp->tri[pt].tex_width = node->tex_width;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
64 pp->tri[pt].tex_height = node->tex_height;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
65 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
66 pp->info.size = pt;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
67 pp->ssl = sgp->ssl;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
68 }
83
9b0b11bf4085 *** empty log message ***
gongo
parents:
diff changeset
69
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
70 return sizeof(PolygonPack);
83
9b0b11bf4085 *** empty log message ***
gongo
parents:
diff changeset
71 }
9b0b11bf4085 *** empty log message ***
gongo
parents:
diff changeset
72
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
73 void
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
74 CreatePolygonPack::write(void)
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
75 {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
76 SchedTask::write();
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
77
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
78 free(readbuf);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
79 free(writebuf);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
80 }
105
3e331f7576a1 *** empty log message ***
gongo
parents: 102
diff changeset
81
3e331f7576a1 *** empty log message ***
gongo
parents: 102
diff changeset
82 void
83
9b0b11bf4085 *** empty log message ***
gongo
parents:
diff changeset
83 CreatePolygonPack::rotate(float *xyz, float *matrix)
9b0b11bf4085 *** empty log message ***
gongo
parents:
diff changeset
84 {
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
85 float abc[4];
106
c9efdb17e8d2 *** empty log message ***
gongo
parents: 105
diff changeset
86
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
87 abc[0] = xyz[0];
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
88 abc[1] = xyz[1];
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
89 abc[2] = xyz[2];
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
90 abc[3] = xyz[3];
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
91
321
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
92 // SIMD 使えるよね
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
93 for (int i=0; i<4; i++)
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
94 {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
95 xyz[i] = abc[0]*matrix[i] + abc[1]*matrix[i+4]
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
96 + abc[2]*matrix[i+8] + abc[3]*matrix[i+12];
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
97 }
83
9b0b11bf4085 *** empty log message ***
gongo
parents:
diff changeset
98 }
9b0b11bf4085 *** empty log message ***
gongo
parents:
diff changeset
99
9b0b11bf4085 *** empty log message ***
gongo
parents:
diff changeset
100 SchedTask*
9b0b11bf4085 *** empty log message ***
gongo
parents:
diff changeset
101 createTask_createPolygonPack(TaskListPtr _taskList, TaskPtr _task,
9b0b11bf4085 *** empty log message ***
gongo
parents:
diff changeset
102 void *rbuff, void *wbuff, DmaManager *dma)
9b0b11bf4085 *** empty log message ***
gongo
parents:
diff changeset
103 {
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
104 rbuff = memalign(16, sizeof(SceneGraphPack));
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
105 wbuff = memalign(16, sizeof(PolygonPack));
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
106
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 106
diff changeset
107 return new CreatePolygonPack(_taskList, _task, rbuff, wbuff, dma);
83
9b0b11bf4085 *** empty log message ***
gongo
parents:
diff changeset
108 }