New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@thi.ng/matrices

Package Overview
Dependencies
Maintainers
0
Versions
278
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@thi.ng/matrices - npm Package Compare versions

Comparing version 2.3.37 to 2.4.0

13

CHANGELOG.md
# Change Log
- **Last updated**: 2024-05-08T18:24:32Z
- **Last updated**: 2024-06-21T19:34:38Z
- **Generator**: [thi.ng/monopub](https://thi.ng/monopub)

@@ -12,2 +12,13 @@

## [2.4.0](https://github.com/thi-ng/umbrella/tree/@thi.ng/matrices@2.4.0) (2024-06-21)
#### 🚀 Features
- add AxisOrder type for quadFromEuler() ([f9722dd](https://github.com/thi-ng/umbrella/commit/f9722dd))
#### ♻️ Refactoring
- rename various rest args to be more semantically meaningful ([8088a56](https://github.com/thi-ng/umbrella/commit/8088a56))
- enforce uniform naming convention of internal functions ([56992b2](https://github.com/thi-ng/umbrella/commit/56992b2))
### [2.3.34](https://github.com/thi-ng/umbrella/tree/@thi.ng/matrices@2.3.34) (2024-04-20)

@@ -14,0 +25,0 @@

8

concat.d.ts
import type { Mat, ReadonlyMat } from "./api.js";
/**
* Concatenates / multiplies given matrices in left-to-right order. A
* minimum of 2 input matrices must be given. If `out` is null, writes
* Concatenates / multiplies given matrices (min. 2 required) in left-to-right
* order. A minimum of 2 input matrices must be given. If `out` is null, writes
* result into `a`.

@@ -10,5 +10,5 @@ *

* @param b -
* @param xs -
* @param rest -
*/
export declare const concat: (out: Mat | null, a: ReadonlyMat, b: ReadonlyMat, ...xs: ReadonlyMat[]) => Mat;
export declare const concat: (out: Mat | null, a: ReadonlyMat, b: ReadonlyMat, ...rest: ReadonlyMat[]) => Mat;
//# sourceMappingURL=concat.d.ts.map
import { mulM } from "./mulm.js";
const concat = (out, a, b, ...xs) => xs.reduce((acc, x) => mulM(acc, acc, x), mulM(out, a, b));
const concat = (out, a, b, ...rest) => rest.reduce((acc, x) => mulM(acc, acc, x), mulM(out, a, b));
export {
concat
};
import { dotC4, dotC6 } from "@thi.ng/vectors/dotc";
const dp4 = dotC4;
const dp6 = dotC6;
const det22 = (m) => dp4(m[0], m[3], -m[1], m[2]);
const det22 = (m) => dotC4(m[0], m[3], -m[1], m[2]);
const det23 = det22;
const det33 = (m) => {
const [m00, m01, m02, m10, m11, m12, m20, m21, m22] = m;
const d01 = dp4(m22, m11, -m12, m21);
const d11 = dp4(m12, m20, -m22, m10);
const d21 = dp4(m21, m10, -m11, m20);
return dp6(m00, d01, m01, d11, m02, d21);
const d01 = dotC4(m22, m11, -m12, m21);
const d11 = dotC4(m12, m20, -m22, m10);
const d21 = dotC4(m21, m10, -m11, m20);
return dotC6(m00, d01, m01, d11, m02, d21);
};

@@ -33,17 +31,17 @@ const detCoeffs44 = (m) => {

return [
dp4(m00, m11, -m01, m10),
dp4(m00, m12, -m02, m10),
dp4(m00, m13, -m03, m10),
dp4(m01, m12, -m02, m11),
dp4(m01, m13, -m03, m11),
dp4(m02, m13, -m03, m12),
dp4(m20, m31, -m21, m30),
dp4(m20, m32, -m22, m30),
dp4(m20, m33, -m23, m30),
dp4(m21, m32, -m22, m31),
dp4(m21, m33, -m23, m31),
dp4(m22, m33, -m23, m32)
dotC4(m00, m11, -m01, m10),
dotC4(m00, m12, -m02, m10),
dotC4(m00, m13, -m03, m10),
dotC4(m01, m12, -m02, m11),
dotC4(m01, m13, -m03, m11),
dotC4(m02, m13, -m03, m12),
dotC4(m20, m31, -m21, m30),
dotC4(m20, m32, -m22, m30),
dotC4(m20, m33, -m23, m30),
dotC4(m21, m32, -m22, m31),
dotC4(m21, m33, -m23, m31),
dotC4(m22, m33, -m23, m32)
];
};
const det44FromCoeffs = (d) => dp6(d[0], d[11], -d[1], d[10], d[2], d[9]) + dp6(d[3], d[8], -d[4], d[7], d[5], d[6]);
const det44FromCoeffs = (d) => dotC6(d[0], d[11], -d[1], d[10], d[2], d[9]) + dotC6(d[3], d[8], -d[4], d[7], d[5], d[6]);
const det44 = (m) => det44FromCoeffs(detCoeffs44(m));

@@ -50,0 +48,0 @@ export {

@@ -6,8 +6,6 @@ import { dotC4, dotC6 } from "@thi.ng/vectors/dotc";

import { det44FromCoeffs, detCoeffs44 } from "./determinant.js";
const dp4 = dotC4;
const dp6 = dotC6;
const invert = vop(1);
const invert22 = invert.add(4, (out, m) => {
const [m00, m01, m10, m11] = m;
let det = dp4(m00, m11, -m01, m10);
let det = dotC4(m00, m11, -m01, m10);
if (det === 0) return;

@@ -19,3 +17,3 @@ det = 1 / det;

const [m00, m01, m10, m11, m20, m21] = m;
let det = dp4(m00, m11, -m01, m10);
let det = dotC4(m00, m11, -m01, m10);
if (det === 0) return;

@@ -29,4 +27,4 @@ det = 1 / det;

m00 * det,
dp4(m10, m21, -m11, m20) * det,
dp4(m01, m20, -m00, m21) * det
dotC4(m10, m21, -m11, m20) * det,
dotC4(m01, m20, -m00, m21) * det
);

@@ -36,6 +34,6 @@ });

const [m00, m01, m02, m10, m11, m12, m20, m21, m22] = m;
const d01 = dp4(m22, m11, -m12, m21);
const d11 = dp4(m12, m20, -m22, m10);
const d21 = dp4(m21, m10, -m11, m20);
let det = dp6(m00, d01, m01, d11, m02, d21);
const d01 = dotC4(m22, m11, -m12, m21);
const d11 = dotC4(m12, m20, -m22, m10);
const d21 = dotC4(m21, m10, -m11, m20);
let det = dotC6(m00, d01, m01, d11, m02, d21);
if (det === 0) return;

@@ -46,10 +44,10 @@ det = 1 / det;

d01 * det,
dp4(-m22, m01, m02, m21) * det,
dp4(m12, m01, -m02, m11) * det,
dotC4(-m22, m01, m02, m21) * det,
dotC4(m12, m01, -m02, m11) * det,
d11 * det,
dp4(m22, m00, -m02, m20) * det,
dp4(-m12, m00, m02, m10) * det,
dotC4(m22, m00, -m02, m20) * det,
dotC4(-m12, m00, m02, m10) * det,
d21 * det,
dp4(-m21, m00, m01, m20) * det,
dp4(m11, m00, -m01, m10) * det
dotC4(-m21, m00, m01, m20) * det,
dotC4(m11, m00, -m01, m10) * det
);

@@ -83,18 +81,18 @@ });

out || m,
dp6(m11, d11, -m12, d10, m13, d09) * det,
dp6(-m01, d11, m02, d10, -m03, d09) * det,
dp6(m31, d05, -m32, d04, m33, d03) * det,
dp6(-m21, d05, m22, d04, -m23, d03) * det,
dp6(-m10, d11, m12, d08, -m13, d07) * det,
dp6(m00, d11, -m02, d08, m03, d07) * det,
dp6(-m30, d05, m32, d02, -m33, d01) * det,
dp6(m20, d05, -m22, d02, m23, d01) * det,
dp6(m10, d10, -m11, d08, m13, d06) * det,
dp6(-m00, d10, m01, d08, -m03, d06) * det,
dp6(m30, d04, -m31, d02, m33, d00) * det,
dp6(-m20, d04, m21, d02, -m23, d00) * det,
dp6(-m10, d09, m11, d07, -m12, d06) * det,
dp6(m00, d09, -m01, d07, m02, d06) * det,
dp6(-m30, d03, m31, d01, -m32, d00) * det,
dp6(m20, d03, -m21, d01, m22, d00) * det
dotC6(m11, d11, -m12, d10, m13, d09) * det,
dotC6(-m01, d11, m02, d10, -m03, d09) * det,
dotC6(m31, d05, -m32, d04, m33, d03) * det,
dotC6(-m21, d05, m22, d04, -m23, d03) * det,
dotC6(-m10, d11, m12, d08, -m13, d07) * det,
dotC6(m00, d11, -m02, d08, m03, d07) * det,
dotC6(-m30, d05, m32, d02, -m33, d01) * det,
dotC6(m20, d05, -m22, d02, m23, d01) * det,
dotC6(m10, d10, -m11, d08, m13, d06) * det,
dotC6(-m00, d10, m01, d08, -m03, d06) * det,
dotC6(m30, d04, -m31, d02, m33, d00) * det,
dotC6(-m20, d04, m21, d02, -m23, d00) * det,
dotC6(-m10, d09, m11, d07, -m12, d06) * det,
dotC6(m00, d09, -m01, d07, m02, d06) * det,
dotC6(-m30, d03, m31, d01, -m32, d00) * det,
dotC6(m20, d03, -m21, d01, m22, d00) * det
);

@@ -105,3 +103,3 @@ });

d = d > 0 ? -1 / d : 0;
return setC4(out || a, a[0] * d, a[1] * d, a[2] * d, a[3] * -d);
return setC4(out || a, a[0] * d, a[1] * d, a[2] * d, -a[3] * d);
};

