shader入门精要读书笔记08 数学基础

一、法线变换

法线也叫法矢量,不同于我们之前变换的顶点或者方向矢量,
法线是需要进行特殊处理的一种方向矢量。
模型中一个顶点会携带额外的信息。顶点法线就是其中一种信息。
变换模型时除顶点外,顶点法线也需要变换。以便后续(片元着色器)处理。
法线变换使用变换矩阵的逆转置矩阵来进行变换。
如果变换矩阵是正交矩阵,那么我们可以直接使用变换矩阵进行法线变换。
如果变换矩阵内只包含旋转变换,那么这就是正交矩阵。
如果变换只包含旋转和统一缩放,不包含非统一缩放,可以用统一缩放系数k来得到变换矩阵的逆转置矩阵1/kM(87页)。

二、Unity Shader内置变量
shader入门精要读书笔记08 数学基础
shader入门精要读书笔记08 数学基础shader入门精要读书笔记08 数学基础
三、Cg中矢量和矩阵类型
float3×3()、float4×4(),
矢量点积,dot()
float4()—列矩阵行矩阵取决于所在位置。
矩阵乘法—mul(A,B)
mul(M,v)==mul(v,tranpose(M))
tranpose()—转置
平常使用矢量都是列矩阵,我们也通常使用行矩阵,因为可以省去为另外一个矩阵进行转置。

四、Unity中的屏幕坐标
ComputerScreenPos/VPOS/WPOS
书90-92页,

获取片元的屏幕坐标,也就是获取视口坐标。(视口坐标就是把屏幕坐标归一化)-------两种方法:

  1. 通过声明VPOS/WPOS语义,来获取x、y像素坐标,再用他们除以_ScreenParams.x(.y),来获取(0,1)之间的视口坐标值。
  2. 通过 ComputerScreenPos 进行类似于 裁剪空间转换到屏幕空间 的过程,ComputerScreenPos函数即是进行 84页 映射缩放公式(没有齐次除法)的过程。

终于完事了这篇。。。