Skip to main content

Genies iOS SDK v0.1.28

Updated: July 9, 2026

What's Deprecated

  • NAFMaterial.smoothness → use roughnessFactor (smoothness = 1 − roughness).
  • NAFMaterial.metallicSmoothnessTexture → use metallicRoughnessTexture + metalRoughPacking.

What's New

  • New — glTF 2.0 material model
    • NAFMaterial is now decoder-driven: values resolve through the shared C++ MaterialDecoder — native glTF fields for new-pipeline assets, Unity URP key fallback for legacy exports — one canonical metallic-roughness view regardless of asset origin. New surface: metallicRoughnessTexture + metalRoughPacking, roughnessFactor, emissiveFactor / emissiveStrength, alphaMode / alphaCutoff, isNewMaterialModel, plus KHR extension factors (unlit, clearcoat, sheen, anisotropy, texture transform).
    • Metal shading is packing-aware: the metallic-roughness texture samples per its declared packing (glTF G/B vs Unity R/A-inverted); legacy materials render identically to before.
    • KHR extension lobes added to the PBR path — clearcoat, sheen (Charlie/Ashikhmin), anisotropic GGX — ported from the Khronos glTF-Sample-Renderer reference plus KHR_materials_unlit, KHR_texture_transform, and KHR_materials_emissive_strength.
    • Emissive textures now render (bound for the first time, black fallback), and glTF alphaMode semantics apply strictly to new-model materials — legacy alpha behavior is unchanged.
  • New — local assets (LocalResolver): The asset resolver's LocalResolver now works on iOS: it resolves against the app bundle's resource path, so DEBUG builds can serve assets from a bundled localResolver/ directory.
  • New — loaded-avatar diagnostics: NAFView.avatarUsesNewMaterialModel — whether the loaded avatar uses the new (glTF) material model.