文档章节

黑白图片切换shader

 江湖令
发布于 2017/06/18 21:40
字数 133
阅读 19
收藏 0

通过公式改变材质Color属性,实现黑白图片效果。

Shader "Unlit/NewUnlitShader"
{
	Properties
	{
		_MainTex ("Texture", 2D) = "white" {}
		_GrayImage ("ChangeGray",float) = 1
	}
	SubShader
	{
		Tags { "RenderType"="Opaque" }
		LOD 100

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

			struct appdata
			{
				float4 vertex : POSITION;
				half4 color : COLOR;
				float2 texcoord : TEXCOORD0;
			};

			struct v2f
			{
				float2 texcoord : TEXCOORD0;
				half4 color : COLOR;
				float4 vertex : SV_POSITION;
			};

			sampler2D _MainTex;
		    float _GrayImage;
			float4 _MainTex_ST;
			
			v2f vert (appdata v)
			{
				v2f o;
				o.vertex = UnityObjectToClipPos(v.vertex);
				o.color = v.color;
				o.texcoord = v.texcoord;
				return o;
			}
			
			fixed4 frag (v2f i) : COLOR
			{
				fixed4 col;  
				if (_GrayImage == 1)  
				{  
					col = tex2D(_MainTex, i.texcoord);  
					float grey = dot(col.rgb, float3(0.299, 0.587, 0.114));  
					col.rgb = float3(grey, grey, grey);  
				}  
				else  
				{  
					col = tex2D(_MainTex, i.texcoord) * i.color;  
				}  
				return col;  
			}
			ENDCG
		}
	}
}

 

© 著作权归作者所有

共有 人打赏支持
粉丝 1
博文 71
码字总数 14376
作品 0
西安
私信 提问
从0打造一个GPUImage(4)

用容易理解的语言讲一些不太容易理解的概念. 答疑 上一章提了个问题,就是如何写fragment shader绘制 -w200 这样的图像。 现在揭晓一下答案。 ContentMode UIImageView的contentMode经常使用...

叶孤城___
2017/11/20
0
0
WPF/Silverlight深度解决方案:(六)HLSL自定义渲染特效之完美攻略(上)

Shader Effect中文名称为“渲染特效”或“滤镜”,WPF中自带有5种位图特效及2种渲染特效,而Silverlight中仅有这2种渲染特效: BlurEffect(模糊渲染)和 DropShadowEffect(投影渲染)。由于目前...

晨曦之光
2012/03/09
0
0
[OpenGL] 利用Shader实现复杂地形的渲染

已经好久没写关于OpenGL的博客了。不过昨天晚上,和我一个可爱的小学弟做了一个娱乐程序,也正好用来写一篇博客。 我们在游戏中经常能见到一座高耸的山,雪线以上是白皑皑的积雪,雪线以下是...

Mahabharata_
2017/10/07
0
0
仿唱吧UI效果

这几天想放开歌喉 唱歌 下了唱吧app,发现里面的交互效果 挺好玩的,突然就想写出来 (可能这就是本能吧) 左侧是本地效果,图二是唱吧效果 这里写代码片 这里写图片描述 这里写图片描述 这里写图...

越长越圆
02/24
0
0
写 Shader 转场的几点思考

前言 转场效果在视频编辑工具中最为常见,在两段视频或图像之间增加一个「过渡」的效果,可以让整个过程更佳柔滑自然。常见的转场如渐变过渡、旋转、擦除等(下图为 iMovie 自带转场): 而且...

_Hahn_
09/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

new Date() 在Safari下的 Invalid Date问题

问题复现 var timeStr = '2018-11-11 00:00:00';var time = new Date(timeStr);// error: Invalid Date... 在safari浏览器下,time为Invalid Date, 导致后面代码执行错误; 其他浏览器诸...

会写代码的husky
11分钟前
1
0
0009-如何升级Cloudera Manager和CDH

1.文档编写目的 本文档讲述如何升级Cloudera Manager和CDH,通过本文档,您将学习到以下知识: 1.如何对Cloudera Manager进行停机升级 2.如何对CDH进行停机升级 3.如何在不影响集群作业的情况...

Hadoop实操
21分钟前
0
0
vue2中引用 better-scroll的方法

文章主要介绍了vue2中引用better-scroll和使用 better-scroll的方法,使用时有三个要点及注意事项在文中给大家详细介绍 ,需要的朋友可以参考下 使用时有三个要点: 一:html部分 <div class...

前端攻城老湿
31分钟前
0
0
浅谈教你如何掌握Linux系统

linux能做什么?相信绝大数人都有这样的疑问。可以玩吃鸡吗?可以玩lol吗? 如果你是以娱乐的名义来评价linux的可用性,对不起,linux可能不适合你,因为linux是一个工具,他是教你聪明的,不...

linuxprobe16
38分钟前
0
0
java中线程池的生命周期

线程池生命周期包括: RUNNING:接收新的任务并处理队列中的任务 SHUTDOWN:不接收新的任务,但是处理队列中的任务 STOP:不接收新的任务,不处理队列中的任务,同时中断处理中的任务 TIDYING:所...

小刀爱编程
45分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部