22.CG语法语义

  1. 22.CG-语义
    1. 22.1 知识点
      1. 语义的作用
      2. 常用语义
        1. 应用阶段——>顶点着色器
        2. 顶点着色器——>片元着色器
        3. 片元着色器输出
      3. 更多语义
      4. 总结
    2. 22.2 知识点代码

22.CG-语义


22.1 知识点

语义的作用

  • CG语言中提供了 语义 这种特殊关键字用于修饰函数中的传入参数和返回值。
  • 它的主要作用是让Shader知道从哪里读取数据,并把数据输出到哪里,让我们在Shader开发当中可以获取到想要的数据,并且可以把数据传递出去。
  • 注意:Unity中只支持CG当中的部分语义。

常用语义

应用阶段——>顶点着色器

应用阶段传递模型数据给顶点着色器时Unity支持的语义,一般在顶点着色器回调函数的传入参数中应用。

  • POSITION:
    模型空间中的顶点位置,通常是float4类型。

  • NORMAL:
    顶点法线,通常是float3类型。

  • TANGENT:
    顶点切线,通常是float4类型。

  • TEXCOORDn:
    比如 TEXCOORD0,TEXCOORD1…. 该顶点的纹理坐标,通常是float2或者float4类型。TEXCOORD0表示第一组纹理坐标,依次类推。纹理坐标:也称UV坐标,表示该顶点对应纹理图像上的位置。

  • COLOR:
    顶点颜色,通常是fixed4或float4类型。

顶点着色器——>片元着色器

从顶点着色器传递数据给片元着色器时Unity支持的语义,一般在顶点着色器回调函数的返回值中应用。

  • SV_POSITION:
    裁剪空间中的顶点坐标(必备)。

  • COLOR0:
    通常用于输出第一组顶点颜色(不是必须的)。

  • COLOR1:
    通常用于输出第二组顶点颜色(不是必须的)。

  • TEXCOORD0~TEXCOORD7:
    通常用于输出纹理坐标(不是必须的)。

片元着色器输出

片元着色器输出时Unity支持的常用语义,一般在片元着色器回调函数的返回值中应用。

  • SV_Target:
    输出值会存储到渲染目标中。

更多语义

HLSL语义汇总:链接。CG的语义大部分和HLSL的相同,在此做了解即可。以后我们用到其他语义时,再着重讲解即可。

总结

  • 语义的主要作用是让Shader知道从哪里读取数据,并把数据输出到哪里。
  • 我们在编写顶点片元着色器回调函数的相关逻辑时,我们需要使用语义去修饰函数参数和返回值,这样我们才能获取到我们想要的数据,并且把结果数据明确的返回出去用于下一流程处理。
  • 我们需要将常用语义记录下来,以便后续使用。

22.2 知识点代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Lesson22_CG_语义 : MonoBehaviour
{
    void Start()
    {
        #region 知识点一 语义的作用

        //CG语言中提供了 语义 这种特殊关键字用于修饰函数中的传入参数和返回值
        //它的主要作用是让Shader知道从哪里读取数据,并把数据输出到哪里
        //让我们在Shader开发当中可以获取到想要的数据,并且可以把数据传递出去

        //注意:Unity中只支持CG当中的部分语义

        #endregion

        #region 知识点二 常用语义

        #region 应用阶段——>顶点着色器

        //应用阶段传递模型数据给顶点着色器时Unity支持的语义
        //一般在顶点着色器回调函数的传入参数中应用

        //POSITION:
        //模型空间中的顶点位置,通常是float4类型

        //NORMAL:
        //顶点法线,通常是float3类型

        //TANGENT:
        //顶点切线,通常是float4类型

        //TEXCOORDn:
        //比如 TEXCOORD0,TEXCOORD1....
        //该顶点的纹理坐标,通常是float2或者float4类型
        //TEXCOORD0表示第一组纹理坐标,依次类推
        //纹理坐标:也称UV坐标,表示该顶点对应纹理图像上的位置

        //COLOR:
        //顶点颜色,通常是fixed4或float4类型

        #endregion

        #region 顶点着色器——>片元着色器

        //从顶点着色器传递数据给片元着色器时Unity支持的语义
        //一般在顶点着色器回调函数的返回值中应用

        //SV_POSITION:
        //裁剪空间中的顶点坐标(必备)

        //COLOR0:
        //通常用于输出第一组顶点颜色(不是必须的)

        //COLOR1:
        //通常用于输出第二组顶点颜色(不是必须的)

        //TEXCOORD0~TEXCOORD7:
        //通常用于输出纹理坐标(不是必须的)

        #endregion

        #region 片元着色器输出

        //片元着色器输出时Unity支持的常用语义
        //一般在片元着色器回调函数的返回值中应用

        //SV_Target:
        //输出值会存储到渲染目标中

        #endregion

        #endregion

        #region 知识点三 更多语义

        //HLSL语义汇总:
        //https://learn.microsoft.com/zh-cn/windows/win32/direct3dhlsl/dx-graphics-hlsl-semantics?redirectedfrom=MSDN
        //CG的语义大部分和HLSL的相同,在此做了解即可
        //以后我们用到其他语义时,再着重讲解即可

        #endregion

        #region 总结

        //语义的主要作用是让Shader知道从哪里读取数据,并把数据输出到哪里
        //我们在编写顶点片元着色器回调函数的相关逻辑时
        //我们需要使用语义去修饰函数参数和返回值
        //这样我们才能获取到我们想要的数据,并且把结果数据明确的返回出去用于下一流程处理

        //我们需要将常用语义记录下来,以便后续使用

        #endregion
    }
}


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