产业气象站|VTK9.0中的屏幕空间环境光遮蔽

MichaelMiglioreonJuly28,2020
Tags:vtkssaoopenglrendering
现在如果要在VTK中渲染几何图形 , 我们已经可以通过新引入的PBR阴影得到极佳的结果了 。 只需要适当地配置灯光 , HDRI和材料属性就可以达到目的 。 然而 , 一些对于一些具有复杂表面的CAD模型 , 显然是缺少一些东西 , 渲染的图像看起来非常的不真实 , 如图1所示 。
产业气象站|VTK9.0中的屏幕空间环境光遮蔽
文章图片
图1-VTK渲染一个复杂的几何使用PBR阴影
算法我们的深度感知是对环境光遮蔽高度敏感的 。 洞、折痕、凹面被周围的几何体遮挡 , 在计算光照时必须考虑到这一点 。 在VTK9.0中 , 我们添加了一个新的渲染通道叫做Screen-SpaceAmbientOcclusion(屏蔽空间环境光遮蔽SSAO) 。 这种技术 , 在2007年由Crytek引入 , 是一个有效的替代光线追踪近似环境光遮蔽的方法 。 虽然只是一个近似 , 但它能实时产生非常不错的结果 。 图2显示了在RTX2060GPU上以150fps渲染的复杂几何图形的状态(大约3百万个网格) 。
产业气象站|VTK9.0中的屏幕空间环境光遮蔽
文章图片
图2-启用SSAO时的相同几何图形
为了计算环境光遮蔽 , 渲染通道修改了PolyDataMapper以在新的GPU纹理中保存像素位置和法线信息 。 这些纹理是被SSAO算法处理 , 以产生一个新的遮挡纹理 , 并可以结合到颜色缓冲区中 。 该算法效果如图3所示 。
产业气象站|VTK9.0中的屏幕空间环境光遮蔽
文章图片
图3-SSAO算法概述
使用为了在VTK中启用SSAO , 需要创建一个自定义的渲染通道pipeline 。 有几个参数可以用来对这个渲染通道进行配置:
半径:计算遮挡时考虑的邻近像素偏差:比较像素深度时使用的容忍因子内核大小:使用的采样数量(可以控制渲染质量)模糊:控制遮挡缓冲区是否应该在与颜色缓冲区结合之前被模糊下面是一个简单的该类型渲染通道pipeline示例 。
vtkNewbasicPassesdoublesceneSize//e.g.thediagonaloftheboundingboxvtkNewssaossao-&gtSetRadius(0.1*sceneSize)//comparisonradiusssao-&gtSetBias(0.001*sceneSize)//comparisonbiasssao-&gtSetKernelSize(128)//numberofsamplesusedssao-&gtBlurOff()//donotblurocclusionssao-&gtSetDelegatePass(basicPasses)glRenderer-&gtSetPass(ssao)
【来源:开源科学计算】
【产业气象站|VTK9.0中的屏幕空间环境光遮蔽】声明:转载此文是出于传递更多信息之目的 。 若有来源标注错误或侵犯了您的合法权益 , 请作者持权属证明与本网联系 , 我们将及时更正、删除 , 谢谢 。 邮箱地址:newmedia@xxcb.cn