typescript(fourjs): first commit
Signed-off-by: prescientmoon <git@moonythm.dev>
This commit is contained in:
parent
7dce9eb842
commit
c19818b95b
19
typescript/fourjs/app.js
Normal file
19
typescript/fourjs/app.js
Normal file
|
@ -0,0 +1,19 @@
|
|||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const express = require("express");
|
||||
const app = express();
|
||||
const http = require("http").Server(app);
|
||||
app.get("/", (req, res) => {
|
||||
res.sendFile(`${__dirname}/public/index.html`);
|
||||
});
|
||||
app.use("/public", express.static(__dirname + "/public"));
|
||||
const port = 8000;
|
||||
http.listen(port, () => {
|
||||
console.log(`>>Listeing on port ${port}`);
|
||||
});
|
||||
const sender_1 = require("./server/four/sender");
|
||||
const sender = new sender_1.ShaderSender(app, __dirname);
|
||||
sender.listen({
|
||||
vertex: "shaders/vertex.glsl",
|
||||
fragment: "shaders/fragment.glsl"
|
||||
});
|
21
typescript/fourjs/app.ts
Normal file
21
typescript/fourjs/app.ts
Normal file
|
@ -0,0 +1,21 @@
|
|||
const express = require("express");
|
||||
const app = express();
|
||||
const http = require("http").Server(app);
|
||||
|
||||
app.get("/",(req,res) => {
|
||||
res.sendFile(`${__dirname}/public/index.html`);
|
||||
});
|
||||
app.use("/public",express.static(__dirname + "/public"));
|
||||
|
||||
const port = 8000;
|
||||
|
||||
http.listen(port, () => {
|
||||
console.log(`>>Listeing on port ${port}`);
|
||||
});
|
||||
import {ShaderSender} from "./server/four/sender";
|
||||
|
||||
const sender = new ShaderSender(app,__dirname);
|
||||
sender.listen({
|
||||
vertex:"shaders/vertex.glsl",
|
||||
fragment:"shaders/fragment.glsl"
|
||||
});
|
424
typescript/fourjs/package-lock.json
generated
Normal file
424
typescript/fourjs/package-lock.json
generated
Normal file
|
@ -0,0 +1,424 @@
|
|||
{
|
||||
"name": "four",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
"@types/body-parser": {
|
||||
"version": "1.17.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.17.0.tgz",
|
||||
"integrity": "sha512-a2+YeUjPkztKJu5aIF2yArYFQQp8d51wZ7DavSHjFuY1mqVgidGyzEQ41JIVNy82fXj8yPgy2vJmfIywgESW6w==",
|
||||
"requires": {
|
||||
"@types/connect": "*",
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"@types/connect": {
|
||||
"version": "3.4.32",
|
||||
"resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.32.tgz",
|
||||
"integrity": "sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg==",
|
||||
"requires": {
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"@types/events": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/events/-/events-1.2.0.tgz",
|
||||
"integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA=="
|
||||
},
|
||||
"@types/express": {
|
||||
"version": "4.16.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.16.0.tgz",
|
||||
"integrity": "sha512-TtPEYumsmSTtTetAPXlJVf3kEqb6wZK0bZojpJQrnD/djV4q1oB6QQ8aKvKqwNPACoe02GNiy5zDzcYivR5Z2w==",
|
||||
"requires": {
|
||||
"@types/body-parser": "*",
|
||||
"@types/express-serve-static-core": "*",
|
||||
"@types/serve-static": "*"
|
||||
}
|
||||
},
|
||||
"@types/express-serve-static-core": {
|
||||
"version": "4.16.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.16.0.tgz",
|
||||
"integrity": "sha512-lTeoCu5NxJU4OD9moCgm0ESZzweAx0YqsAcab6OB0EB3+As1OaHtKnaGJvcngQxYsi9UNv0abn4/DRavrRxt4w==",
|
||||
"requires": {
|
||||
"@types/events": "*",
|
||||
"@types/node": "*",
|
||||
"@types/range-parser": "*"
|
||||
}
|
||||
},
|
||||
"@types/mime": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.0.tgz",
|
||||
"integrity": "sha512-A2TAGbTFdBw9azHbpVd+/FkdW2T6msN1uct1O9bH3vTerEHKZhTXJUQXy+hNq1B0RagfU8U+KBdqiZpxjhOUQA=="
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "10.12.18",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz",
|
||||
"integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ=="
|
||||
},
|
||||
"@types/range-parser": {
|
||||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz",
|
||||
"integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA=="
|
||||
},
|
||||
"@types/serve-static": {
|
||||
"version": "1.13.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.2.tgz",
|
||||
"integrity": "sha512-/BZ4QRLpH/bNYgZgwhKEh+5AsboDBcUdlBYgzoLX0fpj3Y2gp6EApyOlM3bK53wQS/OE1SrdSYBAbux2D1528Q==",
|
||||
"requires": {
|
||||
"@types/express-serve-static-core": "*",
|
||||
"@types/mime": "*"
|
||||
}
|
||||
},
|
||||
"accepts": {
|
||||
"version": "1.3.5",
|
||||
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
|
||||
"integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
|
||||
"requires": {
|
||||
"mime-types": "~2.1.18",
|
||||
"negotiator": "0.6.1"
|
||||
}
|
||||
},
|
||||
"array-flatten": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
|
||||
"integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
|
||||
},
|
||||
"body-parser": {
|
||||
"version": "1.18.3",
|
||||
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz",
|
||||
"integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=",
|
||||
"requires": {
|
||||
"bytes": "3.0.0",
|
||||
"content-type": "~1.0.4",
|
||||
"debug": "2.6.9",
|
||||
"depd": "~1.1.2",
|
||||
"http-errors": "~1.6.3",
|
||||
"iconv-lite": "0.4.23",
|
||||
"on-finished": "~2.3.0",
|
||||
"qs": "6.5.2",
|
||||
"raw-body": "2.3.3",
|
||||
"type-is": "~1.6.16"
|
||||
}
|
||||
},
|
||||
"bytes": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
|
||||
"integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
|
||||
},
|
||||
"content-disposition": {
|
||||
"version": "0.5.2",
|
||||
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
|
||||
"integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ="
|
||||
},
|
||||
"content-type": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
|
||||
"integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
|
||||
},
|
||||
"cookie": {
|
||||
"version": "0.3.1",
|
||||
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
|
||||
"integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s="
|
||||
},
|
||||
"cookie-signature": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
|
||||
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
|
||||
},
|
||||
"debug": {
|
||||
"version": "2.6.9",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
},
|
||||
"depd": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
|
||||
"integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
|
||||
},
|
||||
"destroy": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
|
||||
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
|
||||
},
|
||||
"ee-first": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
|
||||
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
|
||||
},
|
||||
"encodeurl": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
|
||||
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
|
||||
},
|
||||
"escape-html": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
|
||||
"integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
|
||||
},
|
||||
"etag": {
|
||||
"version": "1.8.1",
|
||||
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
|
||||
"integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
|
||||
},
|
||||
"express": {
|
||||
"version": "4.16.4",
|
||||
"resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz",
|
||||
"integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==",
|
||||
"requires": {
|
||||
"accepts": "~1.3.5",
|
||||
"array-flatten": "1.1.1",
|
||||
"body-parser": "1.18.3",
|
||||
"content-disposition": "0.5.2",
|
||||
"content-type": "~1.0.4",
|
||||
"cookie": "0.3.1",
|
||||
"cookie-signature": "1.0.6",
|
||||
"debug": "2.6.9",
|
||||
"depd": "~1.1.2",
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"etag": "~1.8.1",
|
||||
"finalhandler": "1.1.1",
|
||||
"fresh": "0.5.2",
|
||||
"merge-descriptors": "1.0.1",
|
||||
"methods": "~1.1.2",
|
||||
"on-finished": "~2.3.0",
|
||||
"parseurl": "~1.3.2",
|
||||
"path-to-regexp": "0.1.7",
|
||||
"proxy-addr": "~2.0.4",
|
||||
"qs": "6.5.2",
|
||||
"range-parser": "~1.2.0",
|
||||
"safe-buffer": "5.1.2",
|
||||
"send": "0.16.2",
|
||||
"serve-static": "1.13.2",
|
||||
"setprototypeof": "1.1.0",
|
||||
"statuses": "~1.4.0",
|
||||
"type-is": "~1.6.16",
|
||||
"utils-merge": "1.0.1",
|
||||
"vary": "~1.1.2"
|
||||
}
|
||||
},
|
||||
"finalhandler": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
|
||||
"integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
|
||||
"requires": {
|
||||
"debug": "2.6.9",
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"on-finished": "~2.3.0",
|
||||
"parseurl": "~1.3.2",
|
||||
"statuses": "~1.4.0",
|
||||
"unpipe": "~1.0.0"
|
||||
}
|
||||
},
|
||||
"forwarded": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
|
||||
"integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
|
||||
},
|
||||
"fresh": {
|
||||
"version": "0.5.2",
|
||||
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
|
||||
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
|
||||
},
|
||||
"http-errors": {
|
||||
"version": "1.6.3",
|
||||
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
|
||||
"integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
|
||||
"requires": {
|
||||
"depd": "~1.1.2",
|
||||
"inherits": "2.0.3",
|
||||
"setprototypeof": "1.1.0",
|
||||
"statuses": ">= 1.4.0 < 2"
|
||||
}
|
||||
},
|
||||
"iconv-lite": {
|
||||
"version": "0.4.23",
|
||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
|
||||
"integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
|
||||
"requires": {
|
||||
"safer-buffer": ">= 2.1.2 < 3"
|
||||
}
|
||||
},
|
||||
"inherits": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
|
||||
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
|
||||
},
|
||||
"ipaddr.js": {
|
||||
"version": "1.8.0",
|
||||
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz",
|
||||
"integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4="
|
||||
},
|
||||
"media-typer": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
|
||||
"integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
|
||||
},
|
||||
"merge-descriptors": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
|
||||
"integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
|
||||
},
|
||||
"methods": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
|
||||
"integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
|
||||
},
|
||||
"mime": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
|
||||
"integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ=="
|
||||
},
|
||||
"mime-db": {
|
||||
"version": "1.37.0",
|
||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz",
|
||||
"integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg=="
|
||||
},
|
||||
"mime-types": {
|
||||
"version": "2.1.21",
|
||||
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz",
|
||||
"integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==",
|
||||
"requires": {
|
||||
"mime-db": "~1.37.0"
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
|
||||
},
|
||||
"negotiator": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
|
||||
"integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
|
||||
},
|
||||
"on-finished": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
|
||||
"integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
|
||||
"requires": {
|
||||
"ee-first": "1.1.1"
|
||||
}
|
||||
},
|
||||
"parseurl": {
|
||||
"version": "1.3.2",
|
||||
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
|
||||
"integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M="
|
||||
},
|
||||
"path-to-regexp": {
|
||||
"version": "0.1.7",
|
||||
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
|
||||
"integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
|
||||
},
|
||||
"proxy-addr": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz",
|
||||
"integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==",
|
||||
"requires": {
|
||||
"forwarded": "~0.1.2",
|
||||
"ipaddr.js": "1.8.0"
|
||||
}
|
||||
},
|
||||
"qs": {
|
||||
"version": "6.5.2",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
|
||||
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
|
||||
},
|
||||
"range-parser": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
|
||||
"integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
|
||||
},
|
||||
"raw-body": {
|
||||
"version": "2.3.3",
|
||||
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz",
|
||||
"integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==",
|
||||
"requires": {
|
||||
"bytes": "3.0.0",
|
||||
"http-errors": "1.6.3",
|
||||
"iconv-lite": "0.4.23",
|
||||
"unpipe": "1.0.0"
|
||||
}
|
||||
},
|
||||
"safe-buffer": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
|
||||
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
|
||||
},
|
||||
"safer-buffer": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
||||
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
|
||||
},
|
||||
"send": {
|
||||
"version": "0.16.2",
|
||||
"resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
|
||||
"integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
|
||||
"requires": {
|
||||
"debug": "2.6.9",
|
||||
"depd": "~1.1.2",
|
||||
"destroy": "~1.0.4",
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"etag": "~1.8.1",
|
||||
"fresh": "0.5.2",
|
||||
"http-errors": "~1.6.2",
|
||||
"mime": "1.4.1",
|
||||
"ms": "2.0.0",
|
||||
"on-finished": "~2.3.0",
|
||||
"range-parser": "~1.2.0",
|
||||
"statuses": "~1.4.0"
|
||||
}
|
||||
},
|
||||
"serve-static": {
|
||||
"version": "1.13.2",
|
||||
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
|
||||
"integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
|
||||
"requires": {
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"parseurl": "~1.3.2",
|
||||
"send": "0.16.2"
|
||||
}
|
||||
},
|
||||
"setprototypeof": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
|
||||
"integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
|
||||
},
|
||||
"statuses": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
|
||||
"integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
|
||||
},
|
||||
"type-is": {
|
||||
"version": "1.6.16",
|
||||
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
|
||||
"integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
|
||||
"requires": {
|
||||
"media-typer": "0.3.0",
|
||||
"mime-types": "~2.1.18"
|
||||
}
|
||||
},
|
||||
"unpipe": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
|
||||
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
|
||||
},
|
||||
"utils-merge": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
|
||||
"integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
|
||||
},
|
||||
"vary": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
|
||||
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
|
||||
}
|
||||
}
|
||||
}
|
16
typescript/fourjs/package.json
Normal file
16
typescript/fourjs/package.json
Normal file
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"name": "four",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "app.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"author": "Matei Adriel",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@types/express": "^4.16.0",
|
||||
"express": "^4.16.4",
|
||||
"typescript": "^3.2.2"
|
||||
}
|
||||
}
|
19
typescript/fourjs/public/index.html
Normal file
19
typescript/fourjs/public/index.html
Normal file
|
@ -0,0 +1,19 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<title>Four</title>
|
||||
|
||||
<script
|
||||
src="https://code.jquery.com/jquery-3.3.1.min.js"
|
||||
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
|
||||
crossorigin="anonymous"></script>
|
||||
|
||||
<script type="module" charset="utf-8" src="public/js/main.mjs"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
</body>
|
||||
</html>
|
47
typescript/fourjs/public/js/gl.mjs
Normal file
47
typescript/fourjs/public/js/gl.mjs
Normal file
|
@ -0,0 +1,47 @@
|
|||
class GL{
|
||||
constructor(){
|
||||
this.id = GL.id++;
|
||||
this.color = "#0000ff";
|
||||
|
||||
this.objects = [];
|
||||
}
|
||||
createObject(){
|
||||
const obj = new Object(arguments);
|
||||
|
||||
this.objects.push(obj);
|
||||
}
|
||||
init(){
|
||||
const canvas = `<canvas height="300" width="400" id=${this.id}></canvas>`;
|
||||
$("body").append(canvas);
|
||||
|
||||
this.canvas = $(`#${this.id}`)[0];
|
||||
this.ctx = this.canvas.getContext("webgl2");
|
||||
|
||||
console.log(this.canvas);
|
||||
|
||||
if (!this.ctx){ console.error("WebGL context is not available."); return null; }
|
||||
|
||||
return this;
|
||||
}
|
||||
updateColor(){
|
||||
this.ctx.clearColor(this.color);
|
||||
|
||||
return this;
|
||||
}
|
||||
setColor(color){
|
||||
this.color = color;
|
||||
this.ctx.updateColor();
|
||||
|
||||
return this;
|
||||
}
|
||||
clear(){
|
||||
this.ctx.clear(
|
||||
this.ctx.COLOR_BUFFER_BIT |
|
||||
this.ctx.DEPTH_BUFFER_BIT
|
||||
);
|
||||
return this;
|
||||
}
|
||||
}
|
||||
GL.id = 0;
|
||||
|
||||
export {GL};
|
44
typescript/fourjs/public/js/main.mjs
Normal file
44
typescript/fourjs/public/js/main.mjs
Normal file
|
@ -0,0 +1,44 @@
|
|||
import {GL} from "./gl.mjs";
|
||||
import {ShaderCompiler} from "./shader.mjs"
|
||||
|
||||
const renderer = new GL();
|
||||
renderer.init();
|
||||
|
||||
const compiler = new ShaderCompiler(renderer);
|
||||
compiler.getShader("http://localhost:8000/fragment")
|
||||
compiler.getShader("http://localhost:8000/vertex")
|
||||
//
|
||||
// const vShaderTxt = ShaderUtil.load("vertex_shader"),
|
||||
// fShaderTxt = ShaderUtil.domShaderSrc("fragment_shader"),
|
||||
// // 2. Compile text and validate
|
||||
// vShader = ShaderUtil.createShader(gl,vShaderTxt,gl.VERTEX_SHADER),
|
||||
// fShader = ShaderUtil.createShader(gl,fShaderTxt,gl.FRAGMENT_SHADER),
|
||||
// // 3. Link the shaders together as a program.
|
||||
// shaderProg = ShaderUtil.createProgram(gl,vShader,fShader,true);
|
||||
//
|
||||
//
|
||||
//
|
||||
// // 4. Get Location of Uniforms and Attributes.
|
||||
// gl.useProgram(shaderProg);
|
||||
// var aPositionLoc = gl.getAttribLocation(shaderProg,"a_position"),
|
||||
// uPointSizeLoc = gl.getUniformLocation(shaderProg,"uPointSize");
|
||||
// gl.useProgram(null);
|
||||
// //............................................
|
||||
// //Set Up Data Buffers
|
||||
// var aryVerts = new Float32Array([0,0,0, 0.5,0.5,0 ]),
|
||||
// bufVerts = gl.createBuffer();
|
||||
// gl.bindBuffer(gl.ARRAY_BUFFER,bufVerts);
|
||||
// gl.bufferData(gl.ARRAY_BUFFER, aryVerts, gl.STATIC_DRAW);
|
||||
// gl.bindBuffer(gl.ARRAY_BUFFER,null);
|
||||
// //............................................
|
||||
// //Set Up For Drawing
|
||||
// gl.useProgram(shaderProg); //Activate the Shader
|
||||
// gl.uniform1f(uPointSizeLoc,50.0); //Store data to the shader's uniform variable uPointSize
|
||||
// //how its down without VAOs
|
||||
// gl.bindBuffer(gl.ARRAY_BUFFER,bufVerts); //Tell gl which buffer we want to use at the moment
|
||||
// gl.enableVertexAttribArray(aPositionLoc); //Enable the position attribute in the shader
|
||||
// gl.vertexAttribPointer(aPositionLoc,3,gl.FLOAT,false,0,0); //Set which buffer the attribute will pull its data from
|
||||
// gl.bindBuffer(gl.ARRAY_BUFFER,null); //Done setting up the buffer
|
||||
//
|
||||
// this.gl.drawArrays(gl.POINTS, 0, 2); //Draw the points
|
||||
// });
|
62
typescript/fourjs/public/js/shader.mjs
Normal file
62
typescript/fourjs/public/js/shader.mjs
Normal file
|
@ -0,0 +1,62 @@
|
|||
class ShaderCompiler{
|
||||
constructor(gl){
|
||||
this.ctx = gl.ctx;
|
||||
}
|
||||
createShader(gl,src,type){
|
||||
const shader = this.ctx.createShader(type);
|
||||
|
||||
this.ctx.shaderSource(shader,src);
|
||||
this.ctx.compileShader(shader);
|
||||
|
||||
//Get Error data if shader failed compiling
|
||||
if(!this.ctx.getShaderParameter(shader, this.ctx.COMPILE_STATUS)){
|
||||
console.error(`Error compiling shader: ${src}. Log: ${gl.getShaderInfoLog(shader)}`);
|
||||
this.ctx.deleteShader(shader);
|
||||
return null;
|
||||
}
|
||||
|
||||
return shader;
|
||||
}
|
||||
|
||||
createProgram(gl,vShader,fShader,doValidate){
|
||||
//Link shaders together
|
||||
const prog = gl.ctx.createProgram();
|
||||
|
||||
this.ctx.attachShader(prog,vShader);
|
||||
this.ctx.attachShader(prog,fShader);
|
||||
this.ctx.linkProgram(prog);
|
||||
|
||||
//Check if successful
|
||||
if(!this.ctx.getProgramParameter(prog, gl.LINK_STATUS)){
|
||||
console.error(`Error creating shader program. Log: ${gl.getProgramInfoLog(prog)}`);
|
||||
this.ctx.deleteProgram(prog);
|
||||
return null;
|
||||
}
|
||||
|
||||
//Only do this for additional debugging.
|
||||
if(doValidate){
|
||||
this.ctx.validateProgram(prog);
|
||||
if(!this.ctx.getProgramParameter(prog,gl.VALIDATE_STATUS)){
|
||||
console.error(`Error validating shader program. Log: ${gl.getProgramInfoLog(prog)}`);
|
||||
this.ctx.deleteProgram(prog);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
//Can delete the shaders since the program has been made.
|
||||
this.ctx.detachShader(prog,vShader); //TODO, detaching might cause issues on some browsers, Might only need to delete.
|
||||
this.ctx.detachShader(prog,fShader);
|
||||
this.ctx.deleteShader(fShader);
|
||||
this.ctx.deleteShader(vShader);
|
||||
|
||||
return prog;
|
||||
}
|
||||
async getShader(url){
|
||||
const response = await fetch(url);
|
||||
const obj = await response.json();
|
||||
const text = obj.text;
|
||||
console.log(text);
|
||||
}
|
||||
}
|
||||
|
||||
export {ShaderCompiler};
|
18
typescript/fourjs/server/four/sender.js
Normal file
18
typescript/fourjs/server/four/sender.js
Normal file
|
@ -0,0 +1,18 @@
|
|||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const read_1 = require("../read");
|
||||
class ShaderSender {
|
||||
constructor(app, dir) {
|
||||
this.app = app;
|
||||
this.dir = dir;
|
||||
}
|
||||
async listen(data) {
|
||||
for (let i in data) {
|
||||
const text = await read_1.read(`./${data[i]}`);
|
||||
this.app.get(`/${i}`, (req, res) => {
|
||||
res.json({ text });
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
exports.ShaderSender = ShaderSender;
|
14
typescript/fourjs/server/four/sender.ts
Normal file
14
typescript/fourjs/server/four/sender.ts
Normal file
|
@ -0,0 +1,14 @@
|
|||
import {read} from "../read"
|
||||
class ShaderSender{
|
||||
constructor(public app,public dir:String){}
|
||||
async listen(data:any){
|
||||
for (let i in data){
|
||||
const text = await read(`./${data[i]}`);
|
||||
this.app.get(`/${i}`,(req,res) => {
|
||||
res.json({text});
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export {ShaderSender};
|
13
typescript/fourjs/server/read.js
Normal file
13
typescript/fourjs/server/read.js
Normal file
|
@ -0,0 +1,13 @@
|
|||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const fs = require('fs');
|
||||
function read(url) {
|
||||
return new Promise((resolve, reject) => {
|
||||
fs.readFile(`./${url}`, "utf8", (err, data) => {
|
||||
if (err)
|
||||
reject(err);
|
||||
resolve(data);
|
||||
});
|
||||
});
|
||||
}
|
||||
exports.read = read;
|
12
typescript/fourjs/server/read.ts
Normal file
12
typescript/fourjs/server/read.ts
Normal file
|
@ -0,0 +1,12 @@
|
|||
const fs = require('fs');
|
||||
|
||||
function read(url:string):Promise<string>{
|
||||
return new Promise((resolve,reject) => {
|
||||
fs.readFile(`./${url}`,"utf8",(err,data) => {
|
||||
if (err) reject(err);
|
||||
resolve(data);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
export {read};
|
9
typescript/fourjs/shaders/fragment.glsl
Normal file
9
typescript/fourjs/shaders/fragment.glsl
Normal file
|
@ -0,0 +1,9 @@
|
|||
#version 300 es
|
||||
|
||||
precision mediump float;
|
||||
|
||||
out vec4 finalColor;
|
||||
|
||||
void main(void) {
|
||||
finalColor = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
}
|
9
typescript/fourjs/shaders/vertex.glsl
Normal file
9
typescript/fourjs/shaders/vertex.glsl
Normal file
|
@ -0,0 +1,9 @@
|
|||
#version 300 es
|
||||
|
||||
in vec3 a_position;
|
||||
|
||||
uniform float uPointSize;
|
||||
void main(void){
|
||||
gl_PointSize = uPointSize;
|
||||
gl_Position = vec4(a_position, 1.0);
|
||||
}
|
9
typescript/fourjs/tsconfig.json
Normal file
9
typescript/fourjs/tsconfig.json
Normal file
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"compilerOptions":{
|
||||
"target":"esnext",
|
||||
"watch":true,
|
||||
"lib":["es2017"],
|
||||
"module": "commonjs"
|
||||
},
|
||||
"exclude": ["node_modules", "**/__tests__/*"]
|
||||
}
|
Loading…
Reference in a new issue