最终效果
思路
伪体渲染
通常体渲染是模拟射线在模型中逐步判断,每个像素需要for循环若干次逐步递进,然后对每个路过的像素进行加工,步距决定精度,最终输出。
消耗相当高,但如果我们绘制的是可预测的规则模型,我们就可以预先算出射线的位置来进行判断。
优点是:效率极快,几乎可以避免逻辑判断和for循环。
缺点是:比较繁杂,不能实现象射线递进那样完全真实和自由的效果。
快速判断射线位置
关于求向量的投影大家自行百度,这里用了张百度搜的图片讲解。
我们知道视线的角度normalize(u),和 视线和球心的距离u`(_SpherePos - _CameraPos)
通过投影的逆运算,我们能求出视角U未来在球心垂面上的点位置。
即: p = normalize(U) · normalize(U`) * |U|
未来的位置为:视角法向量 点乘 视角和球心的法向量 乘以 视角和球心的模长,推导公式学了投影向量自然就会了,这里不