图片的灰度处理(Unity Shader)
图片变灰处理
分享一个图片变灰处理的着色器
先看一下效果图吧:
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)相关推荐
- Unity Shader 之 实现简单的动态过场切换图片的效果
Unity Shader 之 实现简单的动态过场切换图片的效果 目录 Unity Shader 之 实现简单的动态过场切换图片的效果 一.简单介绍
- Unity Shader 之 正方形图片四角圆角的简单实现(不用遮罩Mask)
Unity Shader 之 正方形图片四角圆角的简单实现(不用遮罩Mask) 目录 Unity Shader 之 正方形图片四角圆角的简单实现(不用遮罩Mask)
- Unity Shader - ddx/ddy偏导函数测试,实现:锐化、高度图、Flat shading应用、高度生成法线
文章目录 ddx, ddy 说明 DirectX - ddx, ddy OpenGL - dFdx, dFdy 伪代码表示 可用它来做什么 简单的边缘突出应用 Shader 边缘突出-锐化-增加差值 ...
- Unity Shader之磨砂玻璃与水雾玻璃效果
导读 玻璃效果是游戏场景中常见的效果之一,除却普通的透明玻璃外,磨砂玻璃也是较为常见的效果.玻璃与场景中的其他物体也会有交互,例如,浴室中的玻璃.雨天的窗户会在水汽的作用下带有一定差别的雾效.本文以U ...
- 如何用Unity Shader制作类似《炉石传说》卡牌的动态效果?
此篇为鄙人在卡牌项目中,尝试模仿<炉石传说>卡面特效所制作的特效Shader总结回顾,几经修改,最终成为了现在的样子,因为使用简单,效果明显,虽然距离<炉石传说>的卡面特效还有 ...
- 【Unity Shader编程】之十五 屏幕高斯模糊(Gaussian Blur)后期特效的实现
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/51871531 作者:毛星云(浅 ...
- 【Unity Shader】屏幕后处理2.0:实现Sobel边缘检测
边缘检测是描边效果的一种实现方法,关于描边效果其实还有更好的基于深度+法线纹理实现的方法,这里就先以边缘检测为主进行学习. 1 理解卷积 参考:深入理解卷积(卷积核到底要不要翻卷) [深度学习]深度学 ...
- Unity Shader入门精要学习笔记 - 第7章 基础纹理
转自 冯乐乐的 <Unity Shader 入门精要> 纹理最初的目的就是使用一张图片来控制模型的外观.使用纹理映射技术,我们可以把一张图"黏"在模型表面,逐纹素地控制 ...
- unity shader法线贴图实现凹凸映射效果
法线贴图 法线贴图是一张保存了物体法线信息的纹理,可以用来细化模型的光照效果. 例如一块石头表面坑坑洼洼的,如果全部用建模实现,需要非常多的顶点数和面数才能完成.但是做一个简单的模型,比如表面平整的一 ...
- Unity Shader法线贴图(Normal Map)及其原理
简介 以前经常听说"模型不好看啊,怎么办啊?"答曰"加法线","做了个高模,准备烘一下法线贴图","有的美术特别屌,直接画法线贴图 ...
最新文章
- Waiting 180 more seconds for 1 worker threads to finish
- 进程控制块PCB结构体 task_struct 描述
- Multi-commodity Flow Problem
- poj 1637 Sightseeing tour——最大流+欧拉回路
- wallpaper怎么导入视频_快速制作视频字幕,我们推荐这款可视化字幕软件!
- js html 单引号,JS 和 HTML 中的单引号与双引号
- 15分钟搭建自己的博客
- lcx端口转发linux_技术干货 | 内网渗透之代理转发
- 手机可以连上wifi,电脑连不上怎么办?
- android实现支付功能,Android支付宝支付开发实例
- shrio 权限管理filterChainDefinitions过滤器配置
- 0xc0000225无法进系统_系统重装|电脑无法开机蓝屏错误代码0xc0000225故障问题
- HTML5APP商业开发实战教程——基于WeX5可视化开发平台
- 用Python写一个走迷宫的小程序(图形化:matplotlib,dfs,prim)
- JSF学习笔记超详细,从入门到精通,持续更新中~
- OSD的主要实现方法和类型
- 英文经典欣赏:飞鸟集
- Linux就该这么学--第五期 学习笔记
- Hive入门 ------ Hive是什么,产生背景
- DevOps工具链:开放、自由地选择最适合团队和业务需要的工具
热门文章
- 22年全国数学建模比赛ABC题思路模型
- Tropical Cyclone Intensity Estimation
- C - The Little Girl who Picks Mushrooms HDU - 4422
- flutter flutter_screenutil Looking up a deactivated widget‘s ancestor is unsafe.
- UPnP和DLNA协议
- Modifier private is redundant for enum constructor
- 虚拟机安装ubuntu server及工作环境搭建
- ESP8266——入门:点亮TFT液晶屏(五)
- 仙侠手游服务器搭建。
- shift用计算机,shift是什么意思_shift键有什么用? - 学无忧