START HERE
Getting started
Create your first material and configure lighting, geometry, and rendering.
PACKAGE VERSION 1.1.0On this page
1. Import and validate2. Choose a shader3. Set up a Terrain material4. Configure VR rendering5. Set up the surface6. Configure lighting7. Configure retro geometry8. Optional outlines9. Choose a rendering mode10. Set up a Nature material11. Use presets12. Batch-edit materials13. Configure a procedural sky14. Set up depth-volume decalsRecommended first checksThis guide covers the shortest path from import to a working CrowPSX material.
1. Import and validate#
Import the complete Assets/CrowPSX folder, leave it at that path, and wait for Unity to finish compiling. Run:
Tools > CrowPSX > Validate Installation
The validator checks shader discovery, the shader property contract, XR tokens in the shared includes, editor assembly placement, required package contents, the property catalog used by CrowPSX tools, and (under the Universal Render Pipeline) whether the active Universal Renderer carries the CrowPSX Depth Volume feature. It never changes project settings or material assets.
To explore the included materials and effects, open Assets/CrowPSX/Demo.unity. See Demo Scene for controls and input requirements.
2. Choose a shader#
Create a Unity material and select a shader from the CrowPSX menu.
- Surface/Default: full stylized non-PBR feature set
- Surface/Lite: reduced surface shader for simpler materials
- Surface/PBR: separate or packed PBR maps, normal, metallic, ambient occlusion, height parallax, smoothness/roughness, specular, reflections, and detail maps
- Surface/Vertex Painting/...: dedicated four-layer materials driven by mesh vertex colors
- Nature/...: cutout-friendly Default, Lite, and PBR foliage shaders with wind deformation
- Terrain/PBR: Terrain material using Unity TerrainLayers, with CrowPSX lighting, color, and pixel-snap controls
- Particles: ParticleSystem-oriented VFX shaders
- Decals/Depth Volume: projected box-volume decal
- Skybox/Procedural: procedural environment shader
3. Set up a Terrain material#
Select the Terrain object, open Terrain Settings, set Material to Custom, then assign a material using CrowPSX/Terrain/PBR.
CrowPSX reads the Terrain's existing TerrainLayers, including their albedo, normal, metallic, smoothness, and holes data. In the Built-in Render Pipeline, Unity automatically uses the bundled supporting terrain passes for more than four layers and for the distant basemap; keep those hidden shaders in the original CrowPSX/Shaders/Terrain folder. Under the Universal Render Pipeline the same shader follows URP's own terrain contract and the hidden Built-in helpers are unused.
4. Configure VR rendering#
CrowPSX supports Multi-Pass, Single Pass Instanced, and Android Multiview in the Built-in Render Pipeline, and URP's Single Pass Instanced and Multiview modes.
- Use the Forward rendering path for Single Pass Instanced. Built-in deferred does not support that mode.
- Soft particles and Depth Volume decals require the camera depth texture.
- Grab Distortion uses true scene refraction in Multi-Pass and a stereo-safe heat-ripple fallback in Single Pass Instanced/Multiview.
- Use VR / Stereo Comfort to choose a profile or tune VR Snap Strength and VR Affine Strength independently. Stereo snapping shares one displacement between both eyes to preserve binocular disparity.
5. Set up the surface#
Regular surface shaders use Base Texture and Base Color.
Painted variants use Painted Material Layers instead. Select Base, Red, Green, or Blue and assign the maps for that layer. Their regular _MainTex surface path is intentionally absent.
For a PBR material, choose Separate Maps when individual maps need different textures or UV transforms, or Packed Map to read Metallic, Ambient Occlusion, Height, and Smoothness/Roughness from one texture. Enable Link PBR UVs to drive all core PBR transforms from the surface-color texture. See PBR Workflows.
6. Configure lighting#
Open Lighting and choose:
- Pixel for smoother per-pixel realtime lighting
- Vertex for a coarser retro or fixed-function appearance
Use Lighting Steps for quantized bands. Final Posterize grades the completed lit result rather than only the source texture.
7. Configure retro geometry#
Open Retro Geometry:
- Pixel Snap X/Y controls screen-space snapping
- Affine Warp reduces perspective-correct texture interpolation
- Snap Fade Start/End reduces near-camera instability
- VR Snap Strength controls how much stereo-stable snapping remains in VR
- VR Affine Strength independently controls affine texture warping in VR
- Snap Shadow Caster applies compatible snapping in the shadow pass
The effect is vertex-dependent. Large triangles produce larger visible steps and affine distortion.
8. Optional outlines#
On a Default, Lite, PBR, or Vertex Painting material, open Outline and enable it. Choose fixed screen pixels or world-space width, optionally fade it over a camera-distance range, mask it with a texture, and use Match Base Color to blend toward the sampled surface. The outline is an extra draw only while enabled; disabling it switches the shader pass off. Prefer Opaque or Cutout because transparent surfaces normally do not write enough depth to hide their own hull. Nature is excluded because its usual single-plane alpha cards require texture-silhouette dilation rather than a closed-mesh hull.
If hard edges leave gaps in the hull, change Normal Source to Baked Smooth UV4. Click Bake Outline Normals in the material inspector to bake the renderer shown in Source Renderer, or use Tools > CrowPSX > Outline Normals to bake across selected scene objects. The generated copy is saved beside the source model, preserves the original mesh shading, and uses UV4 only for continuous outline extrusion. Use the matching Restore action to reassign the source mesh later. Enable Read/Write in the model importer if the baker reports an unreadable mesh.
Source Renderer defaults to the selected object's renderer, so it only needs an assignment when baking a renderer other than the one being inspected. The bake always works in place: the generated mesh goes onto that renderer and the material keeps drawing its own outline pass. There is no separate outline renderer and no rendering-mode control.
Under URP, use the warning's Add CrowPSX Outline To Universal Renderer button once. URP requires that renderer feature to request the additional outline pass. Built-in rendering needs no setup.
9. Choose a rendering mode#
Open Rendering and choose:
- Opaque for solid geometry
- Cutout for hard alpha silhouettes such as fences, leaves, cards, and grates
- Transparent for blended opacity
CrowPSX synchronizes blend state, render tags, queue behavior, and recommended depth settings when the rendering mode changes.
10. Set up a Nature material#
Choose CrowPSX/Nature/Lite, Default, or PBR for leaves, grass, vines, and similar foliage.
- Assign the Albedo texture and keep Use Main Texture Alpha enabled.
- Nature shaders begin in Cutout mode with Cull Off.
- Open Nature Wind and apply the closest preset: Gentle Leaves, Grass Breeze, Shrub, Tree Canopy, or Strong Wind.
- Choose an Anchoring Source:
- Local Height for grass and plants with a ground-level pivot
- Vertex Alpha for authored per-vertex anchoring
- UV2 Y when the mesh stores a wind weight in its second UV channel
- Mask Texture for UV-authored control
- Adjust Maximum Bend first. Use low Sway/Gust frequencies for natural movement, then add Leaf Flutter sparingly.
- Verify realtime shadows. Baked shadows use the mesh rest pose.
11. Use presets#
General Presets provides console-era and practical starting points. Custom presets are shared by the material inspector and Material Manager and saved to:
ProjectSettings/CrowPSX/CustomMaterialPresets.json
12. Batch-edit materials#
Open:
Tools > CrowPSX > Material Manager
Use it to copy compatible settings, reset groups, convert surface variants, apply presets, batch-change rendering and lighting, or apply a VR comfort profile to many materials. Review the target list before applying project-wide operations.
13. Configure a procedural sky#
Assign a material using CrowPSX/Skybox/Procedural in Lighting > Environment > Skybox Material.
- Use the sky gradient and final grading controls for the environment base.
- Environment Lighting keeps Lighting > Environment Lighting > Source set to Skybox. Filter Skybox Ambient Color optionally reduces or tints the generated ambient probe without recoloring the visible sky or its reflections, Auto Apply To Active Scene pushes changes as you edit, and Apply To Scene applies them once on demand. The filter affects the realtime fallback probe; rebake lightmaps and baked Light Probes to pick up a revised environment color.
- Enable the Sun, Moon, or extra celestial bodies as needed. Celestial masks can use Texture Alpha, Brightness, or Alpha × Brightness.
- Enable Moon Phase for an analytic lunar cycle with phase presets, terminator controls, and earthshine.
- Stars follow spherical latitude rings. Amount controls population; Size and Brightness remain independent.
- Cloud self-lighting follows the strongest enabled Sun or Moon above the horizon.
- HDR exposure and celestial highlights remain unclamped for bloom, reflection probes, and environment capture; tone mapping belongs to the camera/output pipeline.
14. Set up depth-volume decals#
Depth-volume decals rebuild the receiving surface from the camera depth texture, so the rendering camera has to produce one, and the decal volume has to intersect opaque geometry.
Under the Universal Render Pipeline they also need the CrowPSX Depth Volume renderer feature on the active Universal Renderer; without it URP hands the decal last frame's depth or a vertex-snapped surface and the decal drifts or flickers as the camera moves. Select the decal material and use the inspector's Add To Renderer action, or add it manually with Add Renderer Feature > CrowPSX Depth Volume.
Most surfaces require no stencil setup. To prevent decals on a particular material:
- Set the surface material's Optional Stencil / Decal Masking preset to Block Decals.
- Set the depth-volume decal material to Respect Blockers.
- Use Receiver and Test Receivers only when an explicit allow-list is required.
Blocker and receiver flags use separate stencil bits and can coexist on the same material.
Recommended first checks#
- Verify the material in Scene and Game views.
- Test the intended realtime-lighting mode.
- Confirm rendering mode, queue, and Z Write behavior.
- Test one baked-lighting setup if the project uses lightmaps.
- Import PBR normal textures as Normal Map.
- Import manually authored packed PBR maps with sRGB disabled.
- Start Parallax Height near zero and increase it gradually while checking grazing angles.
- Confirm painted meshes contain vertex colors and enough vertices for the desired brush resolution.
- Back up the project before performing a project-wide material operation.