From 081fd6945c8413cdf4afd05a8180816e3df7b6f1 Mon Sep 17 00:00:00 2001 From: Sean Barrett Date: Wed, 1 Apr 2015 06:08:36 -0700 Subject: [PATCH] comment tweaks --- docs/stb_voxel_render_interview.md | 47 ++++++++++++++++++++++++++---- stb_voxel_render.h | 15 +++++----- 2 files changed, 49 insertions(+), 13 deletions(-) diff --git a/docs/stb_voxel_render_interview.md b/docs/stb_voxel_render_interview.md index 7448efc..4e6b7aa 100644 --- a/docs/stb_voxel_render_interview.md +++ b/docs/stb_voxel_render_interview.md @@ -60,10 +60,12 @@ environments. And I'm sure there are other possible benefits to using voxels/blocks. Hopefully this will make it easier for people to explore the space. -Also, the library has a pretty wide range of features to allow +The library has a pretty wide range of features to allow people to come up with some distinctive looks. For example, -the art style of Continue?9876543210. I'm terrible at art, -so this isn't really my thing, but I tried to put in flexible +the art style of Continue?9876543210 was one of the inspirations +for trying to make the multitexturing capabilities flexible. +I'm terrible at art, so this isn't really something I can +come up with myself, but I tried to put in flexible technology that could be used multiple ways. One thing I did intentionally was try to make it possible to @@ -81,6 +83,35 @@ else with it. E.g. in your authoring tool (or procedural generation) you can make smooth ground and then cut a sharp-edged hole in it for a building's basement or whatever. +Another thing you can do is work at a very different scale. +In Minecraft, a person is just under 2 blocks tall. In +Ace of Spades, a person is just under 3 blocks tall. Why +not 4 or 6? Well, partly because you just need a lot more +voxels; if a meter is 2 voxels in Mineraft and 4 voxels in +your game, and you draw the same number of voxels due to +hardware limits, then your game has half the view distance +of Minecraft. Since stb_voxel_render is designed to keep +the meshes small and render efficiently, you can push the +view distance out further than Minecraft--or use a similar +view distance and a higher voxel resolution. You could also +stop making infinite worlds and work at entirely different +scales; where Minecraft is 1 voxel per meter, you could +have 20 voxels per meter and make a small arena that's +50 meters wide and 5 meters tall. + +Back when the voxel game Voxatron was announced, the weekend +after the trailer came out I wrote my own little GPU-accelerated +version of the engine and thought that was pretty cool. I've +been tempted many times to extract that and release it, but +I don't want to steal Voxatron's thunder so I've avoided +it. You could use this engine to do the same kind of thing, +although it won't be as efficient as an engine dedicated to +that style of thing would be. (For example, if you're building +the whole mesh from scratch every frame--which you should do +because you want to enable that worst case--you can skip +creating voxel faces that face away from the camera, since +they can never be seen.) + **Q:** What one thing would you really like to see somebody do? @@ -99,7 +130,10 @@ and all of that stuff. So what I'd really like to see is someone build some kind of voxel-game-construction-set. Start with stb_voxel_render, maybe expose all the flexibility of stb_voxel_render (so -people +people can do different things). Thrown in lua or something +else for scripting, make some kind of editor that feels +at least as good as Minecraft and Infinifactory, and see +where that gets you. **Q:** Why'd you make this library? @@ -130,9 +164,10 @@ About the release video... how long did that take to edit? **A:** About seven or eight hours. I had the first version done in -maybe six or sevent hours, but then I realized I'd left out +maybe six or seven hours, but then I realized I'd left out one clip, and when I went back to add it I also gussied up -a couple other moments in the video. +a couple other moments in the video. But there was something +basically identical to it that was done in around six. **Q:** Ok, that's it. Thanks, me. diff --git a/stb_voxel_render.h b/stb_voxel_render.h index 498aa64..61680b7 100644 --- a/stb_voxel_render.h +++ b/stb_voxel_render.h @@ -4,11 +4,11 @@ // in this case, one with blocks that can have textures and that // can also be a few shapes other than cubes. // -// Video introduction: -// http://www.youtube.com/watch?v=2vnTtiLrV1w +// Video introduction: +// http://www.youtube.com/watch?v=2vnTtiLrV1w // -// Minecraft-viewer sample app: -// http://github.com/nothings/stb/tree/master/tests/caveview +// Minecraft-viewer sample app (not very simple though): +// http://github.com/nothings/stb/tree/master/tests/caveview // // It works by creating triangle meshes. The library includes // @@ -552,7 +552,7 @@ struct stbvox_uniform_info #if 0 // Run this once per frame before drawing all the meshes. -// You still need to set the 'transform' uniform for every mesh, etc. +// You still need to separately set the 'transform' uniform for every mesh. void setup_uniforms(GLuint shader, float camera_pos[4], GLuint tex1, GLuint tex2) { int i; @@ -938,8 +938,9 @@ struct stbvox_input_description // vheight values to use if the geometry is STBVOX_GEOM_vheight*. // See the vheight discussion. }; -// @OPTIMIZE when specializing, build a single struct with all of the -// 3D-indexed so it's AoS instead of SoA for better cache efficiency +// @OPTIMIZE allow specializing; build a single struct with all of the +// 3D-indexed arrays combined so it's AoS instead of SoA for better +// cache efficiency enum