创建CgInclude文件来存储光照模型

作者:追风剑情 发布于:2016-3-5 19:52 分类:Shader

一、创建MyCgInclude.cginc文件

  1. #ifndef MY_CG_INCLUDE
  2. #define MY_CG_INCLUDE
  3.  
  4. fixed4 _MyColor;
  5.  
  6. //半兰伯特光照模型
  7. inline fixed4 LightingHalfLambert (SurfaceOutput s, fixed3 lightDir, fixed atten)
  8. {
  9. fixed diff = max (0, dot(s.Normal, lightDir));
  10. diff = (diff + 0.5)*0.5;
  11. fixed4 c;
  12. c.rgb = s.Albedo*_LightColor0.rgb*((diff*_MyColor.rgb)*atten*2);
  13. c.a = s.Alpha;
  14. return c;
  15. }
  16.  
  17. #endif

二、使用MyCgInclude.cginc文件

  1. Shader "Custom/HalfLambertShader" {
  2. Properties {
  3. _MainTex ("Base (RGB)", 2D) = "white" {}
  4. _DesatValue ("Desaturate", Range(0, 1)) = 0.5
  5. _MyColor ("My Color", Color) = (1,1,1,1)
  6. }
  7. SubShader {
  8. Tags { "RenderType"="Opaque" }
  9. LOD 200
  10. CGPROGRAM
  11. #include "MyCgInclude.cginc"
  12. #pragma surface surf HalfLambert
  13.  
  14. sampler2D _MainTex;
  15.  
  16. struct Input {
  17. float2 uv_MainTex;
  18. };
  19.  
  20. void surf (Input IN, inout SurfaceOutput o) {
  21. half4 c = tex2D (_MainTex, IN.uv_MainTex);
  22. o.Albedo = c.rgb;
  23. o.Alpha = c.a;
  24. }
  25. ENDCG
  26. }
  27. FallBack "Diffuse"
  28. }

效果

111111.png

标签: Shader

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号