Layer draw order

This commit is contained in:
luboslenco
2019-06-24 11:58:08 +02:00
parent 9a20e003a0
commit 4f48afbd53
+26 -13
View File
@@ -1032,21 +1032,22 @@ class MaterialBuilder {
frag.write('vec4 col_nor0;');
frag.write('vec4 col_pack0;');
frag.write('vec3 n0;');
var numLayers = 1;
for (i in 1...Project.layers.length) {
var len = Project.layers.length;
var start = len - 1;
var maxLayers = getMaxVisibleLayers();
var count = 1;
for (i in 1...len) {
if (start == 1) break;
start--;
var l = Project.layers[len - i];
if (l.visible) {
count++;
if (count >= maxLayers) break;
}
}
for (i in start...len) {
var l = Project.layers[i];
if (!l.visible) continue;
#if kha_direct3d11
// 128 texture slots available
// 4 textures per layer (3 + 1 mask)
// 32 layers - base + 31 on top
var maxLayers = 31;
#else
// 32 texture slots available
var maxLayers = 7;
#end
if (numLayers > maxLayers) break;
numLayers++;
var id = l.id;
if (l.objectMask > 0) {
@@ -1188,6 +1189,18 @@ class MaterialBuilder {
return con_mesh;
}
static function getMaxVisibleLayers():Int {
#if kha_direct3d11
// 128 texture slots available
// 4 textures per layer (3 + 1 mask)
// 32 layers - base + 31 on top
return 31;
#else
// 32 texture slots available
return 7;
#end
}
#if rp_voxelao
public static function make_voxel(data:iron.data.ShaderData.ShaderContext) {
var structure = new kha.graphics4.VertexStructure();