Introduction

ComfyUI can now texture a 3D mesh from a single reference image, end to end, with no custom nodes. ComfyUI v0.45.0, released November 10, merges native support for UltraTex, a SIGGRAPH Asia 2026 texturing method from Jilin University, VAST and collaborators. It runs as a LoRA on FLUX.2 Klein 9B, renders your mesh as six 2048 views, paints them to match the reference, and then bakes them back into the mesh's UV map. Comfy-Org has repackaged the weights on Hugging Face, so it runs on your own GPU today.

What shipped

  • Model: UltraTex, two LoRAs for FLUX.2 Klein 9B (albedo, and metallic/roughness) plus a fine-tuned foreground-aware VAE
  • Vendor: UltraTex research team (Jilin University, Shanghai Innovation Institute, HKU, Tongji, Fudan, VAST). The ComfyUI integration is by Comfy-Org (PR #17636)
  • Modality: image-guided 3D texturing. A mesh and a reference image go in, and a UV base-color texture plus a confidence mask come out
  • Open vs API: open and local. The UltraTex code is MIT, but the Comfy-Org repack sits on FLUX.2 Klein 9B under the FLUX non-commercial license
  • Where to run it today: ComfyUI v0.45.0 or later, with the files from Comfy-Org/UltraTex
  • Concrete fact: six views are tiled as a 2x3 grid at 2048x2048 each. Background token dropping keeps only the object's tokens in the transformer, which the paper credits with a 22.3x to 74.6x end-to-end inference speedup over a dense baseline

The new nodes

The PR adds a small 3D toolkit, not just a model loader:

  • UltraTexConditioning takes the normals and masks from Render Mesh, your reference image and mask, and optional extra view references, and turns them into conditioning for the LoRA.
  • BakeTextureFromViews projects the rendered or edited views back onto the UV layout. It weights each view by how directly it faces the surface, rejects texels at depth edges, can fill texels no camera saw, and outputs base_color and a confidence mask.
  • RenderMesh gains a world-normal mode, a camera list input that renders one image per camera, and a texture input so you can preview a baked map without Apply Texture to Mesh.
  • CreateCameraOrbit and BatchCameras build the camera lists that Render Mesh and the bake step share.

The views ride through a normal Empty Latent, KSampler and VAE Decode chain, because the model tiles a batch of views into one image inside the Flux forward pass and splits them back out afterwards. The PR reports a forward-pass match against the UltraTex reference code to within 4.7e-6.

Try it

Grab the files from Hugging Face and drop them into your ComfyUI models folder:

hf download Comfy-Org/UltraTex --local-dir ./ultratex
# diffusion_models/  flux-2-klein-base-9b_bf16 (18.2 GB) or _int8_convrot (9.4 GB)
# loras/             ultratex albedo + metallic_roughness (478 MB each), Klein distill LoRA
# vae/               ultratex_flux2_vae_fp32
# embeddings/        flux-2-klein-9b_empty_prompt

Load the UltraTex LoRA through LoraLoaderModelOnly and the UltraTex VAE as a regular VAE. Then feed your mesh and a CreateCameraOrbit camera list into RenderMesh, followed by UltraTexConditioning, KSampler and VAE Decode, and finish with BakeTextureFromViews. The PR links an example graph (ultratex_setget_01.json) you can open directly. The second LoRA targets metallic/roughness views, so swap it in when you want the PBR side of the material.

Why it matters for game devs

Texturing is where a lot of AI-generated meshes fall apart. Image-to-3D tools like TRELLIS, Hunyuan3D and Pixal3D give you shape, but their textures often look soft next to the concept art. UltraTex works at 2048 per view, so fine detail from a high-resolution reference survives. Because it's a texturing pass, you can also point it at meshes you modeled yourself. The bake node is the piece that makes this practical. It hands you a UV texture and a confidence mask that shows where a human touch-up is needed, so the output drops into Blender, Unreal or Godot like any other texture. The same release also fixes Remesh Mesh on imported meshes and adds a solid mode to Extract Mesh from Splat, so the rest of Comfy's 3D chain got sturdier too.

The catch

The license is the big one. The UltraTex code is MIT, but these Comfy weights depend on FLUX.2 Klein 9B, which is non-commercial, so check with Black Forest Labs before you ship textures from it in a paid game. It's also heavy. The bf16 base is 18 GB, and the int8 version still needs about 9.4 GB before you add the LoRAs and six 2K views. Coverage depends on the camera orbit, so undercuts and hidden faces may come back low-confidence and need the fill option or a manual paint-over. UltraTex is trained on object-centric assets, so treat it as a tool for props and characters, not whole environments.

—Titus