从零开始编写minecraft光影包(9)高级水面绘制 反射与屏幕空间反射

本文介绍了如何从零开始为minecraft光影包添加高级水面反射效果,包括计算反射光线、实现屏幕空间反射(SSR)算法,通过GLSL和图形学原理,使水面反射与周围环境动态互动,提升游戏视觉体验。
摘要由CSDN通过智能技术生成

完整资源:

我的Github地址

前情提要:

从0开始编写minecraft光影包(0)GLSL,坐标系,光影包结构介绍

从零开始编写minecraft光影包(1)基础阴影绘制

从零开始编写minecraft光影包(2)阴影优化

从零开始编写minecraft光影包(3)基础泛光绘制

从零开始编写minecraft光影包(4)泛光性能与品质优化

从零开始编写minecraft光影包(5)简单光照系统,曝光调节,色调映射与饱和度

从零开始编写minecraft光影包(6)天空绘制

从零开始编写minecraft光影包(7)基础水面绘制

从零开始编写minecraft光影包(8)中级水面绘制 水下阴影与焦散

前言

上次的博客我们完成了水下特效的绘制,即阴影和焦散。这次我们来搞一点赛艇的东西。。。

反射

在上一篇博客中,我们只是简单绘制了水体的特效,可是我们的水面还是不够漂亮,因为它始终缺少反射的效果。
在这里插入图片描述

而在现实世界中,我们在日出日落的时候,水面会反射天空的颜色:

在这里插入图片描述

所以在该部分,我们将绘制水面,使其能够反射来自天空的光线!

要想正确的绘制某像素的反射,这意味着我们接收该像素的反射光。我们必须知晓该像素反射的光线的颜色

换句话说,我们要知道,从“镜子”中看到了谁?这就需要计算反射光线:

在这里插入图片描述

如图所示,我们只需要知晓

  1. 入射光线方向
  2. 反射点的法线方向

即可计算出反射光线的方向。而因为眼坐标系是以相机为原点的,那么入射光线的方向,又等于眼坐标中的坐标

利用 GLSL 帮我们封装好的 reflect 函数,我们可以轻松求出反射光线的方向。

在这里插入图片描述

其中第一个参数是入射光线的方向,第二个参数是反射点的法线。

在求出反射光线之后,我们还希望知晓反射光线对应的天空颜色是什么,还记得我们在

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值