一个很简单的用mask裁剪图片的效果:

mask:

被裁剪图片:

正确的效果:

在小米2s上测,其中有一台小米2s出现花屏:

手机型号:

shader如下:

Shader "UI/Transparent Masked"
{
    Properties
    {
        _MainTex ("Base (RGB)", 2D) = "black" {}
        _Mask ("Base (RGB Mask)", 2D) = "white" {}
    }
    
    SubShader
    {
        LOD 200

Tags
        {
            "Queue" = "Transparent"
            "IgnoreProjector" = "True"
            "RenderType" = "Transparent"
        }
        
        Pass
        {
            Cull Off
            Lighting Off
            ZWrite Off
            Fog { Mode Off }
            Offset -1, -1
            Blend SrcAlpha OneMinusSrcAlpha

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

sampler2D _MainTex;
            sampler2D _Mask;
            float4 _MainTex_ST;
    
            struct appdata_t
            {
                float4 vertex : POSITION;
                float2 texcoord : TEXCOORD0;
                float2 texcoord1 : TEXCOORD1;
                fixed4 color : COLOR;
            };
    
            struct v2f
            {
                float4 vertex : SV_POSITION;
                float2 texcoord : TEXCOORD0;
                float2 texcoord1 : TEXCOORD1;
                fixed4 color : COLOR;
            };
    
            v2f o;

v2f vert (appdata_t v)
            {
                o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
                o.texcoord = v.texcoord;
                o.texcoord1 = v.texcoord1;
                o.color = v.color;
                return o;
            }
                
            fixed4 frag (v2f IN) : COLOR
            {
            
                fixed4 col = tex2D(_MainTex, IN.texcoord) * IN.color;
                col.a=tex2D(_Mask, IN.texcoord1).r;
                return col;
            }
            ENDCG
        }
    }
}

以下两种修改方法可以使显示恢复正常:

改法1:改用float精度

将frag改为:

fixed4 frag (v2f IN) : COLOR
            {
            
                float4 col = tex2D(_MainTex, IN.texcoord) * IN.color;
                col.a=tex2D(_Mask, IN.texcoord1).r;
                return col;
            }

改法2:仍使用fixed精度

将frag改为:

fixed4 frag (v2f IN) : COLOR
            {
            
              fixed4 col = tex2D(_MainTex, IN.texcoord) * IN.color;
                fixed alpha=tex2D(_Mask, IN.texcoord1).r;
                fixed4 finalCol=col*fixed4(1,1,1,alpha);
                return finalCol;
            }

补充:

改成:

fixed4 frag (v2f IN) : COLOR
            {
            
                fixed4 col = tex2D(_MainTex, IN.texcoord) * IN.color;
                fixed alpha=tex2D(_Mask, IN.texcoord1).g;
                fixed4 finalCol=fixed4(col.rgb,alpha);
                return finalCol;
            }

也不行。

