-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.cpp
190 lines (116 loc) · 29 KB
/
main.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
#include <cmath>
#include <fstream>
#include "everything.h"
#include <iostream>
#include <chrono>
using namespace std;
std::string MESHES = "misc";
std::string BUFFER_PATH = "BUFFER";
std::string VIDEO_PATH = "video";
// Test 6 Long
inline void phongtest() {
int SUB = 2;
Mesh lao = icosphere(1, SUB);
float SSS = 1;
Transform offset(Vector3(0, -2, -4) * SSS, Rotation3(Vector3(1, 1, 1), M_PI / 8));
lao.Trans(offset);
Mesh shi(lao);
shi.Trans(Transform(Vector3(2, 2, -1)));
Mesh proto = icosphere(1, SUB);
proto = Mesh::fromOBJ(MESHES + "/mcrproto.obj");
proto = icosphere(1, SUB);
proto.Trans(Transform(Vector3(-1, 0, -4), Rotation3(Vector3(0, 1, 0), M_PI * 1.2)));
int N = 1024;
Scene s(N, N / 2);
float A = 0.5;
PointLight PL(Vector3(1, 1, 1), A);
PL.Trans(Transform(Vector3(-4, 2, 2)));
s.lights.push_back(PL);
PointLight PL2(Vector3(1, 1, 1), A);
PL2.Trans(Transform(Vector3(2, 1, 0)));
s.lights.push_back(PL2);
s.clearBuffer();
auto start = std::chrono::high_resolution_clock::now();
int SPE = 16;
s.fillMesh(lao, BaseMaterial(0xFF0000FF, SPE * SPE), true, true);
s.fillMesh(shi, BaseMaterial(0x00FF00FF, SPE), true, true);
s.fillMesh(proto, BaseMaterial(0x0000FFFF, 1), false);
std::cout << "THING\n";
s.drawQueue();
std::cout << "CNT " << s.TRIANGLE_COUNT << "\n";
auto finish = std::chrono::high_resolution_clock::now();
std::cout << double(std::chrono::duration_cast<std::chrono::nanoseconds>(finish-start).count()) / 1000000 << "ns\n";
// s.outputFrags("OUT");
s.outputBuffer(BUFFER_PATH);
}
// TEST 7 debug lighting
inline void sss() {
Mesh proto = cube(1);
proto.Trans(Transform(Vector3(0, 0, -2), Rotation3(Vector3(0, 1, 2), M_PI * 1.3)));
int N = 1024;
Scene s(N, N / 2);
float A = 0.2;
float S = sqrtf(3);
PointLight PL(Vector3(1, 0, 0), A);
PL.Trans(Transform(Vector3(-S, 1, 0)));
s.lights.push_back(PL);
PointLight PL2(Vector3(0, 0, 1), A);
PL2.Trans(Transform(Vector3(S, 1, 0)));
s.lights.push_back(PL2);
PointLight PL3(Vector3(0, 1, 0), A);
PL3.Trans(Transform(Vector3(0, -2, 0)));
s.lights.push_back(PL3);
s.clearBuffer();
auto start = std::chrono::high_resolution_clock::now();
int SPE = 16;
s.fillMesh(proto, BaseMaterial(0xFFFFFFFF, 1), true, true, false);
std::cout << "THING\n";
s.drawQueue();
std::cout << "CNT " << s.TRIANGLE_COUNT << "\n";
auto finish = std::chrono::high_resolution_clock::now();
std::cout << double(std::chrono::duration_cast<std::chrono::nanoseconds>(finish-start).count()) / 1000000 << "ns\n";
// s.outputFrags("OUT");
s.outputBuffer(BUFFER_PATH);
}
// WIP
std::vector<Vector3> proto_verts({Vector3(0.1875,1.5625,0.125),Vector3(0.1875,1.5,0.125),Vector3(0.1875,1.5625,-0.125),Vector3(0.1875,1.5,-0.125),Vector3(-0.1875,1.5625,-0.125),Vector3(-0.1875,1.5,-0.125),Vector3(-0.1875,1.5625,0.125),Vector3(-0.1875,1.5,0.125),Vector3(-0.1875,1.5625,0.125),Vector3(0.1875,1.5625,0.125),Vector3(-0.1875,1.5,0.125),Vector3(-0.1875,1.5,-0.125),Vector3(0.1875,1.5,0.125),Vector3(0.1875,1.5,-0.125),Vector3(0.1875,1.5625,0.125),Vector3(0.1875,1.5,0.125),Vector3(-0.203125,1.78883252,0.03125),Vector3(-0.203125,1.65625,0.16383252),Vector3(-0.203125,1.65625,-0.10133252),Vector3(-0.203125,1.52366748,0.03125),Vector3(-0.265625,1.65625,-0.10133252),Vector3(-0.265625,1.52366748,0.03125),Vector3(-0.265625,1.78883252,0.03125),Vector3(-0.265625,1.65625,0.16383252),Vector3(-0.265625,1.78883252,0.03125),Vector3(-0.203125,1.78883252,0.03125),Vector3(-0.265625,1.65625,0.16383252),Vector3(-0.265625,1.52366748,0.03125),Vector3(-0.203125,1.65625,0.16383252),Vector3(-0.203125,1.52366748,0.03125),Vector3(-0.203125,1.78883252,0.03125),Vector3(-0.203125,1.65625,0.16383252),Vector3(0.265625,1.78883252,0.03125),Vector3(0.265625,1.65625,0.16383252),Vector3(0.265625,1.65625,-0.10133252),Vector3(0.265625,1.52366748,0.03125),Vector3(0.203125,1.65625,-0.10133252),Vector3(0.203125,1.52366748,0.03125),Vector3(0.203125,1.78883252,0.03125),Vector3(0.203125,1.65625,0.16383252),Vector3(0.203125,1.78883252,0.03125),Vector3(0.265625,1.78883252,0.03125),Vector3(0.203125,1.65625,0.16383252),Vector3(0.203125,1.52366748,0.03125),Vector3(0.265625,1.65625,0.16383252),Vector3(0.265625,1.52366748,0.03125),Vector3(0.265625,1.78883252,0.03125),Vector3(0.265625,1.65625,0.16383252),Vector3(0.25,1.97640765,-0.00433439),Vector3(0.25,1.73492619,0.06037036),Vector3(0.25,1.96023146,-0.06470476),Vector3(0.25,1.71875,0),Vector3(-0.25,1.96023146,-0.06470476),Vector3(-0.25,1.71875,0),Vector3(-0.25,1.97640765,-0.00433439),Vector3(-0.25,1.73492619,0.06037036),Vector3(-0.25,1.97640765,-0.00433439),Vector3(0.25,1.97640765,-0.00433439),Vector3(-0.25,1.73492619,0.06037036),Vector3(-0.25,1.71875,0),Vector3(0.25,1.73492619,0.06037036),Vector3(0.25,1.71875,0),Vector3(0.25,1.97640765,-0.00433439),Vector3(0.25,1.73492619,0.06037036),Vector3(0.21875,1.75,0.125),Vector3(0.21875,1.5625,0.125),Vector3(0.21875,1.75,0),Vector3(0.21875,1.5625,0),Vector3(-0.21875,1.75,0),Vector3(-0.21875,1.5625,0),Vector3(-0.21875,1.75,0.125),Vector3(-0.21875,1.5625,0.125),Vector3(-0.21875,1.75,0.125),Vector3(0.21875,1.75,0.125),Vector3(-0.21875,1.5625,0.125),Vector3(-0.21875,1.5625,0),Vector3(0.21875,1.5625,0.125),Vector3(0.21875,1.5625,0),Vector3(0.21875,1.75,0.125),Vector3(0.21875,1.5625,0.125),Vector3(0.1875,1.95887782,0.17294411),Vector3(0.1875,1.77422636,0.20550314),Vector3(0.1875,1.92631878,-0.01170734),Vector3(0.1875,1.74166733,0.02085169),Vector3(-0.1875,1.92631878,-0.01170734),Vector3(-0.1875,1.74166733,0.02085169),Vector3(-0.1875,1.95887782,0.17294411),Vector3(-0.1875,1.77422636,0.20550314),Vector3(-0.1875,1.95887782,0.17294411),Vector3(0.1875,1.95887782,0.17294411),Vector3(-0.1875,1.77422636,0.20550314),Vector3(-0.1875,1.74166733,0.02085169),Vector3(0.1875,1.77422636,0.20550314),Vector3(0.1875,1.74166733,0.02085169),Vector3(0.1875,1.95887782,0.17294411),Vector3(0.1875,1.77422636,0.20550314),Vector3(0.15625,1.83621853,0.28037027),Vector3(0.15625,1.7116942,0.2694758),Vector3(0.15625,1.85800747,0.0313216),Vector3(0.15625,1.73348313,0.02042713),Vector3(-0.15625,1.85800747,0.0313216),Vector3(-0.15625,1.73348313,0.02042713),Vector3(-0.15625,1.83621853,0.28037027),Vector3(-0.15625,1.7116942,0.2694758),Vector3(-0.15625,1.83621853,0.28037027),Vector3(0.15625,1.83621853,0.28037027),Vector3(-0.15625,1.7116942,0.2694758),Vector3(-0.15625,1.73348313,0.02042713),Vector3(0.15625,1.7116942,0.2694758),Vector3(0.15625,1.73348313,0.02042713),Vector3(0.15625,1.83621853,0.28037027),Vector3(0.15625,1.7116942,0.2694758),Vector3(0.186875,1.69693372,0.2897283),Vector3(0.186875,1.54436666,0.1828997),Vector3(0.186875,1.80376233,0.13716123),Vector3(0.186875,1.65119527,0.03033263),Vector3(-0.186875,1.80376233,0.13716123),Vector3(-0.186875,1.65119527,0.03033263),Vector3(-0.186875,1.69693372,0.2897283),Vector3(-0.186875,1.54436666,0.1828997),Vector3(-0.186875,1.69693372,0.2897283),Vector3(0.186875,1.69693372,0.2897283),Vector3(-0.186875,1.54436666,0.1828997),Vector3(-0.186875,1.65119527,0.03033263),Vector3(0.186875,1.54436666,0.1828997),Vector3(0.186875,1.65119527,0.03033263),Vector3(0.186875,1.69693372,0.2897283),Vector3(0.186875,1.54436666,0.1828997),Vector3(0.155625,1.53748758,0.29032536),Vector3(0.155625,1.43741553,0.13324371),Vector3(0.155625,1.64185727,0.22383453),Vector3(0.155625,1.54178522,0.06675289),Vector3(-0.155625,1.64185727,0.22383453),Vector3(-0.155625,1.54178522,0.06675289),Vector3(-0.155625,1.53748758,0.29032536),Vector3(-0.155625,1.43741553,0.13324371),Vector3(-0.155625,1.53748758,0.29032536),Vector3(0.155625,1.53748758,0.29032536),Vector3(-0.155625,1.43741553,0.13324371),Vector3(-0.155625,1.54178522,0.06675289),Vector3(0.155625,1.43741553,0.13324371),Vector3(0.155625,1.54178522,0.06675289),Vector3(0.155625,1.53748758,0.29032536),Vector3(0.155625,1.43741553,0.13324371),Vector3(-0.16255522,2.10373417,0.37228404),Vector3(-0.1729087,1.98824923,0.41898558),Vector3(-0.07507092,1.93631017,-0.02233216),Vector3(-0.0854244,1.82082523,0.02436937),Vector3(-0.19710792,1.93631017,-0.04938712),Vector3(-0.2074614,1.82082523,-0.00268558),Vector3(-0.28459222,2.10373417,0.34522909),Vector3(-0.2949457,1.98824923,0.39193063),Vector3(-0.28459222,2.10373417,0.34522909),Vector3(-0.16255522,2.10373417,0.37228404),Vector3(-0.2949457,1.98824923,0.39193063),Vector3(-0.2074614,1.82082523,-0.00268558),Vector3(-0.1729087,1.98824923,0.41898558),Vector3(-0.0854244,1.82082523,0.02436937),Vector3(-0.16255522,2.10373417,0.37228404),Vector3(-0.1729087,1.98824923,0.41898558),Vector3(-0.20893169,1.9404138,0.29271061),Vector3(-0.21410843,1.88267133,0.31606138),Vector3(-0.1464429,1.82082523,0.0108419),Vector3(-0.15161964,1.76308276,0.03419267),Vector3(-0.2074614,1.82082523,-0.00268558),Vector3(-0.21263814,1.76308276,0.02066519),Vector3(-0.26995019,1.9404138,0.27918314),Vector3(-0.27512693,1.88267133,0.30253391),Vector3(-0.26995019,1.9404138,0.27918314),Vector3(-0.20893169,1.9404138,0.29271061),Vector3(-0.27512693,1.88267133,0.30253391),Vector3(-0.21263814,1.76308276,0.02066519),Vector3(-0.21410843,1.88267133,0.31606138),Vector3(-0.15161964,1.76308276,0.03419267),Vector3(-0.20893169,1.9404138,0.29271061),Vector3(-0.21410843,1.88267133,0.31606138),Vector3(0.28459222,2.10373417,0.34522909),Vector3(0.2949457,1.98824923,0.39193063),Vector3(0.19710792,1.93631017,-0.04938712),Vector3(0.2074614,1.82082523,-0.00268558),Vector3(0.07507092,1.93631017,-0.02233216),Vector3(0.0854244,1.82082523,0.02436937),Vector3(0.16255522,2.10373417,0.37228404),Vector3(0.1729087,1.98824923,0.41898558),Vector3(0.16255522,2.10373417,0.37228404),Vector3(0.28459222,2.10373417,0.34522909),Vector3(0.1729087,1.98824923,0.41898558),Vector3(0.0854244,1.82082523,0.02436937),Vector3(0.2949457,1.98824923,0.39193063),Vector3(0.2074614,1.82082523,-0.00268558),Vector3(0.16255522,2.10373417,0.37228404),Vector3(0.1729087,1.98824923,0.41898558),Vector3(0.26995019,1.9404138,0.27918314),Vector3(0.27512693,1.88267133,0.30253391),Vector3(0.2074614,1.82082523,-0.00268558),Vector3(0.21263814,1.76308276,0.02066519),Vector3(0.1464429,1.82082523,0.0108419),Vector3(0.15161964,1.76308276,0.03419267),Vector3(0.20893169,1.9404138,0.29271061),Vector3(0.21410843,1.88267133,0.31606138),Vector3(0.20893169,1.9404138,0.29271061),Vector3(0.26995019,1.9404138,0.27918314),Vector3(0.21410843,1.88267133,0.31606138),Vector3(0.15161964,1.76308276,0.03419267),Vector3(0.27512693,1.88267133,0.30253391),Vector3(0.21263814,1.76308276,0.02066519),Vector3(0.20893169,1.9404138,0.29271061),Vector3(0.21410843,1.88267133,0.31606138),Vector3(0.125,1.8125,-0.453125),Vector3(0.21875,1.9375,0),Vector3(0.21875,1.5625,0),Vector3(0.125,1.5625,-0.375),Vector3(-0.21875,1.5625,0),Vector3(-0.21875,1.9375,0),Vector3(-0.125,1.8125,-0.453125),Vector3(-0.125,1.5625,-0.375),Vector3(0.125,1.8125,-0.453125),Vector3(-0.125,1.8125,-0.453125),Vector3(0.125,1.5625,-0.375),Vector3(-0.125,1.5625,-0.375),Vector3(-0.125,1.8125,-0.453125),Vector3(0.125,1.8125,-0.453125),Vector3(0.125,1.5625,-0.375),Vector3(-0.125,1.5625,-0.375),Vector3(0.25,1.5,0.1875),Vector3(0.25,1.125,0.1875),Vector3(0.25,1.5,-0.1875),Vector3(0.25,1.125,-0.1875),Vector3(-0.25,1.5,-0.1875),Vector3(-0.25,1.125,-0.1875),Vector3(-0.25,1.5,0.1875),Vector3(-0.25,1.125,0.1875),Vector3(-0.25,1.5,0.1875),Vector3(0.25,1.5,0.1875),Vector3(-0.25,1.125,0.1875),Vector3(-0.25,1.125,-0.1875),Vector3(0.25,1.125,0.1875),Vector3(0.25,1.125,-0.1875),Vector3(0.25,1.5,0.1875),Vector3(0.25,1.125,0.1875),Vector3(0.25,0.8125,0.125),Vector3(0.25,0.6875,0.125),Vector3(0.25,0.8125,-0.125),Vector3(0.25,0.6875,-0.125),Vector3(-0.25,0.8125,-0.125),Vector3(-0.25,0.6875,-0.125),Vector3(-0.25,0.8125,0.125),Vector3(-0.25,0.6875,0.125),Vector3(-0.25,0.8125,0.125),Vector3(0.25,0.8125,0.125),Vector3(-0.25,0.6875,0.125),Vector3(-0.25,0.6875,-0.125),Vector3(0.25,0.6875,0.125),Vector3(0.25,0.6875,-0.125),Vector3(0.25,0.8125,0.125),Vector3(0.25,0.6875,0.125),Vector3(0.1875,1.125,0.125),Vector3(0.1875,0.8125,0.125),Vector3(0.1875,1.125,-0.125),Vector3(0.1875,0.8125,-0.125),Vector3(-0.1875,1.125,-0.125),Vector3(-0.1875,0.8125,-0.125),Vector3(-0.1875,1.125,0.125),Vector3(-0.1875,0.8125,0.125),Vector3(-0.1875,1.125,0.125),Vector3(0.1875,1.125,0.125),Vector3(-0.1875,0.8125,0.125),Vector3(-0.1875,0.8125,-0.125),Vector3(0.1875,0.8125,0.125),Vector3(0.1875,0.8125,-0.125),Vector3(0.1875,1.125,0.125),Vector3(0.1875,0.8125,0.125),Vector3(0.125,0.78349365,0.23325317),Vector3(0.125,0.65849365,0.01674683),Vector3(0.125,1,0.10825317),Vector3(0.125,0.875,-0.10825317),Vector3(-0.125,1,0.10825317),Vector3(-0.125,0.875,-0.10825317),Vector3(-0.125,0.78349365,0.23325317),Vector3(-0.125,0.65849365,0.01674683),Vector3(-0.125,0.78349365,0.23325317),Vector3(0.125,0.78349365,0.23325317),Vector3(-0.125,0.65849365,0.01674683),Vector3(-0.125,0.875,-0.10825317),Vector3(0.125,0.65849365,0.01674683),Vector3(0.125,0.875,-0.10825317),Vector3(0.125,0.78349365,0.23325317),Vector3(0.125,0.65849365,0.01674683),Vector3(0.15625,0.51704743,0.45925476),Vector3(0.15625,0.36079743,0.18862183),Vector3(0.15625,0.84180695,0.27175476),Vector3(0.15625,0.68555695,0.00112183),Vector3(-0.15625,0.84180695,0.27175476),Vector3(-0.15625,0.68555695,0.00112183),Vector3(-0.15625,0.51704743,0.45925476),Vector3(-0.15625,0.36079743,0.18862183),Vector3(-0.15625,0.51704743,0.45925476),Vector3(0.15625,0.51704743,0.45925476),Vector3(-0.15625,0.36079743,0.18862183),Vector3(-0.15625,0.68555695,0.00112183),Vector3(0.15625,0.36079743,0.18862183),Vector3(0.15625,0.68555695,0.00112183),Vector3(0.15625,0.51704743,0.45925476),Vector3(0.15625,0.36079743,0.18862183),Vector3(0.125,0.33044456,0.61381673),Vector3(0.125,0.15366787,0.43704004),Vector3(0.125,0.55141543,0.39284587),Vector3(0.125,0.37463873,0.21606917),Vector3(-0.125,0.55141543,0.39284587),Vector3(-0.125,0.37463873,0.21606917),Vector3(-0.125,0.33044456,0.61381673),Vector3(-0.125,0.15366787,0.43704004),Vector3(-0.125,0.33044456,0.61381673),Vector3(0.125,0.33044456,0.61381673),Vector3(-0.125,0.15366787,0.43704004),Vector3(-0.125,0.37463873,0.21606917),Vector3(0.125,0.15366787,0.43704004),Vector3(0.125,0.37463873,0.21606917),Vector3(0.125,0.33044456,0.61381673),Vector3(0.125,0.15366787,0.43704004),Vector3(0.09375,0.17815129,0.82376521),Vector3(0.09375,0.01577152,0.73001521),Vector3(0.09375,0.33440129,0.55313227),Vector3(0.09375,0.17202153,0.45938227),Vector3(-0.09375,0.33440129,0.55313227),Vector3(-0.09375,0.17202153,0.45938227),Vector3(-0.09375,0.17815129,0.82376521),Vector3(-0.09375,0.01577152,0.73001521),Vector3(-0.09375,0.17815129,0.82376521),Vector3(0.09375,0.17815129,0.82376521),Vector3(-0.09375,0.01577152,0.73001521),Vector3(-0.09375,0.17202153,0.45938227),Vector3(0.09375,0.01577152,0.73001521),Vector3(0.09375,0.17202153,0.45938227),Vector3(0.09375,0.17815129,0.82376521),Vector3(0.09375,0.01577152,0.73001521),Vector3(0.0625,0.13245928,0.97377809),Vector3(0.0625,0.00793495,0.96288362),Vector3(0.0625,0.15424822,0.72472942),Vector3(0.0625,0.02972388,0.71383495),Vector3(-0.0625,0.15424822,0.72472942),Vector3(-0.0625,0.02972388,0.71383495),Vector3(-0.0625,0.13245928,0.97377809),Vector3(-0.0625,0.00793495,0.96288362),Vector3(-0.0625,0.13245928,0.97377809),Vector3(0.0625,0.13245928,0.97377809),Vector3(-0.0625,0.00793495,0.96288362),Vector3(-0.0625,0.02972388,0.71383495),Vector3(0.0625,0.00793495,0.96288362),Vector3(0.0625,0.02972388,0.71383495),Vector3(0.0625,0.13245928,0.97377809),Vector3(0.0625,0.00793495,0.96288362),Vector3(0.26594406,0.52909821,-0.17849721),Vector3(0.23926062,0.31472402,0.12649583),Vector3(0.27213038,0.42772813,-0.2492072),Vector3(0.24544694,0.21335395,0.05578583),Vector3(0.02432695,0.42772813,-0.27088719),Vector3(-0.00235649,0.21335395,0.03410584),Vector3(0.01814062,0.52909821,-0.2001772),Vector3(-0.00854281,0.31472402,0.10481584),Vector3(0.01814062,0.52909821,-0.2001772),Vector3(0.26594406,0.52909821,-0.17849721),Vector3(-0.00854281,0.31472402,0.10481584),Vector3(-0.00235649,0.21335395,0.03410584),Vector3(0.23926062,0.31472402,0.12649583),Vector3(0.24544694,0.21335395,0.05578583),Vector3(0.26594406,0.52909821,-0.17849721),Vector3(0.23926062,0.31472402,0.12649583),Vector3(0.23995081,0.31406168,0.12577803),Vector3(0.24279483,0.06620048,0.09327066),Vector3(0.2561527,0.33853534,-0.05941049),Vector3(0.25899673,0.09067414,-0.09191787),Vector3(0.00710403,0.33853534,-0.08119943),Vector3(0.00994806,0.09067414,-0.1137068),Vector3(-0.00909787,0.31406168,0.10398909),Vector3(-0.00625384,0.06620048,0.07148172),Vector3(-0.00909787,0.31406168,0.10398909),Vector3(0.23995081,0.31406168,0.12577803),Vector3(-0.00625384,0.06620048,0.07148172),Vector3(0.00994806,0.09067414,-0.1137068),Vector3(0.24279483,0.06620048,0.09327066),Vector3(0.25899673,0.09067414,-0.09191787),Vector3(0.23995081,0.31406168,0.12577803),Vector3(0.24279483,0.06620048,0.09327066),Vector3(0.24308016,0.125625,0.09718064),Vector3(0.24308016,-0.000625,0.09718064),Vector3(0.27042527,0.125625,-0.21537545),Vector3(0.27042527,-0.000625,-0.21537545),Vector3(0.02013134,0.125625,-0.23727333),Vector3(0.02013134,-0.000625,-0.23727333),Vector3(-0.00721377,0.125625,0.07528275),Vector3(-0.00721377,-0.000625,0.07528275),Vector3(-0.00721377,0.125625,0.07528275),Vector3(0.24308016,0.125625,0.09718064),Vector3(-0.00721377,-0.000625,0.07528275),Vector3(0.02013134,-0.000625,-0.23727333),Vector3(0.24308016,-0.000625,0.09718064),Vector3(0.27042527,-0.000625,-0.21537545),Vector3(0.24308016,0.125625,0.09718064),Vector3(0.24308016,-0.000625,0.09718064),Vector3(0.24721615,0.68402911,0.1144454),Vector3(0.26095281,0.33003023,-0.04256529),Vector3(0.2681166,0.79079748,-0.12444777),Vector3(0.28185325,0.4367986,-0.28145846),Vector3(0.00661549,0.79079748,-0.14732615),Vector3(0.02035215,0.4367986,-0.30433684),Vector3(-0.01428495,0.68402911,0.09156702),Vector3(-0.00054829,0.33003023,-0.06544367),Vector3(-0.01428495,0.68402911,0.09156702),Vector3(0.24721615,0.68402911,0.1144454),Vector3(-0.00054829,0.33003023,-0.06544367),Vector3(0.02035215,0.4367986,-0.30433684),Vector3(0.26095281,0.33003023,-0.04256529),Vector3(0.28185325,0.4367986,-0.28145846),Vector3(0.24721615,0.68402911,0.1144454),Vector3(0.26095281,0.33003023,-0.04256529),Vector3(-0.01814062,0.52909821,-0.2001772),Vector3(0.00854281,0.31472402,0.10481584),Vector3(-0.02432695,0.42772813,-0.27088719),Vector3(0.00235649,0.21335395,0.03410584),Vector3(-0.27213038,0.42772813,-0.2492072),Vector3(-0.24544694,0.21335395,0.05578583),Vector3(-0.26594406,0.52909821,-0.17849721),Vector3(-0.23926062,0.31472402,0.12649583),Vector3(-0.26594406,0.52909821,-0.17849721),Vector3(-0.01814062,0.52909821,-0.2001772),Vector3(-0.23926062,0.31472402,0.12649583),Vector3(-0.24544694,0.21335395,0.05578583),Vector3(0.00854281,0.31472402,0.10481584),Vector3(0.00235649,0.21335395,0.03410584),Vector3(-0.01814062,0.52909821,-0.2001772),Vector3(0.00854281,0.31472402,0.10481584),Vector3(0.00909787,0.31406168,0.10398909),Vector3(0.00625384,0.06620048,0.07148172),Vector3(-0.00710403,0.33853534,-0.08119943),Vector3(-0.00994806,0.09067414,-0.1137068),Vector3(-0.2561527,0.33853534,-0.05941049),Vector3(-0.25899673,0.09067414,-0.09191787),Vector3(-0.23995081,0.31406168,0.12577803),Vector3(-0.24279483,0.06620048,0.09327066),Vector3(-0.23995081,0.31406168,0.12577803),Vector3(0.00909787,0.31406168,0.10398909),Vector3(-0.24279483,0.06620048,0.09327066),Vector3(-0.25899673,0.09067414,-0.09191787),Vector3(0.00625384,0.06620048,0.07148172),Vector3(-0.00994806,0.09067414,-0.1137068),Vector3(0.00909787,0.31406168,0.10398909),Vector3(0.00625384,0.06620048,0.07148172),Vector3(0.00721377,0.125625,0.07528275),Vector3(0.00721377,-0.000625,0.07528275),Vector3(-0.02013134,0.125625,-0.23727333),Vector3(-0.02013134,-0.000625,-0.23727333),Vector3(-0.27042527,0.125625,-0.21537545),Vector3(-0.27042527,-0.000625,-0.21537545),Vector3(-0.24308016,0.125625,0.09718064),Vector3(-0.24308016,-0.000625,0.09718064),Vector3(-0.24308016,0.125625,0.09718064),Vector3(0.00721377,0.125625,0.07528275),Vector3(-0.24308016,-0.000625,0.09718064),Vector3(-0.27042527,-0.000625,-0.21537545),Vector3(0.00721377,-0.000625,0.07528275),Vector3(-0.02013134,-0.000625,-0.23727333),Vector3(0.00721377,0.125625,0.07528275),Vector3(0.00721377,-0.000625,0.07528275),Vector3(0.01428495,0.68402911,0.09156702),Vector3(0.00054829,0.33003023,-0.06544367),Vector3(-0.00661549,0.79079748,-0.14732615),Vector3(-0.02035215,0.4367986,-0.30433684),Vector3(-0.2681166,0.79079748,-0.12444777),Vector3(-0.28185325,0.4367986,-0.28145846),Vector3(-0.24721615,0.68402911,0.1144454),Vector3(-0.26095281,0.33003023,-0.04256529),Vector3(-0.24721615,0.68402911,0.1144454),Vector3(0.01428495,0.68402911,0.09156702),Vector3(-0.26095281,0.33003023,-0.04256529),Vector3(-0.28185325,0.4367986,-0.28145846),Vector3(0.00054829,0.33003023,-0.06544367),Vector3(-0.02035215,0.4367986,-0.30433684),Vector3(0.01428495,0.68402911,0.09156702),Vector3(0.00054829,0.33003023,-0.06544367),Vector3(0.4375,1.5,0.125),Vector3(0.4375,0.75,0.125),Vector3(0.4375,1.5,-0.125),Vector3(0.4375,0.75,-0.125),Vector3(0.25,1.5,-0.125),Vector3(0.25,0.75,-0.125),Vector3(0.25,1.5,0.125),Vector3(0.25,0.75,0.125),Vector3(0.25,1.5,0.125),Vector3(0.4375,1.5,0.125),Vector3(0.25,0.75,0.125),Vector3(0.25,0.75,-0.125),Vector3(0.4375,0.75,0.125),Vector3(0.4375,0.75,-0.125),Vector3(0.4375,1.5,0.125),Vector3(0.4375,0.75,0.125),Vector3(0.46875,1.4375,0.15625),Vector3(0.46875,1.1875,0.15625),Vector3(0.46875,1.4375,-0.15625),Vector3(0.46875,1.1875,-0.15625),Vector3(0.21875,1.4375,-0.15625),Vector3(0.21875,1.1875,-0.15625),Vector3(0.21875,1.4375,0.15625),Vector3(0.21875,1.1875,0.15625),Vector3(0.21875,1.4375,0.15625),Vector3(0.46875,1.4375,0.15625),Vector3(0.21875,1.1875,0.15625),Vector3(0.21875,1.1875,-0.15625),Vector3(0.46875,1.1875,0.15625),Vector3(0.46875,1.1875,-0.15625),Vector3(0.46875,1.4375,0.15625),Vector3(0.46875,1.1875,0.15625),Vector3(-0.25,1.5,0.125),Vector3(-0.25,0.75,0.125),Vector3(-0.25,1.5,-0.125),Vector3(-0.25,0.75,-0.125),Vector3(-0.4375,1.5,-0.125),Vector3(-0.4375,0.75,-0.125),Vector3(-0.4375,1.5,0.125),Vector3(-0.4375,0.75,0.125),Vector3(-0.4375,1.5,0.125),Vector3(-0.25,1.5,0.125),Vector3(-0.4375,0.75,0.125),Vector3(-0.4375,0.75,-0.125),Vector3(-0.25,0.75,0.125),Vector3(-0.25,0.75,-0.125),Vector3(-0.25,1.5,0.125),Vector3(-0.25,0.75,0.125),Vector3(-0.21875,1.4375,0.15625),Vector3(-0.21875,1.1875,0.15625),Vector3(-0.21875,1.4375,-0.15625),Vector3(-0.21875,1.1875,-0.15625),Vector3(-0.46875,1.4375,-0.15625),Vector3(-0.46875,1.1875,-0.15625),Vector3(-0.46875,1.4375,0.15625),Vector3(-0.46875,1.1875,0.15625),Vector3(-0.46875,1.4375,0.15625),Vector3(-0.21875,1.4375,0.15625),Vector3(-0.46875,1.1875,0.15625),Vector3(-0.46875,1.1875,-0.15625),Vector3(-0.21875,1.1875,0.15625),Vector3(-0.21875,1.1875,-0.15625),Vector3(-0.21875,1.4375,0.15625),Vector3(-0.21875,1.1875,0.15625)});
std::vector<std::vector<int>> proto_tris({{0,1,2},{1,3,2},{4,5,6},{5,7,6},{4,8,2},{8,9,2},{10,11,12},{11,13,12},{6,7,14},{7,15,14},{2,3,4},{3,5,4},{16,17,18},{17,19,18},{20,21,22},{21,23,22},{20,24,18},{24,25,18},{26,27,28},{27,29,28},{22,23,30},{23,31,30},{18,19,20},{19,21,20},{32,33,34},{33,35,34},{36,37,38},{37,39,38},{36,40,34},{40,41,34},{42,43,44},{43,45,44},{38,39,46},{39,47,46},{34,35,36},{35,37,36},{48,49,50},{49,51,50},{52,53,54},{53,55,54},{52,56,50},{56,57,50},{58,59,60},{59,61,60},{54,55,62},{55,63,62},{50,51,52},{51,53,52},{64,65,66},{65,67,66},{68,69,70},{69,71,70},{68,72,66},{72,73,66},{74,75,76},{75,77,76},{70,71,78},{71,79,78},{66,67,68},{67,69,68},{80,81,82},{81,83,82},{84,85,86},{85,87,86},{84,88,82},{88,89,82},{90,91,92},{91,93,92},{86,87,94},{87,95,94},{82,83,84},{83,85,84},{96,97,98},{97,99,98},{100,101,102},{101,103,102},{100,104,98},{104,105,98},{106,107,108},{107,109,108},{102,103,110},{103,111,110},{98,99,100},{99,101,100},{112,113,114},{113,115,114},{116,117,118},{117,119,118},{116,120,114},{120,121,114},{122,123,124},{123,125,124},{118,119,126},{119,127,126},{114,115,116},{115,117,116},{128,129,130},{129,131,130},{132,133,134},{133,135,134},{132,136,130},{136,137,130},{138,139,140},{139,141,140},{134,135,142},{135,143,142},{130,131,132},{131,133,132},{144,145,146},{145,147,146},{148,149,150},{149,151,150},{148,152,146},{152,153,146},{154,155,156},{155,157,156},{150,151,158},{151,159,158},{146,147,148},{147,149,148},{160,161,162},{161,163,162},{164,165,166},{165,167,166},{164,168,162},{168,169,162},{170,171,172},{171,173,172},{166,167,174},{167,175,174},{162,163,164},{163,165,164},{176,177,178},{177,179,178},{180,181,182},{181,183,182},{180,184,178},{184,185,178},{186,187,188},{187,189,188},{190,191,176},{191,177,176},{178,179,180},{179,181,180},{192,193,194},{193,195,194},{196,197,198},{197,199,198},{196,200,194},{200,201,194},{202,203,204},{203,205,204},{206,207,192},{207,193,192},{194,195,196},{195,197,196},{208,209,210},{208,210,211},{212,213,214},{212,214,215},{213,209,216},{213,216,217},{218,210,212},{218,212,219},{210,209,213},{210,213,212},{220,221,222},{220,222,223},{224,225,226},{225,227,226},{228,229,230},{229,231,230},{228,232,226},{232,233,226},{234,235,236},{235,237,236},{230,231,238},{231,239,238},{226,227,228},{227,229,228},{240,241,242},{241,243,242},{244,245,246},{245,247,246},{244,248,242},{248,249,242},{250,251,252},{251,253,252},{246,247,254},{247,255,254},{242,243,244},{243,245,244},{256,257,258},{257,259,258},{260,261,262},{261,263,262},{260,264,258},{264,265,258},{266,267,268},{267,269,268},{262,263,270},{263,271,270},{258,259,260},{259,261,260},{272,273,274},{273,275,274},{276,277,278},{277,279,278},{276,280,274},{280,281,274},{282,283,284},{283,285,284},{278,279,286},{279,287,286},{274,275,276},{275,277,276},{288,289,290},{289,291,290},{292,293,294},{293,295,294},{292,296,290},{296,297,290},{298,299,300},{299,301,300},{294,295,302},{295,303,302},{290,291,292},{291,293,292},{304,305,306},{305,307,306},{308,309,310},{309,311,310},{308,312,306},{312,313,306},{314,315,316},{315,317,316},{310,311,318},{311,319,318},{306,307,308},{307,309,308},{320,321,322},{321,323,322},{324,325,326},{325,327,326},{324,328,322},{328,329,322},{330,331,332},{331,333,332},{326,327,334},{327,335,334},{322,323,324},{323,325,324},{336,337,338},{337,339,338},{340,341,342},{341,343,342},{340,344,338},{344,345,338},{346,347,348},{347,349,348},{342,343,350},{343,351,350},{338,339,340},{339,341,340},{352,353,354},{353,355,354},{356,357,358},{357,359,358},{356,360,354},{360,361,354},{362,363,364},{363,365,364},{358,359,366},{359,367,366},{354,355,356},{355,357,356},{368,369,370},{369,371,370},{372,373,374},{373,375,374},{372,376,370},{376,377,370},{378,379,380},{379,381,380},{374,375,382},{375,383,382},{370,371,372},{371,373,372},{384,385,386},{385,387,386},{388,389,390},{389,391,390},{388,392,386},{392,393,386},{394,395,396},{395,397,396},{390,391,398},{391,399,398},{386,387,388},{387,389,388},{400,401,402},{401,403,402},{404,405,406},{405,407,406},{404,408,402},{408,409,402},{410,411,412},{411,413,412},{406,407,414},{407,415,414},{402,403,404},{403,405,404},{416,417,418},{417,419,418},{420,421,422},{421,423,422},{420,424,418},{424,425,418},{426,427,428},{427,429,428},{422,423,430},{423,431,430},{418,419,420},{419,421,420},{432,433,434},{433,435,434},{436,437,438},{437,439,438},{436,440,434},{440,441,434},{442,443,444},{443,445,444},{438,439,446},{439,447,446},{434,435,436},{435,437,436},{448,449,450},{449,451,450},{452,453,454},{453,455,454},{452,456,450},{456,457,450},{458,459,460},{459,461,460},{454,455,462},{455,463,462},{450,451,452},{451,453,452},{464,465,466},{465,467,466},{468,469,470},{469,471,470},{468,472,466},{472,473,466},{474,475,476},{475,477,476},{470,471,478},{471,479,478},{466,467,468},{467,469,468},{480,481,482},{481,483,482},{484,485,486},{485,487,486},{484,488,482},{488,489,482},{490,491,492},{491,493,492},{486,487,494},{487,495,494},{482,483,484},{483,485,484},{496,497,498},{497,499,498},{500,501,502},{501,503,502},{500,504,498},{504,505,498},{506,507,508},{507,509,508},{502,503,510},{503,511,510},{498,499,500},{499,501,500},{512,513,514},{513,515,514},{516,517,518},{517,519,518},{516,520,514},{520,521,514},{522,523,524},{523,525,524},{518,519,526},{519,527,526},{514,515,516},{515,517,516},{528,529,530},{529,531,530},{532,533,534},{533,535,534},{532,536,530},{536,537,530},{538,539,540},{539,541,540},{534,535,542},{535,543,542},{530,531,532},{531,533,532}});
inline void protospin() {
Mesh proto = Mesh(proto_verts, proto_tris);
proto.Trans(Transform(Vector3(0, 0, -2)));
proto.ForceTrans(Transform(Vector3(0, -1, 0)));
int N = 512;
Scene s(N, N);
float A = 0.2;
float S = sqrtf(3);
PointLight PL(Vector3(1, 0, 0), A);
PL.Trans(Transform(Vector3(-S, 1, 0)));
s.lights.push_back(PL);
PointLight PL2(Vector3(0, 0, 1), A);
PL2.Trans(Transform(Vector3(S, 1, 0)));
s.lights.push_back(PL2);
PointLight PL3(Vector3(0, 1, 0), A);
PL3.Trans(Transform(Vector3(0, -2, 0)));
s.lights.push_back(PL3);
s.clearBuffer();
auto start = std::chrono::high_resolution_clock::now();
int SPE = 16;
int LEN = 45;
int LEN2 = 60;
int lcm = LEN * (LEN2 / BASE::gcd(LEN, LEN2));
float THT = M_PI * 2 / LEN;
float PHI = M_PI * 2 / LEN2;
Vector3 axis(0, 1, 0);
s.fillMesh(proto, BaseMaterial(0xFFFFFFFF, 1), true, true, false);
std::cout << "THING\n";
s.drawQueue();
std::cout << "CNT " << s.TRIANGLE_COUNT << "\n";
auto finish = std::chrono::high_resolution_clock::now();
std::cout << double(std::chrono::duration_cast<std::chrono::nanoseconds>(finish-start).count()) / 1000000 << "ns\n";
// s.outputFrags("OUT");
s.outputBuffer(BUFFER_PATH);
}
int main() {
protospin();
return 0;
}