REFERENCE
Troubleshooting
Resolve import, lighting, material, decal, outline, and baking issues.
PACKAGE VERSION 1.1.0On this page
A material is pink or uses Unity's default inspectorShader compilation takes a long timeShaders report Universal Render Pipeline include errorsPolybrush cannot paint the materialA normal or packed PBR map looks incorrectParallax looks stretched or moves incorrectlyVertex-painted PBR is expensiveA depth-volume decal is missing or renders incorrectlyA depth-volume decal drifts or flickers under URPBlock Decals does not stop a depth-volume decalTransparent objects sort incorrectlyAn outline is correct in the Scene view but wrong or missing in play modeAn outline disappears up close under URPShadows are black under URP but correct in the Built-in pipelineEmission is visible but does not illuminate a baked lightmapA Nature material does not moveVR or stereoscopic rendering looks incorrectRequesting supportA material is pink or uses Unity's default inspector#
Allow Unity to finish importing, then reselect the material. Read the first CrowPSX-related error in the Console and reimport the complete CrowPSX folder without moving or renaming its shader or Editor files.
Shader compilation takes a long time#
The first import compiles Unity's required lighting, shadow, fog, instancing, and lightmapping combinations, and every lit shader carries both a Universal and a Built-in SubShader so it survives a pipeline switch. CrowPSX keeps its own PBR feature combinations compact, and builds strip the passes belonging to the pipeline you are not using, but the initial import is still the slowest step.
Allow the current import to finish before reimporting the package again. Editing any file under Shaders/Shared recompiles every shader family that includes it. If changing only a material property starts a full shader import, check whether another editor extension is forcing asset refreshes.
Shaders report Universal Render Pipeline include errors#
Every lit CrowPSX shader carries both a Universal and a Built-in SubShader, and Unity compiles both at import. A generated define tells the Universal passes whether the URP package is actually present; it is normally kept in step automatically when URP is added or removed.
Run Tools > CrowPSX > Regenerate Pipeline Defines if it falls behind. If Unity instead warns that the generated file is missing, reimport the CrowPSX folder. The generated file is at Assets/CrowPSX/Shaders/Shared/CrowPSXPipeline.hlsl and the package has to stay at Assets/CrowPSX for it to be found.
Polybrush cannot paint the material#
- Assign a
CrowPSX/Surface/Vertex Painting/...shader. - Run
Tools > CrowPSX > Polybrush > Configure Texture Painting. - Reselect the object or leave and re-enter Polybrush Texture Paint mode.
Painted transitions depend on mesh vertices. If a blend looks blocky, increase mesh density; increasing texture resolution will not add more paintable detail.
A normal or packed PBR map looks incorrect#
Import normal textures as Unity Normal Map assets. Packed PBR textures must use linear sampling with sRGB disabled and contain R Metallic, G Ambient Occlusion, B Height, and A Smoothness or Roughness. Make sure Surface Response Workflow matches the data stored in alpha.
Parallax looks stretched or moves incorrectly#
- Start with a low Parallax Height and a Height Floor of
0. - White height values are raised; black values are recessed.
- Enable Link PBR UVs if Height should follow the Albedo transform.
- Check that the mesh has valid, correctly oriented tangents.
- Raise Parallax Steps only when visible stepping requires it; values above
32are expensive.
Parallax offsets texture coordinates. It cannot change the mesh silhouette or create true overhangs, and deliberately exaggerated height can still stretch at steep viewing angles.
Vertex-painted PBR is expensive#
Each visible painted layer can contribute its own map samples. Prefer Packed Map, disable unused height effects, and keep Parallax Steps modest when multiple layers overlap. Use Separate Maps only where independent textures or transforms are necessary.
A depth-volume decal is missing or renders incorrectly#
Depth-volume decals reconstruct the receiving surface from the camera depth texture. If Unity is not generating that texture, the decal may disappear, project incorrectly, or appear only under certain scene settings.
Ensure the rendering camera produces a depth texture. A Directional Light with shadows or a screen-space Ambient Occlusion effect often appears to “fix” the decal because those features also make Unity request camera depth, but neither is a requirement for the decal itself. The reliable solution is to enable or request the camera's Depth texture directly. Also confirm that the decal volume intersects opaque scene geometry and that its material uses a visible blend mode and opacity.
A depth-volume decal drifts or flickers under URP#
The active Universal Renderer is missing the CrowPSX Depth Volume renderer feature. Without it URP either copies depth after the transparent queue, so the decal reconstructs receivers from the previous frame and is stable only while the camera is still, or copies vertex-snapped depth, so the decal clips against a surface that is not where it appears.
Select the decal material and press Add To Renderer in the inspector's diagnostics, or add it manually with Add Renderer Feature > CrowPSX Depth Volume on the Universal Renderer asset. Tools > CrowPSX > Validate Installation also reports this as a warning.
Because Scene view and a gizmo-enabled Game view get a depth prepass from URP anyway, the decal can look correct in one view and wrong in another until the feature is added.
Block Decals does not stop a depth-volume decal#
Set the surface material to Block Decals and the decal material to Respect Blockers. Receiver and Test Receivers form a separate allow-list workflow and must be enabled as a pair.
Transparent objects sort incorrectly#
Keep Z Write disabled for ordinary transparency, avoid intersecting transparent surfaces when possible, and change the render queue only when necessary. Use Cutout when hard edges are acceptable.
An outline is correct in the Scene view but wrong or missing in play mode#
The mesh was baked with the older object-space encoding, and something is moving it. Static batching runs only in play mode and builds: it rewrites the combined mesh into world space and copies UV channels through verbatim, so an outline normal stored as a plain object-space direction stops describing the geometry it belongs to. The hull then extrudes the wrong way, usually disappearing on hard-edged props while rounded ones still look closed. GPU skinning does the same thing for the same reason.
Bake it again. Current bakes store the normal in each vertex's tangent frame, which both systems transform along with the mesh, so a re-baked mesh is correct batched or skinned. The Outline section and the Material Manager's Checks tab both flag meshes still carrying the old encoding, and the reuse check refuses stale encodings, so an unchanged source is re-baked instead of reported as reused.
Mesh Normals is unaffected either way, because the batcher does transform NORMAL.
An outline disappears up close under URP#
Check Copy Depth Mode on the Universal Renderer. With Force Prepass (and with Depth Priming) URP writes the depth buffer from a prepass before drawing anything, and CrowPSX renders that prepass unsnapped by default so depth-volume decals get a crack-free receiver. The forward pass then draws the surface snapped, and the depth buffer describes geometry up to a snap cell away from what is on screen. The outline hull depth-tests against that mismatch and is rejected wherever the disagreement exceeds the outline width, which shows up as the outline breaking apart or vanishing at close range and grazing angles.
Turn on Snap Depth Prepass in Retro Geometry for materials that use outlines, or set Copy Depth Mode to After Opaques. Built-in never runs a prepass, so it does not show this.
Shadows are black under URP but correct in the Built-in pipeline#
The scene has Realtime Global Illumination enabled. Unity's Enlighten realtime GI is supported in the Built-in Render Pipeline but was removed from the Universal Render Pipeline, so nothing under URP can read its output.
This turns black when Realtime Environment Lighting is also on, because the environment contribution then lives in the realtime GI data rather than in the baked lightmap. Built-in reads it back and fills the shadows; URP has no realtime GI data at all, and the baked lightmap never received that contribution, so shadows lose their fill entirely.
Open Window > Rendering > Lighting > Scene, turn off Realtime Global Illumination, and bake again. The environment then goes into the baked lightmap, which both pipelines read.
Realtime GI is deprecated in Unity 2022 and removed in later versions, so turning it off is also the forward-compatible choice.
Emission is visible but does not illuminate a baked lightmap#
Confirm that the renderer contributes Global Illumination, receives GI from Lightmaps, and uses a material marked Baked Emissive. Enable Baked Global Illumination and bake the lighting again.
A Nature material does not move#
- Enable Wind and set Maximum Bend above zero.
- Make sure the selected Anchoring Source contains usable values.
- For Local Height, match Anchor Height and Full Motion Height to the mesh's local Y range.
- Use a mesh with enough vertices to bend.
Realtime shadows follow animated foliage. Baked lightmaps store the static rest pose, so use realtime or mixed direct shadows when animated foliage shadows are important.
VR or stereoscopic rendering looks incorrect#
Use Built-in Forward rendering for Single Pass Instanced. Soft particles and depth-volume decals require camera depth. Grab Distortion uses true refraction in Multi-Pass and its stereo-safe heat-ripple fallback in Single Pass Instanced or Multiview.
If the retro motion is uncomfortable, apply the Comfort VR profile or lower VR Snap Strength and VR Affine Strength independently.
Requesting support#
Include the CrowPSX version, Unity version, graphics API, exact shader name, and the first relevant Console error. For visual problems, include the material Inspector and affected object in the same screenshot.