… | |
… | |
19 | const char str_float [] = "float"; |
19 | const char str_float [] = "float"; |
20 | const char str_float2 [] = "float2"; |
20 | const char str_float2 [] = "float2"; |
21 | const char str_float3 [] = "float3"; |
21 | const char str_float3 [] = "float3"; |
22 | const char str_float4 [] = "float4"; |
22 | const char str_float4 [] = "float4"; |
23 | const char str_float4x4 [] = "float4x4"; |
23 | const char str_float4x4 [] = "float4x4"; |
|
|
24 | |
|
|
25 | const char str_sampler1d [] = "sampler1d"; |
|
|
26 | const char str_sampler2d [] = "sampler2d"; |
|
|
27 | const char str_sampler3d [] = "sampler3d"; |
|
|
28 | const char str_samplerCUBE [] = "samplerCUBE"; |
|
|
29 | const char str_samplerRECT [] = "samplerRECT"; |
24 | |
30 | |
25 | static CGcontext cg_context = cgCreateContext (); |
31 | static CGcontext cg_context = cgCreateContext (); |
26 | |
32 | |
27 | int var_i::next_name = 0; |
33 | int var_i::next_name = 0; |
28 | |
34 | |
… | |
… | |
97 | varying_4f vin::normal_4f ("NORMAL"); |
103 | varying_4f vin::normal_4f ("NORMAL"); |
98 | varying_3f vin::color0_3f ("COLOR0"); |
104 | varying_3f vin::color0_3f ("COLOR0"); |
99 | varying_4f vin::color0_4f ("COLOR0"); |
105 | varying_4f vin::color0_4f ("COLOR0"); |
100 | varying_3f vin::color1_3f ("COLOR1"); |
106 | varying_3f vin::color1_3f ("COLOR1"); |
101 | varying_4f vin::color1_4f ("COLOR1"); |
107 | varying_4f vin::color1_4f ("COLOR1"); |
102 | varying_2f vin::texcoord0_2f ("TEXCOORD0"); |
108 | varying_1f vin::texcoord_1f[8] = |
103 | varying_4f vin::texcoord0_4f ("TEXCOORD0"); |
109 | { |
104 | varying_2f vin::texcoord1_2f ("TEXCOORD1"); |
110 | varying_1f ("TEXCOORD0"), varying_1f ("TEXCOORD1"), varying_1f ("TEXCOORD2"), varying_1f ("TEXCOORD3"), |
105 | varying_4f vin::texcoord1_4f ("TEXCOORD1"); |
111 | varying_1f ("TEXCOORD4"), varying_1f ("TEXCOORD5"), varying_1f ("TEXCOORD6"), varying_1f ("TEXCOORD7"), |
106 | varying_2f vin::texcoord2_2f ("TEXCOORD2"); |
112 | }; |
107 | varying_4f vin::texcoord2_4f ("TEXCOORD2"); |
113 | varying_2f vin::texcoord_2f[8] = |
108 | varying_2f vin::texcoord3_2f ("TEXCOORD3"); |
114 | { |
109 | varying_4f vin::texcoord3_4f ("TEXCOORD3"); |
115 | varying_2f ("TEXCOORD0"), varying_2f ("TEXCOORD1"), varying_2f ("TEXCOORD2"), varying_2f ("TEXCOORD3"), |
110 | varying_2f vin::texcoord4_2f ("TEXCOORD4"); |
116 | varying_2f ("TEXCOORD4"), varying_2f ("TEXCOORD5"), varying_2f ("TEXCOORD6"), varying_2f ("TEXCOORD7"), |
111 | varying_4f vin::texcoord4_4f ("TEXCOORD4"); |
117 | }; |
112 | varying_2f vin::texcoord5_2f ("TEXCOORD5"); |
118 | varying_3f vin::texcoord_3f[8] = |
113 | varying_4f vin::texcoord5_4f ("TEXCOORD5"); |
119 | { |
114 | varying_2f vin::texcoord6_2f ("TEXCOORD6"); |
120 | varying_3f ("TEXCOORD0"), varying_3f ("TEXCOORD1"), varying_3f ("TEXCOORD2"), varying_3f ("TEXCOORD3"), |
115 | varying_4f vin::texcoord6_4f ("TEXCOORD6"); |
121 | varying_3f ("TEXCOORD4"), varying_3f ("TEXCOORD5"), varying_3f ("TEXCOORD6"), varying_3f ("TEXCOORD7"), |
116 | varying_2f vin::texcoord7_2f ("TEXCOORD7"); |
122 | }; |
117 | varying_4f vin::texcoord7_4f ("TEXCOORD7"); |
123 | varying_4f vin::texcoord_4f[8] = |
|
|
124 | { |
|
|
125 | varying_4f ("TEXCOORD0"), varying_4f ("TEXCOORD1"), varying_4f ("TEXCOORD2"), varying_4f ("TEXCOORD3"), |
|
|
126 | varying_4f ("TEXCOORD4"), varying_4f ("TEXCOORD5"), varying_4f ("TEXCOORD6"), varying_4f ("TEXCOORD7"), |
|
|
127 | }; |
118 | varying_1f vin::psize_1f ("PSIZE"); |
128 | varying_1f vin::psize_1f ("PSIZE"); |
119 | varying_1f vin::attr6_1f ("ATTR6"); |
129 | varying_1f vin::attr6_1f ("ATTR6"); |
120 | varying_1f vin::attr7_1f ("ATTR7"); |
130 | varying_1f vin::attr7_1f ("ATTR7"); |
121 | varying_2f vin::attr6_2f ("ATTR6"); |
131 | varying_2f vin::attr6_2f ("ATTR6"); |
122 | varying_2f vin::attr7_2f ("ATTR7"); |
132 | varying_2f vin::attr7_2f ("ATTR7"); |
… | |
… | |
133 | || r == vin::normal_4f |
143 | || r == vin::normal_4f |
134 | || r == vin::color0_3f |
144 | || r == vin::color0_3f |
135 | || r == vin::color0_4f |
145 | || r == vin::color0_4f |
136 | || r == vin::color1_3f |
146 | || r == vin::color1_3f |
137 | || r == vin::color1_4f |
147 | || r == vin::color1_4f |
138 | || r == vin::texcoord0_2f |
148 | || r == vin::texcoord_1f[0] || r == vin::texcoord_1f[1] || r == vin::texcoord_1f[2] || r == vin::texcoord_1f[3] |
139 | || r == vin::texcoord0_4f |
149 | || r == vin::texcoord_1f[4] || r == vin::texcoord_1f[5] || r == vin::texcoord_1f[6] || r == vin::texcoord_1f[7] |
140 | || r == vin::texcoord1_2f |
150 | || r == vin::texcoord_2f[0] || r == vin::texcoord_2f[1] || r == vin::texcoord_2f[2] || r == vin::texcoord_2f[3] |
141 | || r == vin::texcoord1_4f |
151 | || r == vin::texcoord_2f[4] || r == vin::texcoord_2f[5] || r == vin::texcoord_2f[6] || r == vin::texcoord_2f[7] |
142 | || r == vin::texcoord2_2f |
152 | || r == vin::texcoord_3f[0] || r == vin::texcoord_3f[1] || r == vin::texcoord_3f[2] || r == vin::texcoord_3f[3] |
143 | || r == vin::texcoord2_4f |
153 | || r == vin::texcoord_3f[4] || r == vin::texcoord_3f[5] || r == vin::texcoord_3f[6] || r == vin::texcoord_3f[7] |
144 | || r == vin::texcoord3_2f |
154 | || r == vin::texcoord_4f[0] || r == vin::texcoord_4f[1] || r == vin::texcoord_4f[2] || r == vin::texcoord_4f[3] |
145 | || r == vin::texcoord3_4f |
155 | || r == vin::texcoord_4f[4] || r == vin::texcoord_4f[5] || r == vin::texcoord_4f[6] || r == vin::texcoord_4f[7] |
146 | || r == vin::texcoord4_2f |
|
|
147 | || r == vin::texcoord4_4f |
|
|
148 | || r == vin::texcoord5_2f |
|
|
149 | || r == vin::texcoord5_4f |
|
|
150 | || r == vin::texcoord6_2f |
|
|
151 | || r == vin::texcoord6_4f |
|
|
152 | || r == vin::texcoord7_2f |
|
|
153 | || r == vin::texcoord7_4f |
|
|
154 | || r == vin::psize_1f |
156 | || r == vin::psize_1f |
155 | || r == vin::attr6_1f |
157 | || r == vin::attr6_1f |
156 | || r == vin::attr7_1f |
158 | || r == vin::attr7_1f |
157 | || r == vin::attr6_2f |
159 | || r == vin::attr6_2f |
158 | || r == vin::attr7_2f |
160 | || r == vin::attr7_2f |
… | |
… | |
167 | |
169 | |
168 | // MUST update is-function below |
170 | // MUST update is-function below |
169 | varying_4f fin::position_4f ("HPOS"); |
171 | varying_4f fin::position_4f ("HPOS"); |
170 | varying_4f fin::color0_4f ("COLOR0"); |
172 | varying_4f fin::color0_4f ("COLOR0"); |
171 | varying_4f fin::color1_4f ("COLOR1"); |
173 | varying_4f fin::color1_4f ("COLOR1"); |
172 | varying_4f fin::texcoord0_4f ("TEXCOORD0"); |
174 | varying_4f fin::texcoord_4f[8] = |
173 | varying_4f fin::texcoord1_4f ("TEXCOORD1"); |
175 | { |
174 | varying_4f fin::texcoord2_4f ("TEXCOORD2"); |
176 | varying_4f ("TEXCOORD0"), varying_4f ("TEXCOORD1"), varying_4f ("TEXCOORD2"), varying_4f ("TEXCOORD3"), |
175 | varying_4f fin::texcoord3_4f ("TEXCOORD3"); |
177 | varying_4f ("TEXCOORD4"), varying_4f ("TEXCOORD5"), varying_4f ("TEXCOORD6"), varying_4f ("TEXCOORD7"), |
176 | varying_4f fin::texcoord4_4f ("TEXCOORD4"); |
178 | }; |
177 | varying_4f fin::texcoord5_4f ("TEXCOORD5"); |
|
|
178 | varying_4f fin::texcoord6_4f ("TEXCOORD6"); |
|
|
179 | varying_4f fin::texcoord7_4f ("TEXCOORD7"); |
|
|
180 | |
179 | |
181 | bool fin::is (const var &r) |
180 | bool fin::is (const var &r) |
182 | { |
181 | { |
183 | return r == fin::position_4f |
182 | return r == fin::position_4f |
184 | || r == fin::color0_4f |
183 | || r == fin::color0_4f |
185 | || r == fin::color1_4f |
184 | || r == fin::color1_4f |
186 | || r == fin::texcoord0_4f |
185 | || r == fin::texcoord_4f[0] |
187 | || r == fin::texcoord1_4f |
186 | || r == fin::texcoord_4f[1] |
188 | || r == fin::texcoord2_4f |
187 | || r == fin::texcoord_4f[2] |
189 | || r == fin::texcoord3_4f |
188 | || r == fin::texcoord_4f[3] |
190 | || r == fin::texcoord4_4f |
189 | || r == fin::texcoord_4f[4] |
191 | || r == fin::texcoord5_4f |
190 | || r == fin::texcoord_4f[5] |
192 | || r == fin::texcoord6_4f |
191 | || r == fin::texcoord_4f[6] |
193 | || r == fin::texcoord7_4f; |
192 | || r == fin::texcoord_4f[7]; |
194 | } |
193 | } |
195 | |
194 | |
196 | struct fout fout; |
195 | struct fout fout; |
197 | |
196 | |
198 | // MUST update is-function below |
197 | // MUST update is-function below |
… | |
… | |
209 | || r == fout::color1_4f |
208 | || r == fout::color1_4f |
210 | || r == fout::color1_3f |
209 | || r == fout::color1_3f |
211 | || r == fout::depth_1f; |
210 | || r == fout::depth_1f; |
212 | } |
211 | } |
213 | |
212 | |
214 | uniform_matrix_f_i mvp, mv, proj; |
213 | uniform_matrix_f mvp, mv, proj; |
215 | |
214 | |
216 | void fragment_vector_i::build (shader_builder &b) |
215 | void fragment_vector_i::build (shader_builder &b) |
217 | { |
216 | { |
218 | for (vector<fragment>::iterator i = begin (); i != end (); i++) |
217 | for (vector<fragment>::iterator i = begin (); i != end (); i++) |
219 | (*i)->build (b); |
218 | (*i)->build (b); |
… | |
… | |
270 | } |
269 | } |
271 | |
270 | |
272 | void debdebdebdebug ()//D |
271 | void debdebdebdebug ()//D |
273 | { |
272 | { |
274 | vertex_program p; |
273 | vertex_program p; |
275 | temp_4f t1; |
274 | temp_4f t1, t2; |
|
|
275 | sampler2d s2d (1); |
276 | |
276 | |
|
|
277 | p << t2 << " = tex2D (" << s2d << ", " << vin.position_4f << ".xy);\n"; |
277 | p << t1 << " = mul(" << vin.position_4f << "," << mvp << ");\n"; |
278 | p << t1 << " = mul (" << vin.position_4f << "," << mvp << ");\n"; |
278 | p << vout.position_4f << " = " << t1 << ";\n"; |
279 | p << vout.position_4f << " = " << t1 << ";\n"; |
279 | |
280 | |
280 | p.print (); |
281 | p.print (); |
281 | exit (0); |
282 | //exit (0); |
282 | } |
283 | } |
283 | |
284 | |
284 | } |
285 | } |
285 | |
286 | |
286 | material::~material () |
287 | material::~material () |