Materials
Materials define how a mesh or baked primitive is drawn on PS1.
They are intentionally simple so they map cleanly to the PlayStation GPU: base color, optional texture, transparency mode, double-sided rendering, vertex color multiply, and dithering.
Material Properties
| Property | Description |
|---|---|
| Base Color | RGB tint applied to the draw packet |
| Main Texture | Optional imported texture GUID |
| Render Mode | Opaque or SemiTransparent |
| Double Sided | Disable backface culling for thin surfaces |
| Vertex Color Multiply | Multiply mesh vertex color by material color |
| Dither | Enable PS1-style color dithering |
Render Modes
Opaque
Default path for most world geometry and UI panels.
SemiTransparent
Uses PS1 semi-transparency blending. This is useful for selected effects, but it should be used carefully because PS1 ordering and transparency both depend on draw order.
Recommended PS1 Usage
- Use opaque materials for most level geometry.
- Use double-sided only when the surface is truly meant to be visible from both sides.
- Use dither for gradients or soft transitions that benefit from the PS1 look.
- Keep textured surfaces relatively small and coherent; giant textured quads near the camera are much more fragile than chunked or authored geometry.
Mesh Color and Runtime Lighting
Mesh Renderer color policy is authored per GameObject in Advanced Scene Authoring:
- Mesh Vertex Colors reads compiled mesh color data and uses Gouraud G3/GT3 primitives on the normal non-clipped path.
- GTE Vertex Lighting evaluates mesh normals against active runtime lights and submits per-vertex Gouraud colors.
- Flat Color applies a single renderer override.
These paths still combine with the material's base color and Vertex Color Multiply policy. GTE Vertex Lighting is runtime lighting, not an offline baked lightmap or vertex-light authoring process.
Built-in Primitive Authoring
Materials also apply to built-in Plane, Cube, and Capsule primitives. During PS1 export, compatible static Plane and Cube geometry can be converted into baked mesh chunks. The material assignment is preserved, so the correct workflow is:
- author the scene with primitives and materials in the editor,
- let the PS1 build bake/chunk compatible static geometry,
- keep the material as the stable artistic layer.
File Format
Materials are stored as JSON files:
{
"baseColor": { "r": 196, "g": 196, "b": 196 },
"flags": {
"opaque": true,
"doubleSided": false,
"vertexColorMultiply": true,
"dither": false
},
"mainTextureGuid": "",
"renderMode": "Opaque"
}
Demo Guidance
The bundled PS1 showcase uses materials to separate floor, wall, accent, pillar, and prop groups. This is a good baseline for PS1 content:
- a small palette of reusable materials,
- clear contrast between gameplay stations,
- and minimal dependence on high-frequency texturing.