Repe [T3DU] Update - 31f26d171bba0355ce2a77031e3aad4c64dbc7e9

This commit is contained in:
2026-09-04 10:46:13 -07:00
parent c915312901
commit 0460b9d587
482 changed files with 27797 additions and 3226 deletions

View File

@ -40,6 +40,8 @@ class Geometry {
public var instancedVB: VertexBuffer = null;
public var instanced = false;
public var instanceCount = 0;
public var instanceElements: Array<{name: String, data: String}> = [];
public var instanceStride: Int = 0;
public var positions: TVertexArray;
public var normals: TVertexArray;
@ -130,11 +132,39 @@ class Geometry {
structure.add("iscl", kha.graphics4.VertexData.Float3);
}
if (instanceElements != null && instanceElements.length > 0) {
for (elem in instanceElements) {
if (StringTools.startsWith(elem.name, "i") && elem.name != "ipos" && elem.name != "irot" && elem.name != "iscl") {
var vdata = VertexData.Float1;
var dataStr: String = Reflect.field(elem, "data");
switch (dataStr) {
case "float1": vdata = VertexData.Float1;
case "float2": vdata = VertexData.Float2;
case "float3": vdata = VertexData.Float3;
case "float4": vdata = VertexData.Float4;
}
structure.add(elem.name, vdata);
}
}
}
this.instanceStride = Std.int(structure.byteSize() / 4);
instanceCount = Std.int(data.length / Std.int(structure.byteSize() / 4));
instancedVB = new VertexBuffer(instanceCount, structure, usage, 1);
var vertices = instancedVB.lock();
for (i in 0...Std.int(vertices.byteLength / 4)) vertices.setFloat32(i * 4, data[i]);
instancedVB.unlock();
}
public function updateInstanced(data: Float32Array) {
if (instancedVB == null) return;
var vertices = instancedVB.lock();
for (i in 0...Std.int(vertices.byteLength / 4)) {
vertices.setFloat32(i * 4, data[i]);
}
instancedVB.unlock();
}
public function copyVertices(vertices: ByteArray, offset = 0, fakeUVs = false) {