ATAITexture

Unity Texture Generator

Unity's texture import panel has more settings that are quietly wrong than any other engine. Get the sRGB flag, the normal map type or the compression format wrong and the material renders subtly incorrect with no error message anywhere. This generator ships an Editor script that applies the correct import settings for every map, so the setup is repeatable and correct by default.

  • Built for Unity
  • 5 maps in engine format
  • No watermark
  • Commercial license
  • 1024px default
Unity workflow5 maps · 1024px

Unity has no built-in metallic workflow in the way Unreal does, and the Smoothness-vs-Roughness inversion trips up everyone once. On top of that, the per-platform texture override means a setting that is right for PC is wrong for mobile.

  • ✓输出 Smoothness,省掉反向节点
  • ✓附修正全部导入设置的 Editor 脚本
  • ✓自动勾选 Normal Map 与 Occlusion
  • ✓预设覆盖 URP/Lit 常用表面
AAlbedoNNormalSSmoothnessAAOHHeight

Generator

Unity preset
52/280
Unity presets

Engine material: URP/Lit - Concrete

1024px for PC. For mobile, use 512px and set the Android/iOS override to 256 or 512 - Unity's per-platform compression settings handle the rest.

Runs 100% in your browser. Nothing is uploaded, commercial use allowed.

Tiling
◧

Unity-ready textures appear here

5 maps in Unity's exact structure — Albedo, Normal, Smoothness, AO, Height.

Who this is for

Indie developers and small studios shipping on URP, HDRP or the built-in pipeline.

The real pain point

Unity has no built-in metallic workflow in the way Unreal does, and the Smoothness-vs-Roughness inversion trips up everyone once. On top of that, the per-platform texture override means a setting that is right for PC is wrong for mobile.

How to use these textures in Unity

  1. 1

    Generate the texture

    默认 1024px。上方预设覆盖 URP/Lit 常用的八种表面,可以直接对应到项目里的材质命名。

  2. 2

    Download the five maps

    Albedo, Normal, Smoothness, AO and Height. Note this is Smoothness rather than Roughness - URP uses smoothness directly and the script handles the inversion for you.

  3. 3

    Run the Editor script

    Put the script in Assets/Editor/ and run it from the Tools menu. It walks the folder and sets the correct Texture Type, sRGB, wrap mode and Android platform override for every map.

  4. 4

    Create the material

    Create a URP/Lit material: Base Map takes the Albedo, Normal Map takes the Normal with the Normal Map checkbox ticked, and Occlusion takes the AO with its checkbox ticked.

  5. 5

    Handle the smoothness

    Route the Smoothness map through an Invert node into the Smoothness slot. Feeding a Roughness map straight in inverts the surface - wet areas turn dry and dry areas turn wet.

  6. 6

    Set tiling on the material

    Set Tiling X/Y on the Material Inspector rather than the import settings, so one texture asset can be reused at different densities across objects.

What's in the Unity export pack

File suffixWhat it controls
AlbedoBase colour. sRGB ON, Texture Type = Default.
NormalNormal map. sRGB OFF, Texture Type = Normal map. Unity handles the channel swizzle.
SmoothnessSmoothness = 1 - roughness. Feed through an Invert node into the Smoothness slot.
AOAmbient occlusion. sRGB OFF. Assign to the Occlusion slot and tick the checkbox.
HeightHeight for parallax or displacement. sRGB OFF. Note mobile GPUs rarely support displacement.

Smoothness 与 Roughness 是反的

Unreal 用 Roughness,Unity 的 URP 着色器暴露的是 Smoothness —— 两者互为相反数。Roughness 0.2(很光滑)的表面,对应的 Smoothness 是 0.8。

直接把 Roughness 图连到 Smoothness 槽,得到的材质看起来像把湿的地方弄干、把干的地方弄湿。这类错误不会报任何警告,所以值得专门用一个 Invert 节点来处理。

勾选框没勾是最常见的疏漏

URP/Lit 有两个容易被忘掉的复选框:Normal Map 和 Occlusion。你把贴图拖进槽位但不勾选,Unity 会导入这张图但完全不生效 —— 材质看起来就是平的,不报任何错。

脚本会直接勾上这两个。手动设置时,导入后请再确认一遍这两个框。

移动端的平台覆盖设置

Unity 的纹理导入面板可以对每个平台单独覆盖设置。PC 用 1024、DXT 压缩,移动端用 512、ASTC 压缩,这是常见组合 —— 勾上 Android 平台的 Override 就能生效。

移动端 GPU 通常不支持位移贴图,Height 图在移动端基本用不上,导入时可以考虑直接不导入它,省一份内存。

SRP Batcher 与贴图的打包方式

SRP Batcher 要求材质使用的所有贴图具有一致的着色器关键字 —— 也就是说,同一个材质里的所有贴图必须都勾或都不勾 Albedo 的 Alpha 通道。

最省事的做法是给项目里的所有贴图统一一套导入设置,跑一次上面的脚本就能保证一致。

Prompt to Unity material mapping

Start from the left column, and the generated texture will match what the engine expects on the right.

PromptUnity material
raw concrete wall, subtle poresURP/Lit - Roughness 0.85
weathered red brick wallURP/Lit - Roughness 0.8
oak wood planks, visible grainURP/Lit - Smoothness 0.38
brushed steel metal plateMetallic 1.0, Smoothness 0.65
white ceramic tile gridSmoothness 0.8, Metallic 0
asphalt road surface, aggregate gritSmoothness 0.08, Metallic 0
rough granite stone slabSmoothness 0.22, Normal strong
woven fabric, textile weaveSmoothness 0.1, Metallic 0

Unity texture generator FAQ

How do I import PBR textures into Unity?

Set the normal map's Texture Type to Normal map and turn sRGB off; keep sRGB on for albedo and off for roughness, AO and height; set Wrap Mode to Repeat. Then assign them to a URP/Lit material and tick both the Normal Map and Occlusion checkboxes.

Why does my Unity material look flat even though I assigned a normal map?

The Normal Map checkbox in the material inspector is unticked. Unity imports the texture but ignores it entirely, with no warning. Also check that the texture's Texture Type is set to Normal map rather than Default.

Should I use roughness or smoothness in Unity?

URP/Lit exposes Smoothness, which is the inverse of roughness. Plug the smoothness map through an Invert node into the Smoothness slot. Feeding a roughness map directly inverts the surface appearance.

What resolution should I use for mobile?

512px with the Android and iOS platform overrides enabled, using ASTC or ETC2 compression. Use 1024 or 2048 only for surfaces the player gets very close to, and remember a 2048 RGBA map with mipmaps costs about 21 MB of VRAM.

Does the height map work on mobile?

Real displacement is not supported on most mobile GPUs. You can still use the height map to drive parallax occlusion, or bake the effect into the normal map on the desktop build and skip it on mobile.

What is the SRP Batcher texture requirement?

All textures used by one material must agree on whether they use the alpha channel, so the shader keyword stays consistent. Setting a single import policy across the project - which the included Editor script does - is the simplest way to stay compliant.

Other engine workflows