load shaders at runtime
use Result to return shader errors
support reloading shaders at runtime
add keybinding to toggle mouse grab
pass length to gl::ShaderSource
use GLSL 1.2
store world coordinates in VBOs
move a matrix multiply out of the main loop
fix planet curvature by using untransformed block coords
use a single channel for the noise texture
move base block color to vertex shader
render mountaintops as stone
pass blocktype to vertex shader
generate stone mountaintops
sample noise texture twice at different scale