npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

v128

v0.3.4

Published

WebAssembly & Javascript module for fast 3D matrix vector calculations using SIMD vector 128 bits.

Downloads

120

Readme

v128

v128 is an high performance javascript library for 3D matrix vector calculations using 128 bits vector type from WebAssembly

Installation :

npm install v128

Getting started

Web browser :

	<script src="node_module/v128/dist/v128-min.js"></script>

Node.js :

const {v128} = require("v128");
await v128.init(4);
let cameraPos = v128.vector.new(0,2.5,-4);
let center = v128.vector.new(0,0,0);
let up = v128.vector.new(0,1,0);
let viewMatrix = v128.matrix.lookAt(cameraPos,center,up,v128.matrix.new());
let projectionMatrix = v128.matrix.perspective(Math.PI/2,4/3,0.1,1000,v128.matrix.new());
let viewProjection = v128.matrix.multiply(viewMatrix, projectionMatrix,v128.matrix.new());

WebGL compatibility :

gl.uniformMatrix4fv(projectionLocation, false, v128.memory.toArray(projectionMatrix));

How to build :

prerequisite :

step to build : just type :

 > make

API Reference

v128 : object

WebAssembly & Javascript module fast matrix vector calculations using SIMD vector 128 bits.

Kind: global namespace

v128.ready : Promise

Promise resolve when API is ready

Kind: static property of v128

v128.memory : object

memory API

Kind: static namespace of v128

memory.randomize()

Randomize all the memory

Kind: instance method of memory

memory.alloc(size) ⇒ UInt32

allocate float memory array

Kind: instance method of memory
Returns: UInt32 - the pointer from v128 memory

| Param | Type | Description | | --- | --- | --- | | size | Number | the number of float to allocate |

memory.free(pointer)

free float memory

Kind: instance method of memory

| Param | Type | Description | | --- | --- | --- | | pointer | UInt32 | the pointer to free |

memory.fill(pointer, ...vals)

fill float memory with given values

Kind: instance method of memory

| Param | Type | Description | | --- | --- | --- | | pointer | UInt32 | | | ...vals | Numbers | number values to fill |

memory.slice(pointer) ⇒ Float32Array

get copy of portion float memory

Kind: instance method of memory

| Param | Type | | --- | --- | | pointer | UInt32 |

memory.toArray(pointer) ⇒ Float32Array

get read/write access of portion float memory

Kind: instance method of memory

| Param | Type | | --- | --- | | pointer | UInt32 |

v128.matrix : object

matrix API

Kind: static namespace of v128

matrix.new(...vals) ⇒ UInt32

fast create new matrix from initial values

Kind: instance method of matrix
Returns: UInt32 - the pointer to new matrix

| Param | Type | Description | | --- | --- | --- | | ...vals | Numbers | number values to fill into matrix |

matrix.free(pointer)

free the matrix

Kind: instance method of matrix

| Param | Type | Description | | --- | --- | --- | | pointer | UInt32 | the pointer of matrix to free |

matrix.identity([pMatDest]) ⇒

set or create matrix identity

Kind: instance method of matrix
Returns: the pointer of matrix identity

| Param | Type | Description | | --- | --- | --- | | [pMatDest] | UInt32 | the pointer of matrix to set |

matrix.multiply(pMatA, pMatB, pMatDest) ⇒ UInt32

fast multiply 2 matrix (WebAssembly method)

Kind: instance method of matrix
Returns: UInt32 - the pointer to result matrix A*B

| Param | Type | Description | | --- | --- | --- | | pMatA | UInt32 | pointer of matrix A | | pMatB | UInt32 | pointer of matrix B | | pMatDest | UInt32 | pointer of result matrix A*B |

matrix.transform(pMat, pVec, pVecDest) ⇒ UInt32

fast multiply matrix * vector (WebAssembly method)

Kind: instance method of matrix
Returns: UInt32 - the pointer to result transformed vector

| Param | Type | Description | | --- | --- | --- | | pMat | UInt32 | pointer of matrix | | pVec | UInt32 | pointer of vector | | pVecDest | UInt32 | pointer of result transformed vector (matrix * vector) |

matrix.lookAt(pCamPos, pTargetPos, pUpAxis, pMatDest) ⇒ UInt32

fast create view matrix from camera position & target position (WebAssembly method)

Kind: instance method of matrix
Returns: UInt32 - the pointer to result view matrix

| Param | Type | Description | | --- | --- | --- | | pCamPos | UInt32 | pointer of camera position | | pTargetPos | UInt32 | pointer of target position | | pUpAxis | UInt32 | pointer of up axis | | pMatDest | UInt32 | pointer of result view matrix |

