ShaderJoy —— Raytrace 实现的景深效果【GLSL】
【摘要】
举例:Raytrace 实现效果图
当我们想利用 Raytrace 技术实现一些伪 3D 的效果的时候,常常会遇到 ViewRay 和平面 是否相交的问题。
首先我们来看看普通版的解决方法。
普通版
如果只是简单的判断从相机射出的光线 ViewRa...
举例:Raytrace 实现效果图
当我们想利用 Raytrace 技术实现一些伪 3D 的效果的时候,常常会遇到 ViewRay 和平面 是否相交的问题。
首先我们来看看普通版的解决方法。
普通版
如果只是简单的判断从相机射出的光线 ViewRay 是否和平面相交,我们只需要把光线向量和平面的法向量进行点乘即可,如下代码所示
-
/// @note 光线追踪之平面
-
/// @param pl 平面法线
-
/// @param ro Ray Origin
-
/// @param rd Ray Direction
-
float tracePlane( in vec4 pl, in vec3 ro, in vec3 rd )
-
{
-
/// @note 最直接的方式,直接用 ViewRay 的方向向量和平面法线做点乘
-
/// 注意 ViewRay 和平面法线是反向的,所以要加负号。
-
/// 但缺点是这样没有景深的效果
-
return -dot(pl.xyz, rd);
-
}
效果如图所示
文章来源: panda1234lee.blog.csdn.net,作者:panda1234lee,版权归原作者所有,如需转载,请联系作者。
原文链接:panda1234lee.blog.csdn.net/article/details/108827355
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)