Modernize project
This commit is contained in:
@@ -6,8 +6,11 @@ end_of_line = lf
|
||||
indent_size = 4
|
||||
indent_style = tab
|
||||
insert_final_newline = true
|
||||
tab_width = 4
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
[bun.lock]
|
||||
indent_size = 2
|
||||
indent_style = space
|
||||
|
||||
2
AUTHORS
2
AUTHORS
@@ -1 +1 @@
|
||||
Szymon Nowakowski <smnbdg13@gmail.com> (https://renati.me)
|
||||
Szymon Nowakowski <renati@renati.me> (https://renati.me)
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
<video src="https://gitea.renati.me/renati/oktaeder/media/branch/main/oktaeder.webm" autoplay controls loop>
|
||||
</video>
|
||||
|
||||
This project ships with [bun.lockb](https://bun.sh/docs/install/lockfile)
|
||||
This project ships with [bun.lock](https://bun.sh/docs/install/lockfile)
|
||||
lockfile for the [Bun](https://bun.sh/) JavaScript runtime. You should be able
|
||||
to install the dependencies with any JavaScript package manager, though.
|
||||
|
||||
To run the example, run `start:example` script with your JavaScript package
|
||||
manager and visit [localhost:8000](http://localhost:8000).
|
||||
To run the example, run `bun run start:example`. The example relies on the Bun
|
||||
JavaScript runtime to bundle and serve the example.
|
||||
|
||||
22
bun.lock
Normal file
22
bun.lock
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"lockfileVersion": 1,
|
||||
"workspaces": {
|
||||
"": {
|
||||
"name": "oktaeder",
|
||||
"dependencies": {
|
||||
"tslib": "^2.6.2",
|
||||
},
|
||||
"devDependencies": {
|
||||
"@webgpu/types": "^0.1.66",
|
||||
"typescript": "^5.9.3",
|
||||
},
|
||||
},
|
||||
},
|
||||
"packages": {
|
||||
"@webgpu/types": ["@webgpu/types@0.1.66", "", {}, "sha512-YA2hLrwLpDsRueNDXIMqN9NTzD6bCDkuXbOSe0heS+f8YE8usA6Gbv1prj81pzVHrbaAma7zObnIC+I6/sXJgA=="],
|
||||
|
||||
"tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
|
||||
|
||||
"typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
|
||||
}
|
||||
}
|
||||
@@ -4,8 +4,8 @@
|
||||
<meta charset="utf-8">
|
||||
<title>oktaeder example</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="stylesheet" href="bundle.css">
|
||||
<script type="module" src="bundle.js"></script>
|
||||
<link rel="stylesheet" href="style.css">
|
||||
<script type="module" src="script.ts"></script>
|
||||
</head>
|
||||
<body></body>
|
||||
</html>
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
/// <reference types="../node_modules/@webgpu/types" />
|
||||
/// <reference path="types.d.ts" />
|
||||
|
||||
import { Color, Mesh, Node, PerspectiveCamera, PointLight, Quaternion, Scene, Submesh, Vector3 } from "../src/data/index";
|
||||
import { Renderer, degToRad } from "../src/oktaeder";
|
||||
import "./style.css";
|
||||
|
||||
new EventSource("/esbuild").addEventListener("change", () => location.reload());
|
||||
import uvmapUrl from "./uvmap.png";
|
||||
|
||||
const canvas = document.createElement("canvas");
|
||||
window.addEventListener("resize", onResize);
|
||||
@@ -66,7 +66,7 @@ const submesh: Submesh = { start: 0, length: 24 };
|
||||
|
||||
const mesh = new Mesh({ vertexBuffer, indexBuffer, submeshes: [submesh] });
|
||||
|
||||
const imageBitmap = await loadImageBitmap("/uvmap.png");
|
||||
const imageBitmap = await loadImageBitmap(uvmapUrl);
|
||||
|
||||
const texture = renderer.createTexture({
|
||||
format: "srgb",
|
||||
|
||||
4
example/types.d.ts
vendored
Normal file
4
example/types.d.ts
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
declare module "*.png" {
|
||||
const url: string;
|
||||
export default url;
|
||||
}
|
||||
16
package.json
16
package.json
@@ -7,27 +7,23 @@
|
||||
"gltf",
|
||||
"wegbpu"
|
||||
],
|
||||
"homepage": "https://github.com/iszn11/oktaeder",
|
||||
"bugs": {
|
||||
"url": "https://github.com/iszn11/oktaeder/issues"
|
||||
},
|
||||
"homepage": "https://gitea.renati.me/renati/oktaeder",
|
||||
"license": "MPL-2.0",
|
||||
"browser": "./dist/oktaeder.js",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/iszn11/oktaeder.git"
|
||||
"url": "https://gitea.renati.me/renati/oktaeder.git"
|
||||
},
|
||||
"scripts": {
|
||||
"start:example": "esbuild example/script.ts --bundle --outfile=example/bundle.js --watch --servedir=example --format=esm --sourcemap",
|
||||
"start:example": "bun run example/index.html",
|
||||
"build": "tsc --build"
|
||||
},
|
||||
"dependencies": {
|
||||
"tslib": "^2.6.2"
|
||||
"tslib": "^2.8.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@webgpu/types": "^0.1.40",
|
||||
"esbuild": "^0.20.2",
|
||||
"typescript": "^5.4.2"
|
||||
"@webgpu/types": "^0.1.66",
|
||||
"typescript": "^5.9.3"
|
||||
},
|
||||
"exports": {
|
||||
".": {
|
||||
|
||||
@@ -12,10 +12,10 @@ export class _BinaryWriter {
|
||||
|
||||
_buffer: ArrayBuffer;
|
||||
_dataView: DataView;
|
||||
_typedArray: Uint8Array;
|
||||
_typedArray: Uint8Array<ArrayBuffer>;
|
||||
_length: number;
|
||||
|
||||
get subarray(): Uint8Array { return new Uint8Array(this._buffer, 0, this._length); }
|
||||
get subarray(): Uint8Array<ArrayBuffer> { return new Uint8Array(this._buffer, 0, this._length); }
|
||||
|
||||
constructor(capacity = _BinaryWriter.DEFAULT_CAPACITY) {
|
||||
capacity = Math.max(capacity, 1);
|
||||
|
||||
@@ -69,7 +69,7 @@ import * as resources from "./resources";
|
||||
* - issues error
|
||||
* - BLEND: partial support
|
||||
* - decoded, but not implemented
|
||||
* - doubleSided: prtial support
|
||||
* - doubleSided: partial support
|
||||
* - decoded, but not implemented
|
||||
*
|
||||
* Extensions:
|
||||
@@ -240,7 +240,7 @@ export async function parse(gltf: ArrayBufferView, {
|
||||
}
|
||||
|
||||
if (version !== 2) {
|
||||
const message = `Unsupported binary glTF container format. The bytes 4-8 define the binary glTF conatiner format version when read as little endian unsigned integer. Only version 2 is supported, but in the provided buffer they have the value of ${version}`;
|
||||
const message = `Unsupported binary glTF container format. The bytes 4-8 define the binary glTF container format version when read as little endian unsigned integer. Only version 2 is supported, but in the provided buffer they have the value of ${version}`;
|
||||
const error = new ParseError({ message, severity: "error" });
|
||||
if (throwOnError) {
|
||||
throw error;
|
||||
|
||||
@@ -64,7 +64,7 @@ export class IndexBuffer {
|
||||
return this.writeTypedArray(offset, array);
|
||||
}
|
||||
|
||||
writeTypedArray(offset: number, indices: Uint16Array | Uint32Array): IndexBuffer {
|
||||
writeTypedArray(offset: number, indices: Uint16Array<ArrayBuffer> | Uint32Array<ArrayBuffer>): IndexBuffer {
|
||||
if (
|
||||
this._indexFormat === "uint16" && !(indices instanceof Uint16Array)
|
||||
|| this._indexFormat === "uint32" && !(indices instanceof Uint32Array)
|
||||
|
||||
@@ -42,11 +42,11 @@ export interface VertexBufferWriteArrayProps {
|
||||
}
|
||||
|
||||
export interface VertexBufferWriteTypedArrayProps {
|
||||
readonly position?: Float32Array;
|
||||
readonly texCoord?: Float32Array;
|
||||
readonly lightTexCoord?: Float32Array;
|
||||
readonly normal?: Float32Array;
|
||||
readonly tangent?: Float32Array;
|
||||
readonly position?: Float32Array<ArrayBuffer>;
|
||||
readonly texCoord?: Float32Array<ArrayBuffer>;
|
||||
readonly lightTexCoord?: Float32Array<ArrayBuffer>;
|
||||
readonly normal?: Float32Array<ArrayBuffer>;
|
||||
readonly tangent?: Float32Array<ArrayBuffer>;
|
||||
}
|
||||
|
||||
export class VertexBuffer {
|
||||
|
||||
Reference in New Issue
Block a user