Fragment shader---片段级模型动态变色1
2018-01-07 05:56
183 查看
1、在顶点中设置颜色
分别设置maincolor和secondcolor的颜色为红色和黄色,且颜色进行了融合
2、将颜色代码写在片段程序当中
颜色明显进行了分层,片段级对像素进行了很细致的区分
3、将分割点做成一个变量
4、
注:COLOR:COLOR语义的特殊性,范围是从0到1,所以如果有负值,会强制变为0,传递过去没有负值,所以坐标不能用COLOR语义
Shader "Custom/s_f_color" { Properties { _MainColor ("_MainColor", Color) = (1,1,1,1) _SecondColor("SecondColor",color)=(1,1,1,1) } SubShader{ pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "unitycg.cginc" float4 _MainColor; float4 _SecondColor; struct v2f { float4 pos:POSITION; float4 col:COLOR; }; v2f vert(appdata_base v) { v2f o; o.pos = mul(UNITY_MATRIX_MVP,v.vertex); if (v.vertex.y < 0) o.col = _MainColor; else o.col = _SecondColor; return o; } fixed4 frag(v2f IN) :COLOR{ return IN.col; } ENDCG } } }
分别设置maincolor和secondcolor的颜色为红色和黄色,且颜色进行了融合
2、将颜色代码写在片段程序当中
Shader "Custom/s_f_color" { Properties { _MainColor ("_MainColor", Color) = (1,1,1,1) _SecondColor("SecondColor",color)=(1,1,1,1) } SubShader{ pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "unitycg.cginc" float4 _MainColor; float4 _SecondColor; struct v2f { float4 pos:POSITION; float y:COLOR; }; v2f vert(appdata_base v) { v2f o; o.pos = mul(UNITY_MATRIX_MVP,v.vertex); o.y = v.vertex.y; return o; } fixed4 frag(v2f IN) :COLOR{ if (IN.y <0) return _MainColor; else return _SecondColor; } ENDCG } } }
颜色明显进行了分层,片段级对像素进行了很细致的区分
3、将分割点做成一个变量
Shader "Custom/s_f_color" { Properties { _MainColor ("_MainColor", Color) = (1,1,1,1) _SecondColor("SecondColor",color)=(1,1,1,1) _Center("Center",range(-0.5,0.5))=0 } SubShader{ pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "unitycg.cginc" float4 _MainColor; float4 _SecondColor; float _Center; struct v2f { float4 pos:POSITION; float y:TEXTCOORD0; }; v2f vert(appdata_base v) { v2f o; o.pos = mul(UNITY_MATRIX_MVP,v.vertex); o.y = v.vertex.y; return o; } fixed4 frag(v2f IN) :COLOR{ if (IN.y <_Center) return _MainColor; else return _SecondColor; } ENDCG } } }
4、
注:COLOR:COLOR语义的特殊性,范围是从0到1,所以如果有负值,会强制变为0,传递过去没有负值,所以坐标不能用COLOR语义
相关文章推荐
- Cg入门20:Fragment shader - 片段级模型动态变色(实现汽车动态换漆)
- Fragment shader---片段级模型动态变色2
- Cg入门19:Fragment shader - 片段级模型动态变色
- pAdTy_-6 用片段(fragment)构建动态的用户界面(UI)
- 动态替换模型的shader
- Fragment shader---片段颜色混合(接收阴影)
- OpenGL ES 2.0——片段着色器Fragment Shader
- Unity3D - Shader - 顶点片段着色器(Vertex and Fragment Shaders)
- Unity Shader特效——人物模型动态光特效
- Cg入门16:Fragment shader - 片段级光照
- Cg入门17:Fragment shader - 片段级光照(添加阴影)
- Unity3D shader(12)——Fragment Shader(模型颜色变化)
- <Shader>模型颜色动态渐变,lerp的灵活使用
- Unity Shader 顶点和片段着色器(Vertex and Fragment Shader)
- Android学习笔记--viewpager动态加载Fragment不显示问题
- ViewPager动态替换数据源------Fragment
- 【Aladdin Unity3D Shader编程】之二 光照模型(一)
- BroadcastReceiver 广播的使用 (activity广播到fragment中,使用静态的没有成功,我就使用动态的 ,是可以的)
- Activity动态添加fragment
- OSGI(面向Java的动态模型系统)和它的实现Equinox