diff --git a/src/main/java/rs117/hd/renderer/zone/ModelStreamingManager.java b/src/main/java/rs117/hd/renderer/zone/ModelStreamingManager.java index eb759f614e..5c45001ea1 100644 --- a/src/main/java/rs117/hd/renderer/zone/ModelStreamingManager.java +++ b/src/main/java/rs117/hd/renderer/zone/ModelStreamingManager.java @@ -144,6 +144,14 @@ public int getDrawnDynamicRenderableCount() { return count; } + public boolean shouldSortModel(Renderable renderable, Model model, ModelOverride modelOverride) { + final int renderMode = renderable.getRenderMode(); + return model.getFaceTransparencies() != null + || modelOverride.mightHaveTransparency + || renderable instanceof Player + || (renderMode != Renderable.RENDERMODE_UNSORTED && renderMode != Renderable.RENDERMODE_DEFAULT); + } + public void drawTemp(Projection worldProjection, Scene scene, GameObject gameObject, Model m, int orientation, int x, int y, int z) { WorldViewContext ctx = sceneManager.getContext(scene); if (ctx == null || !sceneManager.isRoot(ctx) && ctx.isLoading || !renderCallbackManager.drawObject(scene, gameObject)) @@ -296,9 +304,8 @@ private void uploadTempModel( final PrimitiveCharArray visibleFaces = FACE_INDICES.acquire(); final PrimitiveCharArray culledFaces = FACE_INDICES.acquire(); - boolean shouldSort = - renderable.getRenderMode() == Renderable.RENDERMODE_SORTED || - renderable.getRenderMode() == Renderable.RENDERMODE_SORTED_NO_DEPTH; + + boolean shouldSort = shouldSortModel(renderable, m, modelOverride); boolean isPlayer = renderable instanceof Player; try ( SceneUploader sceneUploader = SceneUploader.POOL.acquire(); @@ -565,7 +572,7 @@ private void uploadDynamicModel( final PrimitiveCharArray visibleFaces = FACE_INDICES.acquire(); final PrimitiveCharArray culledFaces = FACE_INDICES.acquire(); - boolean shouldSort = renderable.getRenderMode() != Renderable.RENDERMODE_UNSORTED; + boolean shouldSort = shouldSortModel(renderable, m, modelOverride); try ( SceneUploader sceneUploader = SceneUploader.POOL.acquire(); FacePrioritySorter facePrioritySorter = shouldSort ? FacePrioritySorter.POOL.acquire() : null