中年|VTK9.0中的屏幕空间环境光遮蔽
【中年|VTK9.0中的屏幕空间环境光遮蔽】
Michael Migliore on July 28, 2020
Tags: vtk ssao opengl rendering
现在如果要在VTK中渲染几何图形 , 我们已经可以通过新引入的PBR阴影得到极佳的结果了 。 只需要适当地配置灯光 , HDRI和材料属性就可以达到目的 。 然而 , 一些对于一些具有复杂表面的CAD模型 , 显然是缺少一些东西 , 渲染的图像看起来非常的不真实 , 如图1所示 。
本文插图
图1 - VTK渲染一个复杂的几何使用PBR阴影
算法 我们的深度感知是对环境光遮蔽高度敏感的 。 洞、折痕、凹面被周围的几何体遮挡 , 在计算光照时必须考虑到这一点 。 在VTK 9.0中 , 我们添加了一个新的渲染通道叫做Screen-Space Ambient Occlusion (屏蔽空间环境光遮蔽SSAO) 。 这种技术 , 在2007年由Crytek引入 , 是一个有效的替代光线追踪近似环境光遮蔽的方法 。 虽然只是一个近似 , 但它能实时产生非常不错的结果 。 图2显示了在RTX 2060 GPU上以150 fps渲染的复杂几何图形的状态(大约3百万个网格) 。
本文插图
图2 -启用SSAO时的相同几何图形
为了计算环境光遮蔽 , 渲染通道修改了PolyDataMapper以在新的GPU 纹理中保存像素位置和法线信息 。 这些纹理是被SSAO算法处理 , 以产生一个新的遮挡纹理 , 并可以结合到颜色缓冲区中 。 该算法效果如图3所示 。
本文插图
图3 - SSAO算法概述
使用 为了在VTK中启用SSAO , 需要创建一个自定义的渲染通道pipeline 。 有几个参数可以用来对这个渲染通道进行配置:
- 半径:计算遮挡时考虑的邻近像素
- 偏差:比较像素深度时使用的容忍因子
- 内核大小:使用的采样数量(可以控制渲染质量)
- 模糊:控制遮挡缓冲区是否应该在与颜色缓冲区结合之前被模糊
vtkNew basicPassesdouble sceneSize // e.g. the diagonal of the bounding box vtkNew ssaossao->SetRadius(0.1* sceneSize) // comparison radiusssao->SetBias(0.001* sceneSize) // comparison biasssao->SetKernelSize(128) // number of samples usedssao->BlurOff() // do not blur occlusionssao->SetDelegatePass(basicPasses) glRenderer->SetPass(ssao) 【来源:开源科学计算】
声明:转载此文是出于传递更多信息之目的 。 若有来源标注错误或侵犯了您的合法权益 , 请作者持权属证明与本网联系 , 我们将及时更正、删除 , 谢谢 。邮箱地址:newmedia@xxcb.cn
推荐阅读
- 识别“95”号段中的“李鬼” 这些小技巧要掌握!
- 减肥|JAMA:减肥要趁早,25岁就该开始预防中年期肥胖
- Mr阿飞|UI设计中的空状态设计指南
- 人到中年,常吃3种食物,健脑益智,美白抗衰,保护心血管
- 阴阳师:细数“为崽而战”中的细节设计,让玩家们有些感动
- 中年|《中国新说唱2020》全民搞哈开团日
- 中年|点燃创新之火,合力解除“缺芯”之痛
- 中年|画像“标签”生产实操指南(二)之产出清晰的标签数据需求
- 中年|从原型模式到浅拷贝和深拷贝
- 中年|宁愿2450亿打水漂,也不使用华为设备?如今却沦为“国际笑话”
