我希望为发射立方体网格的粒子系统创建一个无光照着色器,这样每个发射的网格周围都有一个坚硬的黑色轮廓。
这是大纲的通行证(在 Cg 中):
struct appdata {
float4 vertex : POSITION;
float3 normal : NORMAL;
};
struct v2f {
float4 pos : POSITION;
float4 color : COLOR;
};
uniform float _Outline;
uniform float4 _OutlineColor;
v2f vert(appdata v) {
v2f o;
v.vertex *= ( 1 + _Outline);
o.pos = UnityObjectToClipPos(v.vertex);
o.color = _OutlineColor;
return o;
}
half4 frag(v2f i) :COLOR { return i.color; }
(在此之后是一个简单的传递来渲染网格本身的无光照几何......)
如您所见,我们只是将顶点向外拉伸……但是从什么开始呢?
对于单个立方体网格,着色器完美运行:
但是,当应用于发射立方体网格的粒子系统时,着色器会发生故障:
我的怀疑是这条线从对象v.vertex *= ( 1 + _Outline);
中心向外延伸顶点,而不是网格中心。
是否有人对如何解决此问题有替代着色器或见解?
谢谢, 雅各布