matrix.invert(pMat, pMatDest) ⇒ UInt32

fast invert matrix (WebAssembly method)

Kind: instance method of matrix
Returns: UInt32 - the pointer to inversed matrix

| Param | Type | Description | | --- | --- | --- | | pMat | UInt32 | pointer of th matrix | | pMatDest | UInt32 | pointer of inversed matrix |

matrix.perspective(fovy, aspect, near, far, pMatDest) ⇒ UInt32

create projection matrix from perspective data

Kind: instance method of matrix
Returns: UInt32 - the pointer to result projection matrix

| Param | Type | Description | | --- | --- | --- | | fovy | number | Vertical field of view in radians | | aspect | number | Aspect ratio. typically viewport width/height | | near | number | Near clipping bound of the frustum | | far | number | Far clipping bound of the frustum | | pMatDest | UInt32 | pointer of result projection matrix |

matrix.fromTranslation(pVec, pMatDest) ⇒ UInt32

Creates a matrix from a vector translation

Kind: instance method of matrix
Returns: UInt32 - the pointer to result translated matrix

| Param | Type | Description | | --- | --- | --- | | pVec | UInt32 | pointer of Translation vector | | pMatDest | UInt32 | pointer of result translated matrix |

matrix.fromScaling(pVec, pMatDest) ⇒ UInt32

Creates a matrix from a vector scaling

Kind: instance method of matrix
Returns: UInt32 - the pointer to result scaled matrix

| Param | Type | Description | | --- | --- | --- | | pVec | UInt32 | pointer of scaling vector | | pMatDest | UInt32 | pointer of result scaled matrix |

matrix.fromXRotation(rad, pMatDest) ⇒ UInt32

Creates a matrix from the given angle around the X axis

Kind: instance method of matrix
Returns: UInt32 - the pointer to result rotated matrix

| Param | Type | Description | | --- | --- | --- | | rad | Number | the angle to rotate the matrix by | | pMatDest | UInt32 | pointer of result rotated matrix |

matrix.fromYRotation(rad, pMatDest) ⇒ UInt32

Creates a matrix from the given angle around the Y axis

Kind: instance method of matrix
Returns: UInt32 - the pointer to result rotated matrix

| Param | Type | Description | | --- | --- | --- | | rad | Number | the angle to rotate the matrix by | | pMatDest | UInt32 | pointer of result rotated matrix |

matrix.fromZRotation(rad, pMatDest) ⇒ UInt32

Creates a matrix from the given angle around the Z axis

Kind: instance method of matrix
Returns: UInt32 - the pointer to result rotated matrix

| Param | Type | Description | | --- | --- | --- | | rad | Number | the angle to rotate the matrix by | | pMatDest | UInt32 | pointer of result rotated matrix |

matrix.rotateX(pMat, angle, pMatDest) ⇒ UInt32

Rotates a matrix by the given angle around the X axis

Kind: instance method of matrix
Returns: UInt32 - the pointer of the receiving matrix

| Param | Type | Description | | --- | --- | --- | | pMat | UInt32 | pointer of matrix to rotate | | angle | Number | the angle in radian to rotate the matrix by | | pMatDest | UInt32 | pointer of the receiving matrix |

matrix.rotateY(pMat, angle, pMatDest) ⇒ UInt32

Rotates a matrix by the given angle around the Y axis

Kind: instance method of matrix
Returns: UInt32 - the pointer of the receiving matrix

| Param | Type | Description | | --- | --- | --- | | pMat | UInt32 | pointer of matrix to rotate | | angle | Number | the angle in radian to rotate the matrix by | | pMatDest | UInt32 | pointer of the receiving matrix |

matrix.rotateZ(pMat, angle, pMatDest) ⇒ UInt32

Rotates a matrix by the given angle around the Z axis

Kind: instance method of matrix
Returns: UInt32 - the pointer of the receiving matrix

| Param | Type | Description | | --- | --- | --- | | pMat | UInt32 | pointer of matrix to rotate | | angle | Number | the angle in radian to rotate the matrix by | | pMatDest | UInt32 | pointer of the receiving matrix |

matrix.rotateX(pMat, pVec, pMatDest) ⇒ UInt32

Translates a matrix by the given vector

Kind: instance method of matrix
Returns: UInt32 - the pointer of the receiving matrix

| Param | Type | Description | | --- | --- | --- | | pMat | UInt32 | pointer of matrix to translate | | pVec | Number | pointer of vector to translate by | | pMatDest | UInt32 | pointer of the receiving matrix |

v128.vector : object

vector API

Kind: static namespace of v128

vector.new(...vals) ⇒ UInt32

