当前位置:嗨网首页>书籍在线阅读

10-补充说明

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

补充说明

在本章中,我们使用Perlin噪声生成云、模拟木材和大理石般的石头,并且用它们渲染龙。人们发现了Perlin噪音的许多其他用途。例如,它可用于创建火焰和烟雾[CC16,AF14],构建逼真的凹凸贴图[GR05],并已在电子游戏Minecraft [PE11]中用于生成地形。

本章生成的噪声图基于Lode Vandevenne [VA04]描述的程序。我们的3D云生成仍存在一些不足之处。纹理不是无缝的,所以在360°点有一条明显的垂直线(这也是我们在程序14.8中以0.01而不是0.0开始深度变量的原因,以避免在噪声图的Z维中遇到接缝)。如果需要,也有用于去除接缝[AS04]的简单方法。另一个问题是在天幕的北峰处,天幕中的球形畸变会产生枕形效应。

我们在本章中实现的云也无法模拟真实云的一些重要方面,例如它们散射太阳光的方式。真正的云也往往在顶部更白,在底部更灰暗。我们的云也没有达到许多实际云所具有的3D“蓬松”外观。

类似地,存在用于产生雾的更全面的模型,例如Kilgard和Fernando [KF03]描述的模型。

在阅读OpenGL文档时,读者可能会注意到GLSL包含一些名为noise1()、noise2()、noise3()和noise4()的噪声函数,它们被描述为采用输入种子并产生类似高斯的随机输出。我们在本章中没有使用这些函数,因为在撰写本文时,大多数供应商都没有实现它们。例如,无论输入种子如何,许多NVIDIA显卡目前只会为这些函数返回0值。