转载自  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相关推荐

  1. Unity双面材质Shader

    Unity双面材质Shader. 正面渲染支持漫反射贴图.法线贴图.高光度等.背面渲染支持漫反射贴图. Shader代码如下: Shader "LiangHaoXiangShaders/Do ...

  2. threejs 源码解析_ThreeJS 物理材质shader源码分析(顶点着色器)

    ThreeJS 物理材质shader源码分析(顶点着色器) Threejs将shader代码分为ShaderLib和ShaderChunk两部分,ShaderLib通过组合ShaderChunk的代码 ...

  3. unity build-in管线中的PBR材质Shader分析研究

    PBR分析 前言 我理解的PBR PBR组成部分 直接光漫反射 直接光镜面反射(高光) 间接光漫反射 间接光镜面反射 最终加和 结果 前言 近来,用到了几次Surface Shader,对于其封装好的 ...

  4. Unity 自定义自发光材质 shader (对比Standard Eimission)

    自定义自发光shader的时候会遇到 同样的HDR 颜色,但是standard表现正常而自己写的shader不正常的情况. 原因是因为Bloom效果是基于 standard的泛光材质调的,而自己写的E ...

  5. UE4入门实例13(制作外发光材质及TwoSidedSign、VertexNormalWS节点)

    #1 外发光效果展示 #2 TwoSidedSign节点展示 #3 VertexNormalWS节点展示 #1 外发光效果 材质球设置 Blending Mode设置为Mask,因为我们不需要全部外发 ...

  6. 模型边缘自发光材质——Shader

    边缘自发光: // Upgrade NOTE: replaced '_World2Object' with 'unity_WorldToObject' // Upgrade NOTE: replace ...

  7. Unity3D Shader编程】之二 雪山飞狐篇:Unity的基本Shader框架写法颜色、光照与材质

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/40955607 作者:毛星云(浅墨) ...

  8. Cocos Creator教程:Shader与材质

    Cocos creator 2.1以后引入了3D渲染的底层,所以引入了Shader和材质系统,比如精灵,下面有一个材质, 材质又选了一个Shader; 1: 什么是Shader和材质? Shader是 ...

  9. shader forge效果篇|模型外发光-菲尼尔效果

    记录模型外发光效果shader制作 节点中用到了:加法.乘法.开关.法线方向.UV坐标.菲尼尔节点 看不清可以右键新窗口查看大图-1080P

最新文章

  1. tengine 调用php,nginx 或tengine 访问日志分割处理
  2. 网络的网络——当今的互联网
  3. 没有连接上aspnetdb.mdf数据库
  4. c++ cstring 转换 char_【揭秘】C语言类型转换时发生了什么?
  5. 使用多线程会加快文件读取速度吗?
  6. exchange2010使用通配符造成的不停的需要输入密码却访问不了
  7. IE8开发人员工具资料
  8. 简单网络聊天程序java_基于Java实现hello/hi简单网络聊天程序
  9. mysql窗口界面表格式手工录入_mysql手工注入
  10. facebook 面试_我在Facebook接受了应届毕业生的面试。 这是我从设计中学到的东西。...
  11. CentOS 下重装 jdk
  12. 离散数学(8)——函数
  13. 关于创建电子邮件链接时如何发送邮件内容
  14. creo管道设计教程_Pro/E Pro/PIPING 管道设计教程|就上UG网
  15. win10任务栏透明_Win10原生实现全透明任务栏
  16. PAT A1110 Complete Binary Tree ——雨打梨花深闭门
  17. 学做安卓一键锁屏应用
  18. springboot上传文件到阿里云
  19. Day2-Mybatis之sql复习
  20. Hadoop——(Hadoop框架,Hadoop的优缺点,Hadoop1.x和2.x的版本区别,Hadoop架构,Hadoop目录结构)

热门文章

  1. Android_仿爱奇艺Loading效果
  2. 开源技术领域有哪些免费又好用的OA办公软件?最好是.NET平台
  3. 刚破了潘金莲的身份信息(图片文字识别),win7、win10实测可用(免费下载)
  4. 计算机网络笔记(王道考研) 第三章:数据链路层
  5. 大厂员工月入6万,居然还不起房贷!
  6. 为什么我们需要新颖的身份验证方案?
  7. 计算机文件大小排序工具,如何对电脑文件夹进行排序
  8. web前端html5+css3学习笔记(2)
  9. [干货] 一文看懂numpy.nonzero() 与 numpy.argwhere()非零元素处理
  10. java jcifs ntlm_Java 使用NTLM身份验证使用soap服务