用 Triton 进行水下渲染
Triton为从海平面以上或以下渲染水面提供支持。
在水下渲染场景的其他对象是应用程序的责任,但是我们提供了钩子以确保海面与场景的其他部分渲染一致。
你会想看看Triton::Environment::SetBelowWaterVisibility()方法。除了从水面以下正确地渲染水面之外,这个方法将允许你将水面雾化为一个给定的可见度和雾化颜色。
当在水下时,设置一个与水下场景的其他部分所用的背景和雾的颜色一致的雾的颜色会产生良好的效果。清除背景缓冲区以匹配指定的颜色,或者使用在地平线以下具有特定颜色的天空盒,都会产生良好的效果。(如果你使用SilverLining,Atmosphere::SetHaze()就可以用于这个目的)。请记住,Triton在设计上只绘制水面--它不会以任何方式影响你场景中其他物体的渲染。当Triton::Ocean::IsCameraAboveWater()返回false时,你要确保场景的其他部分和天空的雾化与你传递给Environment::SetBelowWaterVisibility()的值一致。
请注意,这些方法接收的是一个可见度值;这将被转化为一个使用Koschmieder方程的指数式雾消光值:可见度=3.912/消光。
Triton还有一个水下的 "上帝之光 "效果,可以通过Triton::Ocean::EnableGodRays()方法来触发。当启用时,在水下和接近水面时,光轴将自动被画出来,看向折射的太阳光矢量。你可以通过resources/Triton.config文件中的God Rays部分来调整这个效果的外观。这些光轴是由水面上的波浪运动产生的,所以这个效果的动画在波涛汹涌的海面上会更加强烈,而在平静的海面上则不那么强烈。
渝公网安备50010702505508