ShaderJoy —— 最简单的软阴影(SoftShadow)实现【GLSL】
【摘要】
效果图
关键思路解析
要实现阴影最核心的思想:就是要从场景中各个物体上的点 朝着光线的方向进行 Raymarching,如果经过 SDF 测试以后,发现有阻挡,则我们可知该像素是位于阴影区域的;
软阴影的效果,则在其基础之上考虑了那些虽然不在阴影区域,但很接近的像素,然后根据其离光线的距离来控...
效果图
关键思路解析
要实现阴影最核心的思想:就是要从场景中各个物体上的点 朝着光线的方向进行 Raymarching,如果经过 SDF 测试以后,发现有阻挡,则我们可知该像素是位于阴影区域的;
软阴影的效果,则在其基础之上考虑了那些虽然不在阴影区域,但很接近的像素,然后根据其离光线的距离来控制虚化的程度,实际关键代码如下
-
/// @note 软阴影,朝着光的方向 ray marching
-
/// @param p 三维空间中的点
-
/// @param l 光的方向
-
float shadow(in vec3 p, in vec3 l)
-
{
-
float t = 0.15;
-
float t_max = 40.0;
-
-
float res = 1.0;
-
for (int i = 0; i < ITERS; ++i)
-
{
文章来源: panda1234lee.blog.csdn.net,作者:panda1234lee,版权归原作者所有,如需转载,请联系作者。
原文链接:panda1234lee.blog.csdn.net/article/details/113919651
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)