mirror of
https://github.com/LearnOpenGL-CN/LearnOpenGL-CN.git
synced 2025-08-23 12:45:29 +08:00
修改关于Normal Distribution Function的翻译2
This commit is contained in:
@@ -201,9 +201,9 @@ Cook-Torrance BRDF的镜面反射部分包含三个函数,此外分母部分
|
||||
以上的每一种函数都是用来估算相应的物理参数的,而且你会发现用来实现相应物理机制的每种函数都有不止一种形式。它们有的非常真实,有的则性能高效。你可以按照自己的需求任意选择自己想要的函数的实现方法。英佩游戏公司的Brian Karis对于这些函数的多种近似实现方式进行了大量的[研究](http://graphicrants.blogspot.nl/2013/08/specular-brdf-reference.html)。我们将会采用Epic Games在Unreal Engine 4中所使用的函数,其中D使用Trowbridge-Reitz GGX,F使用Fresnel-Schlick近似(Fresnel-Schlick Approximation),而G使用Smith's Schlick-GGX。
|
||||
|
||||
|
||||
### 正态分布函数
|
||||
### 法线分布函数
|
||||
|
||||
<def>正态分布函数</def>\(D\),或者说镜面分布,从统计学上近似的表示了与某些(中间)向量\(h\)取向一致的微平面的比率。举例来说,假设给定向量\(h\),如果我们的微平面中有35%与向量\(h\)取向一致,则正态分布函数或者说NDF将会返回0.35。目前有很多种NDF都可以从统计学上来估算微平面的总体取向度,只要给定一些粗糙度的参数以及一个我们马上将会要用到的参数Trowbridge-Reitz GGX:
|
||||
<def>法线分布函数</def>\(D\),或者说镜面分布,从统计学上近似的表示了与某些(中间)向量\(h\)取向一致的微平面的比率。举例来说,假设给定向量\(h\),如果我们的微平面中有35%与向量\(h\)取向一致,则法线分布函数或者说NDF将会返回0.35。目前有很多种NDF都可以从统计学上来估算微平面的总体取向度,只要给定一些粗糙度的参数以及一个我们马上将会要用到的参数Trowbridge-Reitz GGX:
|
||||
|
||||
$$
|
||||
NDF_{GGX TR}(n, h, \alpha) = \frac{\alpha^2}{\pi((n \cdot h)^2 (\alpha^2 - 1) + 1)^2}
|
||||
@@ -217,7 +217,7 @@ $$
|
||||
|
||||
当粗糙度很低(也就是说表面很光滑)的时候,与中间向量取向一致的微平面会高度集中在一个很小的半径范围内。由于这种集中性,NDF最终会生成一个非常明亮的斑点。但是当表面比较粗糙的时候,微平面的取向方向会更加的随机。你将会发现与\(h\)向量取向一致的微平面分布在一个大得多的半径范围内,但是同时较低的集中性也会让我们的最终效果显得更加灰暗。
|
||||
|
||||
使用GLSL代码编写的Trowbridge-Reitz GGX正态分布函数是下面这个样子的:
|
||||
使用GLSL代码编写的Trowbridge-Reitz GGX法线分布函数是下面这个样子的:
|
||||
|
||||
```c++
|
||||
float D_GGX_TR(vec3 N, vec3 H, float a)
|
||||
|
Reference in New Issue
Block a user