Mastering Substance Painter To Unity Export: A Comprehensive Workflow Guide

how to export substance painter to unity

Exporting textures from Substance Painter to Unity is a crucial step in bringing high-quality, PBR-ready materials into your game or 3D project. The process involves baking maps, such as albedo, normal, metallic, and roughness, in Substance Painter and then exporting them in a format compatible with Unity's shader system. To achieve seamless integration, ensure that the texture settings in Substance Painter match Unity's requirements, such as using the correct color space and resolution. Once exported, import the textures into Unity, assign them to a material, and configure the shader to utilize the maps properly. This workflow ensures that the detailed and realistic materials created in Substance Painter are accurately represented in Unity, enhancing the visual fidelity of your project.

Characteristics Values
Export Format Substance Painter supports exporting textures in multiple formats, including PNG, TGA, JPEG, and EXR. For Unity, PNG is recommended for its balance of quality and performance.
Texture Maps Base Color, Normal, Metallic, Roughness, Height, Emissive, Ambient Occlusion, Opacity, and more. Ensure all necessary maps are exported.
Texture Size Match the texture size to the required resolution in Unity (e.g., 1024x1024, 2048x2048). Power of 2 dimensions are recommended.
Bit Depth 8-bit or 16-bit, depending on the texture type. 16-bit is ideal for HDR maps like Emissive or Roughness.
Channels Packing Combine maps into fewer textures (e.g., Metallic and Roughness into a single RG channel) to optimize performance in Unity.
Normal Map Format Export normal maps in the OpenGL format for Unity compatibility.
Export Presets Use Unity-specific export presets in Substance Painter to ensure correct settings for texture maps.
Folder Structure Organize exported textures into folders (e.g., Albedo, Normal, etc.) for easy import into Unity.
Unity Import Settings Adjust texture import settings in Unity (e.g., sRGB for Albedo, Linear for Normal maps) for correct rendering.
Material Setup Create or assign Unity materials using the exported textures, ensuring shader compatibility (e.g., Standard, URP, HDRP).
Baking Settings If using baked maps, ensure high-poly and low-poly meshes are properly aligned in Substance Painter before exporting.
Compression Use Unity's texture compression settings (e.g., DXT5 for Normal maps, BC7 for Albedo) to reduce file size without significant quality loss.
Compatibility Ensure exported textures are compatible with Unity's rendering pipelines (Built-in, URP, HDRP).
Additional Maps Include masks or detail maps if needed for advanced material effects in Unity.
Workflow Integration Use Substance Painter's Unity plugin or manual export/import process for seamless integration.
Version Compatibility Ensure Substance Painter and Unity versions are compatible to avoid export/import issues.

cypaint

Prepare Textures: Set texture size, format, and export presets in Substance Painter for Unity compatibility

Texture preparation in Substance Painter is a critical step to ensure seamless integration with Unity, where performance and visual fidelity must align. Begin by setting the texture size, keeping in mind Unity’s limitations and your project’s requirements. A common practice is to use powers of two (e.g., 1024x1024, 2048x2048) for texture dimensions, as these sizes are optimized for GPU rendering. However, if your project demands higher detail, consider 4K textures (4096x4096), but be cautious of performance impact on lower-end devices. Always balance resolution with efficiency, as oversized textures can unnecessarily inflate file sizes and slow down rendering.

Next, choose the appropriate texture format to maintain quality while minimizing file size. Unity supports various formats, but DXT5 nm (for normal maps) and BC7 (for color maps) are widely recommended for their compression efficiency and quality retention. In Substance Painter, navigate to the export settings and select these formats under the "File Format" dropdown. For alpha channels, ensure transparency is preserved by enabling the "Embed Alpha" option. This step is particularly crucial for materials like glass or foliage, where transparency plays a key role in realism.

Export presets in Substance Painter streamline the process by saving your preferred settings for future use. To create a Unity-compatible preset, go to the export window, configure your texture size, format, and channels, then click "Save Preset." Name it descriptively, such as "Unity_Standard_Shader," to easily identify it later. Presets not only save time but also ensure consistency across assets, reducing the risk of errors during export. For instance, a preset tailored for Unity’s Standard Shader might include Albedo, Normal, Metallic, and Roughness maps, all set to 2048x2048 resolution and BC7 format.

A common pitfall is overlooking texture compression settings in Unity after export. While Substance Painter handles the initial compression, Unity’s import settings can further optimize textures. After importing, select the texture in Unity’s Inspector and ensure the "Compression" setting is set to "Compressed" with the appropriate format (e.g., DXT5 for normal maps). Additionally, enable "Generate Mip Maps" to improve performance on distant objects. This dual-layer optimization ensures textures are both high-quality and efficient.

Finally, test your exported textures in Unity to verify compatibility and performance. Apply the textures to a test material and observe how they behave under different lighting conditions and distances. If artifacts appear or performance lags, revisit your export settings in Substance Painter, adjusting texture size or format as needed. By meticulously preparing textures and leveraging presets, you create a pipeline that bridges Substance Painter’s artistic capabilities with Unity’s technical demands, resulting in assets that are both visually stunning and optimized for real-time rendering.

