• Unityd外发光Shader Lab


      1 Shader "Faye/OutLightting"
      2 {
      3 Properties
      4 {
      5 _MainTex("Texture (RGB)", 2D) = "black" {}
      6 _Color("Color", Color) = (0, 0, 0, 1)
      7 _AtmoColor("Atmosphere Color", Color) = (0.5, 0.5, 1.0, 1)
      8 _Size("Size", Float) = 0.1
      9 _Falloff("Falloff", Float) = 5
     10 _FalloffPlanet("Falloff Planet", Float) = 5
     11 _Transparency("Transparency", Float) = 15
     12 _TransparencyPlanet("Transparency Planet", Float) = 1
     13 }
     14 SubShader
     15 {
     16 Pass
     17 {
     18 Name "PlanetBase"
     19 Tags {"LightMode" = "Always"}
     20 Cull Back
     21 CGPROGRAM
     22 #pragma vertex vert
     23 #pragma fragment frag
     24 #pragma fragmentoption ARB_fog_exp2
     25 #pragma fragmentoption ARB_precision_hint_fastest
     26 #include "UnityCG.cginc"
     27 uniform sampler2D _MainTex;
     28 uniform float4 _MainTex_ST;
     29 uniform float4 _Color;
     30 uniform float4 _AtmoColor;
     31 uniform float _FalloffPlanet;
     32 uniform float _TransparencyPlanet;
     33 struct v2f
     34 {
     35 float4 pos : SV_POSITION;
     36 float3 normal : TEXCOORD0;
     37 float3 worldvertpos : TEXCOORD1;
     38 float2 texcoord : TEXCOORD2;
     39 };
     40 v2f vert(appdata_base v)
     41 {
     42 v2f o;
     43 o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
     44 o.normal = v.normal;
     45 o.worldvertpos = mul(_Object2World, v.vertex).xyz;
     46 o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);
     47 return o;
     48 }
     49 float4 frag(v2f i) : COLOR
     50 {
     51 i.normal = normalize(i.normal);
     52 float3 viewdir = normalize(_WorldSpaceCameraPos-i.worldvertpos);
     53 float4 atmo = _AtmoColor;
     54 atmo.a = pow(1.0-saturate(dot(viewdir, i.normal)), _FalloffPlanet);
     55 atmo.a *= _TransparencyPlanet*_Color;
     56 float4 color = tex2D(_MainTex, i.texcoord)*_Color;
     57 color.rgb = lerp(color.rgb, atmo.rgb, atmo.a);
     58 return color*dot(normalize(i.worldvertpos-_WorldSpaceLightPos0), i.normal);
     59 }
     60 ENDCG
     61 }
     62 Pass
     63 {
     64 Name "AtmosphereBase"
     65 Tags {"LightMode" = "Always"}
     66 Cull Front
     67 Blend SrcAlpha One
     68 CGPROGRAM
     69 #pragma vertex vert
     70 #pragma fragment frag
     71 #pragma fragmentoption ARB_fog_exp2
     72 #pragma fragmentoption ARB_precision_hint_fastest
     73 #include "UnityCG.cginc"
     74 uniform float4 _Color;
     75 uniform float4 _AtmoColor;
     76 uniform float _Size;
     77 uniform float _Falloff;
     78 uniform float _Transparency;
     79 struct v2f
     80 {
     81 float4 pos : SV_POSITION;
     82 float3 normal : TEXCOORD0;
     83 float3 worldvertpos : TEXCOORD1;
     84 };
     85 v2f vert(appdata_base v)
     86 {
     87 v2f o;
     88 v.vertex.xyz += v.normal*_Size;
     89 o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
     90 o.normal = v.normal;
     91 o.worldvertpos = mul(_Object2World, v.vertex);
     92 return o;
     93 }
     94 float4 frag(v2f i) : COLOR
     95 {
     96 i.normal = normalize(i.normal);
     97 float3 viewdir = normalize(i.worldvertpos-_WorldSpaceCameraPos);
     98 float4 color = _AtmoColor;
     99 color.a = pow(saturate(dot(viewdir, i.normal)), _Falloff);
    100 color.a *= _Transparency*_Color*dot(normalize(i.worldvertpos-_WorldSpaceLightPos0), i.normal);
    101 return color;
    102 }
    103 ENDCG
    104 }
    105 }
    106 FallBack "Diffuse"
    107 }
  • 相关阅读:
    Ext架构分析(6)最简单的layout:AnchorLayout
    Ext架构分析(4)Container之旅
    ext学习资源汇总
    DomQuery v1.1 高级
    Ext 2.0 教程 目录
    HDOJ2006 ( 求奇数的乘积 ) 【水题】
    HDOJ2017 ( 字符串统计 ) 【水题】
    状态模式(State)
    HDOJ2002 ( 计算球体积 ) 【水题】
    HDOJ2007 ( 平方和与立方和 ) 【水题】
  • 原文地址:https://www.cnblogs.com/wugang/p/3878091.html
Copyright © 2020-2023  润新知