外发光材质Shader
2015-02-14 13:16
197 查看
转载自http://www.unitymanual.com/6943.html
游戏中我们经常会遇到需要制作外发光效果的地方,比如武器,比如坐骑要带一个牛掰的光晕。今天我找到了个好效果:
外发光材质Shader
游戏中我们经常会遇到需要制作外发光效果的地方,比如武器,比如坐骑要带一个牛掰的光晕。今天我找到了个好效果:
外发光材质Shader
001Shader"Faye/OutLightting"002{003 Properties004 {005 _MainTex("Texture(RGB)",2D)="black"{}006 _Color("Color",Color)=(0,0,0,1)007 _AtmoColor("AtmosphereColor",Color)=(0.5,0.5,1.0,1)008 _Size("Size",Float)=0.1009 _Falloff("Falloff",Float)=5010 _FalloffPlanet("FalloffPlanet",Float)=5011 _Transparency("Transparency",Float)=15012 _TransparencyPlanet("TransparencyPlanet",Float)=1013 }014015 SubShader016 {017 Pass018 {019 Name"PlanetBase"020 Tags{"LightMode"="Always"}021 CullBack022023 CGPROGRAM024 #pragmavertexvert025 #pragmafragmentfrag026027 #pragmafragmentoptionARB_fog_exp2028 #pragmafragmentoptionARB_precision_hint_fastest029030 #include"UnityCG.cginc"031032 uniformsampler2D_MainTex;033 uniformfloat4_MainTex_ST;034 uniformfloat4_Color;035 uniformfloat4_AtmoColor;036 uniformfloat_FalloffPlanet;037 uniformfloat_TransparencyPlanet;038039 structv2f040 {041 float4pos:SV_POSITION;042 float3normal:TEXCOORD0;043 float3worldvertpos:TEXCOORD1;044 float2texcoord:TEXCOORD2;045 };046047 v2fvert(appdata_basev)048 {049 v2fo;050051 o.pos=mul(UNITY_MATRIX_MVP,v.vertex);052 o.normal=v.normal;053 o.worldvertpos=mul(_Object2World,v.vertex).xyz;054 o.texcoord=TRANSFORM_TEX(v.texcoord,_MainTex);055056 returno;057 }058059 float4frag(v2fi):COLOR060 {061 i.normal=normalize(i.normal);062 float3viewdir=normalize(_WorldSpaceCameraPos-i.worldvertpos);063064 float4atmo=_AtmoColor;065 atmo.a=pow(1.0-saturate(dot(viewdir,i.normal)),_FalloffPlanet);066 atmo.a*=_TransparencyPlanet*_Color;067 //Unity3D教程手册:http://www.unitymanual.com068 float4color=tex2D(_MainTex,i.texcoord)*_Color;069 color.rgb=lerp(color.rgb,atmo.rgb,atmo.a);070071 returncolor*dot(normalize(i.worldvertpos-_WorldSpaceLightPos0),i.normal);072 }073 ENDCG074 }075076 Pass077 {078 Name"AtmosphereBase"079 Tags{"LightMode"="Always"}080 CullFront081 BlendSrcAlphaOne082083 CGPROGRAM084 #pragmavertexvert085 #pragmafragmentfrag086087 #pragmafragmentoptionARB_fog_exp2088 #pragmafragmentoptionARB_precision_hint_fastest089090 #include"UnityCG.cginc"091092 uniformfloat4_Color;093 uniformfloat4_AtmoColor;094 uniformfloat_Size;095 uniformfloat_Falloff;096 uniformfloat_Transparency;097098 structv2f099 {100 float4pos:SV_POSITION;101 float3normal:TEXCOORD0;102 float3worldvertpos:TEXCOORD1;103 };104 //Unity3D教程手册:http://www.unitymanual.com105 v2fvert(appdata_basev)106 {107 v2fo;108109 v.vertex.xyz+=v.normal*_Size;110 o.pos=mul(UNITY_MATRIX_MVP,v.vertex);111 o.normal=v.normal;112 o.worldvertpos=mul(_Object2World,v.vertex);113114 returno;115 }116117 float4frag(v2fi):COLOR118 {119 i.normal=normalize(i.normal);120 float3viewdir=normalize(i.worldvertpos-_WorldSpaceCameraPos);121122 float4color=_AtmoColor;123 color.a=pow(saturate(dot(viewdir,i.normal)),_Falloff);124 color.a*=_Transparency*_Color*dot(normalize(i.worldvertpos-_WorldSpaceLightPos0),i.normal);125 returncolor;126 }127 ENDCG128 }129 }130131 FallBack"Diffuse"132 } |
相关文章推荐
- 【Unity3D自学记录】 Unity3D Shader之外发光材质
- 【猫猫的Unity Shader之旅】之玻璃材质
- Shader实例:边缘发光和描边
- Unity Shader 学习笔记(17) 程序纹理(Procedural Texture)、程序材质(Procedural Materials)
- UnityShader实例04:遮挡透明材质
- Shader 边缘发光、变灰、高亮着色器
- 三言两语说shader(六)外发光、表面shader
- 关于unity里pbr技术和材质 unity5默认shader和传统的对比
- Shader编程】之十四 边缘发光Shader(Rim Shader)的两种实现形态
- 【Unity3d学习笔记】unity制作双面材质shader
- Three.JS 发光球体,材质纹理,缩放移动动画,教程
- Shader 轮廓发光shader
- 【浅墨Unity3D Shader编程】之二 雪山飞狐篇:Unity的基本Shader框架写法&颜色、光照与材质
- 【猫猫的Unity Shader之旅】之双面材质和多Pass渲染
- 关于unity里pbr技术和材质 unity5默认shader和传统的对比
- 多材质(Shader)实现
- <Shader>一个简单的边缘发光的例子
- 提供一套Unity3D双面材质Shader
- Unity3D -- 图形 -- Shader 与材质的关系
- Shader学习——12可调节像素漫反射带贴图 加法线贴图 加自身边缘发光。。。。。常用