Искажение вершины в шейдерлабе
Я довольно плохо знаком с шедерлабом с единством. Я пытаюсь исказить вершины, чтобы они двигались назад и к камере, почти как при взгляде на камеру под углом 45 градусов. Я копирую эффект из игры для развлечения. Это код, используемый для эффекта
я попытался внедрить код в скрипт шейдера следующим образом:
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, я не уверен, как это было реализовано
1 ответ
Четвертая часть 'w' также называется обратным коэффициентом растяжения. Для конвертации из vec4 в vec3 лучше всего сделать position.xyz / position.w
и положить его обратно в vec4 вы можете написать return fixed4(position, 1)