Unity2023.1以降でUnityScriptableRenderContext.DrawRenderers()がObsolete警告を出すのに対応

代わりにCommandBuffer.DrawRendererList()を使うようにしました。

これに渡す引数を生成するScriptableRenderContext.CreateRendererList()メソッドには、2種類のオーバーロードが存在します。

1. ScriptableRenderContext.CreateRendererList(Rendering.RendererUtils.RendererListDesc desc);
2. ScriptableRenderContext.CreateRendererList(Rendering.RendererListParams param)

このPRでは `2` を選択しました。`1` はUnity 2021.3にも存在するという利点がありますが、
引数の組み立てが複雑だと感じたため避けました。
This commit is contained in:
Isamu Mogi
2024-05-13 08:46:56 +09:00
parent 326bab7fe4
commit 1d622a6394

View File

@@ -36,9 +36,20 @@ namespace VRMShaders.VRM10.MToon10.Runtime
};
var filteringSettings = FilteringSettings.defaultValue;
filteringSettings.renderQueueRange = _renderQueueRange;
#if UNITY_2022_2_OR_NEWER
var rendererListParams = new RendererListParams
{
cullingResults = renderingData.cullResults,
drawSettings = drawingSettings,
filteringSettings = filteringSettings,
};
var rendererList = context.CreateRendererList(ref rendererListParams);
cmd.DrawRendererList(rendererList);
#else
var renderStateBlock = new RenderStateBlock(RenderStateMask.Nothing);
context.DrawRenderers(renderingData.cullResults, ref drawingSettings, ref filteringSettings,
ref renderStateBlock);
#endif
}
context.ExecuteCommandBuffer(cmd);