中年|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
【中年|VTK9.0中的屏幕空间环境光遮蔽】
推荐阅读
- 科学|世界本来没有颜色?科学家发现大脑中的“调色板”机制
- 中年|北斗“一张网”可实现全天候、高精度、自主可控服务
- 中年|Python编程语言有什么独特的优势呢?
- 中年|谈一谈我的十年机械工作经历
- 中年|弹无虚发的背后,国产弹药质量把关人,精密机床都要自叹不如
- 中年|宿迁深圳招商再结硕果,签约项目19个,协议总投资158亿元
- 华为|芯片限售,5g受阻,困境中的华为还有机会吗?
- 中年|苹果:已终止Epic Games开发者账号
- 中年|圆满的结局!苹果微信之间不用再二选一,美国政府还是做出让步
- 中年|国家能源集团成功研发矿用卡车能耗制动开关预警装置