unity怎么改分辨率,unity引擎怎么设置分辨率

首页 > 游戏 > 作者:YD1662024-02-07 13:12:12

我们要还原一个效果或者是提升一个效果,首先就要先了解这个效果,这样就能更好地为我们做优化打下基础。我们快速地了解一下什么是3S的效果?也就是次表面散射。光从一种介质进入到另一种介质有三种形态,第一种是反射,第二种是次表面散射,第三种是透射。其中反射是我们现在非常火的BRDF,也就是PBR材质中用到的双向反射分布函数。

我们通常说的次表面散射光照传输模型就是BSSRDF,我们叫它双向表面散射反射函数,就是现在大家看到的这个函数。

unity怎么改分辨率,unity引擎怎么设置分辨率(9)

然后其中一个非常关键的参数就是这个R,通常次表面散射的光线密度分布是一个各向同性同向的函数,一个像素受周围像素光照影响的比例和两个像素之间的距离有关,这个密度分布函数就是R,R的计算是非常复杂的。

2001年Jensen提出了一个Diffusion Profile扩散剖面。这个Diffusion Profile是用来描述光线如何在半透明物体中进行扩散和分布的函数。可以简单地理解为Diffusion Profile就是一张权重图,不同的皮肤渲染方法通常就是对Diffusion Profile的不同的近似。初期的Diffusion Profile使用的是偶极子来拟合计算的,但是对于皮肤来说效果不理想。之后针对这个Diffusion Profile图形界进行了一顿猛攻,出现了多极子和高斯函数求和的拟合方法。有兴趣的同学可以搜这些方法来看,我就不展开讲了。

总之,后续这一系列的改进都是为了更好地拟合我们看到的这个R,就是基于物理函数计算结果的曲线。

看左边这张图就是Diffusion Profile的计算结果,就好像我们拿一个手电筒垂直地照在了我们的皮肤上,看到光线到表面中心点周围的一个光晕,从右边这张图看到RGB扩散的范围是不一样的。这个红色的光比绿色的光、蓝色的光散射得更远,所以耳朵和鼻子部位通常是红彤彤的。美术上,感官上我们看到的一些效果往往在做渲染的背后是一大堆的理论,我们只有更好地理解这些现象背后的原理才能做出最佳的实际的效果。

unity怎么改分辨率,unity引擎怎么设置分辨率(10)

发展到这个时候的次表面散射还只是一个离线渲染的阶段,只能用于影视当中。

2009年之后这个3S逐渐进入了我们实时渲染的阶段。首先是屏幕空间的模糊算法,性价比比纹理空间提高很多。这个模糊的过程就是根据我们前面说的Diffusion Profile对周围的像素进行加权求和,来模拟次表面散射的过程。

之后是2005年出来了一个可分离次表面散射,我们称之为4S,它完全是从优化的角度出发,并不是纯粹的数学推导,它是使用两个可分一维卷积来近似,效率得到了极大的提升。

下面的链接就是可分离次表面散射的一个paper,有兴趣的同学可以仔细研究。

unity怎么改分辨率,unity引擎怎么设置分辨率(11)

上面这些技术是目前PC和主机3A游戏中主流的次表面散射的技术。我们Unity的《异教徒》的角色并没有直接使用,而是在可分离次表面散射的基础上进行了改良和一些提升。

我们主要是针对可分离次表面散射上的问题进行了改良和提升。问题很多。我们今天讲一些主要的改进。

第一个是拟合结果不正确。这个单一的高斯函数在近似多层散射方面做得很好。然而,即使是两种高斯的混合也很难准确地表示单次散射和多层散射的组合。

在图像中我们可以看到这个结果是白色的,而双高斯近似是红色的,它其实拟合的结果并不是很好。

unity怎么改分辨率,unity引擎怎么设置分辨率(12)

上一页12345下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.