Performance optimizations: sound caching, renderer culling, entity and lighting improvements
- Sound engine: cache filesystem probe results to avoid repeated file existence checks; add MA_SOUND_FLAG_DECODE for pre-decoded playback - Level renderer: column-level frustum culling, compact visible chunk lists to skip empty iteration, lightweight second-pass render path, early-out for non-dirty chunks, scaled recheck period at high render distances - Entity: cache shared_from_this() to reduce reference counting overhead in move() and checkInsideTiles() - Level: skip checkLight() when tile light properties unchanged; enable entity locking on all platforms (not just Vita) - LevelChunk: only rescan min height when the minimum column changes; defer lightGap processing - LivingEntity: use raw pointer cast instead of dynamic_pointer_cast; cache friction tile lookup - ServerPlayerGameMode: return whether block was destroyed to avoid redundant tile update packets
This commit is contained in:
@@ -83,6 +83,7 @@ private:
|
||||
void resortChunks(int xc, int yc, int zc);
|
||||
public:
|
||||
int render(shared_ptr<LivingEntity> player, int layer, double alpha, bool updateChunks);
|
||||
void renderChunksDirect(int layer, double alpha);
|
||||
private:
|
||||
int renderChunks(int from, int to, int layer, double alpha);
|
||||
public:
|
||||
@@ -270,6 +271,12 @@ public:
|
||||
|
||||
XLockFreeStack<int> dirtyChunksLockFreeStack;
|
||||
|
||||
// Visible chunk lists built by cull(), consumed by renderChunks()
|
||||
int *visibleLists_layer0;
|
||||
int *visibleLists_layer1;
|
||||
int visibleCount_layer0;
|
||||
int visibleCount_layer1;
|
||||
|
||||
bool dirtyChunkPresent;
|
||||
int64_t lastDirtyChunkFound;
|
||||
static const int FORCE_DIRTY_CHUNK_CHECK_PERIOD_MS = 125; // decreased from 250 to 125 - updated by detectiveren
|
||||
|
||||
Reference in New Issue
Block a user