mirror of
https://git.coom.tech/drummyfish/small3dlib.git
synced 2024-11-23 20:59:58 +01:00
Start game demo
This commit is contained in:
parent
d71b117fe7
commit
6764fd12a5
3 changed files with 10124 additions and 0 deletions
956
programs/cityModel.h
Normal file
956
programs/cityModel.h
Normal file
|
@ -0,0 +1,956 @@
|
|||
#ifndef CITY_MODEL_H
|
||||
#define CITY_MODEL_H
|
||||
|
||||
#define CITY_VERTEX_COUNT 157
|
||||
const S3L_Unit cityVertices[CITY_VERTEX_COUNT * 3] = {
|
||||
-3584, 5, 512, // 0
|
||||
-4608, 5, 1536, // 3
|
||||
-5632, 5, -512, // 6
|
||||
-5632, 5, -1536, // 9
|
||||
-5632, 5, -2560, // 12
|
||||
-4608, 5, -1536, // 15
|
||||
-4608, 5, -512, // 18
|
||||
-2560, 5, 1536, // 21
|
||||
-2560, 5, 512, // 24
|
||||
-1536, 5, 1536, // 27
|
||||
-2560, 5, -512, // 30
|
||||
-3584, 5, -512, // 33
|
||||
-2560, 1779, 512, // 36
|
||||
-2560, 1779, -512, // 39
|
||||
-3584, 1779, -512, // 42
|
||||
-4061, 1581, -1536, // 45
|
||||
-2560, 1581, -1536, // 48
|
||||
-5632, 777, -1536, // 51
|
||||
-5632, 777, -2560, // 54
|
||||
-2560, 777, 1536, // 57
|
||||
-1536, 777, 1536, // 60
|
||||
-4608, 1396, 1536, // 63
|
||||
-5632, 1396, -512, // 66
|
||||
-5632, 777, -512, // 69
|
||||
-4608, 1396, -512, // 72
|
||||
-2560, 1396, 1536, // 75
|
||||
-2560, 815, 2731, // 78
|
||||
-2560, 1396, 2731, // 81
|
||||
-4608, 296, -1536, // 84
|
||||
-4061, 296, -1536, // 87
|
||||
-4608, 296, -2086, // 90
|
||||
-6329, 595, 573, // 93
|
||||
-5874, 595, 1132, // 96
|
||||
-6329, 2807, 573, // 99
|
||||
-5874, 2807, 1132, // 102
|
||||
1536, 5, 2560, // 105
|
||||
512, 5, 3584, // 108
|
||||
-1536, 5, -1536, // 111
|
||||
-1536, 5, -2560, // 114
|
||||
-2560, 5, -3584, // 117
|
||||
-1536, 5, -3584, // 120
|
||||
512, 5, -2560, // 123
|
||||
512, 5, -3584, // 126
|
||||
-512, 5, -2560, // 129
|
||||
-512, 5, -1536, // 132
|
||||
-1536, 5, -512, // 135
|
||||
-2560, 5, -1536, // 138
|
||||
-512, 5, 1536, // 141
|
||||
-512, 5, 512, // 144
|
||||
-512, 5, -512, // 147
|
||||
512, 5, 512, // 150
|
||||
512, 5, 1536, // 153
|
||||
2560, 5, 3584, // 156
|
||||
2560, 5, 2560, // 159
|
||||
3584, 5, 3584, // 162
|
||||
2560, 5, 512, // 165
|
||||
1536, 5, 1536, // 168
|
||||
1536, 5, -1536, // 171
|
||||
1536, 5, -2560, // 174
|
||||
512, 5, -1536, // 177
|
||||
-1536, 311, -1536, // 180
|
||||
-1536, 311, -2560, // 183
|
||||
-512, 311, -2560, // 186
|
||||
-512, 311, -1536, // 189
|
||||
1536, 1779, 2560, // 192
|
||||
2560, 1779, 2560, // 195
|
||||
2560, 1779, 1536, // 198
|
||||
1536, 1779, 1536, // 201
|
||||
-1536, 632, -3584, // 204
|
||||
512, 632, -3584, // 207
|
||||
-2560, 1584, -3584, // 210
|
||||
-1536, 597, -4813, // 213
|
||||
-2560, 1584, -1536, // 216
|
||||
1058, 1581, 512, // 219
|
||||
2560, 1581, 512, // 222
|
||||
512, 1581, -1536, // 225
|
||||
-2560, 1584, -4813, // 228
|
||||
-1024, 594, -2048, // 231
|
||||
1536, 1581, -1536, // 234
|
||||
1536, 519, -1536, // 237
|
||||
1536, 519, -2560, // 240
|
||||
-1536, 777, -512, // 243
|
||||
-512, 777, 512, // 246
|
||||
-512, 777, -512, // 249
|
||||
2560, 777, 3584, // 252
|
||||
3584, 777, 3584, // 255
|
||||
512, 1396, 3584, // 258
|
||||
-512, 1396, 1536, // 261
|
||||
-512, 777, 1536, // 264
|
||||
512, 1396, 1536, // 267
|
||||
2560, 1396, 3584, // 270
|
||||
2560, 815, 4779, // 273
|
||||
2560, 1396, 4779, // 276
|
||||
-512, 1396, 3313, // 279
|
||||
-512, 777, 3313, // 282
|
||||
512, 296, 512, // 285
|
||||
1058, 296, 512, // 288
|
||||
512, 296, -38, // 291
|
||||
512, 1581, -38, // 294
|
||||
512, 2969, -2560, // 297
|
||||
512, 2454, -3584, // 300
|
||||
1536, 2969, -2560, // 303
|
||||
1302, 282, -5879, // 306
|
||||
1859, 282, -4816, // 309
|
||||
1302, 2156, -5879, // 312
|
||||
1859, 2156, -4816, // 315
|
||||
-1209, 595, 2621, // 318
|
||||
-754, 595, 3180, // 321
|
||||
-1209, 2807, 2621, // 324
|
||||
-754, 2807, 3180, // 327
|
||||
-1473, 595, 3206, // 330
|
||||
-1473, 2807, 3206, // 333
|
||||
3584, 5, 512, // 336
|
||||
3584, 5, -512, // 339
|
||||
2560, 5, -1536, // 342
|
||||
3584, 5, -1536, // 345
|
||||
5632, 5, -512, // 348
|
||||
5632, 5, -1536, // 351
|
||||
4608, 5, -512, // 354
|
||||
4608, 5, 512, // 357
|
||||
3584, 5, 1536, // 360
|
||||
2560, 5, 1536, // 363
|
||||
4608, 5, 1536, // 366
|
||||
5632, 5, 2560, // 369
|
||||
6656, 5, 512, // 372
|
||||
6656, 5, -512, // 375
|
||||
5632, 5, 512, // 378
|
||||
3584, 311, 512, // 381
|
||||
3584, 311, -512, // 384
|
||||
4608, 311, 512, // 387
|
||||
3584, 632, -1536, // 390
|
||||
5632, 632, -1536, // 393
|
||||
2560, 1584, -1536, // 396
|
||||
2560, 1584, 512, // 399
|
||||
6178, 1581, 2560, // 402
|
||||
5632, 1581, 512, // 405
|
||||
4096, 594, 0, // 408
|
||||
6656, 519, 512, // 411
|
||||
6656, 519, -512, // 414
|
||||
3584, 777, 1536, // 417
|
||||
4608, 777, 1536, // 420
|
||||
6178, 296, 2560, // 423
|
||||
5632, 296, 2009, // 426
|
||||
5632, 1581, 2009, // 429
|
||||
5632, 2969, -512, // 432
|
||||
5632, 2454, -1536, // 435
|
||||
6656, 2969, -512, // 438
|
||||
6422, 282, -3831, // 441
|
||||
6979, 282, -2768, // 444
|
||||
6422, 2156, -3831, // 447
|
||||
6979, 2156, -2768, // 450
|
||||
3910, 595, 4669, // 453
|
||||
4365, 595, 5228, // 456
|
||||
3910, 2807, 4669, // 459
|
||||
4365, 2807, 5228, // 462
|
||||
3646, 595, 5254, // 465
|
||||
3646, 2807, 5254 // 468
|
||||
}; // cityVertices
|
||||
|
||||
#define CITY_TRIANGLE_COUNT 197
|
||||
const S3L_Index cityTriangleIndices[CITY_TRIANGLE_COUNT * 3] = {
|
||||
0, 1, 6, // 0
|
||||
2, 3, 5, // 3
|
||||
5, 3, 4, // 6
|
||||
11, 5, 46, // 9
|
||||
0, 6, 11, // 12
|
||||
1, 0, 7, // 15
|
||||
8, 45, 9, // 18
|
||||
8, 10, 45, // 21
|
||||
46, 10, 11, // 24
|
||||
5, 11, 6, // 27
|
||||
0, 8, 7, // 30
|
||||
8, 9, 7, // 33
|
||||
5, 6, 2, // 36
|
||||
11, 13, 14, // 39
|
||||
10, 8, 12, // 42
|
||||
3, 18, 4, // 45
|
||||
9, 19, 7, // 48
|
||||
9, 45, 81, // 51
|
||||
1, 7, 19, // 54
|
||||
22, 23, 24, // 57
|
||||
19, 21, 1, // 60
|
||||
1, 24, 6, // 63
|
||||
25, 21, 19, // 66
|
||||
2, 23, 17, // 69
|
||||
24, 23, 6, // 72
|
||||
2, 17, 3, // 75
|
||||
25, 26, 27, // 78
|
||||
6, 23, 2, // 81
|
||||
29, 28, 30, // 84
|
||||
28, 29, 5, // 87
|
||||
5, 29, 46, // 90
|
||||
46, 29, 16, // 93
|
||||
29, 15, 16, // 96
|
||||
3, 17, 18, // 99
|
||||
1, 21, 24, // 102
|
||||
11, 10, 13, // 105
|
||||
10, 12, 13, // 108
|
||||
9, 20, 19, // 111
|
||||
9, 81, 20, // 114
|
||||
25, 19, 26, // 117
|
||||
34, 31, 32, // 120
|
||||
34, 33, 31, // 123
|
||||
35, 36, 51, // 126
|
||||
38, 46, 39, // 129
|
||||
40, 38, 39, // 132
|
||||
42, 41, 43, // 135
|
||||
43, 40, 42, // 138
|
||||
41, 59, 43, // 141
|
||||
45, 37, 44, // 144
|
||||
10, 46, 37, // 147
|
||||
47, 48, 50, // 150
|
||||
49, 59, 50, // 153
|
||||
50, 48, 49, // 156
|
||||
56, 50, 55, // 159
|
||||
35, 51, 56, // 162
|
||||
36, 35, 52, // 165
|
||||
53, 120, 54, // 168
|
||||
53, 121, 120, // 171
|
||||
55, 121, 56, // 174
|
||||
59, 44, 43, // 177
|
||||
59, 49, 44, // 180
|
||||
50, 56, 51, // 183
|
||||
35, 53, 52, // 186
|
||||
53, 54, 52, // 189
|
||||
50, 51, 47, // 192
|
||||
40, 43, 38, // 195
|
||||
38, 37, 46, // 198
|
||||
37, 45, 10, // 201
|
||||
44, 49, 45, // 204
|
||||
57, 59, 41, // 207
|
||||
41, 58, 57, // 210
|
||||
44, 37, 60, // 213
|
||||
37, 38, 61, // 216
|
||||
62, 43, 44, // 219
|
||||
43, 61, 38, // 222
|
||||
62, 63, 77, // 225
|
||||
56, 66, 67, // 228
|
||||
56, 64, 35, // 231
|
||||
121, 53, 65, // 234
|
||||
35, 65, 53, // 237
|
||||
40, 69, 42, // 240
|
||||
99, 80, 41, // 243
|
||||
68, 70, 76, // 246
|
||||
39, 46, 72, // 249
|
||||
39, 70, 68, // 252
|
||||
39, 68, 40, // 255
|
||||
60, 77, 63, // 258
|
||||
41, 80, 58, // 261
|
||||
79, 75, 59, // 264
|
||||
58, 79, 57, // 267
|
||||
97, 98, 96, // 270
|
||||
45, 49, 83, // 273
|
||||
48, 83, 49, // 276
|
||||
54, 84, 52, // 279
|
||||
54, 120, 139, // 282
|
||||
36, 52, 84, // 285
|
||||
87, 88, 89, // 288
|
||||
84, 86, 36, // 291
|
||||
36, 89, 51, // 294
|
||||
90, 86, 84, // 297
|
||||
47, 88, 82, // 300
|
||||
89, 88, 51, // 303
|
||||
47, 82, 48, // 306
|
||||
90, 91, 92, // 309
|
||||
51, 88, 47, // 312
|
||||
88, 87, 93, // 315
|
||||
77, 60, 61, // 318
|
||||
61, 62, 77, // 321
|
||||
75, 98, 97, // 324
|
||||
97, 59, 75, // 327
|
||||
57, 79, 59, // 330
|
||||
59, 97, 50, // 333
|
||||
95, 50, 97, // 336
|
||||
96, 95, 97, // 339
|
||||
95, 96, 50, // 342
|
||||
50, 96, 55, // 345
|
||||
55, 96, 74, // 348
|
||||
96, 73, 74, // 351
|
||||
98, 73, 96, // 354
|
||||
42, 69, 41, // 357
|
||||
69, 99, 41, // 360
|
||||
40, 68, 69, // 363
|
||||
68, 76, 71, // 366
|
||||
45, 83, 81, // 369
|
||||
48, 82, 83, // 372
|
||||
39, 72, 70, // 375
|
||||
36, 86, 89, // 378
|
||||
88, 93, 94, // 381
|
||||
56, 121, 66, // 384
|
||||
56, 67, 64, // 387
|
||||
121, 65, 66, // 390
|
||||
35, 64, 65, // 393
|
||||
99, 101, 80, // 396
|
||||
58, 80, 79, // 399
|
||||
79, 78, 75, // 402
|
||||
99, 69, 100, // 405
|
||||
44, 60, 63, // 408
|
||||
37, 61, 60, // 411
|
||||
62, 44, 63, // 414
|
||||
43, 62, 61, // 417
|
||||
54, 85, 84, // 420
|
||||
54, 139, 85, // 423
|
||||
90, 84, 91, // 426
|
||||
102, 105, 103, // 429
|
||||
102, 104, 105, // 432
|
||||
109, 106, 107, // 435
|
||||
111, 106, 108, // 438
|
||||
109, 108, 106, // 441
|
||||
111, 110, 106, // 444
|
||||
113, 55, 114, // 447
|
||||
115, 113, 114, // 450
|
||||
118, 115, 117, // 453
|
||||
116, 126, 118, // 456
|
||||
120, 112, 119, // 459
|
||||
121, 55, 112, // 462
|
||||
122, 126, 123, // 465
|
||||
126, 119, 118, // 468
|
||||
126, 122, 119, // 471
|
||||
115, 118, 113, // 474
|
||||
113, 112, 55, // 477
|
||||
112, 120, 121, // 480
|
||||
119, 122, 120, // 483
|
||||
124, 126, 116, // 486
|
||||
116, 125, 124, // 489
|
||||
119, 112, 127, // 492
|
||||
112, 113, 128, // 495
|
||||
115, 131, 117, // 498
|
||||
144, 138, 116, // 501
|
||||
114, 55, 133, // 504
|
||||
114, 132, 130, // 507
|
||||
114, 130, 115, // 510
|
||||
127, 136, 129, // 513
|
||||
116, 138, 125, // 516
|
||||
125, 137, 124, // 519
|
||||
142, 143, 141, // 522
|
||||
120, 122, 140, // 525
|
||||
136, 127, 128, // 528
|
||||
135, 143, 142, // 531
|
||||
142, 126, 135, // 534
|
||||
126, 142, 123, // 537
|
||||
143, 134, 141, // 540
|
||||
117, 131, 116, // 543
|
||||
131, 144, 116, // 546
|
||||
115, 130, 131, // 549
|
||||
120, 140, 139, // 552
|
||||
114, 133, 132, // 555
|
||||
144, 146, 138, // 558
|
||||
125, 138, 137, // 561
|
||||
144, 131, 145, // 564
|
||||
119, 127, 129, // 567
|
||||
112, 128, 127, // 570
|
||||
147, 150, 148, // 573
|
||||
147, 149, 150, // 576
|
||||
154, 151, 152, // 579
|
||||
156, 151, 153, // 582
|
||||
154, 153, 151, // 585
|
||||
156, 155, 151 // 588
|
||||
}; // cityTriangleIndices
|
||||
|
||||
#define CITY_UV_COUNT 377
|
||||
const S3L_Unit cityUVs[CITY_UV_COUNT * 2] = {
|
||||
125, 125, // 0
|
||||
1, 1, // 2
|
||||
1, 249, // 4
|
||||
2, 1, // 6
|
||||
2, 126, // 8
|
||||
126, 126, // 10
|
||||
2, 262, // 12
|
||||
126, 262, // 14
|
||||
126, 386, // 16
|
||||
126, 387, // 18
|
||||
2, 511, // 20
|
||||
2, 262, // 22
|
||||
125, 249, // 24
|
||||
1, 2, // 26
|
||||
125, 126, // 28
|
||||
1, 251, // 30
|
||||
126, 125, // 32
|
||||
2, 249, // 34
|
||||
2, 1, // 36
|
||||
126, 249, // 38
|
||||
126, 262, // 40
|
||||
126, 511, // 42
|
||||
125, 251, // 44
|
||||
126, 1, // 46
|
||||
126, 1, // 48
|
||||
258, 253, // 50
|
||||
386, 1, // 52
|
||||
258, 1, // 54
|
||||
260, 253, // 56
|
||||
405, 253, // 58
|
||||
405, 2, // 60
|
||||
253, 511, // 62
|
||||
130, 386, // 64
|
||||
130, 511, // 66
|
||||
381, 508, // 68
|
||||
256, 386, // 70
|
||||
256, 508, // 72
|
||||
130, 509, // 74
|
||||
380, 509, // 76
|
||||
380, 386, // 78
|
||||
258, 253, // 80
|
||||
510, 253, // 82
|
||||
510, 114, // 84
|
||||
354, 3, // 86
|
||||
354, 115, // 88
|
||||
510, 3, // 90
|
||||
258, 3, // 92
|
||||
507, 252, // 94
|
||||
255, 2, // 96
|
||||
255, 252, // 98
|
||||
510, 3, // 100
|
||||
376, 511, // 102
|
||||
376, 386, // 104
|
||||
253, 386, // 106
|
||||
510, 254, // 108
|
||||
258, 3, // 110
|
||||
475, 112, // 112
|
||||
475, 3, // 114
|
||||
354, 254, // 116
|
||||
245, 319, // 118
|
||||
190, 264, // 120
|
||||
135, 319, // 122
|
||||
509, 209, // 124
|
||||
443, 209, // 126
|
||||
509, 253, // 128
|
||||
259, 253, // 130
|
||||
259, 16, // 132
|
||||
443, 16, // 134
|
||||
507, 2, // 136
|
||||
386, 253, // 138
|
||||
260, 2, // 140
|
||||
381, 386, // 142
|
||||
130, 386, // 144
|
||||
258, 112, // 146
|
||||
509, 352, // 148
|
||||
261, 259, // 150
|
||||
261, 352, // 152
|
||||
509, 259, // 154
|
||||
125, 125, // 156
|
||||
1, 1, // 158
|
||||
1, 249, // 160
|
||||
127, 125, // 162
|
||||
3, 249, // 164
|
||||
3, 1, // 166
|
||||
127, 1, // 168
|
||||
1, 2, // 170
|
||||
125, 2, // 172
|
||||
125, 126, // 174
|
||||
1, 250, // 176
|
||||
125, 254, // 178
|
||||
125, 129, // 180
|
||||
1, 254, // 182
|
||||
126, 128, // 184
|
||||
1, 128, // 186
|
||||
1, 252, // 188
|
||||
130, 1, // 190
|
||||
130, 125, // 192
|
||||
254, 125, // 194
|
||||
2, 1, // 196
|
||||
2, 126, // 198
|
||||
126, 126, // 200
|
||||
126, 386, // 202
|
||||
2, 510, // 204
|
||||
2, 262, // 206
|
||||
2, 262, // 208
|
||||
126, 262, // 210
|
||||
126, 386, // 212
|
||||
126, 387, // 214
|
||||
2, 511, // 216
|
||||
2, 262, // 218
|
||||
125, 249, // 220
|
||||
1, 2, // 222
|
||||
125, 126, // 224
|
||||
1, 251, // 226
|
||||
126, 125, // 228
|
||||
2, 249, // 230
|
||||
2, 1, // 232
|
||||
126, 249, // 234
|
||||
126, 262, // 236
|
||||
1, 129, // 238
|
||||
126, 510, // 240
|
||||
126, 511, // 242
|
||||
125, 251, // 244
|
||||
126, 1, // 246
|
||||
126, 1, // 248
|
||||
125, 250, // 250
|
||||
127, 249, // 252
|
||||
254, 1, // 254
|
||||
126, 252, // 256
|
||||
253, 130, // 258
|
||||
129, 130, // 260
|
||||
129, 254, // 262
|
||||
253, 254, // 264
|
||||
387, 448, // 266
|
||||
508, 448, // 268
|
||||
508, 386, // 270
|
||||
387, 446, // 272
|
||||
508, 446, // 274
|
||||
508, 388, // 276
|
||||
385, 390, // 278
|
||||
385, 446, // 280
|
||||
510, 446, // 282
|
||||
511, 447, // 284
|
||||
386, 388, // 286
|
||||
386, 447, // 288
|
||||
254, 259, // 290
|
||||
131, 259, // 292
|
||||
192, 321, // 294
|
||||
258, 253, // 296
|
||||
386, 1, // 298
|
||||
258, 1, // 300
|
||||
510, 252, // 302
|
||||
385, 2, // 304
|
||||
385, 252, // 306
|
||||
260, 253, // 308
|
||||
405, 253, // 310
|
||||
405, 2, // 312
|
||||
510, 254, // 314
|
||||
384, 0, // 316
|
||||
384, 254, // 318
|
||||
381, 511, // 320
|
||||
131, 434, // 322
|
||||
131, 511, // 324
|
||||
510, 350, // 326
|
||||
302, 261, // 328
|
||||
259, 350, // 330
|
||||
221, 324, // 332
|
||||
221, 257, // 334
|
||||
163, 257, // 336
|
||||
259, 252, // 338
|
||||
511, 252, // 340
|
||||
511, 15, // 342
|
||||
259, 352, // 344
|
||||
404, 352, // 346
|
||||
317, 258, // 348
|
||||
259, 258, // 350
|
||||
130, 259, // 352
|
||||
191, 320, // 354
|
||||
253, 259, // 356
|
||||
259, 261, // 358
|
||||
259, 176, // 360
|
||||
414, 16, // 362
|
||||
414, 254, // 364
|
||||
253, 382, // 366
|
||||
129, 327, // 368
|
||||
129, 382, // 370
|
||||
477, 210, // 372
|
||||
477, 15, // 374
|
||||
354, 210, // 376
|
||||
222, 509, // 378
|
||||
352, 509, // 380
|
||||
352, 386, // 382
|
||||
253, 511, // 384
|
||||
130, 386, // 386
|
||||
130, 511, // 388
|
||||
381, 508, // 390
|
||||
256, 386, // 392
|
||||
256, 508, // 394
|
||||
130, 509, // 396
|
||||
380, 509, // 398
|
||||
380, 386, // 400
|
||||
258, 253, // 402
|
||||
510, 253, // 404
|
||||
510, 114, // 406
|
||||
354, 3, // 408
|
||||
354, 115, // 410
|
||||
510, 3, // 412
|
||||
258, 3, // 414
|
||||
507, 252, // 416
|
||||
255, 2, // 418
|
||||
255, 252, // 420
|
||||
510, 3, // 422
|
||||
376, 511, // 424
|
||||
376, 386, // 426
|
||||
253, 386, // 428
|
||||
510, 254, // 430
|
||||
258, 3, // 432
|
||||
475, 112, // 434
|
||||
475, 3, // 436
|
||||
354, 254, // 438
|
||||
509, 117, // 440
|
||||
509, 2, // 442
|
||||
259, 2, // 444
|
||||
191, 321, // 446
|
||||
254, 258, // 448
|
||||
128, 258, // 450
|
||||
252, 259, // 452
|
||||
131, 259, // 454
|
||||
192, 320, // 456
|
||||
260, 16, // 458
|
||||
442, 16, // 460
|
||||
442, 211, // 462
|
||||
260, 255, // 464
|
||||
259, 254, // 466
|
||||
509, 255, // 468
|
||||
509, 211, // 470
|
||||
245, 319, // 472
|
||||
190, 264, // 474
|
||||
135, 319, // 476
|
||||
509, 209, // 478
|
||||
443, 209, // 480
|
||||
509, 253, // 482
|
||||
259, 253, // 484
|
||||
259, 16, // 486
|
||||
443, 16, // 488
|
||||
354, 15, // 490
|
||||
260, 350, // 492
|
||||
312, 350, // 494
|
||||
260, 264, // 496
|
||||
509, 264, // 498
|
||||
381, 434, // 500
|
||||
163, 324, // 502
|
||||
222, 386, // 504
|
||||
259, 15, // 506
|
||||
507, 2, // 508
|
||||
259, 117, // 510
|
||||
386, 253, // 512
|
||||
510, 2, // 514
|
||||
260, 2, // 516
|
||||
510, 0, // 518
|
||||
510, 261, // 520
|
||||
253, 327, // 522
|
||||
259, 16, // 524
|
||||
466, 350, // 526
|
||||
387, 386, // 528
|
||||
387, 388, // 530
|
||||
510, 390, // 532
|
||||
511, 388, // 534
|
||||
381, 386, // 536
|
||||
130, 386, // 538
|
||||
258, 112, // 540
|
||||
509, 251, // 542
|
||||
351, 1, // 544
|
||||
351, 251, // 546
|
||||
509, 1, // 548
|
||||
509, 352, // 550
|
||||
261, 259, // 552
|
||||
261, 352, // 554
|
||||
509, 260, // 556
|
||||
261, 351, // 558
|
||||
509, 351, // 560
|
||||
509, 259, // 562
|
||||
261, 260, // 564
|
||||
127, 125, // 566
|
||||
3, 249, // 568
|
||||
3, 1, // 570
|
||||
127, 1, // 572
|
||||
125, 126, // 574
|
||||
1, 250, // 576
|
||||
1, 2, // 578
|
||||
125, 254, // 580
|
||||
125, 129, // 582
|
||||
1, 254, // 584
|
||||
126, 128, // 586
|
||||
1, 128, // 588
|
||||
1, 252, // 590
|
||||
130, 1, // 592
|
||||
130, 125, // 594
|
||||
254, 125, // 596
|
||||
126, 386, // 598
|
||||
2, 510, // 600
|
||||
2, 262, // 602
|
||||
1, 129, // 604
|
||||
126, 510, // 606
|
||||
125, 250, // 608
|
||||
127, 249, // 610
|
||||
254, 1, // 612
|
||||
126, 252, // 614
|
||||
253, 130, // 616
|
||||
129, 130, // 618
|
||||
129, 254, // 620
|
||||
253, 254, // 622
|
||||
387, 448, // 624
|
||||
508, 448, // 626
|
||||
508, 386, // 628
|
||||
387, 446, // 630
|
||||
508, 446, // 632
|
||||
508, 388, // 634
|
||||
381, 511, // 636
|
||||
131, 434, // 638
|
||||
131, 511, // 640
|
||||
510, 350, // 642
|
||||
302, 261, // 644
|
||||
259, 350, // 646
|
||||
259, 252, // 648
|
||||
511, 252, // 650
|
||||
511, 15, // 652
|
||||
259, 352, // 654
|
||||
404, 352, // 656
|
||||
317, 258, // 658
|
||||
259, 258, // 660
|
||||
130, 259, // 662
|
||||
191, 320, // 664
|
||||
253, 259, // 666
|
||||
259, 261, // 668
|
||||
253, 382, // 670
|
||||
129, 327, // 672
|
||||
129, 382, // 674
|
||||
477, 210, // 676
|
||||
477, 15, // 678
|
||||
354, 210, // 680
|
||||
222, 509, // 682
|
||||
352, 509, // 684
|
||||
352, 386, // 686
|
||||
191, 321, // 688
|
||||
254, 258, // 690
|
||||
128, 258, // 692
|
||||
260, 16, // 694
|
||||
442, 16, // 696
|
||||
442, 211, // 698
|
||||
260, 255, // 700
|
||||
509, 255, // 702
|
||||
354, 15, // 704
|
||||
260, 350, // 706
|
||||
312, 350, // 708
|
||||
260, 264, // 710
|
||||
509, 264, // 712
|
||||
381, 434, // 714
|
||||
222, 386, // 716
|
||||
259, 15, // 718
|
||||
510, 261, // 720
|
||||
253, 327, // 722
|
||||
466, 350, // 724
|
||||
387, 386, // 726
|
||||
387, 388, // 728
|
||||
509, 251, // 730
|
||||
351, 1, // 732
|
||||
351, 251, // 734
|
||||
509, 1, // 736
|
||||
509, 352, // 738
|
||||
261, 259, // 740
|
||||
261, 352, // 742
|
||||
509, 260, // 744
|
||||
261, 351, // 746
|
||||
509, 351, // 748
|
||||
509, 259, // 750
|
||||
261, 260 // 752
|
||||
}; // cityUVs
|
||||
|
||||
#define CITY_UV_INDEX_COUNT 197
|
||||
const S3L_Index cityUVIndices[CITY_UV_INDEX_COUNT * 3] = {
|
||||
0, 1, 2, // 0
|
||||
3, 4, 5, // 3
|
||||
6, 7, 8, // 6
|
||||
9, 10, 11, // 9
|
||||
0, 2, 12, // 12
|
||||
13, 14, 15, // 15
|
||||
16, 17, 18, // 18
|
||||
16, 19, 17, // 21
|
||||
11, 20, 9, // 24
|
||||
10, 9, 21, // 27
|
||||
14, 22, 15, // 30
|
||||
16, 18, 23, // 33
|
||||
5, 24, 3, // 36
|
||||
25, 26, 27, // 39
|
||||
28, 29, 30, // 42
|
||||
31, 32, 33, // 45
|
||||
34, 35, 36, // 48
|
||||
37, 38, 39, // 51
|
||||
40, 41, 42, // 54
|
||||
43, 44, 45, // 57
|
||||
42, 46, 40, // 60
|
||||
47, 48, 49, // 63
|
||||
50, 46, 42, // 66
|
||||
51, 52, 53, // 69
|
||||
45, 44, 54, // 72
|
||||
51, 53, 31, // 75
|
||||
55, 56, 57, // 78
|
||||
54, 44, 58, // 81
|
||||
59, 60, 61, // 84
|
||||
62, 63, 64, // 87
|
||||
64, 63, 65, // 90
|
||||
65, 63, 66, // 93
|
||||
63, 67, 66, // 96
|
||||
31, 53, 32, // 99
|
||||
47, 68, 48, // 102
|
||||
25, 69, 26, // 105
|
||||
28, 30, 70, // 108
|
||||
34, 71, 35, // 111
|
||||
37, 39, 72, // 114
|
||||
55, 73, 56, // 117
|
||||
74, 75, 76, // 120
|
||||
74, 77, 75, // 123
|
||||
78, 79, 80, // 126
|
||||
81, 82, 83, // 129
|
||||
84, 81, 83, // 132
|
||||
85, 86, 87, // 135
|
||||
87, 88, 85, // 138
|
||||
89, 90, 91, // 141
|
||||
92, 93, 94, // 144
|
||||
95, 96, 97, // 147
|
||||
98, 99, 100, // 150
|
||||
101, 102, 103, // 153
|
||||
104, 105, 106, // 156
|
||||
107, 108, 109, // 159
|
||||
78, 80, 110, // 162
|
||||
111, 112, 113, // 165
|
||||
114, 115, 116, // 168
|
||||
114, 117, 115, // 171
|
||||
109, 118, 107, // 174
|
||||
90, 119, 91, // 177
|
||||
102, 101, 120, // 180
|
||||
108, 107, 121, // 183
|
||||
112, 122, 113, // 186
|
||||
114, 116, 123, // 189
|
||||
100, 124, 98, // 192
|
||||
88, 87, 125, // 195
|
||||
81, 126, 82, // 198
|
||||
97, 127, 95, // 201
|
||||
94, 128, 92, // 204
|
||||
129, 130, 131, // 207
|
||||
131, 132, 129, // 210
|
||||
133, 134, 135, // 213
|
||||
136, 137, 138, // 216
|
||||
139, 140, 141, // 219
|
||||
142, 143, 144, // 222
|
||||
145, 146, 147, // 225
|
||||
148, 149, 150, // 228
|
||||
151, 152, 153, // 231
|
||||
154, 155, 156, // 234
|
||||
157, 158, 159, // 237
|
||||
160, 161, 162, // 240
|
||||
163, 164, 165, // 243
|
||||
166, 167, 168, // 246
|
||||
169, 170, 171, // 249
|
||||
172, 173, 174, // 252
|
||||
172, 174, 175, // 255
|
||||
176, 177, 178, // 258
|
||||
165, 164, 179, // 261
|
||||
180, 181, 182, // 264
|
||||
183, 184, 185, // 267
|
||||
186, 187, 188, // 270
|
||||
189, 190, 191, // 273
|
||||
192, 193, 194, // 276
|
||||
195, 196, 197, // 279
|
||||
198, 199, 200, // 282
|
||||
201, 202, 203, // 285
|
||||
204, 205, 206, // 288
|
||||
203, 207, 201, // 291
|
||||
208, 209, 210, // 294
|
||||
211, 207, 203, // 297
|
||||
212, 213, 214, // 300
|
||||
206, 205, 215, // 303
|
||||
212, 214, 192, // 306
|
||||
216, 217, 218, // 309
|
||||
215, 205, 219, // 312
|
||||
220, 221, 222, // 315
|
||||
223, 224, 225, // 318
|
||||
226, 227, 228, // 321
|
||||
229, 230, 231, // 324
|
||||
231, 232, 229, // 327
|
||||
233, 180, 182, // 330
|
||||
232, 231, 234, // 333
|
||||
235, 234, 231, // 336
|
||||
236, 237, 238, // 339
|
||||
239, 240, 241, // 342
|
||||
241, 240, 242, // 345
|
||||
242, 240, 243, // 348
|
||||
240, 244, 243, // 351
|
||||
187, 245, 188, // 354
|
||||
246, 247, 248, // 357
|
||||
247, 249, 248, // 360
|
||||
160, 250, 161, // 363
|
||||
166, 168, 251, // 366
|
||||
189, 191, 252, // 369
|
||||
192, 214, 193, // 372
|
||||
169, 171, 253, // 375
|
||||
208, 254, 209, // 378
|
||||
220, 222, 255, // 381
|
||||
148, 256, 149, // 384
|
||||
151, 257, 152, // 387
|
||||
154, 156, 258, // 390
|
||||
157, 259, 158, // 393
|
||||
163, 260, 164, // 396
|
||||
183, 261, 184, // 399
|
||||
180, 262, 181, // 402
|
||||
249, 247, 263, // 405
|
||||
133, 135, 264, // 408
|
||||
136, 138, 265, // 411
|
||||
139, 141, 266, // 414
|
||||
142, 267, 143, // 417
|
||||
195, 268, 196, // 420
|
||||
198, 200, 269, // 423
|
||||
216, 270, 217, // 426
|
||||
271, 272, 273, // 429
|
||||
271, 274, 272, // 432
|
||||
275, 276, 277, // 435
|
||||
278, 279, 280, // 438
|
||||
275, 281, 276, // 441
|
||||
278, 282, 279, // 444
|
||||
283, 284, 285, // 447
|
||||
286, 283, 285, // 450
|
||||
287, 288, 289, // 453
|
||||
290, 291, 292, // 456
|
||||
293, 294, 295, // 459
|
||||
296, 297, 298, // 462
|
||||
299, 300, 301, // 465
|
||||
291, 302, 292, // 468
|
||||
300, 299, 303, // 471
|
||||
288, 287, 304, // 474
|
||||
283, 305, 284, // 477
|
||||
298, 306, 296, // 480
|
||||
295, 307, 293, // 483
|
||||
308, 309, 310, // 486
|
||||
310, 311, 308, // 489
|
||||
312, 313, 314, // 492
|
||||
315, 316, 317, // 495
|
||||
318, 319, 320, // 498
|
||||
321, 322, 323, // 501
|
||||
324, 325, 326, // 504
|
||||
327, 328, 329, // 507
|
||||
327, 329, 330, // 510
|
||||
331, 332, 333, // 513
|
||||
323, 322, 334, // 516
|
||||
335, 336, 337, // 519
|
||||
338, 339, 340, // 522
|
||||
341, 342, 343, // 525
|
||||
344, 345, 346, // 528
|
||||
347, 348, 349, // 531
|
||||
349, 350, 347, // 534
|
||||
350, 349, 351, // 537
|
||||
339, 352, 340, // 540
|
||||
353, 354, 355, // 543
|
||||
354, 356, 355, // 546
|
||||
318, 357, 319, // 549
|
||||
341, 343, 358, // 552
|
||||
324, 326, 359, // 555
|
||||
321, 360, 322, // 558
|
||||
335, 361, 336, // 561
|
||||
356, 354, 362, // 564
|
||||
312, 314, 363, // 567
|
||||
315, 317, 364, // 570
|
||||
365, 366, 367, // 573
|
||||
365, 368, 366, // 576
|
||||
369, 370, 371, // 579
|
||||
372, 373, 374, // 582
|
||||
369, 375, 370, // 585
|
||||
372, 376, 373 // 588
|
||||
}; // cityUVIndices
|
||||
|
||||
S3L_Model3D cityModel =
|
||||
{
|
||||
.vertices = cityVertices,
|
||||
.vertexCount = CITY_VERTEX_COUNT,
|
||||
.triangles = cityTriangleIndices,
|
||||
.triangleCount = CITY_TRIANGLE_COUNT
|
||||
};
|
||||
|
||||
#endif // guard
|
8942
programs/cityTexture.h
Normal file
8942
programs/cityTexture.h
Normal file
File diff suppressed because it is too large
Load diff
226
programs/demo.c
Normal file
226
programs/demo.c
Normal file
|
@ -0,0 +1,226 @@
|
|||
/*
|
||||
author: Miloslav Ciz
|
||||
license: CC0
|
||||
*/
|
||||
|
||||
#include <SDL2/SDL.h>
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
#include <time.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#define S3L_FLAT 0
|
||||
#define S3L_STRICT_NEAR_CULLING 0
|
||||
#define S3L_PERSPECTIVE_CORRECTION 1
|
||||
#define S3L_SORT 2
|
||||
#define S3L_STENCIL_BUFFER 1
|
||||
#define S3L_Z_BUFFER 0
|
||||
|
||||
#define S3L_PIXEL_FUNCTION drawPixel
|
||||
|
||||
#define S3L_RESOLUTION_X 800
|
||||
#define S3L_RESOLUTION_Y 600
|
||||
|
||||
#include "../small3dlib.h"
|
||||
|
||||
#include "cityModel.h"
|
||||
#include "cityTexture.h"
|
||||
|
||||
#define TEXTURE_W 256
|
||||
#define TEXTURE_H 256
|
||||
|
||||
S3L_Model3D model;
|
||||
|
||||
S3L_Scene scene;
|
||||
|
||||
uint32_t pixels[S3L_RESOLUTION_X * S3L_RESOLUTION_Y];
|
||||
|
||||
uint32_t frame = 0;
|
||||
|
||||
void clearScreen()
|
||||
{
|
||||
memset(pixels,255,S3L_RESOLUTION_X * S3L_RESOLUTION_Y * sizeof(uint32_t));
|
||||
}
|
||||
|
||||
static inline void setPixel(int x, int y, uint8_t red, uint8_t green, uint8_t blue)
|
||||
{
|
||||
if (x < 0 || x >= S3L_RESOLUTION_X || y < 0 || y >= S3L_RESOLUTION_Y)
|
||||
return;
|
||||
|
||||
uint32_t r = red & 0x000000FF;
|
||||
r = r << 24;
|
||||
|
||||
uint32_t g = green & 0x000000FF;
|
||||
g = g << 16;
|
||||
|
||||
uint32_t b = blue & 0x000000FF;
|
||||
b = b << 8;
|
||||
|
||||
pixels[y * S3L_RESOLUTION_X + x] = r | g | b;
|
||||
}
|
||||
|
||||
void sampleTexture(uint8_t *texture, int32_t u, int32_t v, uint8_t *r, uint8_t *g, uint8_t *b)
|
||||
{
|
||||
u = S3L_clamp(u,0,TEXTURE_W - 1);
|
||||
v = S3L_clamp(v,0,TEXTURE_H - 1);
|
||||
|
||||
int32_t index = (v * TEXTURE_W + u) * 3;
|
||||
|
||||
*r = texture[index];
|
||||
index++;
|
||||
*g = texture[index];
|
||||
index++;
|
||||
*b = texture[index];
|
||||
}
|
||||
|
||||
int16_t previousTriangle = -1;
|
||||
S3L_Unit uv0[2], uv1[2], uv2[2];
|
||||
|
||||
void drawPixel(S3L_PixelInfo *p)
|
||||
{
|
||||
if (p->triangleIndex != previousTriangle)
|
||||
{
|
||||
int16_t index;
|
||||
|
||||
index = p->triangleIndex * 3;
|
||||
|
||||
int16_t i0 = cityUVIndices[index];
|
||||
int16_t i1 = cityUVIndices[index + 1];
|
||||
int16_t i2 = cityUVIndices[index + 2];
|
||||
|
||||
index = i0 * 2;
|
||||
|
||||
uv0[0] = cityUVs[index];
|
||||
uv0[1] = cityUVs[index + 1];
|
||||
|
||||
index = i1 * 2;
|
||||
|
||||
uv1[0] = cityUVs[index];
|
||||
uv1[1] = cityUVs[index + 1];
|
||||
|
||||
index = i2 * 2;
|
||||
|
||||
uv2[0] = cityUVs[index];
|
||||
uv2[1] = cityUVs[index + 1];
|
||||
|
||||
previousTriangle = p->triangleIndex;
|
||||
}
|
||||
|
||||
uint8_t r,g,b;
|
||||
|
||||
S3L_Unit uv[2];
|
||||
|
||||
uv[0] = S3L_interpolateBarycentric(uv0[0],uv1[0],uv2[0],
|
||||
p->barycentric[0], p->barycentric[1], p->barycentric[2]);
|
||||
|
||||
uv[1] = S3L_interpolateBarycentric(uv0[1],uv1[1],uv2[1],
|
||||
p->barycentric[0], p->barycentric[1], p->barycentric[2]);
|
||||
|
||||
sampleTexture(cityTexture,uv[0] / 2,uv[1] / 2,&r,&g,&b);
|
||||
|
||||
setPixel(p->x,p->y,r,g,b);
|
||||
}
|
||||
|
||||
void draw()
|
||||
{
|
||||
S3L_newFrame();
|
||||
|
||||
clearScreen();
|
||||
|
||||
S3L_drawScene(scene);
|
||||
}
|
||||
|
||||
int16_t fps = 0;
|
||||
|
||||
int main()
|
||||
{
|
||||
SDL_Window *window = SDL_CreateWindow("model viewer", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, S3L_RESOLUTION_X, S3L_RESOLUTION_Y, SDL_WINDOW_SHOWN);
|
||||
SDL_Renderer *renderer = SDL_CreateRenderer(window,-1,0);
|
||||
SDL_Texture *textureSDL = SDL_CreateTexture(renderer,SDL_PIXELFORMAT_RGBX8888, SDL_TEXTUREACCESS_STATIC, S3L_RESOLUTION_X, S3L_RESOLUTION_Y);
|
||||
SDL_Surface *screenSurface = SDL_GetWindowSurface(window);
|
||||
SDL_Event event;
|
||||
|
||||
S3L_initModel3D(cityVertices,CITY_VERTEX_COUNT,cityTriangleIndices,CITY_TRIANGLE_COUNT,&model);
|
||||
|
||||
S3L_initScene(&model,1,&scene);
|
||||
|
||||
scene.camera.transform.translation.z = -S3L_FRACTIONS_PER_UNIT * 8;
|
||||
|
||||
int running = 1;
|
||||
|
||||
clock_t nextPrintT;
|
||||
|
||||
nextPrintT = clock();
|
||||
|
||||
while (running)
|
||||
{
|
||||
clock_t frameStartT = clock();
|
||||
|
||||
draw();
|
||||
|
||||
fps++;
|
||||
|
||||
SDL_UpdateTexture(textureSDL,NULL,pixels,S3L_RESOLUTION_X * sizeof(uint32_t));
|
||||
|
||||
clock_t nowT = clock();
|
||||
|
||||
double timeDiff = ((double) (nowT - nextPrintT)) / CLOCKS_PER_SEC;
|
||||
double frameDiff = ((double) (nowT - frameStartT)) / CLOCKS_PER_SEC;
|
||||
|
||||
if (timeDiff >= 1.0)
|
||||
{
|
||||
nextPrintT = nowT;
|
||||
printf("FPS: %d\n",fps);
|
||||
fps = 0;
|
||||
}
|
||||
|
||||
while (SDL_PollEvent(&event))
|
||||
{
|
||||
if (event.type == SDL_QUIT)
|
||||
running = 0;
|
||||
}
|
||||
|
||||
uint8_t *state = SDL_GetKeyboardState(NULL);
|
||||
|
||||
int16_t rotationStep = S3L_max(1,300 * frameDiff);
|
||||
int16_t zoomStep = S3L_max(1,3000 * frameDiff);
|
||||
int16_t fovStep = S3L_max(1,1000 * frameDiff);
|
||||
|
||||
if (!state[SDL_SCANCODE_LCTRL])
|
||||
{
|
||||
if (state[SDL_SCANCODE_LEFT])
|
||||
model.transform.rotation.y += rotationStep;
|
||||
else if (state[SDL_SCANCODE_RIGHT])
|
||||
model.transform.rotation.y -= rotationStep;
|
||||
|
||||
if (state[SDL_SCANCODE_DOWN])
|
||||
model.transform.rotation.x += rotationStep;
|
||||
else if (state[SDL_SCANCODE_UP])
|
||||
model.transform.rotation.x -= rotationStep;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (state[SDL_SCANCODE_LEFT])
|
||||
scene.camera.focalLength =
|
||||
S3L_min(S3L_FRACTIONS_PER_UNIT * 5,scene.camera.focalLength + fovStep);
|
||||
else if (state[SDL_SCANCODE_RIGHT])
|
||||
scene.camera.focalLength =
|
||||
S3L_max(S3L_FRACTIONS_PER_UNIT / 2,scene.camera.focalLength - fovStep);
|
||||
|
||||
if (state[SDL_SCANCODE_UP])
|
||||
scene.camera.transform.translation.z =
|
||||
S3L_min(S3L_FRACTIONS_PER_UNIT, scene.camera.transform.translation.z + zoomStep);
|
||||
else if (state[SDL_SCANCODE_DOWN])
|
||||
scene.camera.transform.translation.z =
|
||||
S3L_max(-S3L_FRACTIONS_PER_UNIT * 16, scene.camera.transform.translation.z - zoomStep);
|
||||
}
|
||||
|
||||
SDL_RenderClear(renderer);
|
||||
SDL_RenderCopy(renderer,textureSDL,NULL,NULL);
|
||||
SDL_RenderPresent(renderer);
|
||||
|
||||
frame++;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Reference in a new issue