外发光材质Shader
转载自 http://www.unitymanual.com/6943.html
游戏中我们经常会遇到需要制作外发光效果的地方,比如武器,比如坐骑要带一个牛掰的光晕。今天我找到了个好效果:
外发光材质Shader
001
Shader "Faye/OutLightting" 002 { 003 Properties 004 { 005 _MainTex("Texture (RGB)", 2D) = "black" {} 006 _Color("Color", Color) = (0, 0, 0, 1) 007 _AtmoColor("Atmosphere Color", Color) = (0.5, 0.5, 1.0, 1) 008 _Size("Size", Float) = 0.1 009 _Falloff("Falloff", Float) = 5 010 _FalloffPlanet("Falloff Planet", Float) = 5 011 _Transparency("Transparency", Float) = 15 012 _TransparencyPlanet("Transparency Planet", Float) = 1 013 } 014 015 SubShader 016 { 017 Pass 018 { 019 Name "PlanetBase" 020 Tags {"LightMode" = "Always"} 021 Cull Back 022 023 CGPROGRAM 024 #pragma vertex vert 025 #pragma fragment frag 026 027 #pragma fragmentoption ARB_fog_exp2 028 #pragma fragmentoption ARB_precision_hint_fastest 029 030 #include "UnityCG.cginc" 031 032 uniform sampler2D _MainTex; 033 uniform float4 _MainTex_ST; 034 uniform float4 _Color; 035 uniform float4 _AtmoColor; 036 uniform float _FalloffPlanet; 037 uniform float _TransparencyPlanet; 038 039 struct v2f 040 { 041 float4 pos : SV_POSITION; 042 float3 normal : TEXCOORD0; 043 float3 worldvertpos : TEXCOORD1; 044 float2 texcoord : TEXCOORD2; 045 }; 046 047 v2f vert(appdata_base v) 048 { 049 v2f o; 050 051 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); 055 056 return o; 057 } 058 059 float4 frag(v2f i) : COLOR 060 { 061 i.normal = normalize(i.normal); 062 float3 viewdir = normalize(_WorldSpaceCameraPos-i.worldvertpos); 063 064 float4 atmo = _AtmoColor; 065 atmo.a = pow(1.0-saturate(dot(viewdir, i.normal)), _FalloffPlanet); 066 atmo.a *= _TransparencyPlanet*_Color; 067 //Unity3D教程手册:http://www.unitymanual.com 068 float4 color = tex2D(_MainTex, i.texcoord)*_Color; 069 color.rgb = lerp(color.rgb, atmo.rgb, atmo.a); 070 071 return color*dot(normalize(i.worldvertpos-_WorldSpaceLightPos0), i.normal); 072 } 073 ENDCG 074 } 075 076 Pass 077 { 078 Name "AtmosphereBase" 079 Tags {"LightMode" = "Always"} 080 Cull Front 081 Blend SrcAlpha One 082 083 CGPROGRAM 084 #pragma vertex vert 085 #pragma fragment frag 086 087 #pragma fragmentoption ARB_fog_exp2 088 #pragma fragmentoption ARB_precision_hint_fastest 089 090 #include "UnityCG.cginc" 091 092 uniform float4 _Color; 093 uniform float4 _AtmoColor; 094 uniform float _Size; 095 uniform float _Falloff; 096 uniform float _Transparency; 097 098 struct v2f 099 { 100 float4 pos : SV_POSITION; 101 float3 normal : TEXCOORD0; 102 float3 worldvertpos : TEXCOORD1; 103 }; 104 //Unity3D教程手册:http://www.unitymanual.com 105 v2f vert(appdata_base v) 106 { 107 v2f o; 108 109 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); 113 114 return o; 115 } 116 117 float4 frag(v2f i) : COLOR 118 { 119 i.normal = normalize(i.normal); 120 float3 viewdir = normalize(i.worldvertpos-_WorldSpaceCameraPos); 121 122 float4 color = _AtmoColor; 123 color.a = pow(saturate(dot(viewdir, i.normal)), _Falloff); 124 color.a *= _Transparency*_Color*dot(normalize(i.worldvertpos-_WorldSpaceLightPos0), i.normal); 125 return color; 126 } 127 ENDCG 128 } 129 } 130 131 FallBack "Diffuse" 132 } |
外发光材质Shader相关推荐
- Unity双面材质Shader
Unity双面材质Shader. 正面渲染支持漫反射贴图.法线贴图.高光度等.背面渲染支持漫反射贴图. Shader代码如下: Shader "LiangHaoXiangShaders/Do ...
- threejs 源码解析_ThreeJS 物理材质shader源码分析(顶点着色器)
ThreeJS 物理材质shader源码分析(顶点着色器) Threejs将shader代码分为ShaderLib和ShaderChunk两部分,ShaderLib通过组合ShaderChunk的代码 ...
- unity build-in管线中的PBR材质Shader分析研究
PBR分析 前言 我理解的PBR PBR组成部分 直接光漫反射 直接光镜面反射(高光) 间接光漫反射 间接光镜面反射 最终加和 结果 前言 近来,用到了几次Surface Shader,对于其封装好的 ...
- Unity 自定义自发光材质 shader (对比Standard Eimission)
自定义自发光shader的时候会遇到 同样的HDR 颜色,但是standard表现正常而自己写的shader不正常的情况. 原因是因为Bloom效果是基于 standard的泛光材质调的,而自己写的E ...
- UE4入门实例13(制作外发光材质及TwoSidedSign、VertexNormalWS节点)
#1 外发光效果展示 #2 TwoSidedSign节点展示 #3 VertexNormalWS节点展示 #1 外发光效果 材质球设置 Blending Mode设置为Mask,因为我们不需要全部外发 ...
- 模型边缘自发光材质——Shader
边缘自发光: // Upgrade NOTE: replaced '_World2Object' with 'unity_WorldToObject' // Upgrade NOTE: replace ...
- Unity3D Shader编程】之二 雪山飞狐篇:Unity的基本Shader框架写法颜色、光照与材质
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/40955607 作者:毛星云(浅墨) ...
- Cocos Creator教程:Shader与材质
Cocos creator 2.1以后引入了3D渲染的底层,所以引入了Shader和材质系统,比如精灵,下面有一个材质, 材质又选了一个Shader; 1: 什么是Shader和材质? Shader是 ...
- shader forge效果篇|模型外发光-菲尼尔效果
记录模型外发光效果shader制作 节点中用到了:加法.乘法.开关.法线方向.UV坐标.菲尼尔节点 看不清可以右键新窗口查看大图-1080P
最新文章
- tengine 调用php,nginx 或tengine 访问日志分割处理
- 网络的网络——当今的互联网
- 没有连接上aspnetdb.mdf数据库
- c++ cstring 转换 char_【揭秘】C语言类型转换时发生了什么?
- 使用多线程会加快文件读取速度吗?
- exchange2010使用通配符造成的不停的需要输入密码却访问不了
- IE8开发人员工具资料
- 简单网络聊天程序java_基于Java实现hello/hi简单网络聊天程序
- mysql窗口界面表格式手工录入_mysql手工注入
- facebook 面试_我在Facebook接受了应届毕业生的面试。 这是我从设计中学到的东西。...
- CentOS 下重装 jdk
- 离散数学(8)——函数
- 关于创建电子邮件链接时如何发送邮件内容
- creo管道设计教程_Pro/E Pro/PIPING 管道设计教程|就上UG网
- win10任务栏透明_Win10原生实现全透明任务栏
- PAT A1110 Complete Binary Tree ——雨打梨花深闭门
- 学做安卓一键锁屏应用
- springboot上传文件到阿里云
- Day2-Mybatis之sql复习
- Hadoop——(Hadoop框架,Hadoop的优缺点,Hadoop1.x和2.x的版本区别,Hadoop架构,Hadoop目录结构)
热门文章
- Android_仿爱奇艺Loading效果
- 开源技术领域有哪些免费又好用的OA办公软件?最好是.NET平台
- 刚破了潘金莲的身份信息(图片文字识别),win7、win10实测可用(免费下载)
- 计算机网络笔记(王道考研) 第三章:数据链路层
- 大厂员工月入6万,居然还不起房贷!
- 为什么我们需要新颖的身份验证方案?
- 计算机文件大小排序工具,如何对电脑文件夹进行排序
- web前端html5+css3学习笔记(2)
- [干货] 一文看懂numpy.nonzero() 与 numpy.argwhere()非零元素处理
- java jcifs ntlm_Java 使用NTLM身份验证使用soap服务