当前位置: 代码迷 >> 综合 >> ShaderJoy —— ViewRay 和平面相交的景深效果【GLSL】
  详细解决方案

ShaderJoy —— ViewRay 和平面相交的景深效果【GLSL】

热度:57   发布时间:2024-02-23 04:51:36.0
举例: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); 
}

 效果如图所示