如何在Unity Shader中缩放图像而不会模糊?

问题描述 投票:0回答:1

我是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

所以有人可以给我一些建议,如何消除顶部模糊并使背景变成纯黑色?

非常感谢!

unity3d shader
1个回答
0
投票

我认为您走在正确的轨道上,您的图像可以根据需要伸展到侧面。问题是这里的图像尺寸。您可能需要将输出图像更改为一半大小。

纹理具有u和v分量,基本上代表宽度和高度。您需要将输出纹理的v值减半。

© www.soinside.com 2019 - 2024. All rights reserved.