A basic ray marching volume rendering module.
npm install raymarch
View this demo in your browser right now
var createVolumeRenderer = require("raymarch")
var shell = require("gl-now")()
var camera = require("game-shell-orbit-camera")(shell)
var glm = require("gl-matrix")
var voxelize = require("voxelize")
var bunny = require("bunny")
var ops = require("ndarray-ops")
camera.lookAt([3,0,0], [0,0,0], [0,1,0])
var viewer
shell.on("gl-init", function() {
var voxels = voxelize(bunny.cells, bunny.positions, 0.1).voxels
ops.mulseq(voxels, 255)
viewer = createVolumeRenderer(shell.gl, voxels)
})
shell.on("gl-render", function() {
viewer.projection = glm.mat4.perspective(new Float32Array(16), Math.PI/4.0, shell.width/shell.height, 0.01, 1000.0)
viewer.view = camera.view()
viewer.draw()
})
var createVolumeViewer = require("raymarch")
Creates a volume viewer object
The current model matrix for the viewer
The current view matrix for the viewer
The current projection matrix for the viewer
Draws the current volume to the screen
Releases all resources associated with this viewer.
(c) 2013 Mikola Lysenko. MIT License