片段高光.Shader

原创 2016年08月31日 11:15:16
Shader "Custom/Light/SpecularLightFrag"{
    Properties{
        _Diffuse("Diffuse", Color) = (1, 1, 1, 1)
        _Specular("Specular", Color) = (1, 1, 1, 1)
        _Gloss("Gloss", Range(1, 256)) = 20
    }

    SubShader{
        Pass{
            Tags{
                "LightMode" = "ForwardBase"
            }

            CGPROGRAM
            #include "Lighting.cginc"

            #pragma vertex vert
            #pragma fragment frag

            fixed4 _Diffuse;
            fixed4 _Specular;
            float _Gloss;

            struct a2v{
                float4 pos : POSITION;
                float4 normal : NORMAL;
            };

            struct v2f{
                float4 pos : SV_POSITION;
                float3 worldNormal : TEXCOORD0;
                float3 worldPos : TEXCOORD1;
            };

            v2f vert(a2v v){
                v2f o;
                o.pos = mul(UNITY_MATRIX_MVP, v.pos);
                o.worldNormal = mul(v.normal, (float3x3)_World2Object);
                o.worldPos = mul(_Object2World, v.pos);
                return o;
            }

            fixed4 frag(v2f i) : SV_Target{
                fixed3 worldLightDir = normalize(_WorldSpaceLightPos0.xyz);
                fixed3 worldNormal = normalize(i.worldNormal);

                fixed3 diffuse = _LightColor0.rgb * _Diffuse.rgb * max(0, dot(worldNormal, worldLightDir));

                fixed3 reflectDir = reflect(-worldLightDir, worldNormal);
                fixed3 viewDir = normalize(_WorldSpaceCameraPos.xyz - i.worldPos.xyz);

                fixed3 specular = _LightColor0.rgb * _Specular.rgb * pow(max(0, dot(reflectDir, viewDir)), _Gloss);
                return fixed4(UNITY_LIGHTMODEL_AMBIENT.xyz + diffuse + specular, 1.0);
            }
            ENDCG
        }
    }
    Fallback "Specular"
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

【猫猫的Unity Shader之旅】之高光材质

之前我们的Shader用的光照模型都是Lambert,这种光照表示的是一种漫反射的情况。所谓的漫反射,表示的是光线照射在粗糙的表面的情况。由于表面粗糙,根据反射的规律,光线会被反射到各个方向。现实生活...
  • dbtxdxy
  • dbtxdxy
  • 2015年04月07日 00:23
  • 2905

【Unity Shader】手游中高光效果的几种实现方法

前言         由于手机设备的性能限制,很多计算都得精简和优化才能达到目地。而在Unity中的高光效果,也给予了多种不同的方案,有用于主机的,用于手机的,有限制一盏像素灯的,开发者可以根据不同的...
  • herox25000
  • herox25000
  • 2016年01月10日 11:08
  • 3847

unity之shader学习笔记(四)--高光反射

高光反射
  • u013106366
  • u013106366
  • 2016年11月25日 00:03
  • 2818

Shader山下(六)镜面高光

Shader山下(二)光照模型中介绍了漫反射的光照模型,漫反射是投射在粗糙表面上的光向各个方向反射的现象。与之相对的是镜面反射,也就是当平行入射的光线射到这个反射面时,仍会平行地向一个方向反射出来的现...
  • ecidevilin
  • ecidevilin
  • 2016年10月09日 09:01
  • 1118

Unity 法线贴图、高光贴图、Cube Map shader

Unity 相关纹理贴图写unity shader有些时候了,出于寂寞,拿出来晒晒吧!!!!先看一下Unity 法线贴图、高光贴图、Cube Map shader最终效果: 说老实话,我不怎么喜欢看...
  • baidu_26153715
  • baidu_26153715
  • 2015年04月04日 16:13
  • 6401

UnityShader之建立高光效果

本来特效插件都找好了,结果看到youtube上有个大神做的塔防游戏,很好的idea而且看了他的代码,感觉挺好的,,比原先自己写塔防的时候要强的多, 面向对象的三大特性基本都涉及了,代码的扩展性也很强,...
  • AutisticPatient
  • AutisticPatient
  • 2017年03月29日 12:26
  • 802

几个简单的各向异性光照模型

1. dot(N,H)^specularity fixed HdotA = dot(normalize(Normal + AnisoDirection), halfVector); ...
  • wolf96
  • wolf96
  • 2016年10月31日 19:13
  • 1694

[shader]边缘自定角度高光,描边,闪烁

Unity边缘高光跟随摄像机旋转+描边透明的shader。
  • carefreeq
  • carefreeq
  • 2016年01月28日 11:21
  • 2136

unity shader (7)--实现高光反射光照模型--逐像素光照

摘自冯乐乐的《unity shader 入门精要》 Shader "Custom/SpecularPixelLevel" { Properties { _Diffuse ("Diffuse...
  • qq_28221881
  • qq_28221881
  • 2016年10月20日 09:12
  • 1154

unity3d shader的软高光的金属效果

unity3d shader运用菲涅尔的软高光的金属效果..
  • wolf96
  • wolf96
  • 2014年12月09日 17:01
  • 5667
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:片段高光.Shader
举报原因:
原因补充:

(最多只允许输入30个字)