<Shader>模型颜色动态渐变,lerp的灵活使用
来源:互联网 发布:海洋 知乎 编辑:程序博客网 时间:2024/05/23 22:18
1.简单的颜色动态变化,通过坐标的值来判断fragment 返回不同的颜色值。需要注意的是模型的坐标通常是[-0.5,0.5]的范围内的,然后通过lerp函数来进行颜色的融合相加。虽然可以通过if else 等判断语句来完成,但是这样对于gpu来说是一种伤害,并补高效.
Shader "changecolor/ChangeColorTest" {Properties {_Color1 ("Main Color 1", Color) = (1,1,1,1)_Color2 ("Main Color 2", Color) = (1,0,1,1)_Center ("Main Center",Range(0.5,-0.5)) = 0_R ("Main R",Range(0.5,-0.5)) = 0.1 }SubShader {pass{CGPROGRAM#pragma vertex vertx#pragma fragment fagt#include "unitycg.cginc"float4 _Color1;float4 _Color2;float _Center;float _R;struct v2f{float4 pos : POSITION;float4 vertex : TEXCOORD0;};v2f vertx(appdata_base IN){v2f o;o.pos = mul(UNITY_MATRIX_MVP,IN.vertex);o.vertex = IN.vertex;return o;}fixed4 fagt(v2f IN):COLOR{float y = IN.vertex.y;float d = y - _Center; // 如果为正值则第一种颜色,否则负值就是第二种颜色//=======================================//要么是 -1 要么是 1//d = d/(abs(d));//值要么是1 或者 是 0//d = d/2 + 0.5;//lerp(m,n,k) = m * (1 - k) + n * k//return lerp(_Color1,_Color2,d);//=======================================//float d = IN.y - _Center; 颜色渐变值float s = abs(d);d = d/s;float f = s / _R;f = saturate(f);d *=f;d = d / 2 + 0.5;return lerp(_Color1,_Color2,d);}ENDCG}} }
阅读全文
0 0
- <Shader>模型颜色动态渐变,lerp的灵活使用
- 什么是Shader里的lerp
- 动态替换模型的shader
- Qt制作的动态颜色渐变表盘
- Android动态渐变view的颜色
- Android:动态设置颜色渐变的进度条
- unity中Lerp的使用
- 背景颜色渐变动态
- Android 颜色动态渐变
- 【Unity&NGUI】Label的颜色动态改变以及渐变颜色
- 颜色渐变-CAGradientLayer的使用
- unity实现模型颜色渐变
- 模型各部位自定义颜色Shader
- 使用 Shader 填充颜色
- 如何正确的使用Lerp In Unity
- 【Unity3D_Shader】渐变shader的比较
- toolbar的颜色渐变
- 背景颜色的渐变
- 程序侯之路的开始
- GreenDao3的基本使用
- 【Kafka】深入了解kafka
- centos7下rsync安装
- 【MFC/C++操作word】Word篇(OLED/COM)
- <Shader>模型颜色动态渐变,lerp的灵活使用
- win7 安装ujson 出现的“error: Microsoft Visual C++ 9.0 is required. Get it from http://aka.ms/vcpython27”
- eclipse 无法打开工作空间
- 详解Java类的生命周期
- 求 1-10000之间所有的素数
- Mysql无法导入
- C#的委托、匿名函数、lamda表达式简单理解,lambda的list.MoveALL()的应用
- js图表插件绘制各种类型图表
- Logging