parent
c27a6c6c36
commit
0cd5465f52
2 changed files with 75 additions and 75 deletions
@ -0,0 +1,75 @@ |
|||||||
|
# FAQ |
||||||
|
|
||||||
|
### How accurate is this as a Minecraft viewer? |
||||||
|
|
||||||
|
Not very. Many Minecraft blocks are not handled correctly: |
||||||
|
|
||||||
|
* No redstone, rails, or other "flat" blocks |
||||||
|
* No signs, doors, fences, carpets, or other complicated geometry |
||||||
|
* Stairs are turned into ramps |
||||||
|
* Upper slabs turn into lower slabs |
||||||
|
* Only one wood type |
||||||
|
* Colored glass becomes regular glass |
||||||
|
* Glass panes become glass blocks |
||||||
|
* Water level is incorrect |
||||||
|
* No biome coloration |
||||||
|
* Cactus is not shrunk, shows holes |
||||||
|
* Chests are not shrunk |
||||||
|
* Chests, pumpkins, etc. are not rotated properly |
||||||
|
* Torches are drawn hackily, do not attach to walls |
||||||
|
* Incorrect textures for blocks that postdate terrain.png |
||||||
|
* Transparent textures have black fringes due to non-premultiplied-alpha |
||||||
|
* Only blocks at y=1..255 are shown (not y=0) |
||||||
|
* If a 32x32x256 "quad-chunk" needs more than 800K quads, isn't handled (very unlikely) |
||||||
|
|
||||||
|
Some of these are due to engine limitations, and some of |
||||||
|
these are because I didn't make the effort since my |
||||||
|
goal was to make a demo for stb_voxel_render.h, not |
||||||
|
to make a proper Minecraft viewer. |
||||||
|
|
||||||
|
|
||||||
|
### Could this be turned into a proper Minecraft viewer? |
||||||
|
|
||||||
|
Yes and no. Yes, you could do it, but no, it wouldn't |
||||||
|
really resemble this code that much anymore. |
||||||
|
|
||||||
|
You could certainly use this engine to |
||||||
|
render the parts of Minecraft it works for, but many |
||||||
|
of the things it doesn't handle it can't handle at all |
||||||
|
(stairs, water, fences, carpets, etc) because it uses |
||||||
|
low-precision coordinates to store voxel data. |
||||||
|
|
||||||
|
You would have to render all of the stuff it doesn't |
||||||
|
handle through another rendering path. In a game (not |
||||||
|
a viewer) you would need such a path for movable entities |
||||||
|
like doors and carts anyway, so possibly handling other |
||||||
|
things that way wouldn't be so bad. |
||||||
|
|
||||||
|
Rails, ladders, and redstone lines could be implemented by |
||||||
|
using tex2 to overlay those effects, but you can't rotate |
||||||
|
tex1 and tex2 independently, so you'd have to have a |
||||||
|
separate texture for each orientation of rail, etc, and |
||||||
|
you'd need special rendering for rail up/down sections. |
||||||
|
|
||||||
|
You can use the face-color effect to do biome coloration, |
||||||
|
but the change won't be smooth the way it is in Minecraft. |
||||||
|
|
||||||
|
|
||||||
|
### Why isn't building the mesh data faster? |
||||||
|
|
||||||
|
Partly because converting from minecraft data is expensive. |
||||||
|
|
||||||
|
Here is the approximate breakdown of an older version |
||||||
|
of this executable and lib that did the building single-threaded, |
||||||
|
and was a bit slower at building mesh data. |
||||||
|
|
||||||
|
* 25% loading & parsing minecraft files (4/5ths of this is my zlib) |
||||||
|
* 18% converting from minecraft blockids & lighting to stb blockids & lighting |
||||||
|
* 10% reordering from data[z][y]\[x] (minecraft-style) to data[y][x]\[z] (stb-style) |
||||||
|
* 40% building mesh data |
||||||
|
* 7% uploading mesh data to OpenGL |
||||||
|
|
||||||
|
I did do significant optimizations after the above, so the |
||||||
|
final breakdown is different, but it should give you some |
||||||
|
sense of the costs. |
||||||
|
|
Loading…
Reference in New Issue