201808182326->利用shader对图片进行翻转(2)

本文介绍了一种使用Shader实现图片翻转的方法,并详细解释了如何通过修改UV坐标来完成翻转效果。文中还讨论了Sprite的Wrap Mode设置对翻转结果的影响及解决办法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在一开始的时候我利用shader对目标图片进行翻转

shader代码如下:

Shader "Custom/FragMove" {
    Properties 
    {
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
    }
        SubShader
        {
            Pass
        {
            CGPROGRAM

        #pragma vertex vert
        #pragma fragment frag
        #include "UnityCG.cginc"

        //输入结构
            struct appdata
        {
            float4 vertex : POSITION;
            float2 uv : TEXCOORD0;
        };

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

        sampler2D _MainTex;
        float _MoveSpeed;

        v2f vert(appdata data)
        {
            v2f v;
            v.vertex = UnityObjectToClipPos(data.vertex);
            v.uv = data.uv;
            return v;
        }


        float4 frag(v2f vert) : SV_Target //SV_Target是输出数据
        {
            float2 OffsetUV = vert.uv;
            OffsetUV.x = OffsetUV.x * -1;//x轴翻转
            //OffsetUV.y = OffsetUV.y * -1;//y轴翻转
            float4 texCol = tex2D(_MainTex, OffsetUV);
            return texCol;
        }

            ENDCG
        }
            
        }
    FallBack "Diffuse"
}
 

但是到image就显示不对了

图片直接变黑

后来知道sprite中wrap mode对uv的影响

若sprite中wrap mode为边界模式

则uv翻转后依然显示为边界

边界若为黑色则显示黑色(本人目标图片的边界为黑色)

于是我将wrap mode改成repeating

目标图片翻转后正常显示

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值