我试图创建一个轮廓着色器,他有一个编辑过的轮廓,目前它看起来像这样。
Shader "test/SimpleOutline" {
Properties {
_MainTex ("Texture", 2D) = "white" {}
_OutlineColor ("Outline Color", Color) = (0,0,0,1)
_Outline ("Outline Width", Range (.002, 1.1)) = .005
}
SubShader {
Tags { "Queue"="Transparent" }
ZWrite off
CGPROGRAM
#pragma surface surf Lambert vertex:vert
struct Input {
float3 viewDir;
float2 uv_MainTex;
};
float _Outline;
float4 _OutlineColor;
void vert (inout appdata_full v) {
v.vertex.xyz += v.normal * _Outline;
}
sampler2D _MainTex;
void surf (Input IN, inout SurfaceOutput o)
{
o.Emission = float4(0, 1, 0,0);
}
ENDCG
ZWrite on
CGPROGRAM
#pragma surface surf Lambert
struct Input {
float2 uv_MainTex;
};
sampler2D _MainTex;
void surf (Input IN, inout SurfaceOutput o) {
o.Albedo = tex2D (_MainTex, IN.uv_MainTex).rgb;
}
ENDCG
}
Fallback "Diffuse"
}
我希望它像这样。
它应该与实际对象保持一定的距离Transparent,这样你就可以看到背景.完全环绕每个对象并呈弧形.就像这个喇叭?
有没有人有一个建议,如何最好地实现这一点?
嗯,有趣的问题。1. 如何在离对象的距离上实现轮廓效果?我建议用钢网 Pass1:在没有钢网的情况下画出你的网格 Pass2:在MaskColor 0的情况下画出网格,并在钢网上写上一些值 Pass3:在启用钢网的情况下画出纯色的轮廓网格,并在钢网上写上比前一关更大的 "比例"
类似的东西。
P.S.如果有时间的话,我准备过两天自己试试这个效果。