5.2.2 模型数据的获取

本文详细解释了在UnityShader中,如何使用a2v结构体从模型数据中获取额外信息,如顶点坐标、法线和纹理坐标,并将其传递给顶点着色器的过程。
摘要由CSDN通过智能技术生成

5.2.2 模型数据的获取

Shader "Custom/Chap5.2.2/Simpler Shader"
{
  SubShader {
    pass 
    {
      CGPROGRAM

      #pragma vertex vert
      #pragma fragment frag

      // a2v 的意思是 app to vertex  -- 这里的名字可以随便取嗷, 但是 a2v 感觉有更清晰意思。
      // 定义顶点着色器的输入
      struct a2v {
        // POSITION的意思就是用模型的顶点坐标来填充 vertex 变量
        float4 vertex: POSITION;
        // NORMAL 的意思是用模型的空间的法线方向填充 noraml 变量
        float3 normal: NORMAL;
        // TEXCOORD0 的意思是用模型的第一套纹理坐标填充 texcoord 变量
        float4 texcoord: TEXCOORD0;
      };

      // 报错注意点: struct a2v {};  的末尾这个 ";" 要添加,不然会报错。 也就是结构体末尾要使用 ; 与后文隔开

      float4 vert(a2v v):SV_POSITION {

        // 上一章节使用的是  v  因为上一章的 v 是使用 POSITION 填充的
        // 这一章使用 v.vertex 因为 v.vertex 是使用 POSITION 填充的
        return UnityObjectToClipPos(v.vertex);
      }

      fixed4 frag(): SV_Target {
        return fixed4(1.0,1.0,1.0,1.0);
      }

      ENDCG
    }
  }
}
  • 上一章节使用了 float4 v: POSITION 获取顶点坐标而传入顶点着色器
  • 这一章节使用 a2v v 来获取更多的信息传入着色器。
  • a2v 是一个结构体,里面可以自定义想要传入顶点着色器的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值