Filament初探,全场景性能测试
一直很想研究下Filament在移动端全场景(大约20万Triangle,约120个渲染实体)的实时帧率。终于在今天有时间腾出来研究下Filament在Android上的全场景PBR渲染性能。
这里以java接口进行测试(暂时还没测试c/c++原生api在Android上的性能),以Filament官方提供的测试案例:sample-gltf-viewer。我们下载GLTF官网提供的测试模型:https://github.com/KhronosGroup/glTF-Sample-Models/tree/master/2.0/Sponza进行测试。
默认下,Filament的视锥近截面比较前,我们设置小一点,如下:
inner class SurfaceCallback : UiHelper.RendererCallback {
override fun onNativeWindowChanged(surface: Surface) {
} override fun onDetachedFromSurface() {
} override fun onResized(width: Int, height: Int) {
val aspect = width.toDouble() / height.toDouble()
Log.i("MyLog", "onResized");
modelViewer.camera.setProjection(45.0, aspect, 0.01, 1000.0, Camera.Fov.VERTICAL) modelViewer.view.viewport = Viewport(0, 0, width, height)
}
}
接着,我们修改sample-gltf-viewer案例,加入一个帧计数器TextView,并把GLSurfaceView放到一个底层Layer上,布局如下:
接着,我们把测试模型放入assets目录下,然后修改加载的模型,然后使用一个ibl.ktx和sky.ktx作为间接光计算和天空盒。启动App,效果如下:
可以看到这个帧率非常之低,默认下,Filament开启了很多后处理和高级效果(比如ssao,vsm,抗锯齿等等),我们关闭这些效果,如下:
然后,重新运行app,查看效果如下:
这次帧率确实比之前提高了,但是仍然很低,为了保持60帧率,一种简单的处理方式就是开启动态分辨率(dynamicResolution),缩放0.3-0.8,并同时开启fxaa抗锯齿,否则画面非常之差。代码如下:
再次运行app,效果如下:
终于保持在60帧率了,但是取而代之的就是降低了画质,至于其他优化方案。有时间我再实现下吧。
最新文章
- Android中ListView的各种显示效果
- Java enum的用法详解
- AC日记——手写堆ac合并果子(傻子)
- JavaScript在IE和Firefox(火狐)的不兼容问题解决方法小结 【转】http://blog.csdn.net/uniqer/article/details/7789104
- 2014年度辛星html教程夏季版第七节
- C#:实体类中做数据验证
- PS快捷键大全
- 每天一个Linux命令(16)--which命令
- Sample Code for Qp_preq_pub.Price_request Api to Simulate an Ask for Promotion Modifier
- tkinter中表格的建立(十三)
- hdu2844 Coins -----多重背包+二进制优化
- python--sort()和sorted()高级排序
- 微信小程序-用户拒绝授权使用 wx.openSetting({}) 重新调起授权用户信息
- MicroBlaze核的串行接口实验:SPI UART
- chattr与lsattr命令
- 全平台 Chrome 浏览器 44.0.2403.89 版本下载
- 虚拟主机、ECS云服务器、VPS区别汇总
- Linux环境下proc的配置c/c++操作数据库简单示例
- Unity UGUI之Button
- PHP和JS页面跳转和刷新总结