视口变换 世界坐标系变换到局部坐标系

为什么变换?

  • MVP矩阵,让空间中的图元显示在屏幕空间上
  • PBR材质的上半球采样,生成随机数在世界坐标系的上半球范围内,需要变换到顶点法线上半球范围内,进行采样

变换矩阵

  • 视口变换矩阵
    将绕x,y,z轴旋转的矩阵(可以分成三个,也可以组合起来变成一个矩阵)相乘,
    在x,y,z轴上的平移组装成一个矩阵相乘。
  • 局部坐标系变换到世界坐标系矩阵
    已知,每个新x,y,z轴基向量,可以由原来的x,y,z轴表示
    xnew = [0,1,0]
    ynew = [1,0,0]
    znew = [0,0,1]
    比如,我们把x轴和y轴互换一下位置
    对于局部坐标系下的newpos.xyz = Matnew * pos.xyz
    GLSL 是列矩阵存储,我们通过上面的矩阵Matnew易得 newpos.xyz = pos.yxz

PBR材质的上半球采样

取fragment的法线,找到与法线相互垂直的另外两条向量b1,b2建立局部坐标系
把b1作为x轴 b2作为y轴 法线作为z轴
xnew = b1
ynew = b2
znew = normal

在这里插入图片描述
采样之后的结果是不是有点过亮了?

在这里插入图片描述
我改了一版,最后一个bounce连接上一个顶点和光线进入方向,反而更亮了

在这里插入图片描述
把结果直接除以2pi半球角度,效果似乎是好了点,但是这不符合原理

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值