Super performance fixer!
Rotations no longer have any significant performance hit. Allocate rotated array once during rotation instead of during every chunk render.
This commit is contained in:
@@ -43,11 +43,6 @@ existing bug that will not let you click on a sign in some cases. This is a
|
||||
bang-head-on-desk sort of thing, I should be able to find it but I just haven't
|
||||
yet. It does seem to work fine on my actual SMP map, for what that's worth.
|
||||
|
||||
It's slow! One of the rotation methods is very, very inefficient. It needs to be
|
||||
rewritten, but I don't seem to be smart enough to do it right now. I must
|
||||
investigate! On my SMP map the initial render took 30% longer vs the official
|
||||
Minecraft Overviewer. Totally worth it, though.
|
||||
|
||||
So far only blocks where direction is important (minecart tracks, doors, signs,
|
||||
etc) rotate. Blocks like grass, stone, gravel, etc do not, however for the most
|
||||
part it isn't noticeable because they look very similar no matter which
|
||||
|
||||
@@ -153,18 +153,18 @@ class World(object):
|
||||
data = nbt.read_all()
|
||||
level = data[1]['Level']
|
||||
chunk_data = level
|
||||
chunk_data['Blocks'] = numpy.rot90(numpy.frombuffer(
|
||||
chunk_data['Blocks'] = numpy.array(numpy.rot90(numpy.frombuffer(
|
||||
level['Blocks'], dtype=numpy.uint8).reshape((16,16,128)),
|
||||
self._get_north_rotations())
|
||||
chunk_data['Data'] = numpy.rot90(numpy.frombuffer(
|
||||
self._get_north_rotations()))
|
||||
chunk_data['Data'] = numpy.array(numpy.rot90(numpy.frombuffer(
|
||||
level['Data'], dtype=numpy.uint8).reshape((16,16,64)),
|
||||
self._get_north_rotations())
|
||||
chunk_data['SkyLight'] = numpy.rot90(numpy.frombuffer(
|
||||
self._get_north_rotations()))
|
||||
chunk_data['SkyLight'] = numpy.array(numpy.rot90(numpy.frombuffer(
|
||||
level['SkyLight'], dtype=numpy.uint8).reshape((16,16,64)),
|
||||
self._get_north_rotations())
|
||||
chunk_data['BlockLight'] = numpy.rot90(numpy.frombuffer(
|
||||
self._get_north_rotations()))
|
||||
chunk_data['BlockLight'] = numpy.array(numpy.rot90(numpy.frombuffer(
|
||||
level['BlockLight'], dtype=numpy.uint8).reshape((16,16,64)),
|
||||
self._get_north_rotations())
|
||||
self._get_north_rotations()))
|
||||
#chunk_data = {}
|
||||
#chunk_data['skylight'] = chunk.get_skylight_array(level)
|
||||
#chunk_data['blocklight'] = chunk.get_blocklight_array(level)
|
||||
|
||||
Reference in New Issue
Block a user