mirror of
https://github.com/luksamuk/engine-psx.git
synced 2025-04-28 21:38:02 +03:00
Add ring model and init RSD conversion tool
This commit is contained in:
parent
864505aa8d
commit
b0fd36db4f
6 changed files with 2208 additions and 0 deletions
429
assets/objs/common/ring.mat
Normal file
429
assets/objs/common/ring.mat
Normal file
|
@ -0,0 +1,429 @@
|
|||
@MAT940801
|
||||
# Number of Items
|
||||
425
|
||||
# Materials
|
||||
0 0 F C 255 255 0
|
||||
1 0 F C 255 255 0
|
||||
2 0 F C 255 255 0
|
||||
3 0 F C 255 255 0
|
||||
4 0 F C 255 255 0
|
||||
5 0 F C 255 255 0
|
||||
6 0 F C 255 255 0
|
||||
7 0 F C 255 255 0
|
||||
8 0 F C 255 255 0
|
||||
9 0 F C 255 255 0
|
||||
10 0 F C 255 255 0
|
||||
11 0 F C 255 255 0
|
||||
12 0 F C 255 255 0
|
||||
13 0 F C 255 255 0
|
||||
14 0 F C 255 255 0
|
||||
15 0 F C 255 255 0
|
||||
16 0 F C 255 255 0
|
||||
17 0 F C 255 255 0
|
||||
18 0 F C 255 255 0
|
||||
19 0 F C 255 255 0
|
||||
20 0 F C 255 255 0
|
||||
21 0 F C 255 255 0
|
||||
22 0 F C 255 255 0
|
||||
23 0 F C 255 255 0
|
||||
24 0 F C 255 255 0
|
||||
25 0 F C 255 255 0
|
||||
26 0 F C 255 255 0
|
||||
27 0 F C 255 255 0
|
||||
28 0 F C 255 255 0
|
||||
29 0 F C 255 255 0
|
||||
30 0 F C 255 255 0
|
||||
31 0 F C 255 255 0
|
||||
32 0 F C 255 255 0
|
||||
33 0 F C 255 255 0
|
||||
34 0 F C 255 255 0
|
||||
35 0 F C 255 255 0
|
||||
36 0 F C 255 255 0
|
||||
37 0 F C 255 255 0
|
||||
38 0 F C 255 255 0
|
||||
39 0 F C 255 255 0
|
||||
40 0 F C 255 255 0
|
||||
41 0 F C 255 255 0
|
||||
42 0 F C 255 255 0
|
||||
43 0 F C 255 255 0
|
||||
44 0 F C 255 255 0
|
||||
45 0 F C 255 255 0
|
||||
46 0 F C 255 255 0
|
||||
47 0 F C 255 255 0
|
||||
48 0 F C 255 255 0
|
||||
49 0 F C 255 255 0
|
||||
50 0 F C 255 255 0
|
||||
51 0 F C 255 255 0
|
||||
52 0 F C 255 255 0
|
||||
53 0 F C 255 255 0
|
||||
54 0 F C 255 255 0
|
||||
55 0 F C 255 255 0
|
||||
56 0 F C 255 255 0
|
||||
57 0 F C 255 255 0
|
||||
58 0 F C 255 255 0
|
||||
59 0 F C 255 255 0
|
||||
60 0 F C 255 255 0
|
||||
61 0 F C 255 255 0
|
||||
62 0 F C 255 255 0
|
||||
63 0 F C 255 255 0
|
||||
64 0 F C 255 255 0
|
||||
65 0 F C 255 255 0
|
||||
66 0 F C 255 255 0
|
||||
67 0 F C 255 255 0
|
||||
68 0 F C 255 255 0
|
||||
69 0 F C 255 255 0
|
||||
70 0 F C 255 255 0
|
||||
71 0 F C 255 255 0
|
||||
72 0 F C 255 255 0
|
||||
73 0 F C 255 255 0
|
||||
74 0 F C 255 255 0
|
||||
75 0 F C 255 255 0
|
||||
76 0 F C 255 255 0
|
||||
77 0 F C 255 255 0
|
||||
78 0 F C 255 255 0
|
||||
79 0 F C 255 255 0
|
||||
80 0 F C 255 255 0
|
||||
81 0 F C 255 255 0
|
||||
82 0 F C 255 255 0
|
||||
83 0 F C 255 255 0
|
||||
84 0 F C 255 255 0
|
||||
85 0 F C 255 255 0
|
||||
86 0 F C 255 255 0
|
||||
87 0 F C 255 255 0
|
||||
88 0 F C 255 255 0
|
||||
89 0 F C 255 255 0
|
||||
90 0 F C 255 255 0
|
||||
91 0 F C 255 255 0
|
||||
92 0 F C 255 255 0
|
||||
93 0 F C 255 255 0
|
||||
94 0 F C 255 255 0
|
||||
95 0 F C 255 255 0
|
||||
96 0 F C 255 255 0
|
||||
97 0 F C 255 255 0
|
||||
98 0 F C 255 255 0
|
||||
99 0 F C 255 255 0
|
||||
100 0 F C 255 255 0
|
||||
101 0 F C 255 255 0
|
||||
102 0 F C 255 255 0
|
||||
103 0 F C 255 255 0
|
||||
104 0 F C 255 255 0
|
||||
105 0 F C 255 255 0
|
||||
106 0 F C 255 255 0
|
||||
107 0 F C 255 255 0
|
||||
108 0 F C 255 255 0
|
||||
109 0 F C 255 255 0
|
||||
110 0 F C 255 255 0
|
||||
111 0 F C 255 255 0
|
||||
112 0 F C 255 255 0
|
||||
113 0 F C 255 255 0
|
||||
114 0 F C 255 255 0
|
||||
115 0 F C 255 255 0
|
||||
116 0 F C 255 255 0
|
||||
117 0 F C 255 255 0
|
||||
118 0 F C 255 255 0
|
||||
119 0 F C 255 255 0
|
||||
120 0 F C 255 255 0
|
||||
121 0 F C 255 255 0
|
||||
122 0 F C 255 255 0
|
||||
123 0 F C 255 255 0
|
||||
124 0 F C 255 255 0
|
||||
125 0 F C 255 255 0
|
||||
126 0 F C 255 255 0
|
||||
127 0 F C 255 255 0
|
||||
128 0 F C 255 255 0
|
||||
129 0 F C 255 255 0
|
||||
130 0 F C 255 255 0
|
||||
131 0 F C 255 255 0
|
||||
132 0 F C 255 255 0
|
||||
133 0 F C 255 255 0
|
||||
134 0 F C 255 255 0
|
||||
135 0 F C 255 255 0
|
||||
136 0 F C 255 255 0
|
||||
137 0 F C 255 255 0
|
||||
138 0 F C 255 255 0
|
||||
139 0 F C 255 255 0
|
||||
140 0 F C 255 255 0
|
||||
141 0 F C 255 255 0
|
||||
142 0 F C 255 255 0
|
||||
143 0 F C 255 255 0
|
||||
144 0 F C 255 255 0
|
||||
145 0 F C 255 255 0
|
||||
146 0 F C 255 255 0
|
||||
147 0 F C 255 255 0
|
||||
148 0 F C 255 255 0
|
||||
149 0 F C 255 255 0
|
||||
150 0 F C 255 255 0
|
||||
151 0 F C 255 255 0
|
||||
152 0 F C 255 255 0
|
||||
153 0 F C 255 255 0
|
||||
154 0 F C 255 255 0
|
||||
155 0 F C 255 255 0
|
||||
156 0 F C 255 255 0
|
||||
157 0 F C 255 255 0
|
||||
158 0 F C 255 255 0
|
||||
159 0 F C 255 255 0
|
||||
160 0 F C 255 255 0
|
||||
161 0 F C 255 255 0
|
||||
162 0 F C 255 255 0
|
||||
163 0 F C 255 255 0
|
||||
164 0 F C 255 255 0
|
||||
165 0 F C 255 255 0
|
||||
166 0 F C 255 255 0
|
||||
167 0 F C 255 255 0
|
||||
168 0 F C 255 255 0
|
||||
169 0 F C 255 255 0
|
||||
170 0 F C 255 255 0
|
||||
171 0 F C 255 255 0
|
||||
172 0 F C 255 255 0
|
||||
173 0 F C 255 255 0
|
||||
174 0 F C 255 255 0
|
||||
175 0 F C 255 255 0
|
||||
176 0 F C 255 255 0
|
||||
177 0 F C 255 255 0
|
||||
178 0 F C 255 255 0
|
||||
179 0 F C 255 255 0
|
||||
180 0 F C 255 255 0
|
||||
181 0 F C 255 255 0
|
||||
182 0 F C 255 255 0
|
||||
183 0 F C 255 255 0
|
||||
184 0 F C 255 255 0
|
||||
185 0 F C 255 255 0
|
||||
186 0 F C 255 255 0
|
||||
187 0 F C 255 255 0
|
||||
188 0 F C 255 255 0
|
||||
189 0 F C 255 255 0
|
||||
190 0 F C 255 255 0
|
||||
191 0 F C 255 255 0
|
||||
192 0 F C 255 255 0
|
||||
193 0 F C 255 255 0
|
||||
194 0 F C 255 255 0
|
||||
195 0 F C 255 255 0
|
||||
196 0 F C 255 255 0
|
||||
197 0 F C 255 255 0
|
||||
198 0 F C 255 255 0
|
||||
199 0 F C 255 255 0
|
||||
200 0 F C 255 255 0
|
||||
201 0 F C 255 255 0
|
||||
202 0 F C 255 255 0
|
||||
203 0 F C 255 255 0
|
||||
204 0 F C 255 255 0
|
||||
205 0 F C 255 255 0
|
||||
206 0 F C 255 255 0
|
||||
207 0 F C 255 255 0
|
||||
208 0 F C 255 255 0
|
||||
209 0 F C 255 255 0
|
||||
210 0 F C 255 255 0
|
||||
211 0 F C 255 255 0
|
||||
212 0 F C 255 255 0
|
||||
213 0 F C 255 255 0
|
||||
214 0 F C 255 255 0
|
||||
215 0 F C 255 255 0
|
||||
216 0 F C 255 255 0
|
||||
217 0 F C 255 255 0
|
||||
218 0 F C 255 255 0
|
||||
219 0 F C 255 255 0
|
||||
220 0 F C 255 255 0
|
||||
221 0 F C 255 255 0
|
||||
222 0 F C 255 255 0
|
||||
223 0 F C 255 255 0
|
||||
224 0 F C 255 255 0
|
||||
225 0 F C 255 255 0
|
||||
226 0 F C 255 255 0
|
||||
227 0 F C 255 255 0
|
||||
228 0 F C 255 255 0
|
||||
229 0 F C 255 255 0
|
||||
230 0 F C 255 255 0
|
||||
231 0 F C 255 255 0
|
||||
232 0 F C 255 255 0
|
||||
233 0 F C 255 255 0
|
||||
234 0 F C 255 255 0
|
||||
235 0 F C 255 255 0
|
||||
236 0 F C 255 255 0
|
||||
237 0 F C 255 255 0
|
||||
238 0 F C 255 255 0
|
||||
239 0 F C 255 255 0
|
||||
240 0 F C 255 255 0
|
||||
241 0 F C 255 255 0
|
||||
242 0 F C 255 255 0
|
||||
243 0 F C 255 255 0
|
||||
244 0 F C 255 255 0
|
||||
245 0 F C 255 255 0
|
||||
246 0 F C 255 255 0
|
||||
247 0 F C 255 255 0
|
||||
248 0 F C 255 255 0
|
||||
249 0 F C 255 255 0
|
||||
250 0 F C 255 255 0
|
||||
251 0 F C 255 255 0
|
||||
252 0 F C 255 255 0
|
||||
253 0 F C 255 255 0
|
||||
254 0 F C 255 255 0
|
||||
255 0 F C 255 255 0
|
||||
256 0 F C 255 255 0
|
||||
257 0 F C 255 255 0
|
||||
258 0 F C 255 255 0
|
||||
259 0 F C 255 255 0
|
||||
260 0 F C 255 255 0
|
||||
261 0 F C 255 255 0
|
||||
262 0 F C 255 255 0
|
||||
263 0 F C 255 255 0
|
||||
264 0 F C 255 255 0
|
||||
265 0 F C 255 255 0
|
||||
266 0 F C 255 255 0
|
||||
267 0 F C 255 255 0
|
||||
268 0 F C 255 255 0
|
||||
269 0 F C 255 255 0
|
||||
270 0 F C 255 255 0
|
||||
271 0 F C 255 255 0
|
||||
272 0 F C 255 255 0
|
||||
273 0 F C 255 255 0
|
||||
274 0 F C 255 255 0
|
||||
275 0 F C 255 255 0
|
||||
276 0 F C 255 255 0
|
||||
277 0 F C 255 255 0
|
||||
278 0 F C 255 255 0
|
||||
279 0 F C 255 255 0
|
||||
280 0 F C 255 255 0
|
||||
281 0 F C 255 255 0
|
||||
282 0 F C 255 255 0
|
||||
283 0 F C 255 255 0
|
||||
284 0 F C 255 255 0
|
||||
285 0 F C 255 255 0
|
||||
286 0 F C 255 255 0
|
||||
287 0 F C 255 255 0
|
||||
288 0 F C 255 255 0
|
||||
289 0 F C 255 255 0
|
||||
290 0 F C 255 255 0
|
||||
291 0 F C 255 255 0
|
||||
292 0 F C 255 255 0
|
||||
293 0 F C 255 255 0
|
||||
294 0 F C 255 255 0
|
||||
295 0 F C 255 255 0
|
||||
296 0 F C 255 255 0
|
||||
297 0 F C 255 255 0
|
||||
298 0 F C 255 255 0
|
||||
299 0 F C 255 255 0
|
||||
300 0 F C 255 255 0
|
||||
301 0 F C 255 255 0
|
||||
302 0 F C 255 255 0
|
||||
303 0 F C 255 255 0
|
||||
304 0 F C 255 255 0
|
||||
305 0 F C 255 255 0
|
||||
306 0 F C 255 255 0
|
||||
307 0 F C 255 255 0
|
||||
308 0 F C 255 255 0
|
||||
309 0 F C 255 255 0
|
||||
310 0 F C 255 255 0
|
||||
311 0 F C 255 255 0
|
||||
312 0 F C 255 255 0
|
||||
313 0 F C 255 255 0
|
||||
314 0 F C 255 255 0
|
||||
315 0 F C 255 255 0
|
||||
316 0 F C 255 255 0
|
||||
317 0 F C 255 255 0
|
||||
318 0 F C 255 255 0
|
||||
319 0 F C 255 255 0
|
||||
320 0 F C 255 255 0
|
||||
321 0 F C 255 255 0
|
||||
322 0 F C 255 255 0
|
||||
323 0 F C 255 255 0
|
||||
324 0 F C 255 255 0
|
||||
325 0 F C 255 255 0
|
||||
326 0 F C 255 255 0
|
||||
327 0 F C 255 255 0
|
||||
328 0 F C 255 255 0
|
||||
329 0 F C 255 255 0
|
||||
330 0 F C 255 255 0
|
||||
331 0 F C 255 255 0
|
||||
332 0 F C 255 255 0
|
||||
333 0 F C 255 255 0
|
||||
334 0 F C 255 255 0
|
||||
335 0 F C 255 255 0
|
||||
336 0 F C 255 255 0
|
||||
337 0 F C 255 255 0
|
||||
338 0 F C 255 255 0
|
||||
339 0 F C 255 255 0
|
||||
340 0 F C 255 255 0
|
||||
341 0 F C 255 255 0
|
||||
342 0 F C 255 255 0
|
||||
343 0 F C 255 255 0
|
||||
344 0 F C 255 255 0
|
||||
345 0 F C 255 255 0
|
||||
346 0 F C 255 255 0
|
||||
347 0 F C 255 255 0
|
||||
348 0 F C 255 255 0
|
||||
349 0 F C 255 255 0
|
||||
350 0 F C 255 255 0
|
||||
351 0 F C 255 255 0
|
||||
352 0 F C 255 255 0
|
||||
353 0 F C 255 255 0
|
||||
354 0 F C 255 255 0
|
||||
355 0 F C 255 255 0
|
||||
356 0 F C 255 255 0
|
||||
357 0 F C 255 255 0
|
||||
358 0 F C 255 255 0
|
||||
359 0 F C 255 255 0
|
||||
360 0 F C 255 255 0
|
||||
361 0 F C 255 255 0
|
||||
362 0 F C 255 255 0
|
||||
363 0 F C 255 255 0
|
||||
364 0 F C 255 255 0
|
||||
365 0 F C 255 255 0
|
||||
366 0 F C 255 255 0
|
||||
367 0 F C 255 255 0
|
||||
368 0 F C 255 255 0
|
||||
369 0 F C 255 255 0
|
||||
370 0 F C 255 255 0
|
||||
371 0 F C 255 255 0
|
||||
372 0 F C 255 255 0
|
||||
373 0 F C 255 255 0
|
||||
374 0 F C 255 255 0
|
||||
375 0 F C 255 255 0
|
||||
376 0 F C 255 255 0
|
||||
377 0 F C 255 255 0
|
||||
378 0 F C 255 255 0
|
||||
379 0 F C 255 255 0
|
||||
380 0 F C 255 255 0
|
||||
381 0 F C 255 255 0
|
||||
382 0 F C 255 255 0
|
||||
383 0 F C 255 255 0
|
||||
384 0 F C 255 255 0
|
||||
385 0 F C 255 255 0
|
||||
386 0 F C 255 255 0
|
||||
387 0 F C 255 255 0
|
||||
388 0 F C 255 255 0
|
||||
389 0 F C 255 255 0
|
||||
390 0 F C 255 255 0
|
||||
391 0 F C 255 255 0
|
||||
392 0 F C 255 255 0
|
||||
393 0 F C 255 255 0
|
||||
394 0 F C 255 255 0
|
||||
395 0 F C 255 255 0
|
||||
396 0 F C 255 255 0
|
||||
397 0 F C 255 255 0
|
||||
398 0 F C 255 255 0
|
||||
399 0 F C 255 255 0
|
||||
400 0 F C 255 255 0
|
||||
401 0 F C 255 255 0
|
||||
402 0 F C 255 255 0
|
||||
403 0 F C 255 255 0
|
||||
404 0 F C 255 255 0
|
||||
405 0 F C 255 255 0
|
||||
406 0 F C 255 255 0
|
||||
407 0 F C 255 255 0
|
||||
408 0 F C 255 255 0
|
||||
409 0 F C 255 255 0
|
||||
410 0 F C 255 255 0
|
||||
411 0 F C 255 255 0
|
||||
412 0 F C 255 255 0
|
||||
413 0 F C 255 255 0
|
||||
414 0 F C 255 255 0
|
||||
415 0 F C 255 255 0
|
||||
416 0 F C 255 255 0
|
||||
417 0 F C 255 255 0
|
||||
418 0 F C 255 255 0
|
||||
419 0 F C 255 255 0
|
||||
420 0 F C 255 255 0
|
||||
421 0 F C 255 255 0
|
||||
422 0 F C 255 255 0
|
||||
423 0 F C 255 255 0
|
||||
424 0 F C 255 255 0
|
1477
assets/objs/common/ring.ply
Normal file
1477
assets/objs/common/ring.ply
Normal file
File diff suppressed because it is too large
Load diff
5
assets/objs/common/ring.rsd
Normal file
5
assets/objs/common/ring.rsd
Normal file
|
@ -0,0 +1,5 @@
|
|||
#RSD data describing the relationships to the PLY, MAT, and texture files
|
||||
@RSD940102
|
||||
PLY=ring.ply
|
||||
MAT=ring.mat
|
||||
NTEX=0
|
34
tools/fixedpoint/fixedpoint.hpp
Normal file
34
tools/fixedpoint/fixedpoint.hpp
Normal file
|
@ -0,0 +1,34 @@
|
|||
#ifndef FIXEDPOINT_HPP
|
||||
#define FIXEDPOINT_HPP
|
||||
|
||||
#include <cstdlib>
|
||||
#include <cstdint>
|
||||
|
||||
template<class Type, size_t Scale>
|
||||
class FixedPoint
|
||||
{
|
||||
private:
|
||||
const static Type factor = 1 << Scale;
|
||||
Type data;
|
||||
public:
|
||||
FixedPoint(double value) {
|
||||
*this = value;
|
||||
}
|
||||
|
||||
FixedPoint&
|
||||
operator=(double value) {
|
||||
this->data = static_cast<Type>(value * factor);
|
||||
return *this;
|
||||
}
|
||||
|
||||
Type
|
||||
getRaw() const {
|
||||
return this->data;
|
||||
}
|
||||
};
|
||||
|
||||
typedef FixedPoint<int32_t, 12> psxfixed32;
|
||||
typedef FixedPoint<int16_t, 12> psxfixed16;
|
||||
|
||||
#endif
|
||||
|
17
tools/fixedpoint/fixedpoint_test.cpp
Normal file
17
tools/fixedpoint/fixedpoint_test.cpp
Normal file
|
@ -0,0 +1,17 @@
|
|||
#include <iostream>
|
||||
#include "fixedpoint.hpp"
|
||||
#include <cstdint>
|
||||
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
double value1 = 3.1416;
|
||||
double value2 = 1.0;
|
||||
|
||||
FixedPoint<int32_t, 12> fvalue1(value1);
|
||||
FixedPoint<int32_t, 12> fvalue2(value2);
|
||||
|
||||
std::cout << "Value 1: " << value1 << " -> " << fvalue1.getRaw() << std::endl
|
||||
<< "Value 2: " << value2 << " -> " << fvalue2.getRaw() << std::endl;
|
||||
return 0;
|
||||
}
|
246
tools/fixedpoint/parse_rsd.cpp
Normal file
246
tools/fixedpoint/parse_rsd.cpp
Normal file
|
@ -0,0 +1,246 @@
|
|||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
#include "fixedpoint.hpp"
|
||||
|
||||
struct SVECTOR
|
||||
{
|
||||
int16_t vx;
|
||||
int16_t vy;
|
||||
int16_t vz;
|
||||
//int16_t _unused;
|
||||
};
|
||||
|
||||
struct CVECTOR
|
||||
{
|
||||
uint8_t r;
|
||||
uint8_t g;
|
||||
uint8_t b;
|
||||
};
|
||||
|
||||
/* Face attributes */
|
||||
#define TYPE_TRIANGLE 0x0 // ARGS: FLAG V0 V1 V2 __ N0 N1 N2 __
|
||||
#define TYPE_QUAD 0x1 // ARGS: FLAG V0 V1 V2 V3 N0 N1 N2 N3
|
||||
#define TYPE_LINE 0x2 // ARGS: FLAG V0 V1 __ __ __ __ __ __
|
||||
#define TYPE_SPRITE 0x3 // ARGS: FLAG V0 W H
|
||||
|
||||
union Face
|
||||
{
|
||||
struct {
|
||||
uint8_t flag;
|
||||
uint16_t param[8];
|
||||
} gn; // Generic
|
||||
|
||||
struct {
|
||||
uint8_t flag; // flag == 0
|
||||
uint16_t iv0;
|
||||
uint16_t iv1;
|
||||
uint16_t iv2;
|
||||
uint16_t _unused0;
|
||||
uint16_t in0;
|
||||
uint16_t in1;
|
||||
uint16_t in2;
|
||||
uint16_t _unused1;
|
||||
} triangle;
|
||||
|
||||
struct {
|
||||
uint8_t flag; // flag == 1
|
||||
uint16_t iv0;
|
||||
uint16_t iv1;
|
||||
uint16_t iv2;
|
||||
uint16_t iv3;
|
||||
uint16_t in0;
|
||||
uint16_t in1;
|
||||
uint16_t in2;
|
||||
uint16_t in3;
|
||||
} quad;
|
||||
|
||||
struct {
|
||||
uint8_t flag; // flag == 2
|
||||
uint16_t iv0;
|
||||
uint16_t iv1;
|
||||
uint16_t __unused0;
|
||||
uint16_t __unused1;
|
||||
uint16_t __unused2;
|
||||
uint16_t __unused3;
|
||||
uint16_t __unused4;
|
||||
uint16_t __unused5;
|
||||
} line;
|
||||
|
||||
struct {
|
||||
uint8_t flag; // flag == 3
|
||||
uint16_t iv0;
|
||||
uint16_t iv1;
|
||||
uint16_t iw;
|
||||
uint16_t ih;
|
||||
uint16_t __unused2;
|
||||
uint16_t __unused3;
|
||||
uint16_t __unused4;
|
||||
uint16_t __unused5;
|
||||
} sprite;
|
||||
};
|
||||
|
||||
// ========================
|
||||
|
||||
enum MaterialType
|
||||
{
|
||||
MATERIAL_TYPE_C, // "C": Flat colored
|
||||
MATERIAL_TYPE_G, // "G": Gouraud shaded
|
||||
MATERIAL_TYPE_T, // "T": Textured no-color
|
||||
MATERIAL_TYPE_D, // "T": Textured, flat colored
|
||||
MATERIAL_TYPE_H, // "H": Textured, gouraud shaded
|
||||
|
||||
// MATERIAL_TYPE_W, // "W": Repeating textures, no-color
|
||||
// MATERIAL_TYPE_S, // "S": Repeating textures, flat colored
|
||||
// MATERIAL_TYPE_N, // "N": Repeating textures, gouraud shaded
|
||||
};
|
||||
|
||||
union MaterialInfo
|
||||
{
|
||||
MaterialType type;
|
||||
|
||||
struct {
|
||||
MaterialType type;
|
||||
uint8_t r0;
|
||||
uint8_t g0;
|
||||
uint8_t b0;
|
||||
} f;
|
||||
|
||||
struct {
|
||||
MaterialType type;
|
||||
uint8_t r0;
|
||||
uint8_t g0;
|
||||
uint8_t b0;
|
||||
uint8_t r1;
|
||||
uint8_t g1;
|
||||
uint8_t b1;
|
||||
uint8_t r2;
|
||||
uint8_t g2;
|
||||
uint8_t b2;
|
||||
uint8_t r3;
|
||||
uint8_t g3;
|
||||
uint8_t b3;
|
||||
} g;
|
||||
|
||||
struct {
|
||||
MaterialType type;
|
||||
uint8_t u0;
|
||||
uint8_t v0;
|
||||
uint8_t u1;
|
||||
uint8_t v1;
|
||||
uint8_t u2;
|
||||
uint8_t v2;
|
||||
uint8_t u3;
|
||||
uint8_t v3;
|
||||
} t;
|
||||
|
||||
struct {
|
||||
MaterialType type;
|
||||
uint8_t u0;
|
||||
uint8_t v0;
|
||||
uint8_t u1;
|
||||
uint8_t v1;
|
||||
uint8_t u2;
|
||||
uint8_t v2;
|
||||
uint8_t u3;
|
||||
uint8_t v3;
|
||||
uint8_t r0;
|
||||
uint8_t g0;
|
||||
uint8_t b0;
|
||||
} ft;
|
||||
|
||||
struct {
|
||||
MaterialType type;
|
||||
uint8_t u0;
|
||||
uint8_t v0;
|
||||
uint8_t u1;
|
||||
uint8_t v1;
|
||||
uint8_t u2;
|
||||
uint8_t v2;
|
||||
uint8_t u3;
|
||||
uint8_t v3;
|
||||
uint8_t r0;
|
||||
uint8_t g0;
|
||||
uint8_t b0;
|
||||
uint8_t r1;
|
||||
uint8_t g1;
|
||||
uint8_t b1;
|
||||
uint8_t r2;
|
||||
uint8_t g2;
|
||||
uint8_t b2;
|
||||
uint8_t r3;
|
||||
uint8_t g3;
|
||||
uint8_t b3;
|
||||
} gt;
|
||||
|
||||
// Won't care about the rest
|
||||
};
|
||||
|
||||
enum ShadingType
|
||||
{
|
||||
SHADING_TYPE_FLAT, // "F"
|
||||
SHADING_TYPE_GOURAUD, // "G"
|
||||
};
|
||||
|
||||
struct Material
|
||||
{
|
||||
// Can be in 0-5 format, specifies polygons 0 thru 5 use this material
|
||||
uint16_t ipolygon;
|
||||
uint8_t flag;
|
||||
ShadingType shading;
|
||||
MaterialInfo info;
|
||||
};
|
||||
|
||||
// ========================
|
||||
|
||||
struct PlyData
|
||||
{
|
||||
char magic[11];
|
||||
uint32_t num_vertices;
|
||||
uint32_t num_normals;
|
||||
uint32_t num_faces;
|
||||
SVECTOR *vertices;
|
||||
SVECTOR *normals;
|
||||
Face *faces;
|
||||
};
|
||||
|
||||
struct MatData
|
||||
{
|
||||
char magic[11];
|
||||
uint16_t num_items;
|
||||
Material *data;
|
||||
};
|
||||
|
||||
// ========================
|
||||
|
||||
struct RSDModel
|
||||
{
|
||||
char magic[11];
|
||||
PlyData ply;
|
||||
MatData mat;
|
||||
// TODO: NTEX and TEX[n] for textures
|
||||
};
|
||||
|
||||
// ========================
|
||||
|
||||
void
|
||||
parse_rsd(const char *filename, RSDModel &model)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
parse_ply(const char *filename, PlyData &ply)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
parse_mat(const char *filename, MatData &mat)
|
||||
{
|
||||
}
|
||||
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
// Read and parse RSD file and its acessories
|
||||
// Convert RSD to actual engine model format (still don't know what to do here...)
|
||||
return 0;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue