What is Tydra?

September 3, 2026 ยท View on GitHub

Tydra

LightUSD does not support Hydra interface in pxrUSD at the moment. We think Hydra(multi-purpose sceneDelegate/renderDelegate interface) is too much for LightUSD usecases(AR, lightweight 3D viewer/runtime, DCC exchange, etc).

Instead, we'd like to propose Tydra(Tiny Hydra), something like a three-headed monster(Please imagine Gidorah: https://en.wikipedia.org/wiki/King_Ghidorah), which directly converts(publishes) USD scene graph(Stage. Prim hierarchy) to a renderer-friendly data structure or published data format(imagine glTF). API design of Tydra is completely different from Hydra.

Currently Tydra is considering following three usecases in mind:

  • Runtime publishment(e.g. to glTF), DCC conversion and exchange for realtime graphics(AR, VR, MR, games, etc).
  • Scene conversion to GL/Vulkan renderer(e.g. WebGL rendering) See ../../examples/tydra_to_renderscene
  • Scene conversion to Ray tracing renderer(e.g. Vulkan/OptiX ray tracing) See ../../examples/sdlviewer/ for SW raytracing example.

Status

Production-ready for OpenGL/Vulkan/Three.js rendering pipelines. API is mostly stable but may still evolve.

RenderScene

Scene graph representation suited for OpenGL/Vulkan/WebGL renderer.

Status

  • Node xform
  • Triangulate mesh
  • Subdivision surface support(subdivide mesh using OpenSubdiv)
  • Resolve Material binding
    • GeomSubset material binding
    • Collection material binding
  • Load and setup Texture
    • Colorspace conversion
      • sRGB <-> Linear
      • rec709 <-> Linear
      • displayP3 Linear <-> sRGB Linear
      • ACEScg(AP1, Linear) <-> sRGB Linear
      • Rec.2020 <-> sRGB Linear
      • Adobe RGB <-> sRGB Linear
      • CIE XYZ-D65 <-> sRGB Linear
      • Gamma 2.2 / 1.8 -> Linear
  • Skinning (LBS and Dual Quaternion)
  • BlendShape
  • Animation(SkelAnimation) - joint TRS, blend shape weights
  • Xform animation(timesamples XformOps)
  • Lights (SphereLight, RectLight, DistantLight, DomeLight)

MaterialX Support

  • OpenPBR Surface shader conversion
  • Autodesk Standard Surface shader conversion (via OpenPBR)
  • UsdPreviewSurface shader conversion
  • NodeGraph traversal with texture/normal/tangent extraction
  • MaterialXConfigAPI metadata support
  • See doc/materialx.md for full details

Tangent Computation and Quantization

Multiple tangent-space computation methods:

MethodSpeedQuality
Lengyel~16 MTri/sGood (1-5 deg from reference)
MikkTSpace~0.7 MTri/sReference
FastMikkTSpace~2.0 MTri/sIdentical to MikkTSpace
Hybrid~3.5 MTri/sIdentical to MikkTSpace

GPU-friendly packed formats:

FormatBytes/vertexMax Error
INT_2_10_10_10_REV40.08 deg
SNorm8x440.34 deg
FP16x480.03 deg

Normal quantization (INT_2_10_10_10_REV) also supported for 67% storage savings.

See doc/tydra-tangent.md for details.

Memory Estimation

  • RenderMesh::estimate_memory_usage() - points, indices, normals, tangents, texcoords, joint data, blend shapes
  • RenderScene::estimate_memory_usage() - meshes, textures, nodes, materials, animations, skeletons

Configuration (MeshConverterConfig)

OptionDefaultEffect
tangent_methodFastMikkTSpaceTangent computation algorithm
tangent_storagePacked1010102 (WASM) / PackedFp16 (native)Tangent quantization format
normal_storagePacked1010102 (WASM) / Float3 (native)Normal quantization format
defer_tangent_computationfalse (true in WASM)Defer tangent work to reduce initial load
lowmemfalse (true in WASM)Free source GeomMesh after conversion
preserve_texel_bitdepthfalse (true in WASM)Keep uint8 textures, avoid float32 bloat

Key Source Files

FilePurpose
render-data.hhRenderScene, RenderMesh, RenderMaterial, MeshConverterConfig
render-data.ccConvertToRenderScene, tangent computation, memory estimation
scene-access.hhScene traversal and query APIs
texture-util.hhTexture loading and colorspace conversion
fast-mikktspace.hhFastMikkTSpace and Hybrid tangent implementations
tangent-quantize.hhPacked tangent/normal formats for GPU
materialx-to-json.hhMaterialX to JSON conversion

Documentation

Remaining work

  • Data structure suited for realtime DCC.
  • Data structure suited for Ray tracing
  • ValueClip support (clip scheduling, time remapping)
  • Vertex animation (points timeSamples)
  • Dedicated typed material/camera/light animation targets and exporter mappings beyond the current generic CustomProperty tracks.
  • Keep current Tydra and tydra/next render extraction behavior aligned for material, texture, skeleton, and animation data.

The maintained next-core and Tydra-next API documentation is in doc/lightusd-next.md. This README describes the established legacy RenderScene API; it is not a release checklist.