光线追踪-初始光线发射方向(Raster space、NDC space、Screen Space)

本文详细解释了光栅化过程中,如何将设备坐标系的像素映射到屏幕空间,涉及标准化设备坐标、视角缩放和屏幕适应等关键步骤。通过FOV调整和图像分辨率考虑,演示了如何生成初始光线并转换到世界空间。

光栅化设备空间的一个像素映射到屏幕空间的流程

在这里插入图片描述
光栅化设备坐标系(Raster space),范围(0,0)~(width,height)
→\to标准化设备坐标系(NDC space),范围(0,0)~(1,1)
→\to屏幕空间坐标系(Screen space),范围(-1,1)~(1,-1)


生成初始光线的代码如下
在这里插入图片描述

  • x坐标:x + 0.5是Raster space上第一个像素的中点,除以width,转到NDC space,再乘以2,减去1 转到Screen space
  • y坐标同理,但是要做个翻转
  • scale = tan(FOV/2):作为一个缩放因子使用,以此达到控制我们能看到的场景的多少
    • FOV = 90, scale = 1 : 正常视野、无缩放
    • FOV > 90, scale > 1 : 视野大,应该看到场景中更多的场景,相当于把近平面拉大,但是采样光线数不变,发射出去的光线就稍微往四周散开,采样到更多的场景物体。
  • imageAspectRatio:宽高比其实就是宽是高的多少倍,为了保证每个像素是正方形,对x轴进行拉长。由于1280x960,横轴的像素多于纵轴,那么横轴理应比纵轴长一些。

最后其实还要转到世界空间,但由于相机就在原点,看向-z,并且这个近平面就放在z = -1处。
因此方向就是简单的(x,y,z)-(0,0,0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宗浩多捞

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值