SRP / URP / HDRP
Scriptable Render Pipeline は Unity の柔軟な描画アーキテクチャで、URP(Universal)と HDRP(High Definition)の二大プリセットがあります。選定・移行・Renderer Feature の基礎を整理できます。図解でパイプライン差を比較できます。
想像してみてください...
Built-in Renderer は普通の家庭用キッチン——何でも作れますが電力を無駄にし最適化されていません。 URP は最新の IH コンロ——速く効率的で、モバイルやインディーに最適。 HDRP はミシュランの厨房——細部は完璧ですがハイエンド機材(PC/コンソール)が必要です。
概念の詳細
SRP (Scriptable Render Pipeline): Unity 2018 以降、 C# API でレンダーパイプラインをカスタマイズできます。自作(custom SRP)か、二つのプリセット URP と HDRP を使います。
URP (Universal RP): 旧 LWRP。モバイル、Web、Switch向け。 シングルパスのフォワードレンダリングに加え 2D Renderer もあります。Shader Graph と VFX Graph を使います。Built-in より優れますが、一部の高度機能(レイトレーシング、複雑なポストプロセス)は省略します。
HDRP (High Definition RP): ハイエンド PC/コンソール向け。Ray Tracing、DLSS/FSR、Volumetric Lighting、Screen Space AO、Contact Shadows、Tessellation… GPU 負荷は高いが、最高の見た目。
切り替え: 一度選ぶと自由にパイプラインを hop できません。 Materials/Shaders の更新が必要です。Edit → Rendering → Materials → Convert… で自動移行できます。
機能比較
| 機能 | Built-in | URP | HDRP |
|---|---|---|---|
| Shader Graph | ❌ | ✅ | ✅ |
| VFX Graph | ❌ | ✅ | ✅ |
| Ray Tracing | ❌ | ❌ | ✅ |
| Volumetric Lighting | ❌ | Partial | ✅ |
| 2D Renderer | ❌ | ✅ | ❌ |
| Mobile Support | ✅ | ✅ | ❌ |
| DLSS / FSR | ❌ | Partial | ✅ |
最初から pipeline を選ぶ — 後から material/shader を移行すると手間がかかり、pink shader になりやすい。
ハンズオン手順
プロジェクト作成時にパイプラインを選ぶ
Unity Hub → New Project → テンプレートを選ぶ(3D Core = Built-in、URP、HDRP)。最初に決める。
既存プロジェクトに URP を追加
Package Manager → "Universal RP" をインストール → Assets/Create/Rendering/URP Asset → Project Settings → Graphics に割り当て。
マテリアルを変換
Edit → Rendering → Materials → Convert Selected/All Built-in Materials to URP。
Renderer Features を使う
URP Renderer → Add Renderer Feature(Outline、SSAO、Custom…)— Built-in の Image Effects に相当。
インタラクティブシミュレーター
Built-in / URP / HDRP を比較——対象プラットフォーム、性能、機能。
Target
全プラットフォーム(レガシー)
Performance
普通 — 最適化されていない
Visual
基本、ポストFXは限定的
// 旧 Shader(Built-in)
Shader "Custom/OldShader" {
SubShader { /* 旧 CG/HLSL */ }
}表示中: Built-in Render Pipeline
コード例
基本カスタム Renderer Feature — URP Renderer アセットに追加して描画パスを注入。
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
// Custom Renderer Feature — add to a URP Renderer asset
public class OutlineRendererFeature : ScriptableRendererFeature
{
public OutlineSettings settings = new OutlineSettings();
private OutlineRenderPass _pass;
public override void Create()
{
_pass = new OutlineRenderPass(settings);
_pass.renderPassEvent = RenderPassEvent.AfterRenderingOpaques;
}
public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
{
renderer.EnqueuePass(_pass);
}
}
[System.Serializable]
public class OutlineSettings
{
public Color outlineColor = Color.white;
[Range(0f, 10f)] public float outlineThickness = 2f;
}📌 要点
- ▸URP = インディー、モバイル、2D に適する
- ▸HDRP = AAA グラフィックス、ハイエンド PC/コンソール
- ▸パイプラインは最初に選ぶ——移行は大変!
- ▸SRP Batcher が URP のドローコール性能を上げる
⚠️ よくあるミス
❌ Built-in シェーダーが URP で動かない
マテリアルがマゼンタ(シェーダー欠落)
✅ マテリアルを変換するか Shader Graph で作り直す
❌ URP で古い Graphics.Blit API を使う
非推奨——不具合や効果なし
✅ Blitter.BlitCameraTexture を使う(URP 13+)