摄像机离得很近以后线条会变乱
当摄像机拉近到一个比较近的距离以后线条会变乱,应该是算法有点小问题。
是的,没记错的话问题出在shader的这几行代码。 o.vertex1 = UnityObjectToClipPos(vertex1 + vertex1_normal * 0.001f) * is_edge; o.vertex2 = UnityObjectToClipPos(vertex2 + vertex2_normal * 0.001f) * is_edge; 这样一乘,如果is_edge是0,那z和w都变成0了,到了片元着色器 float3 e0 = input[0].vertex1.xyz / input[0].vertex1.w; float3 e1 = input[0].vertex2.xyz / input[0].vertex2.w; 噢,问题就来了,当时我想尽可能消除条件判断,写得不太严谨。
然后后面的计算也有问题,应该改成这样。 float2 v = normalize(e1.xy - e0.xy); float2 n = float2(-v.y, v.x) * PctExtend * (e0.z + e1.z + 1) * 0.5f; float2 ext = 0.001 * v; float4 v0 = float4(e0.xy + n * 0.5 - ext, e0.z, 1.0) * input[0].vertex1.w; float4 v1 = float4(e0.xy - n * 0.5 - ext, e0.z, 1.0) * input[0].vertex1.w; float4 v2 = float4(e1.xy + n * 0.5 + ext, e1.z, 1.0) * input[0].vertex2.w; float4 v3 = float4(e1.xy - n * 0.5 + ext, e1.z, 1.0) * input[0].vertex2.w;