unity中怎么做河流_做Unity3D中如何实现水面渲染?

本文详细介绍了在Unity3D中实现水面渲染的过程,包括水面反射的实现,使用镜面反射和UV扰动技术,以及结合天空盒进行混合,逐步提升水效的真实感。后续文章将探讨如何通过法线贴图增加水面细节。
摘要由CSDN通过智能技术生成

一、前言

本文旨在与大家一起探讨学习新知识,如有疏漏或者谬误,请大家不吝指出。

二、概述

在讲之前,我们先来看下最终渲染效果是什么样子的:(示例程序见原文中附件)

我们来对水效做一下简单的效果分解。

一般地,像很多网上所说的那样,水效=反射 折射

菲涅尔效应。这个公式是最简单的,也是最基础的。当然,到真正开发水效时需要考虑的东西就比较多了,在上面这张截图里,我考虑到的效果有:水波的模拟、反射、折射、菲涅尔效应、水的散射、大气的散射以及辉光。做过水效的同学可能应该清楚,除了以上的效果,还有Caustic(译作焦散)没有考虑进去。另外水底和水面的渲染在公式、参数和渲染实现上都有或多或少的差别,不能一概而论。这里我们只讨论水面的渲染,至于水底的,大同小异,但是需要准备另外一套shader,这里暂且不提。

下面会将各个效果单独实现,再整合成到一起,每个效果都会开一个文章说明。另外需要注意的是,水波的模拟我之前有篇文章有提过,这里就不写了。链接在这里:

Gerstner波是一种方法来实现水波模拟;另外还有基于FFT的,可能就需要有真实水波数据来经过FFT分解成若干正弦余弦波,这个我倒没有做过;还有就是基于noise的,将多个noise图根据分形噪声思想进行叠加,也可以实现出很漂亮的波形。在ShaderToy上有一个例子写的非常棒,大家可以看一看:

https://www.shadertoy.com/view/Ms2SD1</

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值