Spaces:
Running
Running
antimatter15
commited on
Commit
•
b5a9e6a
1
Parent(s):
1973aad
minor bug fixes
Browse files- .gitattributes +0 -1
- main.js +49 -78
.gitattributes
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
*.{ply,splat} filter=lfs diff=lfs merge=lfs -text
|
|
|
|
main.js
CHANGED
@@ -482,9 +482,6 @@ function createWorker(self) {
|
|
482 |
position[2] = attrs.z;
|
483 |
|
484 |
if (types["f_dc_0"]) {
|
485 |
-
// rgba[0] = (1 / (1 + Math.exp(-attrs.f_dc_0))) * 255;
|
486 |
-
// rgba[1] = (1 / (1 + Math.exp(-attrs.f_dc_1))) * 255;
|
487 |
-
// rgba[2] = (1 / (1 + Math.exp(-attrs.f_dc_2))) * 255;
|
488 |
const SH_C0 = 0.28209479177387814;
|
489 |
rgba[0] = (0.5 + SH_C0 * attrs.f_dc_0) * 255;
|
490 |
rgba[1] = (0.5 + SH_C0 * attrs.f_dc_1) * 255;
|
@@ -539,31 +536,24 @@ function createWorker(self) {
|
|
539 |
}
|
540 |
|
541 |
const vertexShaderSource = `
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
varying vec4 vColor;
|
554 |
-
varying vec3 vConic;
|
555 |
-
varying vec2 vCenter;
|
556 |
-
varying vec2 vPosition;
|
557 |
-
uniform vec2 viewport;
|
558 |
-
|
559 |
-
mat3 transpose(mat3 m) {
|
560 |
-
return mat3(
|
561 |
-
m[0][0], m[1][0], m[2][0],
|
562 |
-
m[0][1], m[1][1], m[2][1],
|
563 |
-
m[0][2], m[1][2], m[2][2]
|
564 |
-
);
|
565 |
-
}
|
566 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
567 |
|
568 |
mat3 compute_cov3d(vec3 scale, vec4 rot) {
|
569 |
mat3 S = mat3(
|
@@ -596,7 +586,7 @@ vec3 compute_cov2d(vec3 center, vec3 scale, vec4 rot){
|
|
596 |
return vec3(cov[0][0] + 0.3, cov[0][1], cov[1][1] + 0.3);
|
597 |
}
|
598 |
|
599 |
-
|
600 |
vec4 camspace = view * vec4(center, 1);
|
601 |
vec4 pos2d = projection * mat4(1,0,0,0,0,-1,0,0,0,0,1,0,0,0,0,1) * camspace;
|
602 |
|
@@ -615,31 +605,29 @@ vec3 compute_cov2d(vec3 center, vec3 scale, vec4 rot){
|
|
615 |
|
616 |
vPosition = vec2(vCenter + position.x * (position.y < 0.0 ? v1 : v2) / viewport);
|
617 |
gl_Position = vec4(vPosition, pos2d.z / pos2d.w, 1);
|
618 |
-
|
619 |
-
|
620 |
-
`;
|
621 |
|
622 |
const fragmentShaderSource = `
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
|
641 |
-
|
642 |
-
// let viewMatrix = getViewMatrix(camera);
|
643 |
let defaultViewMatrix = [
|
644 |
0.47, 0.04, 0.88, 0, -0.11, 0.99, 0.02, 0, -0.88, -0.11, 0.47, 0, 0.07,
|
645 |
0.03, 6.55, 1,
|
@@ -650,7 +638,7 @@ async function main() {
|
|
650 |
let carousel = true;
|
651 |
const params = new URLSearchParams(location.search);
|
652 |
try {
|
653 |
-
viewMatrix = JSON.parse(location.hash.slice(1));
|
654 |
carousel = false;
|
655 |
} catch (err) {}
|
656 |
const url = new URL(
|
@@ -663,7 +651,7 @@ async function main() {
|
|
663 |
});
|
664 |
console.log(req);
|
665 |
if (req.status != 200)
|
666 |
-
throw new Error("Unable to load " + req.url
|
667 |
|
668 |
const rowLength = 3 * 4 + 3 * 4 + 4 + 4;
|
669 |
const reader = req.body.getReader();
|
@@ -998,6 +986,7 @@ async function main() {
|
|
998 |
let lastFrame = 0;
|
999 |
let avgFps = 0;
|
1000 |
let start = Date.now() + 2000;
|
|
|
1001 |
const frame = (now) => {
|
1002 |
let inv = invert4(viewMatrix);
|
1003 |
// let preY = inv[13];
|
@@ -1045,15 +1034,7 @@ async function main() {
|
|
1045 |
|
1046 |
if (vertexCount > 0) {
|
1047 |
document.getElementById("spinner").style.display = "none";
|
1048 |
-
|
1049 |
gl.uniformMatrix4fv(u_view, false, actualViewMatrix);
|
1050 |
-
|
1051 |
-
// gl.clearColor(0.0, 0.0, 0.0, 1.0); // Set the clear color to black with full opacity
|
1052 |
-
// gl.clear(gl.COLOR_BUFFER_BIT);
|
1053 |
-
|
1054 |
-
// gl.clearDepth(100000.0);
|
1055 |
-
// gl.clear(gl.DEPTH_BUFFER_BIT);
|
1056 |
-
|
1057 |
ext.drawArraysInstancedANGLE(gl.TRIANGLE_STRIP, 0, 4, vertexCount);
|
1058 |
} else {
|
1059 |
gl.clear(gl.COLOR_BUFFER_BIT);
|
@@ -1065,9 +1046,7 @@ async function main() {
|
|
1065 |
} else {
|
1066 |
document.getElementById("progress").style.display = "none";
|
1067 |
}
|
1068 |
-
fps.innerText =
|
1069 |
-
Math.round(avgFps) +
|
1070 |
-
" fps";
|
1071 |
lastFrame = now;
|
1072 |
requestAnimationFrame(frame);
|
1073 |
};
|
@@ -1118,26 +1097,18 @@ async function main() {
|
|
1118 |
|
1119 |
window.addEventListener("hashchange", (e) => {
|
1120 |
try {
|
1121 |
-
viewMatrix = JSON.parse(location.hash.slice(1));
|
1122 |
carousel = false;
|
1123 |
} catch (err) {}
|
1124 |
});
|
1125 |
|
1126 |
-
|
1127 |
-
e.preventDefault();
|
1128 |
-
e.stopPropagation();
|
1129 |
-
});
|
1130 |
-
|
1131 |
-
document.addEventListener("dragover", (e) => {
|
1132 |
-
e.preventDefault();
|
1133 |
-
e.stopPropagation();
|
1134 |
-
});
|
1135 |
-
|
1136 |
-
document.addEventListener("dragleave", (e) => {
|
1137 |
e.preventDefault();
|
1138 |
e.stopPropagation();
|
1139 |
-
}
|
1140 |
-
|
|
|
|
|
1141 |
document.addEventListener("drop", (e) => {
|
1142 |
e.preventDefault();
|
1143 |
e.stopPropagation();
|
|
|
482 |
position[2] = attrs.z;
|
483 |
|
484 |
if (types["f_dc_0"]) {
|
|
|
|
|
|
|
485 |
const SH_C0 = 0.28209479177387814;
|
486 |
rgba[0] = (0.5 + SH_C0 * attrs.f_dc_0) * 255;
|
487 |
rgba[1] = (0.5 + SH_C0 * attrs.f_dc_1) * 255;
|
|
|
536 |
}
|
537 |
|
538 |
const vertexShaderSource = `
|
539 |
+
precision mediump float;
|
540 |
+
attribute vec2 position;
|
541 |
+
|
542 |
+
attribute vec4 color;
|
543 |
+
attribute vec4 quat;
|
544 |
+
attribute vec3 scale;
|
545 |
+
attribute vec3 center;
|
546 |
+
|
547 |
+
uniform mat4 projection, view;
|
548 |
+
uniform vec2 focal;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
549 |
|
550 |
+
varying vec4 vColor;
|
551 |
+
varying vec3 vConic;
|
552 |
+
varying vec2 vCenter;
|
553 |
+
varying vec2 vPosition;
|
554 |
+
uniform vec2 viewport;
|
555 |
+
|
556 |
+
mat3 transpose(mat3 m) { return mat3(m[0][0], m[1][0], m[2][0], m[0][1], m[1][1], m[2][1], m[0][2], m[1][2], m[2][2]); }
|
557 |
|
558 |
mat3 compute_cov3d(vec3 scale, vec4 rot) {
|
559 |
mat3 S = mat3(
|
|
|
586 |
return vec3(cov[0][0] + 0.3, cov[0][1], cov[1][1] + 0.3);
|
587 |
}
|
588 |
|
589 |
+
void main () {
|
590 |
vec4 camspace = view * vec4(center, 1);
|
591 |
vec4 pos2d = projection * mat4(1,0,0,0,0,-1,0,0,0,0,1,0,0,0,0,1) * camspace;
|
592 |
|
|
|
605 |
|
606 |
vPosition = vec2(vCenter + position.x * (position.y < 0.0 ? v1 : v2) / viewport);
|
607 |
gl_Position = vec4(vPosition, pos2d.z / pos2d.w, 1);
|
608 |
+
}
|
609 |
+
`;
|
|
|
610 |
|
611 |
const fragmentShaderSource = `
|
612 |
+
precision mediump float;
|
613 |
+
|
614 |
+
varying vec4 vColor;
|
615 |
+
varying vec3 vConic;
|
616 |
+
varying vec2 vCenter;
|
617 |
+
uniform vec2 viewport;
|
618 |
+
uniform vec2 focal;
|
619 |
+
|
620 |
+
void main () {
|
621 |
+
vec2 d = (vCenter - 2.0 * (gl_FragCoord.xy/viewport - vec2(0.5, 0.5))) * viewport * 0.5;
|
622 |
+
float power = -0.5 * (vConic.x * d.x * d.x + vConic.z * d.y * d.y) - vConic.y * d.x * d.y;
|
623 |
+
if (power > 0.0) discard;
|
624 |
+
float alpha = min(0.99, vColor.a * exp(power));
|
625 |
+
if(alpha < 0.02) discard;
|
626 |
+
|
627 |
+
gl_FragColor = vec4(alpha * vColor.rgb, alpha);
|
628 |
+
}
|
629 |
+
`;
|
630 |
+
|
|
|
631 |
let defaultViewMatrix = [
|
632 |
0.47, 0.04, 0.88, 0, -0.11, 0.99, 0.02, 0, -0.88, -0.11, 0.47, 0, 0.07,
|
633 |
0.03, 6.55, 1,
|
|
|
638 |
let carousel = true;
|
639 |
const params = new URLSearchParams(location.search);
|
640 |
try {
|
641 |
+
viewMatrix = JSON.parse(decodeURIComponent(location.hash.slice(1)));
|
642 |
carousel = false;
|
643 |
} catch (err) {}
|
644 |
const url = new URL(
|
|
|
651 |
});
|
652 |
console.log(req);
|
653 |
if (req.status != 200)
|
654 |
+
throw new Error(req.status + " Unable to load " + req.url);
|
655 |
|
656 |
const rowLength = 3 * 4 + 3 * 4 + 4 + 4;
|
657 |
const reader = req.body.getReader();
|
|
|
986 |
let lastFrame = 0;
|
987 |
let avgFps = 0;
|
988 |
let start = Date.now() + 2000;
|
989 |
+
|
990 |
const frame = (now) => {
|
991 |
let inv = invert4(viewMatrix);
|
992 |
// let preY = inv[13];
|
|
|
1034 |
|
1035 |
if (vertexCount > 0) {
|
1036 |
document.getElementById("spinner").style.display = "none";
|
|
|
1037 |
gl.uniformMatrix4fv(u_view, false, actualViewMatrix);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1038 |
ext.drawArraysInstancedANGLE(gl.TRIANGLE_STRIP, 0, 4, vertexCount);
|
1039 |
} else {
|
1040 |
gl.clear(gl.COLOR_BUFFER_BIT);
|
|
|
1046 |
} else {
|
1047 |
document.getElementById("progress").style.display = "none";
|
1048 |
}
|
1049 |
+
fps.innerText = Math.round(avgFps) + " fps";
|
|
|
|
|
1050 |
lastFrame = now;
|
1051 |
requestAnimationFrame(frame);
|
1052 |
};
|
|
|
1097 |
|
1098 |
window.addEventListener("hashchange", (e) => {
|
1099 |
try {
|
1100 |
+
viewMatrix = JSON.parse(decodeURIComponent(location.hash.slice(1)));
|
1101 |
carousel = false;
|
1102 |
} catch (err) {}
|
1103 |
});
|
1104 |
|
1105 |
+
const preventDefault = (e) => {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1106 |
e.preventDefault();
|
1107 |
e.stopPropagation();
|
1108 |
+
}
|
1109 |
+
document.addEventListener("dragenter", preventDefault);
|
1110 |
+
document.addEventListener("dragover", preventDefault);
|
1111 |
+
document.addEventListener("dragleave", preventDefault);
|
1112 |
document.addEventListener("drop", (e) => {
|
1113 |
e.preventDefault();
|
1114 |
e.stopPropagation();
|