Искажение вершины в шейдерлабе

Я довольно плохо знаком с шедерлабом с единством. Я пытаюсь исказить вершины, чтобы они двигались назад и к камере, почти как при взгляде на камеру под углом 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)

Другие вопросы по тегам