找回密码
 立即注册
查看: 345|回复: 0

[笔记] 《Unity Shader入门精要》学习关键词

[复制链接]
发表于 2022-1-10 13:10 | 显示全部楼层 |阅读模式
第2章 渲染流水线


  • 渲染流水线的过程
  • 应用,几何,光栅化各自干的事情,和每阶段的输入输出
  • 前者具体到CPU和GPU上是干什么的
  • 顶点着色器,片元着色器
  • 模板测试,深度测试,混合
第3章 Unity Shader 基础


  • Shader和材质的关系
  • Shader结构->Shader,Properties,SubShader,Tags,RenderStep,Pass,FallBack
  • Vertex shader和Fragment shader
  • CG/HLSL加ShaderLab怎么写Shader
  • 表面着色器,顶点/片元着色器,固定函数着色器
  • 随意写的简单Unity Shader代码模板,如下
Shdaer "shader类别/shader名字" {
  Properties {
    _name1 ("dispaly name", PropertyType) = DfaultValue
    _name2 ("dispaly name", PropertyType) = DfaultValue
    //假设有纹理
    _MainTex ("Texture", 2D) = "white" {}
  }
  //显示器会选择可以运行的SubShader
  SubShader {
    [Tags]
    [RenderStep]    //常见LOD 200
    Pass {
      CGPROGRAM
      //表示顶点着色器程序为vert,片元着色器程序为frag
      //包含的"UnityCG.cginc"文件提供appdata结构以及一些常用函数
      #pragma vertex vert
      #pragma fragment frag
      #inlcude "UnityCG.cginc"
      
      //要在程序里调用Properties,要映射到同名变量
      PropertyType _name1;
      PropertyType _name2;
      //假设有纹理,采样需要加下面这句
      float4 _MainTex_ST
      
      //这是一个在顶点着色器和片元着色器间传递数据的结构
      struct v2f{
        float4 pos:SV_POSITION;  //表示这是MVP矩阵后输出的顶点坐标
        float2 uv:TEXCOORD0;  //表示这是顶点的纹理坐标
        fixed3 color:COLOR0;  //表示这是顶点的颜色,0表示第0组
      }
      
      v2f vert(appdata_full v) //或appdata_base等
      {
        v2f o;
        o.pos = UnityObjectToClipPos(v.vertex);  //模型转世界转观察转裁剪/视口(坐标系)
        o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);  //加上材质球的tiling和offset
        o.color = (1, 0.5, 0.5);  //随意定一个颜色
        return o;  //顶点着色器核心任务,输出经过MVP矩阵后的顶点
      }
      
      fixed4 frag(v2f i):SV_Target  //输出要渲染的目标颜色
      {
        fixed4 texcol = tex2D(_MainTex, i.uv);  //用纹理坐标从纹理上取纹素
        //中间有一些改变颜色的操作,如texcol.rgb  = fixed3(0.5, 0.5, 1);
        //或者不取纹理的颜色,return fixed4(i.color, 1)
        return texcol;  //片元着色器核心任务,返回渲染的颜色
      }
      ENDCG
    {
    Pass {
      //其他Pass
    }
  }
  SubShader{
    //其他SubShader
  }
  FallBack "Diffuse"  //或FallBack "VertexLit"或FallBack Off
}
第4章 学习Shader所需的数学基础


  • 模型空间,世界空间->左手坐标系,观察空间->右手坐标系
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-5-9 19:42 , Processed in 0.124621 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表