Как в Unity Shader масштабировать изображение без размытия? - PullRequest
0 голосов
/ 16 июня 2020

Я новичок ie в шейдерах Unity. Я пытаюсь масштабировать изображение по вертикали. Вот код шейдера, который я использую:

Shader "Custom/PostMainCameraProcessShader"
{
Properties{
    _MainTex("Screen Texture", 2D) = "white" {}
    _Param("Param", float) = 1
}
SubShader{
    Pass {

        CGPROGRAM
        #pragma vertex vert
        #pragma fragment frag
        #pragma fragmentoption ARB_precision_hint_fastest
        #include "UnityCG.cginc"

        struct v2f {
            float4 vertex : SV_POSITION;
            float2 uv     : TEXCOORD0;
        };

        sampler2D _MainTex;
        float4 _MainTex_TexelSize;
        float _Param;

        v2f vert(appdata_img v) {
            v2f o;
            o.vertex = UnityObjectToClipPos(v.vertex);
            o.uv = v.texcoord;

            return o;
        }

        fixed4 frag(v2f i) : COLOR
        {
            float2 uv = i.uv;
            uv.y *= _Param;
            fixed4 tex_screen = tex2D(_MainTex, uv);
            return tex_screen;
        }

        ENDCG
    }
}
FallBack "Diffuse"
}

Вот изображение в моем тесте:

enter image description here

А вот Результат, который я получил:

enter image description here

Итак, может ли кто-нибудь дать мне несколько советов, как мне удалить верхнее размытие и сделать фон чисто черным?

Большое спасибо!

1 Ответ

1 голос
/ 16 июня 2020

Думаю, вы на правильном пути, ваше изображение тянется в стороны как хотите. Проблема здесь в размере изображения. Возможно, вам нужно изменить выходное изображение, чтобы оно было вдвое меньше.

Текстура имеет компоненты u и v, которые в основном обозначают ширину и высоту. Вам нужно вдвое уменьшить значение v для выходной текстуры.

Один из альтернативных способов - попробовать Texture2D.Resize или Material.SetTextureScale в C# script.

EDIT: Я немного проверил, и кажется, что невозможно изменить размеры текстуры в скрипте шейдера, поэтому вам следует go с альтернативой C#, которую я опубликовал выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...