cypaint

Export Maps: Select and export albedo, normal, metallic, and other maps needed for Unity shaders

Exporting maps from Substance Painter to Unity requires precision to ensure your textures align seamlessly with Unity's shader system. Begin by identifying the essential maps your Unity shader demands—albedo, normal, metallic, roughness, and others like height or ambient occlusion. Substance Painter’s export presets simplify this process, but customization is key. Navigate to the "Export Maps" tab, select the maps you need, and adjust their resolution to match Unity’s requirements, typically 1024x1024 or 2048x2048 pixels, depending on your project’s scale. This step ensures optimal performance and visual fidelity without unnecessary overhead.

The albedo map, representing the base color of your material, is non-negotiable. It’s the foundation of your texture stack, so ensure it’s exported in the sRGB color space to preserve accurate color representation in Unity. For normal maps, Substance Painter defaults to a DirectX format, which Unity supports natively. However, if you’re using OpenGL, switch to the OpenGL format in the export settings. Metallic and roughness maps often share a single texture in Unity’s standard shader, so export them as a combined map, with metallic in the blue channel and roughness in the green or red, depending on your shader’s configuration.

Consider the file format for export—TGA or PNG are lossless and widely supported, but PNG is generally preferred for its smaller file size and broader compatibility. If your project demands optimization, JPEG can be used for albedo maps, though be cautious of compression artifacts. For normal and other data maps, always use lossless formats to maintain precision. Substance Painter’s "Channels Packing" feature is invaluable here, allowing you to combine maps efficiently, reducing draw calls in Unity.

A common pitfall is overlooking Unity’s texture import settings. After exporting, import your maps into Unity and adjust the texture type accordingly—albedo as "Default," normal as "Normal Map," and metallic/roughness as "Default" with the correct channel settings. Enable compression for albedo maps but disable it for normal and metallic/roughness maps to avoid visual degradation. If your shader requires additional maps like height or emissive, ensure they’re exported with the correct settings and imported with the appropriate texture type in Unity.

Finally, test your exported maps in Unity’s shader graph or material inspector to verify they behave as expected. If discrepancies arise, revisit Substance Painter’s export settings, focusing on channel packing and color space. By meticulously selecting and exporting the right maps, you bridge the gap between Substance Painter’s artistry and Unity’s technical demands, ensuring your textures shine in their final environment.

cypaint

Folder Structure: Organize exported textures in a Unity-friendly folder hierarchy for easy import

A well-organized folder structure is the backbone of any efficient Unity project, especially when dealing with exported textures from Substance Painter. Imagine a cluttered desk versus a meticulously arranged workspace – the latter saves time, reduces errors, and fosters collaboration. The same principle applies to your Unity project's Assets folder.

When exporting textures from Substance Painter, resist the urge to dump everything into a single "Textures" folder. This approach quickly becomes a nightmare as your project grows. Instead, adopt a hierarchical structure that mirrors the organization within Substance Painter itself.

Begin by creating a dedicated folder for each material or object you've textured in Substance Painter. Name these folders descriptively, reflecting the object's purpose or material type. For instance, "Character_Skin," "Environment_Rock," or "Prop_Metal_Surface." Within each material folder, establish subfolders for specific texture types: "Albedo," "Normal," "Roughness," "Metallic," and so on. This granular organization allows for quick access to specific textures during material creation in Unity.

Consider incorporating a "Maps" subfolder within each material folder to house additional utility maps like height, ambient occlusion, or emissive maps. This further refines the structure and prevents clutter at the top level.

For projects with multiple texture sets per material (e.g., different color variations or weathering states), create subfolders within the material folder named accordingly: "Base," "Damaged," "Snowy," etc. This approach ensures clarity and prevents confusion when selecting the appropriate texture set in Unity.

Remember, consistency is key. Establish a naming convention for folders and files early on and stick to it. This could involve prefixes for texture types (e.g., "A_" for Albedo, "N_" for Normal) or suffixes indicating resolution (e.g., "_2K," "_4K"). A consistent naming system makes searching and filtering textures in Unity a breeze.

By implementing this structured approach, you'll transform your Unity project into a well-oiled machine. Textures will be readily accessible, material creation will be streamlined, and collaboration with team members will be seamless. A little upfront organization goes a long way in saving time and frustration down the line.

Explore related products

cypaint

Import to Unity: Use Unity’s import settings to assign textures to materials correctly

Unity's import settings are your bridge between Substance Painter's artistry and Unity's real-time rendering. Think of them as the translator, ensuring the intricate details of your textures are understood and displayed correctly within your game engine.

Missing or misassigned textures can leave your models looking flat, lifeless, or downright broken.

Understanding the Workflow

