Feature Request: UV2 (Secondary UV Channel) Support in Roblox Studio

Feature Request: UV2 (Secondary UV Channel) Support in Roblox Studio

Overview

I would like to propose adding support for UV2 (secondary UV channel) in Roblox Studio.

UV2 is a second, distinct set of texture coordinates (U and V) applied to a mesh. While UV1 is typically used for the primary base color (albedo) texture, UV2 is commonly reserved for specialized, non-overlapping mapping such as:

  • Lightmaps
  • Ambient occlusion maps
  • Detail overlays (grime, dirt, cracks)
  • Decal-style texture masks
  • Stylized baked shadowing
  • Advanced material blending

Most modern game engines such as Unity and Unreal Engine support multiple UV channels as a standard feature. Supporting UV2 in Roblox would significantly improve material flexibility and professional workflow compatibility.


Why This Should Be Added

1. Performance-Friendly Lighting Solutions

Currently, achieving advanced lighting often requires enabling the “Future” lighting technology, which can negatively impact performance on lower-end or mobile devices.

With UV2 support, developers could:

  • Bake fake shadows into textures
  • Apply ambient occlusion maps
  • Simulate global illumination
  • Create stylized lighting effects

All without relying heavily on real-time lighting calculations.

This would allow developers to maintain performance while still achieving visually rich environments — especially important for mobile-focused experiences.


2. Professional Asset Pipeline Compatibility

3D software such as Blender and Autodesk Maya already export meshes with multiple UV channels by default.

Currently, Roblox ignores UV2 data on import. Supporting it would:

  • Reduce workflow friction
  • Allow direct import of production-ready assets
  • Encourage more advanced creators to build on Roblox
  • Improve compatibility with industry-standard pipelines

3. Improved Visual Depth Without Extra Geometry

UV2 allows developers to:

  • Add dirt/grunge overlays without modifying the base texture
  • Create baked shadow masks
  • Add stylized darkening for horror environments
  • Apply unique lighting effects per mesh

This enables richer environments without increasing part count or polygon count.


Proposed Implementation

Mesh Import

When importing a mesh that contains multiple UV channels:

  • Preserve UV1 and UV2 data.
  • If UV2 does not exist, default to UV1 automatically (for backward compatibility).

SurfaceAppearance Integration

SurfaceAppearance could include a new property:

TextureCoordinateChannel (Enum: UV1 / UV2)

Each map inside SurfaceAppearance should be able to select which UV channel it uses:

  • ColorMap
  • NormalMap
  • RoughnessMap
  • MetalnessMap
  • AOMap
  • EmissiveMap

Default behavior:

  • All maps use UV1 unless changed.

This maintains full backward compatibility.


Optional Constraint (Optimization Suggestion)

To simplify rendering and prevent misuse:

UV2 usage could optionally be limited to grayscale-based maps such as:

  • Ambient Occlusion
  • Lightmap overlays
  • Shadow masks

Where:

  • Black = shadow/darkening
  • White = no effect

This would make UV2 especially efficient for lighting-style overlays without complicating the rendering pipeline.


Summary

Adding UV2 support would:

  • Improve lighting flexibility without forcing Future lighting
  • Increase performance options for mobile developers
  • Align Roblox with modern engine standards
  • Enhance professional asset workflows
  • Enable more advanced visual design without increasing geometry complexity

This feature would significantly expand creative freedom while maintaining performance and backward compatibility.