From 2321b2a0acaa0cba14dc38633cd46adee838294c Mon Sep 17 00:00:00 2001
From: 8cy <50817549+8cy@users.noreply.github.com>
Date: Tue, 2 Jun 2020 10:24:13 -0700
Subject: Initial commit
---
demos/index.html | 1 +
demos/light-fluid-simulation/.htaccess | 1 +
demos/light-fluid-simulation/index.html | 59 +
demos/light-fluid-simulation/main.css | 25 +
demos/light-fluid-simulation/main.js | 386 +++++
demos/path-tracer/.htaccess | 1 +
demos/path-tracer/index.html | 72 +
demos/path-tracer/main.css | 60 +
demos/path-tracer/main.js | 2655 +++++++++++++++++++++++++++++++
demos/random-attractors/index.html | 21 +
demos/random-attractors/main.js | 96 ++
11 files changed, 3377 insertions(+)
create mode 100644 demos/index.html
create mode 100644 demos/light-fluid-simulation/.htaccess
create mode 100644 demos/light-fluid-simulation/index.html
create mode 100644 demos/light-fluid-simulation/main.css
create mode 100644 demos/light-fluid-simulation/main.js
create mode 100644 demos/path-tracer/.htaccess
create mode 100644 demos/path-tracer/index.html
create mode 100644 demos/path-tracer/main.css
create mode 100644 demos/path-tracer/main.js
create mode 100644 demos/random-attractors/index.html
create mode 100644 demos/random-attractors/main.js
(limited to 'demos')
diff --git a/demos/index.html b/demos/index.html
new file mode 100644
index 0000000..833db44
--- /dev/null
+++ b/demos/index.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/demos/light-fluid-simulation/.htaccess b/demos/light-fluid-simulation/.htaccess
new file mode 100644
index 0000000..45552cb
--- /dev/null
+++ b/demos/light-fluid-simulation/.htaccess
@@ -0,0 +1 @@
+Options -Indexes
\ No newline at end of file
diff --git a/demos/light-fluid-simulation/index.html b/demos/light-fluid-simulation/index.html
new file mode 100644
index 0000000..0d68b31
--- /dev/null
+++ b/demos/light-fluid-simulation/index.html
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+ Material:
+
+
+
with glossiness factor: 0 < < 1
+
+
+
+ Environment:
+
+
+
+
+
\ No newline at end of file
diff --git a/demos/path-tracer/main.css b/demos/path-tracer/main.css
new file mode 100644
index 0000000..a163135
--- /dev/null
+++ b/demos/path-tracer/main.css
@@ -0,0 +1,60 @@
+body {
+ max-width: 900px;
+ padding: 30px;
+ margin: 0 auto;
+ font: 14px/19px 'Lucida Grande', sans-serif;
+}
+
+#main {
+ margin: 80px 0;
+ padding-left: 542px;
+ height: 512px;
+ position: relative;
+}
+
+#error {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 412px;
+ height: 412px;
+ padding: 50px;
+ text-align: center;
+ background: #DFDFDF;
+}
+
+canvas {
+ position: absolute;
+ left: 0;
+ top: 0;
+}
+
+p,
+ul {
+ margin: 0 0 30px 0;
+}
+
+h1 {
+ font: bold italic 50px Georgia;
+ margin: 0 0 60px 0;
+ text-align: center;
+}
+
+a {
+ color: inherit;
+}
+
+#footer {
+ text-align: center;
+ margin: 100px 0 0 0;
+}
+
+#glossiness-factor {
+ display: none;
+ font-size: 12px;
+}
+
+#glossiness-factor input {
+ width: 40px;
+ text-align: center;
+}
\ No newline at end of file
diff --git a/demos/path-tracer/main.js b/demos/path-tracer/main.js
new file mode 100644
index 0000000..f8ecb88
--- /dev/null
+++ b/demos/path-tracer/main.js
@@ -0,0 +1,2655 @@
+// augment Sylvester some
+Matrix.Translation = function (v) {
+ if (v.elements.length == 2) {
+ var r = Matrix.I(3);
+ r.elements[2][0] = v.elements[0];
+ r.elements[2][1] = v.elements[1];
+ return r;
+ }
+
+ if (v.elements.length == 3) {
+ var r = Matrix.I(4);
+ r.elements[0][3] = v.elements[0];
+ r.elements[1][3] = v.elements[1];
+ r.elements[2][3] = v.elements[2];
+ return r;
+ }
+
+ throw "Invalid length for Translation";
+}
+
+Matrix.prototype.flatten = function () {
+ var result = [];
+ if (this.elements.length == 0)
+ return [];
+
+
+ for (var j = 0; j < this.elements[0].length; j++)
+ for (var i = 0; i < this.elements.length; i++)
+ result.push(this.elements[i][j]);
+ return result;
+}
+
+Matrix.prototype.ensure4x4 = function () {
+ if (this.elements.length == 4 &&
+ this.elements[0].length == 4)
+ return this;
+
+ if (this.elements.length > 4 ||
+ this.elements[0].length > 4)
+ return null;
+
+ for (var i = 0; i < this.elements.length; i++) {
+ for (var j = this.elements[i].length; j < 4; j++) {
+ if (i == j)
+ this.elements[i].push(1);
+ else
+ this.elements[i].push(0);
+ }
+ }
+
+ for (var i = this.elements.length; i < 4; i++) {
+ if (i == 0)
+ this.elements.push([1, 0, 0, 0]);
+ else if (i == 1)
+ this.elements.push([0, 1, 0, 0]);
+ else if (i == 2)
+ this.elements.push([0, 0, 1, 0]);
+ else if (i == 3)
+ this.elements.push([0, 0, 0, 1]);
+ }
+
+ return this;
+};
+
+Matrix.prototype.make3x3 = function () {
+ if (this.elements.length != 4 ||
+ this.elements[0].length != 4)
+ return null;
+
+ return Matrix.create([[this.elements[0][0], this.elements[0][1], this.elements[0][2]],
+ [this.elements[1][0], this.elements[1][1], this.elements[1][2]],
+ [this.elements[2][0], this.elements[2][1], this.elements[2][2]]]);
+};
+
+Vector.prototype.flatten = function () {
+ return this.elements;
+};
+
+function mht(m) {
+ var s = "";
+ if (m.length == 16) {
+ for (var i = 0; i < 4; i++) {
+ s += "