当前位置:   article > 正文

Shader学习Day03 表面着色器、CG语言_surface surf lambert

surface surf lambert

1.CG基本语法

固定颜色的漫反射 

  1. Shader "MyShader/Surface/SurfaceShader001"
  2. {
  3. Properties
  4. {
  5. }
  6. SubShader
  7. {
  8. //------------------CG语言的开始
  9. //主要是针对图形学
  10. CGPROGRAM
  11. //vertex 顶点着色器
  12. //fragment 片段着色器
  13. //标记编译指令 着色器类型 入口函数名称 光照模式
  14. //Lambert 实现漫反射的算法
  15. #pragma surface surf Lambert
  16. //浮点数 32位
  17. float value = 0;
  18. float2 pos2D = float2(0,1);
  19. float3 pos3D = float3(1,2,3);
  20. float4 color = float4(1,0,0,1);
  21. //半浮点数 16位
  22. half halfValue = 1.3;
  23. half2 halfPos = half2(1,2);
  24. //整数 32位
  25. int intValue = 2;
  26. int2 intPos = int2(1,2);
  27. //定点数 12位 表示范围---整数和0-1范围的小数
  28. fixed4 mycolor = fixed4(1,0,0,1);
  29. //布尔类型
  30. bool isOn = false;
  31. //字符类型
  32. string str = "abc";
  33. //纹理对象,内置的结构体
  34. sampler2D mytexture;
  35. struct Input
  36. {
  37. float4 color:COLOR;
  38. } ;
  39. //入口函数 输入结构(需自行定义) 输出结构(系统定义好的)
  40. void surf(Input IN, inout SurfaceOutput o)
  41. {
  42. o.Albedo = fixed3(1,0,0);
  43. }
  44. ENDCG
  45. //--------------------CG语言的结束
  46. }
  47. }

可以调节的漫反射 

  1. Shader "MyShader/Surface/SurfaceShader002"
  2. {
  3. Properties
  4. {
  5. _MainColor("主颜色",Color) = (1,1,1,1)
  6. }
  7. SubShader
  8. {
  9. Blend One One
  10. //------------------CG语言的开始
  11. //主要是针对图形学
  12. CGPROGRAM
  13. //vertex 顶点着色器
  14. //fragment 片段着色器
  15. //标记编译指令 着色器类型 入口函数名称 光照模式
  16. //Lambert 实现漫反射的算法
  17. #pragma surface surf Lambert
  18. //浮点数 32位
  19. float value = 0;
  20. float2 pos2D = float2(0,1);
  21. float3 pos3D = float3(1,2,3);
  22. float4 color = float4(1,0,0,1);
  23. //半浮点数 16位
  24. half halfValue = 1.3;
  25. half2 halfPos = half2(1,2);
  26. //整数 32位
  27. int intValue = 2;
  28. int2 intPos = int2(1,2);
  29. //定点数 12位 表示范围---整数和0-1范围的小数
  30. fixed4 mycolor = fixed4(1,0,0,1);
  31. //布尔类型
  32. bool isOn = false;
  33. //字符类型
  34. string str = "abc";
  35. //纹理对象,内置的结构体
  36. sampler2D mytexture;
  37. struct Input
  38. {
  39. float4 color:COLOR;
  40. } ;
  41. //声明外部属性
  42. fixed4 _MainColor;
  43. //入口函数 输入结构(需自行定义) 输出结构(系统定义好的)
  44. void surf(Input IN, inout SurfaceOutput o)
  45. {
  46. //出来直接就是漫反射,因为Lambert
  47. o.Albedo = _MainColor.rgb;
  48. }
  49. ENDCG
  50. //--------------------CG语言的结束
  51. }
  52. }

2.CG跨语言调用ShaderLab语言

透明度的调节 

  1. Shader "MyShader/Surface/SurfaceShader003"
  2. {
  3. Properties
  4. {
  5. _MainColor("主颜色",Color) = (1,1,1,1)
  6. }
  7. SubShader
  8. {
  9. Blend One One
  10. //------------------CG语言的开始
  11. //主要是针对图形学
  12. CGPROGRAM
  13. //vertex 顶点着色器
  14. //fragment 片段着色器
  15. //标记编译指令 着色器类型 入口函数名称 光照模式
  16. //Lambert 实现漫反射的算法
  17. //加alpha表示支持透明通道
  18. #pragma surface surf Lambert alpha
  19. //浮点数 32位
  20. float value = 0;
  21. float2 pos2D = float2(0,1);
  22. float3 pos3D = float3(1,2,3);
  23. float4 color = float4(1,0,0,1);
  24. //半浮点数 16位
  25. half halfValue = 1.3;
  26. half2 halfPos = half2(1,2);
  27. //整数 32位
  28. int intValue = 2;
  29. int2 intPos = int2(1,2);
  30. //定点数 12位 表示范围---整数和0-1范围的小数
  31. fixed4 mycolor = fixed4(1,0,0,1);
  32. //布尔类型
  33. bool isOn = false;
  34. //字符类型
  35. string str = "abc";
  36. //纹理对象,内置的结构体
  37. sampler2D mytexture;
  38. struct Input
  39. {
  40. float4 color:COLOR;
  41. } ;
  42. //声明外部属性
  43. fixed4 _MainColor;
  44. //入口函数 输入结构(需自行定义) 输出结构(系统定义好的)
  45. void surf(Input IN, inout SurfaceOutput o)
  46. {
  47. //出来直接就是漫反射,因为Lambert
  48. o.Albedo = _MainColor.rgb;
  49. o.Alpha = _MainColor.a;
  50. }
  51. ENDCG
  52. //--------------------CG语言的结束
  53. }
  54. }

加纹理

 

加混合 

7.凹凸纹理、边缘发光

 法线渲染:只是告诉这个像素的法线

主纹理和法线贴图    

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/107855
推荐阅读
相关标签
  

闽ICP备14008679号