码迷,mamicode.com
首页 > 编程语言 > 详细

Unity shader学习之逐像素漫反射光照模型

时间:2017-06-26 10:27:55      阅读:285      评论:0      收藏:0      [点我收藏+]

标签:http   targe   缺点   fuse   src   变量   光照模型   base   level   

shader如下:

Shader "Custom/Diffuse Fragment-Level"
{
    Properties
    {
        _Diffuse ("Diffuse", Color) = (1,1,1,1)
    }

    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 100

        Pass
        {
            Tags { "LightMode"="ForwardBase" }        // 只有设置了正确的LightMode,才能访问一些Unity提供的内置变量,如:_LightColor0

            CGPROGRAM

            #pragma vertex vert
            #pragma fragment frag

            #include "UnityCG.cginc"
            #include "Lighting.cginc"

            struct appdata
            {
                float4 vertex : POSITION;
                float3 normal : NORMAL;
            };

            struct v2f
            {
                float4 vertex : SV_POSITION;
                float3 worldNormal : NORMAL;
            };

            float4 _Diffuse;

            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                float3 wn = mul(v.normal, (float3x3)_World2Object);
                o.worldNormal = normalize(wn);
                return o;
            }
            
            fixed4 frag (v2f i) : SV_Target
            {
                float3 lightDir = normalize(_WorldSpaceLightPos0);
                float4 diffuseColor = _Diffuse * _LightColor0 * max(0, dot(lightDir, i.worldNormal));
                return UNITY_LIGHTMODEL_AMBIENT + diffuseColor;
            }

            ENDCG
        }
    }

    Fallback "Diffuse"
}

 

效果如下:

技术分享

 转载请注明出处:http://www.cnblogs.com/jietian331/p/7079005.html

逐像素光照可以得到更新平滑的光照效果,但有一个缺点,在光照无法到达的区域,模型的外观通常是全黑的,没有任何明暗变化,像一个平面一样,无任何模型细节表现,如下图。

技术分享

为此,有一种改善技术:半兰伯特(Half Lambert)光照模型

Unity shader学习之逐像素漫反射光照模型

标签:http   targe   缺点   fuse   src   变量   光照模型   base   level   

原文地址:http://www.cnblogs.com/jietian331/p/7079005.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!