ShaderJoy —— 二维多光源光照阴影【GLSL】
【摘要】
效果图
一个光源跟随鼠标,一个光源上下移动
绿色的 box 为障碍物
算法阐述
光源亮度的指数衰减
我们想要的效果是,光的亮度随着离光源的距离越大而迅速衰减 ,所以很自然地需要先计算出像素到光源的距离,然后需要...
效果图
一个光源跟随鼠标,一个光源上下移动
绿色的 box 为障碍物
绿色的 box 为障碍物
算法阐述
光源亮度的指数衰减
我们想要的效果是,光的亮度随着离光源的距离越大而迅速衰减 ,所以很自然地需要先计算出像素到光源的距离,然后需要设计一个衰减函数,来满足随着距离增大而迅速减少的目的。
-
/// @note 光照部分
-
return hyperstep(light.min, light.max, distance(pixel, light.pos)) * light.brightness * light.color;
-
/// @note 衰减函数
-
float hyperstep(float min, float max, float x)
-
{
-
if (x < min)
-
{
-
return 1.0;
-
}
-
else if (x > max)
-
{
-
return 0.0;
-
}
-
else
-
{
-
// min max 之间线性插值
-
float value = (x - min) / (max - min);
-
/// 指数衰减
-
return 100. / (99. * pow(9. * value + 1
文章来源: panda1234lee.blog.csdn.net,作者:panda1234lee,版权归原作者所有,如需转载,请联系作者。
原文链接:panda1234lee.blog.csdn.net/article/details/113760712
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)