Wondering what’s next for npm?Check out our public roadmap! »


0.0.0 • Public • Published

surface-vectors experimental

Debug utility for drawing surface vectors in WebGL.

Useful for visualising normal/tangent/bitangent vectors across a mesh's surface.



If you're looking for a complete usage example, check out the demo and its source code.

sv = surfaceVectors(gl, cells, positions, vectors)

Prepare a pair of positions and vectors for rendering.

  • gl is the WebGL canvas context.
  • cells should be a list of element/face indices for your model: either a packed Float32Array, or a nested 2D array. See the bunny module's data for an example of this.
  • positions should a list of positions for your model: again, in either of the above formats.
  • vectors same format as positions and cells, instead containing the vectors to render from each point at the same index in positions.

sv.render(length, matrix, [color])

Draws the vectors to the screen.

  • length is the length at which to draw each vector.
  • matrix the matrix to multiply each position by. Ordinarily, you'd want this to be Projection * View * Model, like you would normally do shader-side.
  • color the color to use when drawing the vectors: a 3-element long array, and should contain RGB values from 0 to 1.


MIT. See LICENSE.md for details.


npm i surface-vectors

DownloadsWeekly Downloads






Last publish


  • avatar