本笔记仅为个人的理解如果有误欢迎指出。Bandwidth Efficient Graphics with ARM Mali GPUs基于 ARM Mali GPU 的带宽高效图形技术这是一篇介绍ARM为OpenGL ES 2.0和OpenGL ES 3.0提供的一系列拓展技术感觉像是API介绍说明这篇文章不像是面向普通的游戏开发人员看的像是给游戏引擎开发看的。文章主要介绍两个方面的技术Shader Framebuffer Fetch Extensions 和 Shader Pixel Local StorageShader Framebuffer Fetch Extensions ARM在片段着色器拓展允许在处理当前像素的时候可以读取现有的framebuffer颜色、深度和模板。这里涉及到两个扩展GL_ARM_shader_framebuffer_fetchGL_ARM_shader_framebuffer_fetch_depth_stencil1GL ARM shader framebuffer fetch这个拓展允许片段着色器直接读取当前像素已经写入 Framebuffer 的颜色。这个实现原理是因为在移动端设备中片段着色器写入的不是framebuffer写入的是Tile Buffer而Tile Buffer不是在显存中所以几乎没有额外的带宽消耗2GL_ARM_shader_framebuffer_fetch_depth_stencil这个拓展允许片段着色器读取现有的framebuffer 深度和模板值这使得许多依赖场景深度的屏幕空间技术可以实现比如软粒子、可编程深度\模板测试、三维位置重建以及方差阴影贴图。简单的软粒子实现简单的方差阴影实现Shader Pixel Local Storage Shader像素本地存储OpenGL ES 3.0中提供了一种机制使的同一个像素点的不同Fragment Shader之间能够传递信息。实现原理在于每个像素都有一个128 bit的 Shader Pixel Local Storage 程序可以自己划分这空间的用途。可以看到 PLS 保存在 Tile - buffer 上正常渲染流程使用了PLS的流程参考资料[译]Bandwidth Efficient Graphics with ARM Mali GPUs