fast create new vector from initial values

Kind: instance method of vector
Returns: UInt32 - the pointer to new vector

| Param | Type | Description | | --- | --- | --- | | ...vals | Numbers | number values to fill into vector |

vector.free(pointer)

free the vector

Kind: instance method of vector

| Param | Type | Description | | --- | --- | --- | | pointer | UInt32 | the pointer of vector to free |

vector.length(pVec) ⇒ Number

get fast length of 3D Homogeneous coordinates vector (WebAssembly method)

Kind: instance method of vector
Returns: Number - the length of vector

| Param | Type | Description | | --- | --- | --- | | pVec | UInt32 | pointer of vector |

vector.normalize(pVec, pVecDest) ⇒ UInt32

fast normalize 3D Homogeneous coordinates vector (WebAssembly method)

Kind: instance method of vector
Returns: UInt32 - the pointer of normalized vector

| Param | Type | Description | | --- | --- | --- | | pVec | UInt32 | pointer of vector | | pVecDest | UInt32 | pointer of receive normalized vector |

vector.add(pVecA, pVecB, pVecDest) ⇒ UInt32

fast add two 3D Homogeneous coordinates vector (WebAssembly method)

Kind: instance method of vector
Returns: UInt32 - the pointer of result vector

| Param | Type | Description | | --- | --- | --- | | pVecA | UInt32 | pointer of vector A | | pVecB | UInt32 | pointer of vector B | | pVecDest | UInt32 | pointer of receive sum result vector ( A + B ) |

vector.sub(pVecA, pVecB, pVecDest) ⇒ UInt32

fast sub two 3D Homogeneous coordinates vector (WebAssembly method)

Kind: instance method of vector
Returns: UInt32 - the pointer of result vector

| Param | Type | Description | | --- | --- | --- | | pVecA | UInt32 | pointer of vector A | | pVecB | UInt32 | pointer of vector B | | pVecDest | UInt32 | pointer of receive sum result vector ( A - B ) |

vector.mul(pVecA, pVecB, pVecDest) ⇒ UInt32

fast multiply two 3D Homogeneous coordinates vector (WebAssembly method)

Kind: instance method of vector
Returns: UInt32 - the pointer of result vector

| Param | Type | Description | | --- | --- | --- | | pVecA | UInt32 | pointer of vector A | | pVecB | UInt32 | pointer of vector B | | pVecDest | UInt32 | pointer of receive multiply result vector ( A * B ) |

vector.div(pVecA, pVecB, pVecDest) ⇒ UInt32

fast divide two 3D Homogeneous coordinates vector (WebAssembly method)

Kind: instance method of vector
Returns: UInt32 - the pointer of result vector

| Param | Type | Description | | --- | --- | --- | | pVecA | UInt32 | pointer of vector A | | pVecB | UInt32 | pointer of vector B | | pVecDest | UInt32 | pointer of receive divide result vector ( A / B ) |

vector.cross(pVecA, pVecB, pVecDest) ⇒ UInt32

fast cross product of two 3D Homogeneous coordinates vector (WebAssembly method)

Kind: instance method of vector
Returns: UInt32 - the pointer of result vector

| Param | Type | Description | | --- | --- | --- | | pVecA | UInt32 | pointer of vector A | | pVecB | UInt32 | pointer of vector B | | pVecDest | UInt32 | pointer of receive cross product result vector ( A.B ) |

vector.dot(pVecA, pVecB) ⇒ Number

fast dot product of two 3D Homogeneous coordinates vector (WebAssembly method)

Kind: instance method of vector
Returns: Number - the pointer of result vector

| Param | Type | Description | | --- | --- | --- | | pVecA | UInt32 | pointer of vector A | | pVecB | UInt32 | pointer of vector B |

vector.scale(pVec, scale, pVecDest) ⇒ UInt32

fast scale vector by a scalar number

Kind: instance method of vector
Returns: UInt32 - the pointer of result vector

| Param | Type | Description | | --- | --- | --- | | pVec | UInt32 | pointer of vector to scale | | scale | Number | amount to scale the vector by | | pVecDest | UInt32 | pointer of receive result vector |

v128.uniformBlock : object

WebGL2 Uniform Buffer Objects API (UBOs) using std140 layout.

Kind: static namespace of v128

v128.vertexBuffer : object

WebGL Vertex Buffer Objects API (VBOs)

Kind: static namespace of v128

v128.init(size) ⇒ Promise

Initialize the v128 API

Kind: static method of v128
Returns: Promise - resolve when API is ready

| Param | Type | Description | | --- | --- | --- | | size | Number | the number of page for v128 Memory (page = 64Kb) |