As a senior Unity developer who has spent years shipping titles across mobile and PC platforms, context-switching between Unity and external image editors like Photoshop or Substance Designer is one of the biggest bottlenecks in content pipelines. Every time an environment artist needs to invert a glossiness map into a smoothness map, adjust channel packing, or bake quick normal maps from diffuse textures, precious iteration time is wasted.
F Texture Tools addresses this workflow friction head-on. Designed as a native Editor extension powered by GPU compute shaders and optional AI utilities, it brings deep texture manipulation, channel packing, map generation, and automated batch processing straight into your Unity workspace. Rather than acting as a simple visual wrapper over Unity's built-in TextureImporter, the asset operates on low-level pixel data via compute passes, making high-resolution operations blazingly fast even when working with 4K or 8K source assets.
Modern render pipelines like URP and HDRP rely heavily on channel-packed textures (for instance, combining Metallic, Ambient Occlusion, Detail Mask, and Smoothness into a single RGBA map). F Texture Tools features an intuitive channel matrix UI that allows you to route any channel from any source texture into target output channels (R, G, B, A). It handles color space conversions (Linear to sRGB) on the fly, preventing subtle visual bugs when packing PBR data.
Instead of relying on slow CPU loops to process pixels, the asset utilizes custom compute shaders for generating standard texture maps. In my testing, creating normal maps using Sobel filter variations or calculating specular maps from raw Albedo runs in real-time. Key procedural capabilities include:
The included AI module assists with intelligent noise removal, detail enhancement, and upscaling low-resolution textures. It is particularly helpful when working with legacy project assets or fast grey-box prototyping where high-resolution source graphics are not yet available.
Managing asset sizes across target platforms can turn into a maintenance nightmare. With this asset's batch engine, you can multi-select hundreds of textures and apply global compression changes (such as enforcing ASTC_6x6 for mobile or BC7 for desktop), set max resolution limits, and strip unneeded alpha channels to save memory overhead.
Integrating F Texture Tools into an active Unity project is straightforward. Once imported, the tool adds a main control window under Tools > F Texture Tools.
Beyond the editor UI, you can call the tool's core processing classes programmatically within custom build scripts or asset import pipelines. Here is an example of an editor script automating texture packing for PBR materials:
using UnityEngine;
using UnityEditor;
using FTextureTools; // Ensure namespace is referenced
public class AutomatedPackingUtility : EditorWindow
{
private Texture2D metallicMap;
private Texture2D aoMap;
private Texture2D smoothnessMap;
[MenuItem("Tools/Custom/Batch Pack PBR Texture")]
public static void ShowWindow()
{
GetWindow<AutomatedPackingUtility>("PBR Packer");
}
private void OnGUI()
{
GUILayout.Label("Assign Channel Textures", EditorStyles.boldLabel);
metallicMap = (Texture2D)EditorGUILayout.ObjectField("Metallic (Red)", metallicMap, typeof(Texture2D), false);
aoMap = (Texture2D)EditorGUILayout.ObjectField("AO (Green)", aoMap, typeof(Texture2D), false);
smoothnessMap = (Texture2D)EditorGUILayout.ObjectField("Smoothness (Alpha)", smoothnessMap, typeof(Texture2D), false);
if (GUILayout.Button("Pack Texture (RGBA)"))
{
PackChannels();
}
}
private void PackChannels()
{
if (metallicMap == null || smoothnessMap == null)
{
Debug.LogWarning("Please assign required textures before packing.");
return;
}
// Initialize F Texture Tools processing engine
TexturePackerEngine engine = new TexturePackerEngine();
// Map Red -> Metallic R, Green -> AO G, Alpha -> Smoothness Alpha
engine.SetChannelSource(TextureChannel.Red, metallicMap, TextureChannel.Red);
engine.SetChannelSource(TextureChannel.Green, aoMap != null ? aoMap : metallicMap, TextureChannel.Green);
engine.SetChannelSource(TextureChannel.Alpha, smoothnessMap, TextureChannel.Red);
Texture2D result = engine.GeneratePackedTexture(1024, 1024, TextureFormat.RGBA32, true);
byte[] bytes = result.EncodeToPNG();
string outputPath = "Assets/Textures/Packed_PBR_Custom.png";
System.IO.File.WriteAllBytes(outputPath, bytes);
AssetDatabase.Refresh();
Debug.Log("Successfully packed texture to: " + outputPath);
}
}
AssetPostprocessor scripts.| Category | Tools / Utilities |
|---|---|
| Latest Version | v1.1.9.1 (2 tracked releases) |
| File Size | 10.69 MB |
| Added to Platform | April 27, 2026 |
| Views | 7 views |
| Downloads | 3 downloads |
| Favourites | 0 favourites |
| Official Store | Buy Original License on Unity Asset Store → |
| Issue with Package? | Report Broken Link → |