我试图编写一个缩放对象大小的顶点着色器。我找到了许多解决方案"对于这个问题,一切都是沿着法线扩展顶点"像这样:
v2f vert(appdata_base v)
{
v2f OUT;
float3 norm = normalize(v.normal); //Unity 5 fix
v.vertex.xyz += norm * _Scaling;
OUT.pos = mul(UNITY_MATRIX_MVP, v.vertex);
OUT.normals = v.normal;
return OUT;
}
但是,这对于具有锐边的对象(例如立方体)不起作用。在立方体的情况下,它只是使侧面直接移出,但是侧面保持相同的尺寸,因此你得到一个"爆炸"立方体:
有人可以告诉我,为了让任何对象在着色器中正确缩放,我可能会缺少什么?
答案 0 :(得分:2)
你有中心,你也有相对于它的verticies位置向量。您可以找到它的大小,然后进行缩放。
答案 1 :(得分:-1)
这可能会有所帮助:
float3 normal= normalize(v.vertex.xyz)*0.05;
v.vertex.xyz+= normal;
使用以下命令禁用该着色器的动态批处理:
Tags {"DisableBatching"="True"}