zoukankan      html  css  js  c++  java
  • Unity3D带自发光及边缘高光的shader

     1 Shader "Custom/Ill_RimLight" 
     2 {
     3     Properties {
     4         _Color ("Main Color", Color) = (.5,.5,.5,1)
     5         _OutlineColor ("Rim Color", Color) = (0,0,0,1)
     6         _Outline ("Rim width", Range (.002, 0.03)) = .005
     7         _MainTex ("Base (RGB)", 2D) = "white" { }
     8         _Illum ("Illumin (A)", 2D) = "white" { }
     9         _EmissionLM ("Emission (Lightmapper)", Float) = 0
    10     }
    11     
    12     SubShader 
    13     {
    14 
    15         Tags { "RenderType"="Opaque" }
    16         LOD 200
    17     
    18         CGPROGRAM
    19         #pragma surface surf Lambert
    20 
    21         sampler2D _MainTex;
    22         sampler2D _Illum;
    23         fixed4 _Color;
    24 
    25         struct Input {
    26             float2 uv_MainTex;
    27             float2 uv_Illum;
    28         };
    29 
    30         void surf (Input IN, inout SurfaceOutput o) {
    31             fixed4 tex = tex2D(_MainTex, IN.uv_MainTex);
    32             fixed4 c = tex * _Color;
    33             o.Albedo = c.rgb;
    34             o.Emission = c.rgb * tex2D(_Illum, IN.uv_Illum).a;
    35             o.Alpha = c.a;
    36         }
    37         ENDCG
    38 
    39         Pass 
    40         {
    41             CGINCLUDE
    42             #include "UnityCG.cginc"
    43     
    44             struct appdata {
    45                 float4 vertex : POSITION;
    46                 float3 normal : NORMAL;
    47             };
    48 
    49             struct v2f {
    50                 float4 pos : POSITION;
    51                 float4 color : COLOR;
    52             };
    53     
    54             uniform float _Outline;
    55             uniform float4 _OutlineColor;
    56     
    57             v2f vert(appdata v) {
    58                 v2f o;
    59                 o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
    60 
    61                 float3 norm   = mul ((float3x3)UNITY_MATRIX_IT_MV, v.normal);
    62                 float2 offset = TransformViewToProjection(norm.xy);
    63 
    64                 o.pos.xy += offset * o.pos.z * _Outline;
    65                 o.color = _OutlineColor;
    66                 return o;
    67             }
    68             ENDCG
    69 
    70             Name "OUTLINE"
    71             Tags { "LightMode" = "Always" }
    72             Cull Front
    73             ZWrite On
    74             ColorMask RGB
    75             Blend SrcAlpha OneMinusSrcAlpha
    76 
    77             CGPROGRAM
    78             #pragma vertex vert
    79             #pragma fragment frag
    80             half4 frag(v2f i) :COLOR { return i.color; }
    81             ENDCG
    82         }
    83     } 
    84     
    85     Fallback "Self-Illumin/VertexLit"
    86 }
  • 相关阅读:
    伸展树(SplayTree)的实现
    map的访问
    #pragma warning(disable 4786)
    debian sftp/ssh197
    debian 配置静态ip197
    deepin 安装tar.gz197
    npm构建vue项目197
    linux 常用命令197
    application/force-download 不生效197
    reids 安装197
  • 原文地址:https://www.cnblogs.com/hrkblogs/p/4126794.html
Copyright © 2011-2022 走看看