Unity升级到5.6及以后,所有跟UNITY_MATRIX_MVP运算的矩阵或者向量的mul方法,会被自动转成UnityObjectToClipPos方法,如下
RM假定是一个4x4的旋转矩阵,会被强转成
初始我们是想获得一个4x4的带旋转的MVP变换矩阵,但是我们看一下UnityObjectToClipPos这个方法的实现
返回的是一个float4的变量,这也就是我们主题中包含的错误,cannot implicitly convert from 'float4x4' to 'float4',如果想保存与UNITY_MATRIX_MVP的矩阵运算,我们可以用以下方法避开Unity给UNITY_MATRIX_MVP的强制转换
unity通过字符识别对语义强转,修改字符可以避免这一问题,当然也可以在脚本中定义我们自己的mvp矩阵,shader使用传入的mvp矩阵进行运算也是可以的。