moisesjpelaez - General Fixes

This commit is contained in:
2025-09-19 18:15:23 +00:00
parent 7f58e0fc85
commit 0d2b152ccb

View File

@ -331,15 +331,18 @@ class RenderPath {
});
}
public static function sortMeshesShader(meshes: Array<MeshObject>) {
public static function sortMeshesIndex(meshes: Array<MeshObject>) {
meshes.sort(function(a, b): Int {
#if rp_depth_texture
var depthDiff = boolToInt(a.depthRead) - boolToInt(b.depthRead);
if (depthDiff != 0) return depthDiff;
#end
return a.materials[0].shader.sortingOrder >= b.materials[0].shader.sortingOrder ? 1 : -1;
});
if (a.data.sortingIndex != b.data.sortingIndex) {
return a.data.sortingIndex > b.data.sortingIndex ? 1 : -1;
}
return a.data.name >= b.data.name ? 1 : -1; });
}
public function drawMeshes(context: String) {
@ -399,7 +402,7 @@ class RenderPath {
#if lnx_batch
sortMeshesDistance(Scene.active.meshBatch.nonBatched);
#else
drawOrder == DrawOrder.Shader ? sortMeshesShader(meshes) : sortMeshesDistance(meshes);
drawOrder == DrawOrder.Index ? sortMeshesIndex(meshes) : sortMeshesDistance(meshes);
#end
meshesSorted = true;
}
@ -914,6 +917,6 @@ class CachedShaderContext {
@:enum abstract DrawOrder(Int) from Int {
var Distance = 0; // Early-z
var Shader = 1; // Less state changes
var Index = 1; // Less state changes
// var Mix = 2; // Distance buckets sorted by shader
}