Imagine baking a cake. Substance Painter provides the ingredients (textures), but Unity needs a recipe (import settings) to assemble them into a delicious (visually stunning) final product. These settings dictate how Unity interprets the texture maps exported from Substance Painter, assigning them to the appropriate material properties like albedo, normal, metallic, and roughness.

Without the right settings, your textures might end up in the wrong "ingredient slots," resulting in a visual mess.

Navigating the Import Settings

When you drag your exported textures into Unity, the Import Settings window becomes your command center. Here's a breakdown of key settings:

  • Texture Type: Select the correct type (Albedo, Normal Map, Metallic, Roughness, etc.) for each texture. This tells Unity what information the texture contains.
  • Max Size: Adjust the texture resolution to balance visual fidelity with performance. Higher resolutions look better but demand more system resources.
  • Compression: Choose a compression format (e.g., DXT5, BC7) to reduce file size without sacrificing too much quality. Experiment to find the best balance for your project.
  • Mip Maps: Enable mip maps for smoother transitions between texture resolutions as objects move farther away in the scene.

Material Assignment: The Final Touch

Once your textures are imported correctly, create a new material in Unity. Drag and drop the corresponding textures into the appropriate slots within the material's inspector. This final step links the textures to the material, ready for application to your 3D models.

Pro Tip: Create a master material with all your texture slots pre-configured. This allows for easy material variations by simply swapping out individual textures.

cypaint

Material Setup: Create or adjust Unity materials to apply exported textures for accurate rendering

Exporting textures from Substance Painter to Unity is just the first step; the real magic happens when you set up materials that accurately render those textures in your scene. Unity’s Standard Shader is a versatile starting point, but to achieve photorealism or specific artistic styles, you’ll need to tweak its properties meticulously. Begin by importing your exported textures into Unity and creating a new material. Assign the Standard Shader to it, then map the base color, metallic, roughness, normal, height, and other maps to their respective slots. This foundational setup ensures Unity recognizes and processes your textures correctly.

One common pitfall is ignoring the color space settings. Unity defaults to sRGB for color textures (like albedo) and Linear for non-color textures (like metallic or roughness). If your metallic or roughness maps appear washed out or overly contrasted, check their import settings. Navigate to the texture in the Inspector, set the Texture Type to Advanced, and ensure the color space matches the texture’s purpose. For instance, a roughness map should always be in Linear space to preserve its grayscale values accurately.

Adjusting the shader properties is where your material truly comes to life. For example, if your Substance Painter project includes emissive details, enable the Emission feature in Unity’s Standard Shader and assign the emissive map. Fine-tune the Emission Color to match the intensity of the glow. Similarly, if your texture set includes an opacity map, enable the Transparency mode and adjust the Render Queue to ensure proper sorting in the scene. These adjustments bridge the gap between Substance Painter’s preview and Unity’s rendering engine.

Consider using Shader Graph or third-party shaders for advanced customization. Unity’s Shader Graph allows you to create custom shaders tailored to your exported textures, offering greater control over effects like subsurface scattering, anisotropic reflections, or custom blending modes. For instance, if your Substance Painter project includes a complex material like car paint, Shader Graph can replicate the clear coat layer more accurately than the Standard Shader. Alternatively, shaders like Amplify Shader Editor or SBSAR Importer can handle Substance Painter’s native .sbsar files directly, streamlining the workflow.

Finally, test your material in different lighting conditions to ensure consistency. Unity’s HDRP or URP pipelines offer more advanced lighting models that can enhance the realism of your textures. If using HDRP, enable the Lit Shader and adjust the Material Type to match your texture’s properties (e.g., Metallic for metal surfaces). Pair this with Unity’s Post Processing Stack for effects like bloom or depth of field to further elevate the visual fidelity. By combining Substance Painter’s texturing power with Unity’s material system, you can achieve renders that are both technically accurate and visually stunning.

Frequently asked questions

In Substance Painter, go to File > Export Textures. Choose the texture set you want to export, select the appropriate maps (Albedo, Normal, Metallic, etc.), and click Export. Save the textures in a folder. In Unity, import the folder containing the textures, and they will automatically be recognized as a texture set.

PNG or TGA are recommended formats for exporting textures from Substance Painter to Unity. PNG is lossless and supports transparency, while TGA is also widely supported and can handle high-quality textures.

In Substance Painter, set the texture size in the project settings to match the desired resolution in Unity. Common resolutions include 1024x1024, 2048x2048, or 4096x4096. Ensure that the texture size in Unity’s import settings matches the exported resolution.

Substance Painter does not directly export Unity materials, but you can recreate the material in Unity using the exported textures. Assign the textures to the corresponding slots (Albedo, Normal, Metallic, etc.) in Unity’s Standard Shader or a custom shader.

Ensure the normal maps are exported in the correct format (usually Directx or OpenGL). In Unity, import the normal map and set the texture type to "Normal Map" in the import settings. Unity will automatically handle the normal map encoding based on your platform settings.

Written by
Reviewed by
Share this post
Print
Did this article help you?

Leave a comment