我是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"
}
这是我测试中的图像:
这是我得到的结果:
所以有人可以给我一些建议,如何消除顶部模糊并使背景变成纯黑色?
非常感谢!
我认为您走在正确的轨道上,您的图像可以根据需要伸展到侧面。问题是这里的图像尺寸。您可能需要将输出图像更改为一半大小。
纹理具有u和v分量,基本上代表宽度和高度。您需要将输出纹理的v值减半。