图片变灰处理

分享一个图片变灰处理的着色器

先看一下效果图吧:


Shader "Unlit/Grey"
{Properties{_MainTex ("Texture", 2D) = "white" {}}SubShader{Tags{"RenderType"="Opaque"}LOD 100pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct a2v{float4 vertex:POSITION;float2 uv:TEXCOORD0;//获取当前实例纹理的颜色值fixed4 color_v:COLOR;};struct v2f{float4 pos:SV_POSITION;float2 uv:TEXCOORD0;//存储顶点着色器传递过来的纹理的颜色fixed4 color_f:COLOR;};sampler2D _MainTex;float4 _MainTex_ST;v2f vert(a2v v){v2f o;o.pos=UnityObjectToClipPos(v.vertex);o.uv=TRANSFORM_TEX(v.uv,_MainTex);o.color_f=v.color_v;return o;}fixed4 frag(v2f i):SV_TARGET{fixed4 col;//根据当前图片的颜色判断是否置灰if (i.color_f.r<0.001f){//对当前图片的纹理采样col=tex2D(_MainTex,i.uv);float grey=dot(col,float3(0.299, 0.587, 0.114));col.rgb=float3(grey,grey,grey);}else{col=tex2D(_MainTex,i.uv);}return col;};ENDCG}}
}

脚本中调用如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class GreyTest : MonoBehaviour {public Image image01;public Image image02;Color c1 = new Color (0, 1, 1, 1);Color c2 = new Color (1, 1, 1, 1);int index = 0;// Update is called once per framevoid Update () {if (Input.GetMouseButtonDown (0)) {if (index % 2 == 0) {image01.color = c1;image02.color = c1;} else {image01.color = c2;image02.color = c2;}index++;}}
}

在属性面板中,将材质赋给需要灰度处理的图片,如下:


更多内容,欢迎关注 :


!

图片的灰度处理(Unity Shader)相关推荐

  1. Unity Shader 之 实现简单的动态过场切换图片的效果

    Unity Shader 之 实现简单的动态过场切换图片的效果 目录 Unity Shader 之 实现简单的动态过场切换图片的效果 一.简单介绍

  2. Unity Shader 之 正方形图片四角圆角的简单实现(不用遮罩Mask)

    Unity Shader 之 正方形图片四角圆角的简单实现(不用遮罩Mask) 目录 Unity Shader 之 正方形图片四角圆角的简单实现(不用遮罩Mask)

  3. Unity Shader - ddx/ddy偏导函数测试,实现:锐化、高度图、Flat shading应用、高度生成法线

    文章目录 ddx, ddy 说明 DirectX - ddx, ddy OpenGL - dFdx, dFdy 伪代码表示 可用它来做什么 简单的边缘突出应用 Shader 边缘突出-锐化-增加差值 ...

  4. Unity Shader之磨砂玻璃与水雾玻璃效果

    导读 玻璃效果是游戏场景中常见的效果之一,除却普通的透明玻璃外,磨砂玻璃也是较为常见的效果.玻璃与场景中的其他物体也会有交互,例如,浴室中的玻璃.雨天的窗户会在水汽的作用下带有一定差别的雾效.本文以U ...

  5. 如何用Unity Shader制作类似《炉石传说》卡牌的动态效果?

    此篇为鄙人在卡牌项目中,尝试模仿<炉石传说>卡面特效所制作的特效Shader总结回顾,几经修改,最终成为了现在的样子,因为使用简单,效果明显,虽然距离<炉石传说>的卡面特效还有 ...

  6. 【Unity Shader编程】之十五 屏幕高斯模糊(Gaussian Blur)后期特效的实现

    本系列文章由@浅墨_毛星云 出品,转载请注明出处.   文章链接: http://blog.csdn.net/poem_qianmo/article/details/51871531 作者:毛星云(浅 ...

  7. 【Unity Shader】屏幕后处理2.0:实现Sobel边缘检测

    边缘检测是描边效果的一种实现方法,关于描边效果其实还有更好的基于深度+法线纹理实现的方法,这里就先以边缘检测为主进行学习. 1 理解卷积 参考:深入理解卷积(卷积核到底要不要翻卷) [深度学习]深度学 ...

  8. Unity Shader入门精要学习笔记 - 第7章 基础纹理

    转自 冯乐乐的 <Unity Shader 入门精要> 纹理最初的目的就是使用一张图片来控制模型的外观.使用纹理映射技术,我们可以把一张图"黏"在模型表面,逐纹素地控制 ...

  9. unity shader法线贴图实现凹凸映射效果

    法线贴图 法线贴图是一张保存了物体法线信息的纹理,可以用来细化模型的光照效果. 例如一块石头表面坑坑洼洼的,如果全部用建模实现,需要非常多的顶点数和面数才能完成.但是做一个简单的模型,比如表面平整的一 ...

  10. Unity Shader法线贴图(Normal Map)及其原理

    简介 以前经常听说"模型不好看啊,怎么办啊?"答曰"加法线","做了个高模,准备烘一下法线贴图","有的美术特别屌,直接画法线贴图 ...

最新文章

  1. Waiting 180 more seconds for 1 worker threads to finish
  2. 进程控制块PCB结构体 task_struct 描述
  3. Multi-commodity Flow Problem
  4. poj 1637 Sightseeing tour——最大流+欧拉回路
  5. wallpaper怎么导入视频_快速制作视频字幕,我们推荐这款可视化字幕软件!
  6. js html 单引号,JS 和 HTML 中的单引号与双引号
  7. 15分钟搭建自己的博客
  8. lcx端口转发linux_技术干货 | 内网渗透之代理转发
  9. 手机可以连上wifi,电脑连不上怎么办?
  10. android实现支付功能,Android支付宝支付开发实例
  11. shrio 权限管理filterChainDefinitions过滤器配置
  12. 0xc0000225无法进系统_系统重装|电脑无法开机蓝屏错误代码0xc0000225故障问题
  13. HTML5APP商业开发实战教程——基于WeX5可视化开发平台
  14. 用Python写一个走迷宫的小程序(图形化:matplotlib,dfs,prim)
  15. JSF学习笔记超详细,从入门到精通,持续更新中~
  16. OSD的主要实现方法和类型
  17. 英文经典欣赏:飞鸟集
  18. Linux就该这么学--第五期 学习笔记
  19. Hive入门 ------ Hive是什么,产生背景
  20. DevOps工具链:开放、自由地选择最适合团队和业务需要的工具

热门文章

  1. 22年全国数学建模比赛ABC题思路模型
  2. Tropical Cyclone Intensity Estimation
  3. C - The Little Girl who Picks Mushrooms HDU - 4422
  4. flutter flutter_screenutil Looking up a deactivated widget‘s ancestor is unsafe.
  5. UPnP和DLNA协议
  6. Modifier private is redundant for enum constructor
  7. 虚拟机安装ubuntu server及工作环境搭建
  8. ESP8266——入门:点亮TFT液晶屏(五)
  9. 仙侠手游服务器搭建。
  10. shift用计算机,shift是什么意思_shift键有什么用? - 学无忧