t1k:unity:dots-rendering:perspective-isometric
| Field | Value |
|---|---|
| Module | dots-rendering |
| Version | 2.1.7 |
| Effort | high |
| Tools | — |
Keywords: 2.5D, DOTS, isometric, perspective
How to invoke
Section titled “How to invoke”/t1k:unity:dots-rendering:perspective-isometricDOTS Perspective: Isometric
Section titled “DOTS Perspective: Isometric”When This Skill Triggers
Section titled “When This Skill Triggers”- Isometric, dimetric, 3/4 view, billboard sprite, BillboardSprite shader
- Perspective camera with tilt angle, billboard quad rendering
- DOTS instancing,
_Cutoffinstanced property
Key Concepts
Section titled “Key Concepts”- Simulation: XZ plane (always). Navigation, physics, AI on XZ
- Presentation: Perspective camera tilted ~30 degrees. Sprites on billboard quads that always face camera
- No coordinate remapping — camera angle provides the isometric look naturally
Camera Setup
Section titled “Camera Setup”- Perspective (not orthographic) with ~60 degree FOV
- Position:
(0, height, -backOffset), rotation:(TiltAngle, 0, 0) - Auto-zoom: adjust distance based on battle AABB extents and FOV
- Smooth lerp position and distance
-> See
references/isometric-camera-guide.md
Rendering
Section titled “Rendering”- BillboardSprite.shader — custom HLSL shader in
dots-rpg/Runtime/Rendering/ - 3 URP passes: Forward, ShadowCaster, DepthOnly
- Billboard vertex transform: offset from object center along camera right/up vectors
_Cutoffis DOTS-instanced for per-entity alpha clip control- Cutout rendering (AlphaTest queue) for SRP Batcher compatibility
-> See
references/isometric-rendering-guide.md
Navigation
Section titled “Navigation”- Standard XZ NavMeshSurface on visible ground plane
NavigationAuthoring.EnableGrounding = false(flat billboard quads, no Y physics)- Obstacles are visible 3D cubes with URP/Lit materials (unlike 2D where they are invisible)
NavMeshObstacle.carving = true+(StaticEditorFlags)8+ area 1 (Not Walkable)
Animation
Section titled “Animation”SpriteAnimationAuthoringfor sprite sheet UV animation (same as 2D)- Front-facing character silhouette sprites (not side-profile like side-view)
- Billboard shader handles camera-facing orientation automatically
- Direction-aware sprites possible via multiple sprite sheets + facing direction
Billboard Vertex Transform (Key Pattern)
Section titled “Billboard Vertex Transform (Key Pattern)”// Object center in world spacefloat3 centerWS = TransformObjectToWorld(float3(0, 0, 0));
// Extract per-axis scale from object-to-world matrixfloat3 scaleX = float3(UNITY_MATRIX_M[0][0], UNITY_MATRIX_M[1][0], UNITY_MATRIX_M[2][0]);float3 scaleY = float3(UNITY_MATRIX_M[0][1], UNITY_MATRIX_M[1][1], UNITY_MATRIX_M[2][1]);
// Camera right and up vectorsfloat3 camRight = normalize(UNITY_MATRIX_V[0].xyz);float3 camUp = normalize(UNITY_MATRIX_V[1].xyz);
// Billboard: offset from center along camera-plane axesfloat3 worldPos = centerWS + camRight * input.positionOS.x * length(scaleX) + camUp * input.positionOS.y * length(scaleY);DOTS Instancing Setup
Section titled “DOTS Instancing Setup”#ifdef DOTS_INSTANCING_ON UNITY_DOTS_INSTANCING_START(MaterialPropertyMetadata) UNITY_DOTS_INSTANCED_PROP(float4, _BaseMap_ST) UNITY_DOTS_INSTANCED_PROP(float4, _BaseColor) UNITY_DOTS_INSTANCED_PROP(float , _Cutoff) UNITY_DOTS_INSTANCING_END(MaterialPropertyMetadata)#endifGotchas
Section titled “Gotchas”| # | Issue | Fix |
|---|---|---|
| 1 | Billboard shader needs #pragma target 4.5 for DOTS instancing | Without it, UNITY_DOTS_INSTANCED_PROP macros fail silently |
| 2 | Shadow acne on billboard quads | Use ApplyShadowBias() in ShadowCaster pass with billboard normal |
| 3 | Billboard normal for shadows = -normalize(UNITY_MATRIX_V[2].xyz) | Camera forward as approximate face normal |
| 4 | Cull Off required on all passes | Billboard quads can face either direction relative to light |
| 5 | Ground material uses URP/Lit (not Unlit) | Iso view shows ground surface, needs lighting |
Cross-References
Section titled “Cross-References”dots-ecs— ECS fundamentalsdots-rpg— BillboardSprite.shader, SpriteAnimation componentsdots-graphics— DOTS instancing, MaterialProperty overridesdots-shader— Custom HLSL shader authoring agentunity-urp— URP shader library, render passesagents-navigation— XZ pathfinding
Reference Files
Section titled “Reference Files”| File | Coverage |
|---|---|
references/isometric-rendering-guide.md | Billboard shader, DOTS instancing, cutout materials, shadow pass |
references/isometric-camera-guide.md | Perspective iso camera, auto-zoom, tilt math, FOV-based framing |