Browse Source

Add auto padding to MeshBatch.hx.

clementlandrin 1 year ago
parent
commit
90a093bec6
1 changed files with 16 additions and 2 deletions
  1. 16 2
      h3d/scene/MeshBatch.hx

+ 16 - 2
h3d/scene/MeshBatch.hx

@@ -364,9 +364,23 @@ class MeshBatch extends MultiMaterial {
 					pl.sort(function(p1,p2) return p1.pos - p2.pos);
 					var fmt : Array<hxd.BufferFormat.BufferInput> = [];
 					var curPos = 0;
+					var paddingIndex = 0;
 					for( p in pl ) {
-						if( curPos != p.pos )
-							throw "Buffer has padding";
+						var paddingSize = p.pos - curPos;
+						if ( paddingSize > 0 ) {
+							var paddingType : hxsl.Ast.Type = switch ( paddingSize ) {
+							case 0:
+								TFloat;
+							case 1,2,3:
+								TVec(paddingSize, VFloat);
+							default:
+								throw "Buffer has padding";
+							}
+							var t = hxd.BufferFormat.InputFormat.fromHXSL(paddingType);
+							fmt.push(new hxd.BufferFormat.BufferInput("padding_"+paddingIndex,t));
+							paddingIndex++;
+							curPos = p.pos;
+						}
 						var name = p.name;
 						var prev = fmt.length;
 						switch( p.type ) {