博客
关于我
Flutter 新一代图形渲染器 Impeller
阅读量:796 次
发布时间:2023-03-28

本文共 655 字,大约阅读时间需要 2 分钟。

在2022年6月,Google官方发布了Flutter 3.0版本,这一发布标志着Impeller渲染器正式从独立仓库中合并到Flutter Engine主干中进行迭代。这一举措是Flutter团队在2021年推动重新实现Flutter渲染后端以来的重要一步,Impeller的引入标志着Flutter渲染后端的未来发展方向。作为Flutter渲染后端的替代方案,Impeller的目标是彻底解决SkSL引入的Jank问题。那么,着色器编译Jank问题到底是什么呢?

众所周知,Flutter底层依赖Skia作为2D图形渲染库,而Skia内部定义了一套叫做SkSL(Skia Shading Language)的着色器编译语言。SkSL可以理解为基于特定版本的GLSL(OpenGL着色器语言)进行设计的变体,其主要作用是消除不同GPU驱动API下着色器语法的差异,从而为目标着色器语言(如GLSL、GLSL ES或Metal SL)提供一致的前编译语言。因此,SkSL可以被视为一种着色器的预编译语言。

在Flutter的渲染过程中,当需要使用着色器时,Skia会根据绘图命令和设备特性生成SkSL代码。随后,Skia会将生成的SkSL代码转换为目标平台的着色器语言(如GLSL、GLSL ES或Metal SL),并编译成设备具体的着色器程序。然而,这一着色器编译过程往往需要几百毫秒的时间,这会导致数十帧的画面丢失,引发用户体验上的明显问题。因此,定位着色器编译优化成为Flutter团队工作的重点方向。

转载地址:http://vihfk.baihongyu.com/

你可能感兴趣的文章
Objective-C实现MaximumSubarray最大子阵列(动态规划解决方案)算法(附完整源码)
查看>>
Objective-C实现max_heap最大堆算法(附完整源码)
查看>>
Objective-C实现md5算法(附完整源码)
查看>>
Objective-C实现memoization优化技术算法(附完整源码)
查看>>
Objective-C实现memset函数功能(附完整源码)
查看>>
Objective-C实现merge insertion sort合并插入排序算法(附完整源码)
查看>>
Objective-C实现merge sort归并排序算法(附完整源码)
查看>>
Objective-C实现mergesort归并排序算法(附完整源码)
查看>>
Objective-C实现miller rabin米勒-拉宾素性检验算法(附完整源码)
查看>>
Objective-C实现Miller-Rabin素性测试程序(附完整源码)
查看>>
Objective-C实现Miller-Rabin素性测试程序(附完整源码)
查看>>
Objective-C实现MinhashLSH算法(附完整源码)
查看>>
Objective-C实现MinHeap最小堆算法(附完整源码)
查看>>
Objective-C实现multilayer perceptron classifier多层感知器分类器算法(附完整源码)
查看>>
Objective-C实现n body simulationn体模拟算法(附完整源码)
查看>>
Objective-C实现naive string search字符串搜索算法(附完整源码)
查看>>
Objective-C实现natural sort自然排序算法(附完整源码)
查看>>
Objective-C实现nested brackets嵌套括号算法(附完整源码)
查看>>
Objective-C实现nevilles method多项式插值算法(附完整源码)
查看>>
Objective-C实现newtons second law of motion牛顿第二运动定律算法(附完整源码)
查看>>