表示テーマ
RenderPassesとポストプロセス
RenderPassesは、入力画像・Shader・出力画像を順に接続して画面効果を作るAssetです。Cameraの露出・色補正とは役割を分けて設定します。
基本手順
- Cameraのポストプロセス有効をONにします。
- CameraのRender Passes欄へ
.renderpasses.jsonを設定します。 - 「ツール → レンダリング → レンダーパス」を開き、対象プロファイルを確認します。
- GameView出力/SceneView出力を選びます。この指定は全Pass共通です。
- Passを追加し、方式・実行位置・Material・入力・Parameterを設定します。
- 保存と、Cameraが参照するAssetが一致していることを確認します。
設定のインポートは、別の対応設定を取り込んで現在の編集へ反映する操作です。保存先を切り替える操作とは区別します。
Passの接続
| 設定 | 役割 |
|---|---|
| 種類 | Graphics、Compute、Ray Tracingなどの実行方式 |
| 実行位置 | 透明描画前後など、どこへ挿入するか |
| 主入力 | Scene入力、前Pass、指定Passのどこから画像を受け取るか |
| Material / Pass名 | 実行するShaderとMaterial内のPass |
| Resource | Shaderの入力TextureやBufferと描画資源の対応 |
| Parameter | Shaderが公開した数値・色・Vectorなど |
| 出力 | Texture名、形式、入力に対する解像度倍率 |
| 履歴 | 前回の出力を保持して次の更新で参照するか |
最終のSceneColor出力は実行順から自動で決めます。各Passで手動のSceneColor出力フラグを設定する必要はありません。無効Passは主入力を後段へ引き継ぐ経路を使います。
Resource名はShaderの宣言と一致させます。Parameterの色を変えても、その値がShaderの計算に使われていなければ見た目は変わりません。
Bloom
BloomはHDRで明るい部分から光を周囲へ広げます。最初は黒い背景に発光する物体を置き、EmissiveIntensityとBloomの強度・閾値を調整します。
明るいBaseColorの白と、1を超えるHDR発光は同じではありません。Particleも発光ModuleとMaterialでHDR値を出し、Bloomがその後に実行される必要があります。露出や色補正で明るさが圧縮されることも確認してください。
Light Shaft
Light Shaftは光源と遮蔽、密度、散乱色、サンプル数、最大距離などに依存します。窓のある室内で外からDirectionalLightを入れ、密度を少しずつ上げます。密度を上げすぎると室内全体が白い霞に見えます。
窓や壁の遮蔽経路が必要です。Passを有効にしただけで、任意の画像から窓の光を推測する効果ではありません。
動的解像度
GPU時間の予算を指定し、解像度倍率を最小から最大の間で調整できます。調整間隔・倍率の刻みも設定します。画質確認時は固定解像度で比較し、その後に動的解像度を有効にすると原因を追いやすくなります。
C#で変更する
cs
using NEMEngine;
public sealed class CameraEffects : MonoBehaviour {
void Start() {
// 同じCameraへ設定されたBloom Passを探す
var camera = GetComponent<PerspectiveCamera>();
if (camera == null) return;
var bloom = camera.renderPasses.FindPass("Bloom");
if (!bloom.isValid) return;
// このCameraの実行中の値へ反映
bloom.SetEnabled(true);
bloom.SetFloat("intensity", 1.5f);
}
}複数Cameraがある場合はCameraのrenderPassesから取得します。名前でPassを探し、有効な結果を取得できたか確認してください。C#からの変更は実行用の上書きで、共有Assetを保存する操作とは別です。