Texture Import
Supported Formats
- PNG - lossless, supports alpha
- BMP - uncompressed bitmap
- TGA - Targa format, supports alpha
Textures are converted to PS1 VRAM-compatible formats during import.
Import Settings
| Setting | Type | Default | Description |
|---|---|---|---|
| Max Size | int | 256 | Maximum dimension in pixels |
| Resize Mode | enum | ClampToMax | How oversized textures are handled |
| Resample Filter | enum | Nearest | Filter used when the image size changes |
| Force Power of Two | bool | false | Resize to nearest power-of-two dimensions |
| Format | enum | Indexed8 | Target pixel format for PS1 |
| Dithering | enum | Off | Use deterministic Floyd-Steinberg error diffusion during quantization |
| Alpha Mode | enum | None | Alpha channel handling |

This floor texture uses 64 × 64 pixels, Nearest filtering and Indexed 4bpp. Its settings are an example: choose the size, palette and dithering that suit your artwork.
Open the image to view it at full size.Resample Filters
| Filter | Best use |
|---|---|
| Auto | Area reduction when shrinking; Mitchell reconstruction when enlarging |
| Nearest | Pixel art, masks, UI, and backward-compatible crisp imports |
| Area | Photographic or painted textures that need strong downscaling |
| Mitchell | Smooth enlargement or moderate resizing with controlled ringing |
Area and Mitchell filtering operate on premultiplied alpha. This prevents transparent RGB values from bleeding a fringe into opaque texels during a resize. Resampling happens before palette generation and PS1 quantization.
Pixel Formats
| Format | Bits/Pixel | VRAM Usage | Description |
|---|---|---|---|
Indexed4 | 4 bpp | Smallest | 16-color palette, best for simple graphics |
Indexed8 | 8 bpp | Medium | 256-color palette, good balance (default) |
Direct16 | 16 bpp | Largest | 15-bit RGB plus the STP semi-transparency flag; zero-color transparency rules apply, no palette |
Import Dithering
Indexed imports generate a 16-color or 256-color palette from the source image. Reimporting the same source with the same settings produces the same result.
When Dithering is On, the importer applies deterministic Floyd-Steinberg error diffusion while converting the source image:
Indexed4: diffusion into the 16-color palette mapping;Indexed8: diffusion into the 256-color palette mapping;Direct16: diffusion while reducing RGB to the PS1 15-bit color result.
The deterministic traversal keeps repeated imports stable for the same source and settings. Error diffusion redistributes quantization error into neighboring pixels; it does not increase palette capacity, color precision, or VRAM.
When Dithering is Off, the importer performs the selected 4/8/16 bpp quantization without error diffusion. Use Off for pixel art, UI atlases, masks, or any texture whose exact hard-edged pixel pattern must remain undiffused.
Import dithering is separate from a Material's runtime Dither flag. The import setting changes the generated texture data; the material flag controls PS1 GPU drawing behavior.
Alpha Modes
| Mode | Description |
|---|---|
None | No transparency |
Mask1Bit | Binary transparency (fully opaque or fully transparent) |
SemiTransparent | Requires Material Render Mode set to Semi-Transparent |
Presets
The Inspector offers quick presets:
| Preset | Format | Resize Mode | Filter | Dithering | Max Size | Power of Two |
|---|---|---|---|---|---|---|
| PS1 4bpp | Indexed4 | Clamp to Max | Auto | On | 256 | No |
| PS1 8bpp | Indexed8 | Clamp to Max | Auto | On | 256 | No |
| UI 8bpp crisp | Indexed8 | None | Nearest | Off | 256 | No |
PS1 Constraints
- VRAM total: 1 MB (shared with framebuffers)
- Textures must fit in VRAM alongside the display framebuffer
- Maximum texture dimension: 256x256 per imported runtime texture (one GPU texture-coordinate page)
- Hard runtime cap: 64 loaded texture assets; projects may set a lower authoring budget
- Textures are uploaded to VRAM with coordinates managed by the runtime
Workflow
- Place
.png,.bmp, or.tgafile inAssets/Textures/ - The editor auto-imports with default settings
- Adjust format, size, resample filter, and dithering in the Inspector
- Click Apply to reimport with new settings
- Assign the texture to a Material, then assign that Material to a Mesh Renderer