【发布时间】:2021-04-10 17:28:42
【问题描述】:
我正在尝试使用后期处理着色器来创建水体。水位将处于 y = 0 并且该边界下方的任何内容都将受到着色器的影响。我将从着色器中的摄像机位置投射光线并检索每条光线与地面的距离。然后,我将使用该信息来计算您看到的水量,以计算表面的颜色。问题是我不知道如何检测和计算射线在与 y = 0 相交之前行进的距离。我有什么办法可以达到这个效果。
失败的代码
float rayGroundIntersect(float3 rayOrigin, float3 rayDir) {
if (rayDir.y <= 0) {
return maxFloat;
}
float a = rayOrigin.y / rayDir.y;
float l = length(rayDir.xz * a);
return l;
}
类似成功的project,但在一个球体上。
【问题讨论】:
-
您找到解决此问题的方法了吗?如果我的回答有帮助,请考虑accepting it。
-
您的回答效果很好。非常感谢!
标签: unity3d hlsl post-processing