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

1.CG基本语法

固定颜色的漫反射 

Shader "MyShader/Surface/SurfaceShader001"
{
  Properties
  {
  
  }
  
  SubShader
  {
     //------------------CG语言的开始
     //主要是针对图形学
     CGPROGRAM
     
     //vertex 顶点着色器
     //fragment 片段着色器
     //标记编译指令  着色器类型  入口函数名称 光照模式
     //Lambert 实现漫反射的算法
     #pragma surface surf Lambert
     
     //浮点数  32位
     float value = 0;
     float2 pos2D = float2(0,1);
     float3 pos3D = float3(1,2,3);
     float4 color = float4(1,0,0,1);
     
     //半浮点数 16位
     half halfValue = 1.3;
     half2 halfPos = half2(1,2);
     
     //整数  32位
     int intValue = 2;
     int2 intPos = int2(1,2);
     
     //定点数 12位 表示范围---整数和0-1范围的小数
     fixed4 mycolor = fixed4(1,0,0,1);
     
     //布尔类型
     bool isOn = false;
     
     //字符类型
     string str = "abc";
     
     //纹理对象,内置的结构体
     sampler2D mytexture;
     
     struct Input
     {
        float4 color:COLOR;
     } ;
     
     //入口函数 输入结构(需自行定义)   输出结构(系统定义好的)
     void surf(Input IN, inout SurfaceOutput o)
     {
        o.Albedo = fixed3(1,0,0);
     }
     
     ENDCG
    //--------------------CG语言的结束

  }
}

可以调节的漫反射 

Shader "MyShader/Surface/SurfaceShader002"
{
  Properties
  {
     _MainColor("主颜色",Color) = (1,1,1,1)
  }
  
  SubShader
  {
     Blend One One
     //------------------CG语言的开始
     //主要是针对图形学
     CGPROGRAM
     
     //vertex 顶点着色器
     //fragment 片段着色器
     //标记编译指令  着色器类型  入口函数名称 光照模式
     //Lambert 实现漫反射的算法
     #pragma surface surf Lambert
     
     //浮点数  32位
     float value = 0;
     float2 pos2D = float2(0,1);
     float3 pos3D = float3(1,2,3);
     float4 color = float4(1,0,0,1);
     
     //半浮点数 16位
     half halfValue = 1.3;
     half2 halfPos = half2(1,2);
     
     //整数  32位
     int intValue = 2;
     int2 intPos = int2(1,2);
     
     //定点数 12位 表示范围---整数和0-1范围的小数
     fixed4 mycolor = fixed4(1,0,0,1);
     
     //布尔类型
     bool isOn = false;
     
     //字符类型
     string str = "abc";
     
     //纹理对象,内置的结构体
     sampler2D mytexture;
     
     struct Input
     {
        float4 color:COLOR;
     } ;
     
     //声明外部属性
     fixed4 _MainColor;
     
     //入口函数 输入结构(需自行定义)   输出结构(系统定义好的)
     void surf(Input IN, inout SurfaceOutput o)
     {
        //出来直接就是漫反射,因为Lambert
        o.Albedo = _MainColor.rgb;
     }
     
     ENDCG
    //--------------------CG语言的结束

  }
}

2.CG跨语言调用ShaderLab语言

透明度的调节 

Shader "MyShader/Surface/SurfaceShader003"
{
  Properties
  {
     _MainColor("主颜色",Color) = (1,1,1,1)
  }
  
  SubShader
  {
     Blend One One
     //------------------CG语言的开始
     //主要是针对图形学
     CGPROGRAM
     
     //vertex 顶点着色器
     //fragment 片段着色器
     //标记编译指令  着色器类型  入口函数名称 光照模式
     //Lambert 实现漫反射的算法
     //加alpha表示支持透明通道
     #pragma surface surf Lambert alpha 
     
     //浮点数  32位
     float value = 0;
     float2 pos2D = float2(0,1);
     float3 pos3D = float3(1,2,3);
     float4 color = float4(1,0,0,1);
     
     //半浮点数 16位
     half halfValue = 1.3;
     half2 halfPos = half2(1,2);
     
     //整数  32位
     int intValue = 2;
     int2 intPos = int2(1,2);
     
     //定点数 12位 表示范围---整数和0-1范围的小数
     fixed4 mycolor = fixed4(1,0,0,1);
     
     //布尔类型
     bool isOn = false;
     
     //字符类型
     string str = "abc";
     
     //纹理对象,内置的结构体
     sampler2D mytexture;
     
     struct Input
     {
        float4 color:COLOR;
     } ;
     
     //声明外部属性
     fixed4 _MainColor;
     
     //入口函数 输入结构(需自行定义)   输出结构(系统定义好的)
     void surf(Input IN, inout SurfaceOutput o)
     {
        //出来直接就是漫反射,因为Lambert
        o.Albedo = _MainColor.rgb;
        o.Alpha = _MainColor.a;
     }
     
     ENDCG
    //--------------------CG语言的结束

  }
}

加纹理

 

加混合 

7.凹凸纹理、边缘发光

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

主纹理和法线贴图    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值