Unity 水、流体、波纹基础系列(四)——朝水里看(Looking Through Water)

本文介绍了如何在Unity中创建逼真的水下视觉效果,包括水下雾化和折射的实现。通过调整表面着色器,使水变得透明,并使用雾和折射效果增加深度感。此外,还探讨了如何处理透明度、阴影和水下颜色变化,以创建更加真实的水下场景。
摘要由CSDN通过智能技术生成

目录

1 使水透明

1.1 水下风光

1.2 透明表面着色器

1.3 移除水阴影

2 水下雾

2.1 找出深度

2.2 抓取背景

2.3 应用雾

2.4 自定义混合

3 伪折射

3.1 抖动背景样本

3.2 使用法线向量

3.3 仅折射水下

3.4 方向性流体

收起

水下的雾化和折射(Underwater Fog and Refraction)

文章重点:

让水透明

采样深度并获取渲染的内容

添加水下雾

创建伪折射

这是有关创建流体材质系列文章中的第四篇。我们将使水表面透明,增加水下的雾和折射。

本教程是CatLikeCoding系列的一部分,原文地址见文章底部。“原创”标识意为原创翻译而非原创教程。

本教程使用Unity2017.4.4f1.

(水中折射)

1 使水透明

到目前为止,我们创建的水效果是完全不透明的。这适用于深水或其他非常浑浊的液体,或覆盖有一层碎屑,泡沫,植物或其他阻挡光的液体。但是透明的水是透明的,因此需要透明的着色器。因此,我们将调整表面着色器以使其具有透明度。我们只会关注水下。如果要水下相机的效果,需要不同的方法。

1.1 水下风光

首先,创建一些水下风景,以便在水面下有一些好玩的东西。我创建了一个深坑,其中一些物体暗示了植物的生长,无论深度在地下还是在地面。我还添加了两个漂浮在水面上的球体。为了照亮坑的底部,我添加了一个强烈的聚光灯,该聚光灯从水面射出。此灯和主方向灯都启用了阴影。

(测试场景,还没有水)

我们将使用“扭曲流体”效果,因此将带有该材质的四边形添加到场景中,代表水面。它仍然是完全不透明的,因此它将遮盖所有水下的东西。

(测试场景,不透明的水)

1.2 透明表面着色器

若要使Distortion Flow着色器支持透明性,请将其RenderType标记更改为“Transparent”,并将其“Queue ”标记也设置为“Transparent ”。这使得它可以与你可能拥有的任何替换着色器一起使用,并将着色器移至透明渲染队列,现在已经会所有不透明几何体渲染之后进行绘制。

我们还必须指示Unity从表面着色器代码生成透明着色器,这是通过将alpha关键字添加到表面编译指示中来完成的。

由于我们使用的是基于物理的标准照明功能,因此默认情况下,着色器将使用Unity的透明渲染模式,该模式会将高光和反射保持在其本来透明的表面之上。另一种选择是淡入淡出模式,它会均匀淡出所有内容,这是不真实的。

现在,我们可以通过调整材质albedo的alpha分量来控制水的透明度。

(透明的水表面)

1.3 移除水阴影

即使将其Alpha设置回1,水也不再接收阴影。这是因为现在它已放入透明渲染队列中。由于这些对象的渲染方式,它们无法接收阴影。尽管你可以在某种程度上解决此限制,但是使用简单的表面着色器是不行的。

但是,我们的水仍会投射阴影,从而消除了水下的所有直接照明。我们不希望这样,因为它使水下场景太暗。首先,我们可以删除fillforwardshadows关键字,因为我们不再需要支持任何阴影类型。

这尚未消除主定向光的阴影。这些仍由默认的漫反射阴影投射器过程添加,我们已从漫反射后备着色器继承了该过程。要消除阴影,请删除fallback。

</

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值