在表面着色器中使用属性

作者:追风剑情 发布于:2015-6-26 21:45 分类:Shader

//一个漫反射Shader

  1. Shader "Custom/BasicDiffuse1" {
  2. Properties {
  3. _EmissiveColor ("Emissive Color", Color) = (1, 1, 1, 1)
  4. _AmbientColor ("Ambient Color", Color) = (1, 1, 1, 1)
  5. _MySliderValue ("this is a Slider", Range(0, 10)) = 2.5
  6. }
  7. SubShader {
  8. Tags { "RenderType"="Opaque" }
  9. LOD 200
  10. CGPROGRAM
  11. #pragma surface surf Lambert
  12. //在这里创建与属性同名的变量,Unity会自动将二者关联起来,它们拥有同样的数据。
  13. //当你在SubShader里创建好变量后,就可以在surf()函数里使用它们了。
  14. float4 _EmissiveColor;
  15. float4 _AmbientColor;
  16. float _MySliderValue;
  17.  
  18. struct Input {
  19. float2 uv_MainTex;
  20. };
  21.  
  22. void surf (Input IN, inout SurfaceOutput o) {
  23. float4 c;
  24. //pow()函数参阅官方在线文档
  25. //http://http.developer.nvidia.com/CgTutorial/cg_tutorial_appendix_e.html
  26. c = pow((_EmissiveColor + _AmbientColor), _MySliderValue);
  27. o.Albedo = c.rgb;
  28. o.Alpha = c.a;
  29. }
  30. ENDCG
  31. }
  32. FallBack "Diffuse"
  33. }


1.png

2.png

标签: Shader

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号