2017-07-01 93 views
-1

我对shaderlab的新功能比较陌生。我试图扭曲顶点,使它们向后推并朝向相机,就像从45度角看相机一样。我从游戏中复制效果以获得乐趣。 This是用于影响shaderlab中的顶点变形

香港专业教育学院试图implenting代码为着色器脚本,像这样的代码:

float4 vert(appdata v){ 

      float3 position = mul(unity_ObjectToWorld, v.vertex).xyz; 

      float y = position.y; 
      float z = position.x; 

      float3 parentTranslation = ParentMatrix._m30_m31_m32; 

      position -= parentTranslation; 
      position.z += AlternateLayeringScale; 
      position.z -= y; 
      position.y += position.z; 
      position += parentTranslation + float3(0,parentTranslation.z,0); 

      return position; 

     } 

但是我得到一个错误,指出它不能从FLOAT3转换为FLOAT4,我不知道怎么样它被实现了

+0

@CamiloTerevinto不是真正的C++。 Shaderlab。 Unity也支持GLSL。 – Programmer

+1

@Programmer修正了它,认为它是C++。反正离c#还很远 –

+0

没错。它远离C# – Programmer

回答

0

第四部分是'w'也被称为逆拉伸因子。从vec4转换到vec3最好做position.xyz/position.w并把它放回vec4,你可以写return fixed4(position, 1)

+0

我尝试了代码像[so](http://imgur.com/a/vLei2),但这是[远](http://imgur.com/a/fc7ax) – AlexNotTheLion