要件
Unityバージョン 6000.026f1
UniVRM 0.108.0
URPプロジェクト
はじめに
VRMのアウトラインの内容を変更するため
Mtoon10のアウトライン項目を変更しても変化がない。
最新のUniVRMのバージョンでは解決されているようだが、
自プロジェクトでは UniVRM 0.108.0 を使用する必要があるため更新できない状況。
そのため、以下の変更内容を自分で書き変えました。
対策方法
事前準備
まず事前準備として、「Render Features」に
「MToon Outline Render Feature」を追加します。
方法
→Setting
→PC_Renderer
→Add Renderer Feature

→MToon Outline Render Feature を選択

コード変更
下記の通りに2つのファイル内容変更を行います。
MToonOutlineRenderFeature の変更
ファイルの場所
Assets/VRM10/MToon10/Runtime/MToonOutlineRenderFeature.cs
全文はこちら
#if MTOON_URP using UnityEngine.Rendering; using UnityEngine.Rendering.Universal; namespace VRMShaders.VRM10.MToon10.Runtime { public sealed class MToonOutlineRenderFeature : ScriptableRendererFeature { #if UNITY_6000_0_OR_NEWER private RenderObjectsPass _opaquePass; private RenderObjectsPass _transparentPass; #else private MToonOutlineRenderPass _opaquePass; private MToonOutlineRenderPass _transparentPass; #endif public override void Create() { #if UNITY_6000_0_OR_NEWER var profilerTagName = nameof(MToonOutlineRenderFeature); var shaderTags = new[] {"MToonOutline"}; var layerMask = -1; var cameraSettings = new RenderObjects.CustomCameraSettings(); _opaquePass = new RenderObjectsPass(profilerTagName, RenderPassEvent.AfterRenderingOpaques, shaderTags, RenderQueueType.Opaque, layerMask, cameraSettings); _transparentPass = new RenderObjectsPass(profilerTagName, RenderPassEvent.BeforeRenderingTransparents, shaderTags, RenderQueueType.Transparent, layerMask, cameraSettings); #else _opaquePass = new MToonOutlineRenderPass(RenderPassEvent.AfterRenderingOpaques, RenderQueueRange.opaque); _transparentPass = new MToonOutlineRenderPass(RenderPassEvent.BeforeRenderingTransparents, RenderQueueRange.transparent); #endif } public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) { renderer.EnqueuePass(_opaquePass); renderer.EnqueuePass(_transparentPass); } } } #endif
MToonOutlineRenderPass の変更
ファイルの場所
Assets/VRM10/MToon10/Runtime/MToonOutlineRenderPass.cs
1行目を変更します。
変更前
#if MTOON_URP
変更後
#if MTOON_URP && !UNITY_6000_0_OR_NEWER
以上の変更でアウトラインが表示されるようになりました。