diff --git a/Assets/VRMShaders/VRM10/MToon10/Resources/VRM10/vrmc_materials_mtoon_define.hlsl b/Assets/VRMShaders/VRM10/MToon10/Resources/VRM10/vrmc_materials_mtoon_define.hlsl index 7ef5b20d0..adfbe8d1c 100644 --- a/Assets/VRMShaders/VRM10/MToon10/Resources/VRM10/vrmc_materials_mtoon_define.hlsl +++ b/Assets/VRMShaders/VRM10/MToon10/Resources/VRM10/vrmc_materials_mtoon_define.hlsl @@ -88,4 +88,14 @@ inline bool MToon_IsOutlineModeScreenCoordinates() #endif } +// Compile-time constant +inline bool MToon_IsOutlineModeDisabled() +{ + #if defined(_MTOON_OUTLINE_WORLD) || defined(_MTOON_OUTLINE_SCREEN) + return false; +#else + return true; +#endif +} + #endif diff --git a/Assets/VRMShaders/VRM10/MToon10/Resources/VRM10/vrmc_materials_mtoon_forward_fragment.hlsl b/Assets/VRMShaders/VRM10/MToon10/Resources/VRM10/vrmc_materials_mtoon_forward_fragment.hlsl index 5d9dc4a57..32973855f 100644 --- a/Assets/VRMShaders/VRM10/MToon10/Resources/VRM10/vrmc_materials_mtoon_forward_fragment.hlsl +++ b/Assets/VRMShaders/VRM10/MToon10/Resources/VRM10/vrmc_materials_mtoon_forward_fragment.hlsl @@ -13,6 +13,11 @@ half4 MToonFragment(const Varyings input) : SV_Target { + if (MToon_IsOutlinePass() && MToon_IsOutlineModeDisabled()) + { + clip(-1); + } + // Get MToon UV (with UVAnimation) const float2 uv = GetMToonGeometry_Uv(input.uv); diff --git a/Assets/VRMShaders/VRM10/MToon10/Resources/VRM10/vrmc_materials_mtoon_geometry_vertex.hlsl b/Assets/VRMShaders/VRM10/MToon10/Resources/VRM10/vrmc_materials_mtoon_geometry_vertex.hlsl index 7f361cf32..6bbec95c2 100644 --- a/Assets/VRMShaders/VRM10/MToon10/Resources/VRM10/vrmc_materials_mtoon_geometry_vertex.hlsl +++ b/Assets/VRMShaders/VRM10/MToon10/Resources/VRM10/vrmc_materials_mtoon_geometry_vertex.hlsl @@ -61,7 +61,7 @@ inline VertexPositionInfo MToon_GetOutlineVertex(const float3 positionOS, const else { VertexPositionInfo output; - output.positionWS = mul(unity_ObjectToWorld, float4(positionOS, 1)); + output.positionWS = mul(unity_ObjectToWorld, float4(positionOS * 0.001, 1)); output.positionCS = UnityWorldToClipPos(output.positionWS); return output; }