Skip to main content

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

SettingTypeDefaultDescription
Max Sizeint256Maximum dimension in pixels
Resize ModeenumClampToMaxHow oversized textures are handled
Resample FilterenumNearestFilter used when the image size changes
Force Power of TwoboolfalseResize to nearest power-of-two dimensions
FormatenumIndexed8Target pixel format for PS1
DitheringenumOffUse deterministic Floyd-Steinberg error diffusion during quantization
Alpha ModeenumNoneAlpha channel handling
Texture Inspector showing a 64 by 64 floor texture imported as indexed 4 bpp

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

FilterBest use
AutoArea reduction when shrinking; Mitchell reconstruction when enlarging
NearestPixel art, masks, UI, and backward-compatible crisp imports
AreaPhotographic or painted textures that need strong downscaling
MitchellSmooth 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

FormatBits/PixelVRAM UsageDescription
Indexed44 bppSmallest16-color palette, best for simple graphics
Indexed88 bppMedium256-color palette, good balance (default)
Direct1616 bppLargest15-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

ModeDescription
NoneNo transparency
Mask1BitBinary transparency (fully opaque or fully transparent)
SemiTransparentRequires Material Render Mode set to Semi-Transparent

Presets

The Inspector offers quick presets:

PresetFormatResize ModeFilterDitheringMax SizePower of Two
PS1 4bppIndexed4Clamp to MaxAutoOn256No
PS1 8bppIndexed8Clamp to MaxAutoOn256No
UI 8bpp crispIndexed8NoneNearestOff256No

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

  1. Place .png, .bmp, or .tga file in Assets/Textures/
  2. The editor auto-imports with default settings
  3. Adjust format, size, resample filter, and dithering in the Inspector
  4. Click Apply to reimport with new settings
  5. Assign the texture to a Material, then assign that Material to a Mesh Renderer