@@ -108,0 +106,0 @@ export {

{
"name": "@thi.ng/matrices",
"version": "2.3.37",
"version": "2.4.0",
"description": "Matrix & quaternion operations for 2D/3D geometry processing",

@@ -13,3 +13,3 @@ "type": "module",

},
"homepage": "https://github.com/thi-ng/umbrella/tree/develop/packages/matrices#readme",
"homepage": "https://thi.ng/matrices",
"funding": [

@@ -40,12 +40,12 @@ {

"dependencies": {
"@thi.ng/api": "^8.11.2",
"@thi.ng/checks": "^3.6.4",
"@thi.ng/math": "^5.10.13",
"@thi.ng/vectors": "^7.10.31"
"@thi.ng/api": "^8.11.3",
"@thi.ng/checks": "^3.6.5",
"@thi.ng/math": "^5.11.0",
"@thi.ng/vectors": "^7.11.0"
},
"devDependencies": {
"@microsoft/api-extractor": "^7.43.2",
"esbuild": "^0.21.1",
"@microsoft/api-extractor": "^7.47.0",
"esbuild": "^0.21.5",
"typedoc": "^0.25.13",
"typescript": "^5.4.5"
"typescript": "^5.5.2"
},

@@ -280,3 +280,3 @@ "keywords": [

},
"gitHead": "df34b4a9e650cc7323575356de207d78933bdcf3\n"
"gitHead": "154c95cf9d6bab32174498ec3b5b5d87e42be7f9\n"
}

@@ -1,9 +0,2 @@

declare const axisOrder: {
xyz: import("@thi.ng/vectors/api").ReadonlyVec[];
yxz: import("@thi.ng/vectors/api").ReadonlyVec[];
xzy: import("@thi.ng/vectors/api").ReadonlyVec[];
zxy: import("@thi.ng/vectors/api").ReadonlyVec[];
yzx: import("@thi.ng/vectors/api").ReadonlyVec[];
zyx: import("@thi.ng/vectors/api").ReadonlyVec[];
};
export type AxisOrder = "xyz" | "yxz" | "xzy" | "zxy" | "yzx" | "zyx";
/**

@@ -18,4 +11,3 @@ * Constructs a quaternion from given rotation angles in specified

*/
export declare const quatFromEuler: (order: keyof typeof axisOrder, a: number, b: number, c: number) => import("@thi.ng/vectors/api").Vec;
export {};
export declare const quatFromEuler: (order: AxisOrder, a: number, b: number, c: number) => import("@thi.ng/vectors/api").Vec;
//# sourceMappingURL=quat-euler.d.ts.map
import { X3, Y3, Z3 } from "@thi.ng/vectors/api";
import { mulQ } from "./mulq.js";
import { quatFromAxisAngle } from "./quat-axis-angle.js";
const axisOrder = {
const AXIS_ORDER = {
xyz: [X3, Y3, Z3],

@@ -13,3 +13,3 @@ yxz: [Y3, X3, Z3],

const quatFromEuler = (order, a, b, c) => {
const [aa, ab, ac] = axisOrder[order];
const [aa, ab, ac] = AXIS_ORDER[order];
return mulQ(

@@ -16,0 +16,0 @@ null,

@@ -10,3 +10,3 @@ <!-- This file is generated - DO NOT EDIT! -->

> [!NOTE]
> This is one of 192 standalone projects, maintained as part
> This is one of 193 standalone projects, maintained as part
> of the [@thi.ng/umbrella](https://github.com/thi-ng/umbrella/) monorepo

@@ -96,3 +96,3 @@ > and anti-framework.

Package sizes (brotli'd, pre-treeshake): ESM: 5.08 KB
Package sizes (brotli'd, pre-treeshake): ESM: 5.06 KB

@@ -112,19 +112,21 @@ ## Dependencies

| Screenshot | Description | Live demo | Source |
|:-------------------------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------------------|:---------------------------------------------------------|:--------------------------------------------------------------------------------------|
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/geom-sdf-logo.jpg" width="240"/> | (Re)Constructing the thi.ng logo using a 2D signed-distance field | [Demo](https://demo.thi.ng/umbrella/geom-sdf-logo/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/geom-sdf-logo) |
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/hdom-canvas/hdom-canvas-shapes-results.png" width="240"/> | Various hdom-canvas shape drawing examples & SVG conversion / export | [Demo](https://demo.thi.ng/umbrella/hdom-canvas-shapes/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/hdom-canvas-shapes) |
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/ifs-fractal.jpg" width="240"/> | Barnsley fern IFS fractal renderer | [Demo](https://demo.thi.ng/umbrella/ifs-fractal/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/ifs-fractal) |
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/pointfree-geom.jpg" width="240"/> | Live coding playground for 2D geometry generation using @thi.ng/pointfree-lang | [Demo](https://demo.thi.ng/umbrella/pointfree-geom/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/pointfree-geom) |
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/scenegraph.png" width="240"/> | 2D scenegraph & shape picking | [Demo](https://demo.thi.ng/umbrella/scenegraph/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/scenegraph) |
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/scenegraph-image.png" width="240"/> | 2D scenegraph & image map based geometry manipulation | [Demo](https://demo.thi.ng/umbrella/scenegraph-image/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/scenegraph-image) |
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/shader-graph.jpg" width="240"/> | Minimal shader graph developed during livestream #2 | [Demo](https://demo.thi.ng/umbrella/shader-graph/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/shader-graph) |
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/simd-plot.png" width="240"/> | Fitting, transforming & plotting 10k data points per frame using SIMD | [Demo](https://demo.thi.ng/umbrella/simd-plot/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/simd-plot) |
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/soa-ecs-100k.png" width="240"/> | Entity Component System w/ 100k 3D particles | [Demo](https://demo.thi.ng/umbrella/soa-ecs/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/soa-ecs) |
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/text-canvas.png" width="240"/> | 3D wireframe textmode demo | [Demo](https://demo.thi.ng/umbrella/text-canvas/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/text-canvas) |
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/unbiased-normals.png" width="240"/> | Visual comparison of biased vs. unbiased normal vectors projected on the surface of a sphere | [Demo](https://demo.thi.ng/umbrella/unbiased-normals/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/unbiased-normals) |
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/webgl-cube.png" width="240"/> | WebGL multi-colored cube mesh | [Demo](https://demo.thi.ng/umbrella/webgl-cube/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/webgl-cube) |
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/webgl-cubemap.jpg" width="240"/> | WebGL cube maps with async texture loading | [Demo](https://demo.thi.ng/umbrella/webgl-cubemap/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/webgl-cubemap) |
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/webgl-grid.jpg" width="240"/> | WebGL instancing, animated grid | [Demo](https://demo.thi.ng/umbrella/webgl-grid/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/webgl-grid) |
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/webgl-msdf.jpg" width="240"/> | WebGL MSDF text rendering & particle system | [Demo](https://demo.thi.ng/umbrella/webgl-msdf/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/webgl-msdf) |
| Screenshot | Description | Live demo | Source |
|:-------------------------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------------------|:-------------------------------------------------------------|:------------------------------------------------------------------------------------------|
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/geom-sdf-logo.jpg" width="240"/> | (Re)Constructing the thi.ng logo using a 2D signed-distance field | [Demo](https://demo.thi.ng/umbrella/geom-sdf-logo/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/geom-sdf-logo) |
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/geom-webgl-attrib-pool.jpg" width="240"/> | Augmenting thi.ng/geom shapes for WebGL, using instancing & attribute buffers | [Demo](https://demo.thi.ng/umbrella/geom-webgl-attrib-pool/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/geom-webgl-attrib-pool) |
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/geom-webgl-basics.jpg" width="240"/> | Converting thi.ng/geom shape types for WebGL | [Demo](https://demo.thi.ng/umbrella/geom-webgl-basics/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/geom-webgl-basics) |
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/hdom-canvas/hdom-canvas-shapes-results.png" width="240"/> | Various hdom-canvas shape drawing examples & SVG conversion / export | [Demo](https://demo.thi.ng/umbrella/hdom-canvas-shapes/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/hdom-canvas-shapes) |
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/ifs-fractal.jpg" width="240"/> | Barnsley fern IFS fractal renderer | [Demo](https://demo.thi.ng/umbrella/ifs-fractal/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/ifs-fractal) |
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/pointfree-geom.jpg" width="240"/> | Live coding playground for 2D geometry generation using @thi.ng/pointfree-lang | [Demo](https://demo.thi.ng/umbrella/pointfree-geom/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/pointfree-geom) |
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/scenegraph.png" width="240"/> | 2D scenegraph & shape picking | [Demo](https://demo.thi.ng/umbrella/scenegraph/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/scenegraph) |
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/scenegraph-image.png" width="240"/> | 2D scenegraph & image map based geometry manipulation | [Demo](https://demo.thi.ng/umbrella/scenegraph-image/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/scenegraph-image) |
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/shader-graph.jpg" width="240"/> | Minimal shader graph developed during livestream #2 | [Demo](https://demo.thi.ng/umbrella/shader-graph/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/shader-graph) |
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/simd-plot.png" width="240"/> | Fitting, transforming & plotting 10k data points per frame using SIMD | [Demo](https://demo.thi.ng/umbrella/simd-plot/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/simd-plot) |
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/soa-ecs-100k.png" width="240"/> | Entity Component System w/ 100k 3D particles | [Demo](https://demo.thi.ng/umbrella/soa-ecs/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/soa-ecs) |
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/text-canvas.png" width="240"/> | 3D wireframe textmode demo | [Demo](https://demo.thi.ng/umbrella/text-canvas/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/text-canvas) |
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/unbiased-normals.png" width="240"/> | Visual comparison of biased vs. unbiased normal vectors projected on the surface of a sphere | [Demo](https://demo.thi.ng/umbrella/unbiased-normals/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/unbiased-normals) |
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/webgl-cube.png" width="240"/> | WebGL multi-colored cube mesh | [Demo](https://demo.thi.ng/umbrella/webgl-cube/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/webgl-cube) |
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/webgl-cubemap.jpg" width="240"/> | WebGL cube maps with async texture loading | [Demo](https://demo.thi.ng/umbrella/webgl-cubemap/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/webgl-cubemap) |
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/webgl-grid.jpg" width="240"/> | WebGL instancing, animated grid | [Demo](https://demo.thi.ng/umbrella/webgl-grid/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/webgl-grid) |
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/webgl-msdf.jpg" width="240"/> | WebGL MSDF text rendering & particle system | [Demo](https://demo.thi.ng/umbrella/webgl-msdf/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/webgl-msdf) |

@@ -131,0 +133,0 @@ ## API

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc