From eb97c90916d71444f546ece76a237482ebf7b5ab Mon Sep 17 00:00:00 2001 From: Aleksey Kuzmichev Date: Mon, 5 Oct 2020 12:02:03 +0300 Subject: [PATCH] Const outline width in ortho camera regardless of camera size --- QuickOutline/Resources/Shaders/OutlineFill.shader | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/QuickOutline/Resources/Shaders/OutlineFill.shader b/QuickOutline/Resources/Shaders/OutlineFill.shader index f546473..351d307 100644 --- a/QuickOutline/Resources/Shaders/OutlineFill.shader +++ b/QuickOutline/Resources/Shaders/OutlineFill.shader @@ -66,7 +66,10 @@ Shader "Custom/Outline Fill" { float3 viewPosition = UnityObjectToViewPos(input.vertex); float3 viewNormal = normalize(mul((float3x3)UNITY_MATRIX_IT_MV, normal)); - output.position = UnityViewToClipPos(viewPosition + viewNormal * -viewPosition.z * _OutlineWidth / 1000.0); + //UNITY_MATRIX_P[3].w == 0.0 - Perspective camera projection matrix + //UNITY_MATRIX_P[3].w == 1.0 - Orthographic camera projection matrix + //UNITY_MATRIX_P[1].y - Orthographic camera half height + output.position = UnityViewToClipPos(viewPosition + viewNormal * (-viewPosition.z * (1 - UNITY_MATRIX_P[3].w) + abs(2 * UNITY_MATRIX_P[3].w * (1 / (UNITY_MATRIX_P[1].y)))) * _OutlineWidth / 1000.0); output.color = _OutlineColor; return output;