Research
Security News
Threat Actor Exposes Playbook for Exploiting npm to Build Blockchain-Powered Botnets
A threat actor's playbook for exploiting the npm ecosystem was exposed on the dark web, detailing how to build a blockchain-powered botnet.
WebGL class for rendering static indexed geometry
var shell = require("gl-now")()
var createMesh = require("gl-mesh")
var simple2DShader = require("simple-2d-shader")
var mesh, shader
shell.on("gl-init", function() {
shader = simple2DShader(shell.gl)
mesh = createMesh(shell.gl,
[[0, 1, 2],
[2, 1, 3]],
{ "position": [[-1,-1], [0, 1], [0, 0], [1, -1]],
"color": [[1, 0, 0], [0, 1, 0], [0, 0, 1], [1, 1, 1]] })
})
shell.on("gl-render", function(t) {
shader.bind()
mesh.bind(shader)
mesh.draw()
mesh.unbind()
})
And here is what it should look like:
<img src=https://raw.github.com/mikolalysenko/gl-mesh/master/images/screenshot.png>
Use npm to install it locally:
npm install gl-mesh
Then you can build/run the client using any tool that compiles CommonJS modules, for example browserify or beefy.
var createMesh = require("gl-mesh")
var mesh = createMesh(gl, cells, attributes)
Creates a static mesh.
gl
is a webgl contextcells
is a list of representing indices into the geometryattributes
is an object of attributes to pass to the meshEach of these objects can be encoded as either an array-of-native-arrays or as a typed array using ndarrays. The first dimension in the shape is interepreted as the number of vertices in the attribute while the second dimension is interpreted as the size. For example, to pass in a packed array of 3d vertices in a typed array you could do:
var mesh = createMesh(gl, cells, { "positions": ndarray(position_data, [numVertices, 3]) })
The drawing mode for the mesh is determined by the shape of the cells according to the following rule:
cells.length == 0
: empty meshcells[0].length == 1
: gl.POINTS
cells[0].length == 2
: gl.LINES
cells[0].length == 3
: gl.TRIANGLES
You can also skip the cells
parameter, in which case the resulting mesh is drawn as a point cloud.
Also you can pass a single object with a cells
field. For example, here is the quickest way to create a Stanford bunny test mesh:
var bunnyMesh = createMesh(gl, require("bunny"))
Where the module comes from the bunny
package
Returns A Mesh
object
Each Mesh
object has the following methods:
mesh.bind(shader)
Binds the mesh to the given shader updating attributes accordingly.
shader
is an instance of a shader created using gl-shader
mesh.draw()
Draws an instance of the mesh once it is bound to a shader
mesh.unbind()
Unbinds the mesh releasing the current vertex attribute state
mesh.dispose()
Destroys the mesh and releases all of its associated resources
(c) 2013 Mikola Lysenko. MIT License
FAQs
Static indexed mesh drawing for WebGL
The npm package gl-mesh receives a total of 7 weekly downloads. As such, gl-mesh popularity was classified as not popular.
We found that gl-mesh demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A threat actor's playbook for exploiting the npm ecosystem was exposed on the dark web, detailing how to build a blockchain-powered botnet.
Security News
NVD’s backlog surpasses 20,000 CVEs as analysis slows and NIST announces new system updates to address ongoing delays.
Security News
Research
A malicious npm package disguised as a WhatsApp client is exploiting authentication flows with a remote kill switch to exfiltrate data and destroy files.