unity shader在小米2s上的问题的更多相关文章

  1. Unity Shader入门精要学习笔记 - 第16章 Unity中的渲染优化技术

    转自冯乐乐的 <Unity Shader 入门精要> 移动平台的特点 为了尽可能一处那些隐藏的表面,减少overdraw(即一个像素被绘制多次),PowerVR芯片(通常用于ios设备和某 ...

  2. 【Unity Shader】(六) ------ 复杂的光照(上)

    笔者使用的是 Unity 2018.2.0f2 + VS2017,建议读者使用与 Unity 2018 相近的版本,避免一些因为版本不一致而出现的问题.              [Unity Sha ...

  3. Unity Shader IDE — Sublime Text2

    使用MonoDevelop写了一段时间的Shader代码,发现效率太低了,所以换用Sublime Text. 安装Sublime Text 1.下载 sublime Text2 官网:http://w ...

  4. 小米2S 连接Ubuntu Android Studio

    1. 首先打开手机上的开发者选项,USB调试.拨号:*#*#717717#*#*  ,手机会以Toast形式出现“……enable”字样.再次拨号可disable. 2. Ubuntu安装mtpfs: ...

  5. 小米2s 降到1299

    关于这个价格,网上叫声一片,尤其是几天前刚买了小米2s的,恨死了雷布斯…… 以下是来自百度贴吧的帖子: [02-27 米粉杂谈]我来说个关于价格的事实吧 http://tieba.baidu.com/ ...

  6. 小米2s使用Hexamob Recovery PRO恢复数据

    这东西对于手机来说, 真是神器啊 现在很多手机都是以MTP连接到电脑的, 所以在PC上是看不到盘符, 也就无法使用finaldata 之类的工具恢复了. 而像小米2S这样的手机, 无法外接SD卡, 则 ...

  7. 实测Eclipse连接小米2S调试问题

    小米2S手机在Eclipse真机调试时,设备选择列表无法显示手机,DDMS也连接不上设备,解决步骤: 1.打开手机设置中开发者选项 - USB调试开启: 2.保证小米2S手机Windows下设备驱动已 ...

  8. 【我的书】Unity Shader的书 — 文件夹(2015.12.21更新)

    写在前面 感谢全部点进来看的朋友.没错.我眼下打算写一本关于Unity Shader的书. 出书的目的有以下几个: 总结我接触Unity Shader以来的历程,给其它人一个借鉴.我非常明确学Shad ...

  9. [Unity Shader]Shader前述

    什么是Shader   Shader,也就是着色器,它的工作就是读取你的网格并渲染在屏幕上.Shader可以定义一些属性,你会用它来影响渲染模型时所显示的效果.当存储了这些属性的设置时,就是一个Mat ...

随机推荐

  1. What is hmux in resin?

    When I start the Resin server it says hmux listening to localhost:6802 What is this hmux? Is this a ...

  2. IOS开发在线文档 记录下

    View Programming Guide for iOS https://developer.apple.com/library/prerelease/ios/documentation/UIKi ...

  3. python 安装操作 MySQL 数据库.

    以ubuntu和mysql为例 检查自己的机器上面有没有安装数据库 xpower@xpower-CW65S:~$ sudo service mysql start [sudo] xpower 的密码: ...

  4. win下隐藏任务栏

    C# 隐藏任务栏开始按钮 关闭shell 分类: .NET C# 2011-07-14 15:26 789人阅读 评论(1) 收藏 举报 shell任务c#stringnulluser 一.隐藏任务栏 ...

  5. React Native 组件之TextInput

    React Native 组件之TextInput类似于iOS中的UITextView或者UITextField,是作为一个文字输入的组件,下面的TextInput的用法和相关属性. /** * Sa ...

  6. UNION语句查询(转载)

    联合查询   在对数据信息进行操作时,有时需要将不同数据表中的数据信息组合在一起,这时需要使用联合查询.联合查询指的是将多表中的行数据组合在一个数据集中进行显示.本节将讲解有关联合查询方面的相关知识. ...

  7. HDU 5644 (费用流)

    Problem King's Pilots (HDU 5644) 题目大意 举办一次持续n天的飞行表演,第i天需要Pi个飞行员.共有m种休假计划,每个飞行员表演1次后,需要休假Si天,并提供Ti报酬来 ...

  8. C#判断字符串是否为数字

    string i = Console.ReadLine();            int a=0;            if (int.TryParse(i, out a) == false) / ...

  9. C语言--- 字符串数组 、 预处理器和预处理指令 、 多文件编程 、 结构体

    1 输入一个姓名,判断是否是五虎上将. 1.1 问题 本案例需要使用交互的方式判断:用户从控制台输入一个名字,由程序判断该名字是否在五虎上将的名单中.五虎上将的名单是:GuanYu.ZhangFei. ...

  10. css 中input和select混排对齐问题

    当INPUT.SELECT及用图片做的button放在一起(并排放一起)时,没法子对齐,一个vertical-align:middle就可搞定.