Command-line tool to export PBR textures from PSD layers.
strata
extracts PBR textures from PSD files with named layers, generates normal maps from height maps, and combines texture channels.
- Extract Albedo/Base Color textures
- Generate Normal Maps from height maps
- Create packed ORM (Occlusion-Roughness-Metallic) textures
- Configure layer names
- Set output texture resolution
- Batch process multiple PSD files with individual settings
- Choose between full-canvas or cropped layer export
Binaries for Windows, macOS, and Linux are available on the Releases page.
Basic usage:
strata --input <path_to_PSD> --output <output_folder>
Advanced options:
strata --input <path_to_PSD> --output <output_folder> --size 2048 --normal-strength 5.0 --export-height --crop-layers
Use a configuration file for more complex setups:
strata --config config.json
Standard configuration:
{
"input_file": "input.psd",
"output_dir": "output/",
"texture_size": 2048,
"normal_strength": 5.0,
"export_heightmap": true,
"crop_layers": false,
"layer_names": {
"albedo": "basecolor",
"heightmap": "displacement",
"occlusion": "ambientocclusion",
"roughness": "specular",
"metallic": "metal"
}
}
Process multiple files with individual settings:
{
"output_dir": "output/",
"texture_size": 2048,
"layer_names": {
"albedo": "basecolor",
"heightmap": "displacement",
"occlusion": "ambientocclusion",
"roughness": "specular",
"metallic": "metal"
},
"input_files": [
{
"input_file": "texture1.psd",
"texture_size": 4096,
"normal_strength": 3.0
},
{
"input_file": "texture2.psd",
"output_dir": "output/special/",
"crop_layers": true,
"layer_names": {
"albedo": "diffuse",
"roughness": "glossiness"
}
},
{
"input_file": "texture3.psd"
}
]
}
Batch processing supports:
- Per-file parameter overrides
- Global defaults for non-specified parameters
- All parameters are optional
input_file
: Path to the input PSD fileinput_files
: Array of files for batch processingoutput_dir
: Directory for exported texturestexture_size
: Output resolution (default: same as source PSD dimensions)normal_strength
: Normal map intensity (default: 4.0)export_heightmap
: Whether to export the heightmap (default: false)crop_layers
: Export only layer content without positioning on full canvas (default: false)layer_names
: Layer name mappings
albedo
: Base color textureheightmap
: Height/displacement mapocclusion
: Ambient occlusion maproughness
: Surface roughness mapmetallic
: Metallic map
--input
: Path to the input PSD file--output
: Directory for exported textures--config
: Path to JSON config file--size
,-s
: Target size for output textures (default: same as source PSD dimensions, 1024 if specified without value)--normal-strength
,-n
: Normal map strength (default: 4.0)--export-height
: Export the heightmap (disabled by default)--crop-layers
: Export only layer content without positioning on full canvas (default: full-size export)--verbose
,-v
: Enable verbose logging--albedo-layer
: Custom name for albedo layer (default: "albedo")--heightmap-layer
: Custom name for heightmap layer (default: "heightmap")--occlusion-layer
: Custom name for occlusion layer (default: "occlusion")--roughness-layer
: Custom name for roughness layer (default: "roughness")--metallic-layer
: Custom name for metallic layer (default: "metallic")
<filename>_albedo.png
- RGB albedo/base color texture<filename>_heightmap.png
- Grayscale height map (optional)<filename>_normal.png
- RGB normal map<filename>_orm.png
- Packed texture (R: Occlusion, G: Roughness, B: Metallic)
By default, Strata preserves the original positioning of layers on the full PSD canvas. This ensures textures maintain proper alignment with each other:
- Full-size Export (default): Preserves layer positions on the PSD canvas
- Crop Layers: Only exports the actual content of each layer, ignoring their positions
Use the --crop-layers
flag or set "crop_layers": true
in your config to crop layers.
Build executable:
- macOS:
./build/build_macos.sh
- Linux:
./build/build_linux.sh
- Windows:
build\build_windows.cmd
- Added crop layers option to export only layer content without positioning
- Improved CLI interface with named arguments
- Fixed color profile handling in albedo exports
- Added batch processing for multiple PSD files
- Added per-file configuration
- Made all configuration parameters optional
- Improved error handling
- Initial release