Phase 2 updates

Phase 2 · Slice 3 ·

GlTF import and submeshes

  • Import (tassix_import): glTF 2.0 files (.gltf/.glb, external or embedded buffers and PNG/JPEG images): node hierarchy, meshes with one submesh per primitive, base color factor and texture (with KHR_texture_transform), alpha modes, double-sided and KHR_materials_unlit materials, samplers. Converted exactly as Unity's glTFast does (X mirrored, rotations (x, -y, -z, w), winding swapped, V flipped, a scene object only for several roots); the gltf_import scenario (167 checks against glTFast 6.15 in Unity, on a generated test scene and a Kenney model) passes.
  • glTFast API: a glTFast assembly with GLTFast.GltfImport (Load, InstantiateMainSceneAsync, materials, textures, meshes, Dispose) and the GltfAsset component, so scripts written against glTFast compile unchanged. GltfAssets of the same file share one import, so their meshes draw instanced. Skinned meshes get a SkinnedMeshRenderer drawn in bind pose until animation exists.
  • Submeshes: Mesh.subMeshCount, SetTriangles/GetTriangles per submesh, GetIndexStart/GetIndexCount, and Renderer.sharedMaterials/materials, drawn with Unity's material-to-submesh rules.
  • Sample: dotnet/samples/scenes/platformer3d.json, a diorama of Kenney Platformer Kit models (CC0).
  • Next: FBX import, then the render graph, frame pipelining, pooled per-frame GPU allocations, sprite batching across textures (atlases), and texture sharing across imported files.