美术生零基础转行TA中(第2天)

本文详细介绍了Unity中的Shader编程,包括方法函数、数据类型(如float、half、integer等)、顶点与三角面处理、结构与语义、以及剪影和投影的相关概念,帮助读者掌握基本的CG编程技巧。
摘要由CSDN通过智能技术生成

20240312 学习目标:

  • 刷课至2.7

学习内容:

2.0 方法函数

  • float multioly2(float value):方法类型 方法名字(方法的参数)
  • 放置pass中写
  • CGPROGRAM/EndCG: 用于定义CG语言的开始于结束
  • #pragma vertex name 是编译指令,这里表示定义了叫name的顶点着色器
  • #pragma fragment name 定义了叫name的片断着色器
Shader "taecg/FrameWork"
{
     SubShader
     {
          pass
          {
               CGPROGRAM
                    #pragma vertex vert
                    #pragma fragment frag
                    
                    //顶点着色器
                    float4 vert(float4 pos : POSITION) : SV_POSITION
                    {
                    
                    }
                    
                    //片断着色器
                    float4 frag() : SV_TARGET
                    {
                    
                    }
                   EndCG
          }
     }
}

2.1 变量与数据类型

  • 变量:
    我今天想吃(n)个苹果。
    n代表数值123456

  • 数据类型
    float:32位:PC 手机 未知属性 UV 需要很大的精度
    half:16位:手机 方向 颜色 法线
    fixed:-2~2 (手机 颜色)
    Interger:整型
    sampler2D:2D贴图
    sanplerCUBE:3D贴图

  • float4
    四个数值

2.2 变量与定义

Shader "taecg/FrameWork"
{
     SubShader
     {
          pass
          {
               CGPROGRAM
                    #pragma vertex vert
                    #pragma fragment frag
                    
                    //顶点着色器
                    float4 vert(float4 pos : POSITION) : SV_POSITION
                    {
                         // float2();是容器  
                         float3 point = float3(10,3.8,1);
                         1会填充4个值
                         float4 pos = 1;
                         float4 pos = float4(1,1,1,1);
                         float4 pos = float4(point ,1);
                    }
                    
                    //片断着色器
                    float4 frag() : SV_TARGET
                    {
                    
                    }
                   EndCG
          }
     }
}

2.3 顶点与三角面

  • houdini

2.4 结构与语义 (没太懂语义)

  • 顶点的多个属性信息:位置、UV坐标、法线、颜色、索引ID
  • float4 pos:位置坐标
  • 结构Struct
  • 语义:告诉Shader谁是谁?
    float4 (数据类型)pos(变量名):position(语义);(结尾)
Shader "taecg/FrameWork"
{
     SubShader
     {
          pass
          {
               CGPROGRAM
                    #pragma vertex vert
                    #pragma fragment frag

                    //定义了一个组,名字叫做appdate
                    struct appdate
                    {
                         //输入
                         float4 pos : POSITION;
                         float4 color:COLOR;
                    };

                    struct v2f 
                    {
                          float4 pos : SV_POSITION;
                          
                    };
            
                    //顶点着色器
                    v2f vert(appdate v)
                    {
                    
                    }
                    
                    //片断着色器
                    float4 frag(v2f i) : SV_TARGET
                    {
                    
                    }
                    EndCG
          }
     }
}

2.5 结构的初始化与返回

  • 顶点的多个属性信息structappdate——顶点着色器——顶点到片断的数据v2f ——片断着色器
    Shader “taecg/FrameWork”
    {
    SubShader
    {
    pass
    {
    CGPROGRAM
    #pragma vertex vert
    #pragma fragment frag

                  //定义了一个组,名字叫做appdate
                  struct appdate
                  {
                       //输入
                       float4 vertex: POSITION;
                       float4 color:COLOR;
                  };
    
                  struct v2f 
                  {
                        float4 pos : SV_POSITION;
                        
                  };
          
                  //顶点着色器
                  v2f vert(appdate v)
                  {
                          //定义同时初始化
                          v2f o = (v2f)0;
                          //赋值
                          o.pos = v.vertex;
                          //返回
                          return 0;
                  }
                  
                  //片断着色器
                  float4 frag(v2f i) : SV_TARGET
                  {
                        return 1;
                  }
                  EndCG
        }
    

    }
    }

2.6 剪影与投影

  • 坐标系
    2D坐标系:XY
    3D坐标系:XYZ
    左手坐标系:Unity
    右手坐标系:3DMAX

  • 齐次剪裁空间
    规范化观察体(Canonical View Volume)简称CVV

  • 投影变换:目的是为了从观察空间转换到齐次裁剪空间 矩阵运算

  • 正交投影

  • 透视投影

学习产出:

  • 2.0
  • 2.1
  • 2.2
  • 2.3
  • 2.4
  • 2.5
  • 2.6
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值