annotate Renderer/Engine/spe/CreatePolygonFromSceneGraph.cc @ 1129:a8bffdb5d2e3 draft

bus error
author yutaka@localhost.localdomain
date Sun, 13 Feb 2011 07:20:55 +0900
parents 6043da6e48f1
children 5664473b4dba
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1013
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
1 /**
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
2 * SceneGraph が増えてくると動かなくなるかもしれない。
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
3 * 一応 mainMem とかで動くようになるとは思うけど。
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
4 * だめだったら、そこら辺が怪しいと思うべき
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
5 */
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
6
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
7 #include "CreatePolygonFromSceneGraph.h"
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
8 #include "polygon_pack.h"
1126
6043da6e48f1 complete compile but not work yet.
yutaka@localhost.localdomain
parents: 1026
diff changeset
9 #include "texture.h"
1013
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
10
1129
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
11 SchedDefineTask(CreatePolygonFromSceneGraph);
1013
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
12
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
13 /**
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
14 * ベクトルに行列を乗算する
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
15 * @param[out] v vector (float[4])
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
16 * @param[in] m matrix (float[16])
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
17 */
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
18 static void
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
19 ApplyMatrix(float *v, float *m)
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
20 {
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
21 float t[4];
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
22
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
23 t[0] = v[0];
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
24 t[1] = v[1];
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
25 t[2] = v[2];
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
26 t[3] = v[3];
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
27
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
28 for (int i = 0; i < 4; i++) {
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
29 v[i] = t[0]*m[i] + t[1]*m[i+4] + t[2]*m[i+8] + t[3]*m[i+12];
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
30 }
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
31 }
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
32
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
33
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
34 static int
1129
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
35 run(SchedTask *smanager, void *rbuf, void *wbuf)
1013
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
36 {
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
37 float xyz1[4], xyz2[4], xyz3[4];
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
38 float normal1[4],normal2[4],normal3[4];
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
39
1126
6043da6e48f1 complete compile but not work yet.
yutaka@localhost.localdomain
parents: 1026
diff changeset
40 //pp, matrix, real_matrix を受け取る
6043da6e48f1 complete compile but not work yet.
yutaka@localhost.localdomain
parents: 1026
diff changeset
41 PolygonPackPtr in_pp = (PolygonPackPtr)smanager->get_input(rbuf, 0);
6043da6e48f1 complete compile but not work yet.
yutaka@localhost.localdomain
parents: 1026
diff changeset
42 float *matrix = (float*)smanager->get_input(rbuf, 1);
6043da6e48f1 complete compile but not work yet.
yutaka@localhost.localdomain
parents: 1026
diff changeset
43 float *real_matrix = (float*)smanager->get_input(rbuf, 2);
6043da6e48f1 complete compile but not work yet.
yutaka@localhost.localdomain
parents: 1026
diff changeset
44 texture_list *tritexinfo = (texture_list*)smanager->get_input(rbuf, 3);
1129
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
45
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
46 PolygonPackPtr next = (PolygonPackPtr)smanager->get_param(0);
1026
9e19e988559c create_pp_task fix.
tkaito
parents: 1018
diff changeset
47
1018
3a6766377905 sg_drawable_num add. CreatePolygonFromSceneGraph not done.
tkaito
parents: 1013
diff changeset
48
1126
6043da6e48f1 complete compile but not work yet.
yutaka@localhost.localdomain
parents: 1026
diff changeset
49 PolygonPackPtr out_pp = (PolygonPackPtr)smanager->get_output(wbuf, 0);
6043da6e48f1 complete compile but not work yet.
yutaka@localhost.localdomain
parents: 1026
diff changeset
50 out_pp->info.size = in_pp->info.size;
1129
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
51 out_pp->next = next;
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
52
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
53 if (in_pp->info.size == 0) {
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
54 printf("in_pp->info.size = 0\n");
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
55 }
1126
6043da6e48f1 complete compile but not work yet.
yutaka@localhost.localdomain
parents: 1026
diff changeset
56
6043da6e48f1 complete compile but not work yet.
yutaka@localhost.localdomain
parents: 1026
diff changeset
57 for (int i = 0; i < in_pp->info.size; i++) {
6043da6e48f1 complete compile but not work yet.
yutaka@localhost.localdomain
parents: 1026
diff changeset
58
6043da6e48f1 complete compile but not work yet.
yutaka@localhost.localdomain
parents: 1026
diff changeset
59 TrianglePack tri = in_pp->tri[i];
1013
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
60
1126
6043da6e48f1 complete compile but not work yet.
yutaka@localhost.localdomain
parents: 1026
diff changeset
61 xyz1[0] = tri.ver1.x;
6043da6e48f1 complete compile but not work yet.
yutaka@localhost.localdomain
parents: 1026
diff changeset
62 xyz1[1] = tri.ver1.y;
1129
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
63 xyz1[2] = tri.ver1.z * -1.0f;
1013
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
64 xyz1[3] = 1.0f;
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
65
1126
6043da6e48f1 complete compile but not work yet.
yutaka@localhost.localdomain
parents: 1026
diff changeset
66 xyz2[0] = tri.ver2.x;
6043da6e48f1 complete compile but not work yet.
yutaka@localhost.localdomain
parents: 1026
diff changeset
67 xyz2[1] = tri.ver2.y;
1129
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
68 xyz2[2] = tri.ver2.z * -1.0f;
1013
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
69 xyz2[3] = 1.0f;
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
70
1126
6043da6e48f1 complete compile but not work yet.
yutaka@localhost.localdomain
parents: 1026
diff changeset
71 xyz3[0] = tri.ver3.x;
6043da6e48f1 complete compile but not work yet.
yutaka@localhost.localdomain
parents: 1026
diff changeset
72 xyz3[1] = tri.ver3.y;
1129
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
73 xyz3[2] = tri.ver3.z * -1.0f;
1013
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
74 xyz3[3] = 1.0f;
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
75
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
76 // matrix = 回転行列*透視変換行列
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
77 ApplyMatrix(xyz1, matrix);
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
78 ApplyMatrix(xyz2, matrix);
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
79 ApplyMatrix(xyz3, matrix);
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
80
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
81 xyz1[0] /= xyz1[2];
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
82 xyz1[1] /= xyz1[2];
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
83 xyz2[0] /= xyz2[2];
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
84 xyz2[1] /= xyz2[2];
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
85 xyz3[0] /= xyz3[2];
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
86 xyz3[1] /= xyz3[2];
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
87
1129
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
88 TrianglePackPtr triangle = &out_pp->tri[i];
1026
9e19e988559c create_pp_task fix.
tkaito
parents: 1018
diff changeset
89
1129
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
90 triangle->ver1.x = xyz1[0];
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
91 triangle->ver1.y = xyz1[1];
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
92 triangle->ver1.z = xyz1[2];
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
93 triangle->ver1.tex_x = tri.ver1.tex_x;
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
94 triangle->ver1.tex_y = tri.ver1.tex_y;
1013
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
95
1129
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
96 triangle->ver2.x = xyz2[0];
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
97 triangle->ver2.y = xyz2[1];
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
98 triangle->ver2.z = xyz2[2];
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
99 triangle->ver2.tex_x = tri.ver2.tex_x;
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
100 triangle->ver2.tex_y = tri.ver2.tex_y;
1013
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
101
1129
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
102 triangle->ver3.x = xyz3[0];
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
103 triangle->ver3.y = xyz3[1];
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
104 triangle->ver3.z = xyz3[2];
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
105 triangle->ver3.tex_x = tri.ver3.tex_x;
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
106 triangle->ver3.tex_y = tri.ver3.tex_y;
1013
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
107
1126
6043da6e48f1 complete compile but not work yet.
yutaka@localhost.localdomain
parents: 1026
diff changeset
108 normal1[0] = tri.normal1.x;
6043da6e48f1 complete compile but not work yet.
yutaka@localhost.localdomain
parents: 1026
diff changeset
109 normal1[1] = tri.normal1.y;
6043da6e48f1 complete compile but not work yet.
yutaka@localhost.localdomain
parents: 1026
diff changeset
110 normal1[2] = tri.normal1.z * -1.0f;
1013
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
111 //normal1[3] = 1.0f;
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
112 normal1[3] = 0.0f;
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
113
1126
6043da6e48f1 complete compile but not work yet.
yutaka@localhost.localdomain
parents: 1026
diff changeset
114 normal2[0] = tri.normal2.x;
6043da6e48f1 complete compile but not work yet.
yutaka@localhost.localdomain
parents: 1026
diff changeset
115 normal2[1] = tri.normal2.y;
6043da6e48f1 complete compile but not work yet.
yutaka@localhost.localdomain
parents: 1026
diff changeset
116 normal2[2] = tri.normal2.z * -1.0f;
1013
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
117 //normal2[3] = 1.0f;
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
118 normal2[3] = 0.0f;
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
119
1126
6043da6e48f1 complete compile but not work yet.
yutaka@localhost.localdomain
parents: 1026
diff changeset
120 normal3[0] = tri.normal3.x;
6043da6e48f1 complete compile but not work yet.
yutaka@localhost.localdomain
parents: 1026
diff changeset
121 normal3[1] = tri.normal3.y;
6043da6e48f1 complete compile but not work yet.
yutaka@localhost.localdomain
parents: 1026
diff changeset
122 normal3[2] = tri.normal3.z * -1.0f;
1013
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
123 //normal3[3] = 1.0f;
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
124 normal3[3] = 0.0f;
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
125
1129
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
126 ApplyMatrix(normal1,real_matrix);
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
127 ApplyMatrix(normal2,real_matrix);
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
128 ApplyMatrix(normal3,real_matrix);
1013
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
129
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
130 normal1[0] /= normal1[2];
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
131 normal1[1] /= normal1[2];
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
132
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
133 normal2[0] /= normal2[2];
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
134 normal2[1] /= normal2[2];
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
135
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
136 normal3[0] /= normal3[2];
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
137 normal3[1] /= normal3[2];
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
138
1129
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
139 triangle->normal1.x = normal1[0];
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
140 triangle->normal1.y = normal1[1];
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
141 triangle->normal1.z = normal1[2];
1013
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
142
1129
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
143 triangle->normal2.x = normal2[0];
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
144 triangle->normal2.y = normal2[1];
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
145 triangle->normal2.z = normal2[2];
1013
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
146
1129
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
147 triangle->normal3.x = normal3[0];
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
148 triangle->normal3.y = normal3[1];
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
149 triangle->normal3.z = normal3[2];
1126
6043da6e48f1 complete compile but not work yet.
yutaka@localhost.localdomain
parents: 1026
diff changeset
150
1129
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
151 triangle->tex_info.addr = tritexinfo->pixels;
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
152 triangle->tex_info.width = tritexinfo->t_w;
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
153 triangle->tex_info.height = tritexinfo->t_h;
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1126
diff changeset
154 triangle->tex_info.scale_max = tritexinfo->scale_max;
1013
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
155 }
1026
9e19e988559c create_pp_task fix.
tkaito
parents: 1018
diff changeset
156
1013
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
157 return 0;
34bb008fab4d spe/CreatePolygonFromSceneGraph add. not done.
tkaito
parents:
diff changeset
158 }