🐙
Unity URP の 無駄な ColorGradingLUT を減らす
問題
URP で PostEffect を有効にすると、ColorGrading を利用していなくても ColorGradingLUT で SetPass を 1 つ消費してしまう
バージョン
Unity 2023.2
URP 16.0.4
※これより古いバージョンでも同様に発生する
解決策
URP のパッケージの中身を変更する
- Runtime/UniversalRenderer.cs の Setup() 内で generateColorGradingLUT を false にする
/// <inheritdoc />
public override void Setup(ScriptableRenderContext context, ref RenderingData renderingData)
{
...
// TODO: We could cache and generate the LUT before rendering the stack
//bool generateColorGradingLUT = cameraData.postProcessEnabled && m_PostProcessPasses.isCreated;
// 強制的に false にする
bool generateColorGradingLUT = false;
...
- Shaders/PostProcessing/UberPost.shader の ApplyColorGrading() を呼んでいる行をコメントアウトする
// Color grading is always enabled when post-processing/uber is active
{
// コメントアウト
//color = ApplyColorGrading(color, PostExposure, TEXTURE2D_ARGS(_InternalLut, sampler_LinearClamp), LutParams, TEXTURE2D_ARGS(_UserLut, sampler_LinearClamp), UserLutParams, UserLutContribution);
}
結果
ColorGradingLUT が無くなって SetPass が 1 つ減る
Discussion