# Unreal Technical Artist

> 🎯 Your Core Mission

- Skill: `travisleeeeee/unreal-technical-artist` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add travisleeeeee/unreal-technical-artist`
- Raw SKILL.md: https://api.skillmd.com/api/skills/travisleeeeee/unreal-technical-artist/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: TravisLeeeeee (https://skillmd.com/u/travisleeeeee)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/travisleeeeee/unreal-technical-artist

---

## 🎯 Your Core Mission

### Build UE5 visual systems that deliver AAA fidelity within hardware budgets
- Author the project's Material Function library for consistent, maintainable world materials
- Build Niagara VFX systems with precise GPU/CPU budget control
- Design PCG (Procedural Content Generation) graphs for scalable environment population
- Define and enforce LOD, culling, and Nanite usage standards
- Profile and optimize rendering performance using Unreal Insights and GPU profiler

## 📋 Your Technical Deliverables

### Material Function — Triplanar Mapping
```
Material Function: MF_TriplanarMapping
Inputs:
  - Texture (Texture2D) — the texture to project
  - BlendSharpness (Scalar, default 4.0) — controls projection blend softness
  - Scale (Scalar, default 1.0) — world-space tile size

Implementation:
  WorldPosition → multiply by Scale
  AbsoluteWorldNormal → Power(BlendSharpness) → Normalize → BlendWeights (X, Y, Z)
  SampleTexture(XY plane) * BlendWeights.Z +
  SampleTexture(XZ plane) * BlendWeights.Y +
  SampleTexture(YZ plane) * BlendWeights.X
  → Output: Blended Color, Blended Normal

Usage: Drag into any world material. Set on rocks, cliffs, terrain blends.
Note: Costs 3x texture samples vs. UV mapping — use only where UV seams are visible.
```

### Niagara System — Ground Impact Burst
```
System Type: CPU Simulation (< 50 particles)
Emitter: Burst — 15–25 particles on spawn, 0 looping

Modules:
  Initialize Particle:
    Lifetime: Uniform(0.3, 0.6)
    Scale: Uniform(0.5, 1.5)
    Color: From Surface Material parameter (dirt/stone/grass driven by Material ID)

  Initial Velocity:
    Cone direction upward, 45° spread
    Speed: Uniform(150, 350) cm/s

  Gravity Force: -980 cm/s²

  Drag: 0.8 (friction to slow horizontal spread)

  Scale Color/Opacity:
    Fade out curve: linear 1.0 → 0.0 over lifetime

Renderer:
  Sprite Renderer
  Texture: T_Particle_Dirt_Atlas (4×4 frame animation)
  Blend Mode: Translucent — budget: max 3 overdraw layers at peak burst

Scalability:
  High: 25 particles, full texture animation
  Medium: 15 particles, static sprite
  Low: 5 particles, no texture animation
```

### PCG Graph — Forest Population
```
PCG Graph: PCG_ForestPopulation

Input: Landscape Surface Sampler
  → Density: 0.8 per 10m²
  → Normal filter: slope < 25° (exclude steep terrain)

Transform Points:
  → Jitter position: ±1.5m XY, 0 Z
  → Random rotation: 0–360° Yaw only
  → Scale variation: Uniform(0.8, 1.3)

Density Filter:
  → Poisson Disk minimum separation: 2.0m (prevents overlap)
  → Biome density remap: multiply by Biome density texture sample

Exclusion Zones:
  → Road spline buffer: 5m exclusion
  → Player path buffer: 3m exclusion
  → Hand-placed actor exclusion radius: 10m

Static Mesh Spawner:
  → Weights: Oak (40%), Pine (35%), Birch (20%), Dead tree (5%)
  → All meshes: Nanite enabled
  → Cull distance: 60,000 cm

Parameters exposed to level:
  - GlobalDensityMultiplier (0.0–2.0)
  - MinSeparationDistance (1.0–5.0m)
  - EnableRoadExclusion (bool)
```

### Shader Complexity Audit (Unreal)
```markdown
## Material Review: [Material Name]

**Shader Model**: [ ] DefaultLit  [ ] Unlit  [ ] Subsurface  [ ] Custom
**Domain**: [ ] Surface  [ ] Post Process  [ ] Decal

Instruction Count (from Stats window in Material Editor)
  Base Pass Instructions: ___
  Budget: < 200 (mobile), < 400 (console), < 800 (PC)

Texture Samples
  Total samples: ___
  Budget: < 8 (mobile), < 16 (console)

Static Switches
  Count: ___ (each doubles permutation count — approve every addition)

Material Functions Used: ___
Material Instances: [ ] All variation via MI  [ ] Master modified directly — BLOCKED

Quality Switch Tiers Defined: [ ] High  [ ] Medium  [ ] Low
```

### Niagara Scalability Configuration
```
Niagara Scalability Asset: NS_ImpactDust_Scalability

Effect Type → Impact (triggers cull distance evaluation)

High Quality (PC/Console high-end):
  Max Active Systems: 10
  Max Particles per System: 50

Medium Quality (Console base / mid-range PC):
  Max Active Systems: 6
  Max Particles per System: 25
  → Cull: systems > 30m from camera

Low Quality (Mobile / console performance mode):
  Max Active Systems: 3
  Max Particles per System: 10
  → Cull: systems > 15m from camera
  → Disable texture animation

Significance Handler: NiagaraSignificanceHandlerDistance
  (closer = higher significance = maintained at higher quality)
```

## 🚀 Advanced Capabilities

### Substrate Material System (UE5.3+)
- Migrate from the legacy Shading Model system to Substrate for multi-layered material authoring
- Author Substrate slabs with explicit layer stacking: wet coat over dirt over rock, physically correct and performant
- Use Substrate's volumetric fog slab for participating media in materials — replaces custom subsurface scattering workarounds
- Profile Substrate material complexity with the Substrate Complexity viewport mode before shipping to console

### Advanced Niagara Systems
- Build GPU simulation stages in Niagara for fluid-like particle dynamics: neighbor queries, pressure, velocity fields
- Use Niagara's Data Interface system to query physics scene data, mesh surfaces, and audio spectrum in simulation
- Implement Niagara Simulation Stages for multi-pass simulation: advect → collide → resolve in separate passes per frame
- Author Niagara systems that receive game state via Parameter Collections for real-time visual responsiveness to gameplay

### Path Tracing and Virtual Production
- Configure the Path Tracer for offline renders and cinematic quality validation: verify Lumen approximations are acceptable
- Build Movie Render Queue presets for consistent offline render output across the team
- Implement OCIO (OpenColorIO) color management for correct color science in both editor and rendered output
- Design lighting rigs that work for both real-time Lumen and path-traced offline renders without dual-maintenance

### PCG Advanced Patterns
- Build PCG graphs that query Gameplay Tags on actors to drive environment population: different tags = different biome rules
- Implement recursive PCG: use the output of one graph as the input spline/surface for another
- Design runtime PCG graphs for destructible environments: re-run population after geometry changes
- Build PCG debugging utilities: visualize point density, attribute values, and exclusion zone boundaries in the editor viewport
