Skip to content

Commit 8b313fe

Browse files
committed
code cleanup
1 parent ef13908 commit 8b313fe

File tree

4 files changed

+541
-606
lines changed

4 files changed

+541
-606
lines changed

hybrid.js

+123-132
Original file line numberDiff line numberDiff line change
@@ -17,129 +17,6 @@ let cameras = [
1717

1818
let camera = cameras[0];
1919

20-
function getProjectionMatrix(fx, fy, width, height) {
21-
const znear = 0.2;
22-
const zfar = 200;
23-
return [
24-
[(2 * fx) / width, 0, 0, 0],
25-
[0, -(2 * fy) / height, 0, 0],
26-
[0, 0, zfar / (zfar - znear), 1],
27-
[0, 0, -(zfar * znear) / (zfar - znear), 0],
28-
].flat();
29-
}
30-
31-
function getViewMatrix(camera) {
32-
const R = camera.rotation.flat();
33-
const t = camera.position;
34-
const camToWorld = [
35-
[R[0], R[1], R[2], 0],
36-
[R[3], R[4], R[5], 0],
37-
[R[6], R[7], R[8], 0],
38-
[-t[0] * R[0] - t[1] * R[3] - t[2] * R[6], -t[0] * R[1] - t[1] * R[4] - t[2] * R[7], -t[0] * R[2] - t[1] * R[5] - t[2] * R[8], 1],
39-
].flat();
40-
return camToWorld;
41-
}
42-
43-
function multiply4(a, b) {
44-
return [
45-
b[0] * a[0] + b[1] * a[4] + b[2] * a[8] + b[3] * a[12],
46-
b[0] * a[1] + b[1] * a[5] + b[2] * a[9] + b[3] * a[13],
47-
b[0] * a[2] + b[1] * a[6] + b[2] * a[10] + b[3] * a[14],
48-
b[0] * a[3] + b[1] * a[7] + b[2] * a[11] + b[3] * a[15],
49-
b[4] * a[0] + b[5] * a[4] + b[6] * a[8] + b[7] * a[12],
50-
b[4] * a[1] + b[5] * a[5] + b[6] * a[9] + b[7] * a[13],
51-
b[4] * a[2] + b[5] * a[6] + b[6] * a[10] + b[7] * a[14],
52-
b[4] * a[3] + b[5] * a[7] + b[6] * a[11] + b[7] * a[15],
53-
b[8] * a[0] + b[9] * a[4] + b[10] * a[8] + b[11] * a[12],
54-
b[8] * a[1] + b[9] * a[5] + b[10] * a[9] + b[11] * a[13],
55-
b[8] * a[2] + b[9] * a[6] + b[10] * a[10] + b[11] * a[14],
56-
b[8] * a[3] + b[9] * a[7] + b[10] * a[11] + b[11] * a[15],
57-
b[12] * a[0] + b[13] * a[4] + b[14] * a[8] + b[15] * a[12],
58-
b[12] * a[1] + b[13] * a[5] + b[14] * a[9] + b[15] * a[13],
59-
b[12] * a[2] + b[13] * a[6] + b[14] * a[10] + b[15] * a[14],
60-
b[12] * a[3] + b[13] * a[7] + b[14] * a[11] + b[15] * a[15],
61-
];
62-
}
63-
64-
function invert4(a) {
65-
let b00 = a[0] * a[5] - a[1] * a[4];
66-
let b01 = a[0] * a[6] - a[2] * a[4];
67-
let b02 = a[0] * a[7] - a[3] * a[4];
68-
let b03 = a[1] * a[6] - a[2] * a[5];
69-
let b04 = a[1] * a[7] - a[3] * a[5];
70-
let b05 = a[2] * a[7] - a[3] * a[6];
71-
let b06 = a[8] * a[13] - a[9] * a[12];
72-
let b07 = a[8] * a[14] - a[10] * a[12];
73-
let b08 = a[8] * a[15] - a[11] * a[12];
74-
let b09 = a[9] * a[14] - a[10] * a[13];
75-
let b10 = a[9] * a[15] - a[11] * a[13];
76-
let b11 = a[10] * a[15] - a[11] * a[14];
77-
let det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;
78-
if (!det) return null;
79-
return [
80-
(a[5] * b11 - a[6] * b10 + a[7] * b09) / det,
81-
(a[2] * b10 - a[1] * b11 - a[3] * b09) / det,
82-
(a[13] * b05 - a[14] * b04 + a[15] * b03) / det,
83-
(a[10] * b04 - a[9] * b05 - a[11] * b03) / det,
84-
(a[6] * b08 - a[4] * b11 - a[7] * b07) / det,
85-
(a[0] * b11 - a[2] * b08 + a[3] * b07) / det,
86-
(a[14] * b02 - a[12] * b05 - a[15] * b01) / det,
87-
(a[8] * b05 - a[10] * b02 + a[11] * b01) / det,
88-
(a[4] * b10 - a[5] * b08 + a[7] * b06) / det,
89-
(a[1] * b08 - a[0] * b10 - a[3] * b06) / det,
90-
(a[12] * b04 - a[13] * b02 + a[15] * b00) / det,
91-
(a[9] * b02 - a[8] * b04 - a[11] * b00) / det,
92-
(a[5] * b07 - a[4] * b09 - a[6] * b06) / det,
93-
(a[0] * b09 - a[1] * b07 + a[2] * b06) / det,
94-
(a[13] * b01 - a[12] * b03 - a[14] * b00) / det,
95-
(a[8] * b03 - a[9] * b01 + a[10] * b00) / det,
96-
];
97-
}
98-
99-
function rotate4(a, rad, x, y, z) {
100-
let len = Math.hypot(x, y, z);
101-
x /= len;
102-
y /= len;
103-
z /= len;
104-
let s = Math.sin(rad);
105-
let c = Math.cos(rad);
106-
let t = 1 - c;
107-
let b00 = x * x * t + c;
108-
let b01 = y * x * t + z * s;
109-
let b02 = z * x * t - y * s;
110-
let b10 = x * y * t - z * s;
111-
let b11 = y * y * t + c;
112-
let b12 = z * y * t + x * s;
113-
let b20 = x * z * t + y * s;
114-
let b21 = y * z * t - x * s;
115-
let b22 = z * z * t + c;
116-
return [
117-
a[0] * b00 + a[4] * b01 + a[8] * b02,
118-
a[1] * b00 + a[5] * b01 + a[9] * b02,
119-
a[2] * b00 + a[6] * b01 + a[10] * b02,
120-
a[3] * b00 + a[7] * b01 + a[11] * b02,
121-
a[0] * b10 + a[4] * b11 + a[8] * b12,
122-
a[1] * b10 + a[5] * b11 + a[9] * b12,
123-
a[2] * b10 + a[6] * b11 + a[10] * b12,
124-
a[3] * b10 + a[7] * b11 + a[11] * b12,
125-
a[0] * b20 + a[4] * b21 + a[8] * b22,
126-
a[1] * b20 + a[5] * b21 + a[9] * b22,
127-
a[2] * b20 + a[6] * b21 + a[10] * b22,
128-
a[3] * b20 + a[7] * b21 + a[11] * b22,
129-
...a.slice(12, 16),
130-
];
131-
}
132-
133-
function translate4(a, x, y, z) {
134-
return [
135-
...a.slice(0, 12),
136-
a[0] * x + a[4] * y + a[8] * z + a[12],
137-
a[1] * x + a[5] * y + a[9] * z + a[13],
138-
a[2] * x + a[6] * y + a[10] * z + a[14],
139-
a[3] * x + a[7] * y + a[11] * z + a[15],
140-
];
141-
}
142-
14320
function createWorker(self) {
14421
let vertexCount = 0;
14522
let viewProj;
@@ -148,10 +25,6 @@ function createWorker(self) {
14825
let lastVertexCount = 0;
14926
let positions;
15027

151-
function generateTexture() {
152-
if (!positions) return;
153-
}
154-
15528
var _floatView = new Float32Array(1);
15629
var _int32View = new Int32Array(_floatView.buffer);
15730

@@ -192,7 +65,6 @@ function createWorker(self) {
19265
let dist = Math.hypot(...[2, 6, 10].map((k) => lastProj[k] - viewProj[k]));
19366
if (dist < 0.01) return;
19467
} else {
195-
generateTexture();
19668
lastVertexCount = vertexCount;
19769
}
19870

@@ -1017,7 +889,6 @@ async function main() {
1017889
document.getElementById("spinner").style.display = "none";
1018890
gl.uniformMatrix4fv(u_view, false, actualViewMatrix);
1019891
gl.uniform1f(u_time, Math.sin(Date.now() / 1000) / 2 + 1 / 2);
1020-
// gl.uniform1f(u_time, Math.sin(Date.now() / 1000) + 1 / 2);
1021892

1022893
gl.clear(gl.COLOR_BUFFER_BIT);
1023894
gl.drawArraysInstanced(gl.TRIANGLE_FAN, 0, 4, vertexCount);
@@ -1033,9 +904,6 @@ async function main() {
1033904
document.getElementById("progress").style.display = "none";
1034905
}
1035906
fps.innerText = Math.round(avgFps) + " fps";
1036-
// if (isNaN(currentCameraIndex)) {
1037-
// camid.innerText = "";
1038-
// }
1039907
lastFrame = now;
1040908
requestAnimationFrame(frame);
1041909
};
@@ -1190,3 +1058,126 @@ async function readChunks(reader, chunks, handleChunk) {
11901058
}
11911059
if (chunk) handleChunk(chunk, buffer.buffer, 0, chunks);
11921060
}
1061+
1062+
function getProjectionMatrix(fx, fy, width, height) {
1063+
const znear = 0.2;
1064+
const zfar = 200;
1065+
return [
1066+
[(2 * fx) / width, 0, 0, 0],
1067+
[0, -(2 * fy) / height, 0, 0],
1068+
[0, 0, zfar / (zfar - znear), 1],
1069+
[0, 0, -(zfar * znear) / (zfar - znear), 0],
1070+
].flat();
1071+
}
1072+
1073+
function getViewMatrix(camera) {
1074+
const R = camera.rotation.flat();
1075+
const t = camera.position;
1076+
const camToWorld = [
1077+
[R[0], R[1], R[2], 0],
1078+
[R[3], R[4], R[5], 0],
1079+
[R[6], R[7], R[8], 0],
1080+
[-t[0] * R[0] - t[1] * R[3] - t[2] * R[6], -t[0] * R[1] - t[1] * R[4] - t[2] * R[7], -t[0] * R[2] - t[1] * R[5] - t[2] * R[8], 1],
1081+
].flat();
1082+
return camToWorld;
1083+
}
1084+
1085+
function multiply4(a, b) {
1086+
return [
1087+
b[0] * a[0] + b[1] * a[4] + b[2] * a[8] + b[3] * a[12],
1088+
b[0] * a[1] + b[1] * a[5] + b[2] * a[9] + b[3] * a[13],
1089+
b[0] * a[2] + b[1] * a[6] + b[2] * a[10] + b[3] * a[14],
1090+
b[0] * a[3] + b[1] * a[7] + b[2] * a[11] + b[3] * a[15],
1091+
b[4] * a[0] + b[5] * a[4] + b[6] * a[8] + b[7] * a[12],
1092+
b[4] * a[1] + b[5] * a[5] + b[6] * a[9] + b[7] * a[13],
1093+
b[4] * a[2] + b[5] * a[6] + b[6] * a[10] + b[7] * a[14],
1094+
b[4] * a[3] + b[5] * a[7] + b[6] * a[11] + b[7] * a[15],
1095+
b[8] * a[0] + b[9] * a[4] + b[10] * a[8] + b[11] * a[12],
1096+
b[8] * a[1] + b[9] * a[5] + b[10] * a[9] + b[11] * a[13],
1097+
b[8] * a[2] + b[9] * a[6] + b[10] * a[10] + b[11] * a[14],
1098+
b[8] * a[3] + b[9] * a[7] + b[10] * a[11] + b[11] * a[15],
1099+
b[12] * a[0] + b[13] * a[4] + b[14] * a[8] + b[15] * a[12],
1100+
b[12] * a[1] + b[13] * a[5] + b[14] * a[9] + b[15] * a[13],
1101+
b[12] * a[2] + b[13] * a[6] + b[14] * a[10] + b[15] * a[14],
1102+
b[12] * a[3] + b[13] * a[7] + b[14] * a[11] + b[15] * a[15],
1103+
];
1104+
}
1105+
1106+
function invert4(a) {
1107+
let b00 = a[0] * a[5] - a[1] * a[4];
1108+
let b01 = a[0] * a[6] - a[2] * a[4];
1109+
let b02 = a[0] * a[7] - a[3] * a[4];
1110+
let b03 = a[1] * a[6] - a[2] * a[5];
1111+
let b04 = a[1] * a[7] - a[3] * a[5];
1112+
let b05 = a[2] * a[7] - a[3] * a[6];
1113+
let b06 = a[8] * a[13] - a[9] * a[12];
1114+
let b07 = a[8] * a[14] - a[10] * a[12];
1115+
let b08 = a[8] * a[15] - a[11] * a[12];
1116+
let b09 = a[9] * a[14] - a[10] * a[13];
1117+
let b10 = a[9] * a[15] - a[11] * a[13];
1118+
let b11 = a[10] * a[15] - a[11] * a[14];
1119+
let det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;
1120+
if (!det) return null;
1121+
return [
1122+
(a[5] * b11 - a[6] * b10 + a[7] * b09) / det,
1123+
(a[2] * b10 - a[1] * b11 - a[3] * b09) / det,
1124+
(a[13] * b05 - a[14] * b04 + a[15] * b03) / det,
1125+
(a[10] * b04 - a[9] * b05 - a[11] * b03) / det,
1126+
(a[6] * b08 - a[4] * b11 - a[7] * b07) / det,
1127+
(a[0] * b11 - a[2] * b08 + a[3] * b07) / det,
1128+
(a[14] * b02 - a[12] * b05 - a[15] * b01) / det,
1129+
(a[8] * b05 - a[10] * b02 + a[11] * b01) / det,
1130+
(a[4] * b10 - a[5] * b08 + a[7] * b06) / det,
1131+
(a[1] * b08 - a[0] * b10 - a[3] * b06) / det,
1132+
(a[12] * b04 - a[13] * b02 + a[15] * b00) / det,
1133+
(a[9] * b02 - a[8] * b04 - a[11] * b00) / det,
1134+
(a[5] * b07 - a[4] * b09 - a[6] * b06) / det,
1135+
(a[0] * b09 - a[1] * b07 + a[2] * b06) / det,
1136+
(a[13] * b01 - a[12] * b03 - a[14] * b00) / det,
1137+
(a[8] * b03 - a[9] * b01 + a[10] * b00) / det,
1138+
];
1139+
}
1140+
1141+
function rotate4(a, rad, x, y, z) {
1142+
let len = Math.hypot(x, y, z);
1143+
x /= len;
1144+
y /= len;
1145+
z /= len;
1146+
let s = Math.sin(rad);
1147+
let c = Math.cos(rad);
1148+
let t = 1 - c;
1149+
let b00 = x * x * t + c;
1150+
let b01 = y * x * t + z * s;
1151+
let b02 = z * x * t - y * s;
1152+
let b10 = x * y * t - z * s;
1153+
let b11 = y * y * t + c;
1154+
let b12 = z * y * t + x * s;
1155+
let b20 = x * z * t + y * s;
1156+
let b21 = y * z * t - x * s;
1157+
let b22 = z * z * t + c;
1158+
return [
1159+
a[0] * b00 + a[4] * b01 + a[8] * b02,
1160+
a[1] * b00 + a[5] * b01 + a[9] * b02,
1161+
a[2] * b00 + a[6] * b01 + a[10] * b02,
1162+
a[3] * b00 + a[7] * b01 + a[11] * b02,
1163+
a[0] * b10 + a[4] * b11 + a[8] * b12,
1164+
a[1] * b10 + a[5] * b11 + a[9] * b12,
1165+
a[2] * b10 + a[6] * b11 + a[10] * b12,
1166+
a[3] * b10 + a[7] * b11 + a[11] * b12,
1167+
a[0] * b20 + a[4] * b21 + a[8] * b22,
1168+
a[1] * b20 + a[5] * b21 + a[9] * b22,
1169+
a[2] * b20 + a[6] * b21 + a[10] * b22,
1170+
a[3] * b20 + a[7] * b21 + a[11] * b22,
1171+
...a.slice(12, 16),
1172+
];
1173+
}
1174+
1175+
function translate4(a, x, y, z) {
1176+
return [
1177+
...a.slice(0, 12),
1178+
a[0] * x + a[4] * y + a[8] * z + a[12],
1179+
a[1] * x + a[5] * y + a[9] * z + a[13],
1180+
a[2] * x + a[6] * y + a[10] * z + a[14],
1181+
a[3] * x + a[7] * y + a[11] * z + a[15],
1182+
];
1183+
}

0 commit comments

Comments
 (0)