UGUI 图片将其他颜色去除,显示灰色图片

本例适用于 UGUI

一般项目中会有一些图标,当你拥有该图标显示为彩色图标,一般项目中最占资源的就是图片,不允许添加一张彩色图片,一张灰色图片,必须通过一些方法将彩色图标的颜色去掉,获取图标的灰色值。

UGUI 自带了一个Shader, Sprites/Default, 默认给了一个添加该Shader 的材质球

 1 Shader "UISprites/DefaultGray"
 2 {
 3     Properties
 4     {
 5         [PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
 6         _Color ("Tint", Color) = (1,1,1,1)
 7         [MaterialToggle] PixelSnap ("Pixel snap", Float) = 0
 8
 9         //---Add---
10         // Change the brightness of the Sprite
11         _GrayScale ("GrayScale", Float) = 1
12         //---Add---
13     }
14
15     SubShader
16     {
17         Tags
18         {
19             "Queue"="Transparent"
20             "IgnoreProjector"="True"
21             "RenderType"="Transparent"
22             "PreviewType"="Plane"
23             "CanUseSpriteAtlas"="True"
24         }
25
26         Cull Off
27         Lighting Off
28         ZWrite Off
29         Blend One OneMinusSrcAlpha
30
31         Pass
32         {
33         CGPROGRAM
34             #pragma vertex vert
35             #pragma fragment frag
36             #pragma multi_compile _ PIXELSNAP_ON
37             #include "UnityCG.cginc"
38
39             struct appdata_t
40             {
41                 float4 vertex   : POSITION;
42                 float4 color    : COLOR;
43                 float2 texcoord : TEXCOORD0;
44             };
45
46             struct v2f
47             {
48                 float4 vertex   : SV_POSITION;
49                 fixed4 color    : COLOR;
50                 half2 texcoord  : TEXCOORD0;
51             };
52
53             fixed4 _Color;
54
55             v2f vert(appdata_t IN)
56             {
57                 v2f OUT;
58                 OUT.vertex = mul(UNITY_MATRIX_MVP, IN.vertex);
59                 OUT.texcoord = IN.texcoord;
60                 OUT.color = IN.color * _Color;
61                 #ifdef PIXELSNAP_ON
62                 OUT.vertex = UnityPixelSnap (OUT.vertex);
63                 #endif
64
65                 return OUT;
66             }
67
68             sampler2D _MainTex;
69             float _GrayScale;
70
71             fixed4 frag(v2f IN) : SV_Target
72             {
73                 fixed4 c = tex2D(_MainTex, IN.texcoord) * IN.color;
74
75                 //---Add--
76                 float cc = (c.r * 0.299 + c.g * 0.518 + c.b * 0.184);
77                 cc *= _GrayScale;
78                 c.r = c.g = c.b = cc;
79                 //---Add--
80
81                 c.rgb *= c.a;
82                 return c;
83             }
84         ENDCG
85         }
86     }
87 }

UGUI 图片去色,变灰度图相关推荐

  1. Android之给图片去色,返回灰度图片以及ColorMatrix中setSaturation方法的用法

    原图: 效果图: 实现以上效果其实很简单,直接上代码: public class MainActivity extends Activity {private Button btn_start;pri ...

  2. OprenCV学习之路一:将彩色图片转换成灰度图

    //将一张彩色图片转成灰度图:#include<cv.h> #include<cvaux.h> #include<highgui.h> #include<ml ...

  3. 精雕软件怎么把图片转成灰度图_怎么把普通的照片变成浮雕用的灰度图 精雕图 灰度图 浮雕图之间怎么能联系起来使用...

    怎么把普通的照片变成浮雕用的灰度图 用PS啊,里面有这种效果的,若需要帮忙的话,可以加发给我一份啊,尽量帮你哈,呵呵 用 photoshop 把照片变成灰度图,用PS做有很多方法,介绍两种: 方法1: ...

  4. 单通道图片转换为3通道图片,实现灰度图上添加彩色标注

    对于纯粹的单通道图片(灰度图)利用opencv是无法在图片上附加彩色标注的,这时就需要将单通道图片转换为三通道图片才行.由于图片中没有另外两个通道的数据,因此直接将已有的数据给另外两个通道就行. 注意 ...

  5. python将图片转成灰度图

    运行代码工具:jupyter notebook 图片保存在运行目录下 from PIL import Image I = Image.open('C:/Users/LitmoonHoney/Deskt ...

  6. matlab批量将图片处理为灰度图

    matlab批量处理图片的灰度,将其保存在指定创建的文件夹之中. 代码案例如下: clc clear % 将图片批量转化为灰度图 % 首先需要创建灰度图保存的文件夹 % 读取图片的路径格式:'F:\M ...

  7. 把图片做成html,HTML5实践-图片设置成灰度图

    以前,在web上要显示灰度图片的话,只有手工使用图片软件转换.但是现在借助于html5的canvas可以实现这个过程,而不需要再借助图片编辑软件了.我用html5和jquery做了一个demo,来展示 ...

  8. 精雕软件怎么把图片转成灰度图_bmp灰度图怎么转精雕浮雕图和做刀路?

    1.文件--输入--点阵图像(选择灰度图,bmp格式的) 2.绘制--绘制出一个你需要做的图案的形状,注意计算比例尺 3.用你绘制的图形来截取灰度图,截取你要的图案部分,截取的部分就是你要做出来的路径 ...

  9. UGUI 图片去色,取灰色(借鉴大神,仅作为笔记用)

    本例适用于 UGUI 一般项目中会有一些装备图标等,当你拥有该装备时该图标显示为彩色图标,没有改装备时图标显示为灰色图标,一般项目中最占资源的就是图片,不允许添加一张彩色图片,一张灰色图片,必须通过一 ...

最新文章

  1. SMS系列之六:利用SMS实现操作系统的补丁分发
  2. 独家 | 神策 2019 数据驱动大会现场「视频+PPT」合集
  3. sklearn线性回归
  4. Maven 加载ojdbc14.jar报错,解决方法
  5. ThinkPHP3.2 实现阿里云OSS上传文件
  6. 字符串转换为整数的源码atoi()
  7. Github客户端使用教程
  8. Java的Socket编程
  9. linux 增加maven内存,Ubuntu Linux系统下Apache Maven的安装和配置
  10. Gstreamer1.16.2与Glib2 signals关键字冲突解决(十一)
  11. python矩阵运算与线形代数_Python 执行矩阵与线性代数运算
  12. DIAView 嵌入视频监控(海康威视)
  13. 完整制作个人博客系统
  14. 24-思科防火墙:ASA透明防火墙实验
  15. Python轮盘抽奖游戏
  16. 计算机硬件知识调查表,计算机硬件的调研报告(精).docx
  17. Linux时间设置和motd设置
  18. Vue之Hello World!
  19. Play框架最快上手!
  20. Android自定义ViewPager图片指示器,兼容实现底部横线指示器

热门文章

  1. 洛谷P4037 [JSOI2008]魔兽地图 题解
  2. 质量效应3声音设计师们
  3. HDU-A Fibonacci sequence斐波那契数列-大数求和
  4. javaScript实现五星好评代码
  5. 【雅思备考】写作表达积累
  6. SSM项目:问卷调查1
  7. “老龄化”创造的电商机遇:重视中老年的“银发市场”
  8. ARP 360度观察
  9. 专利实质审查请求期限
  10. 计算机开机民鸣叫不能启动,电脑无法开机,伴有三声鸣叫。