Unity Shader入门精要(第三,四章)

Unity Shader 概述

  1. Shader类型:
    Standard Surface Shader:标准光照Shader
    Unlit Shader:不包含光照
    Image Effect Shader:实现屏幕后处理基本模板
    Compute Shader:利用并行性进行一些物馆计算
  2. Unity Shader:
    表面着色器(Surface Shader)是Unity对顶点/片元着色器的更高一层的抽象,被定义在SubShader语义块。
    顶点/片元着色器(Vertex/Fragment Shader)定义在Pass语义块内,比较灵活,自定义。

Shader数学基础

  1. 坐标系
    在这里插入图片描述
    Unity模型空间和世界空间使用左手坐标系,观察空间使用右手坐标系(摄像机为原点,Z越小离物体越远)
  2. 逆矩阵用来求解逆变换,如果能够验证矩阵为正交矩阵,那么 M T = M − 1 M^T=M^{-1} MT=M1,就可以直接求解矩阵的转置,从而求得逆变换。

矩阵的几何意义:变换

线性变换:缩放、旋转、错切、镜像、正交投影。

  1. 仿射变换:合并线性变换和平移变换的变换类型。
  2. 分解基础变换矩阵:
    在这里插入图片描述
    M 3 × 3 M_{3\times3} M3×3表示旋转和缩放, t 3 × 1 t_{3\times1} t3×1表示平移。
    例子如下:对一个点进行平移(如果是一个方向矢量,w分量是0,不能平移)。
    在这里插入图片描述
    缩放:
    在这里插入图片描述
    旋转矩阵:
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
    先缩放,再旋转,最后平移

透视投影

对应Unity里面的参数:Field of View(FOV),Clipping Planes中的Near和Far。
在这里插入图片描述
在这里插入图片描述
当前摄像机的横纵比为:
在这里插入图片描述
投影矩阵:
在这里插入图片描述

正交投影

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

齐次除法

w w w分量除以 x 、 y 、 z x、y、z xyz分量,得到归一化的设备坐标(NDC)。
在这里插入图片描述
z z z分量另有他用

法线变换

使用用一个变换矩阵,无法维持法线的垂直性。(进行非统一缩放)
切线和法线垂直也就是: T A ⋅ N A = 0 T_A{\cdot}N_A=0 TANA=0 T B = M A → B T A T_B=M_{A{\rightarrow}B}T_A TB=MABTA
要得到 T B ⋅ N B = ( M A → B T A ) ⋅ ( G N A ) = 0 T_B{\cdot}N_B=(M_{A{\rightarrow}B}T_A){\cdot}(GN_A)=0 TBNB=(MABTA)(GNA)=0
经过一下推导:
在这里插入图片描述
结论:如果变换只包括旋转变换,那么这个变换矩阵就是正交矩阵;如果变换包括旋转和统一缩放,则利用缩放系数K来得到变换矩阵;如果包含了非统一变换,那么就必须要求解逆矩阵。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值