版本记录
版本号 | 时间 |
---|---|
V1.0 | 2018.10.05 星期五 |
前言
很多做视频和图像的,相信对这个框架都不是很陌生,它渲染高级3D图形,并使用GPU执行数据并行计算。接下来的几篇我们就详细的解析这个框架。感兴趣的看下面几篇文章。
1. Metal框架详细解析(一)—— 基本概览
2. Metal框架详细解析(二) —— 器件和命令(一)
3. Metal框架详细解析(三) —— 渲染简单的2D三角形(一)
4. Metal框架详细解析(四) —— 关于GPU Family 4(一)
About Imageblocks - 关于Imageblocks
了解imageblocks
如何允许您在高带宽图块内存中定义和操作自定义每像素数据结构。
Overview - 概览
图像块是存储在本地存储器中的结构化图像数据的图块,允许您在图块存储器中描述A11图形处理单元(GPU)可以有效操作的图像数据。 它们与片段处理和A11的图块着色阶段深度集成,也可用于计算内核。 Metal总是渲染到iOS设备上的图像块,但A11上的Metal 2
通过将图像块暴露为您完全控制的数据结构来扩展此功能。
Imageblocks for Passing Data Between Fragment and Tile Stages - 用于在片段和图块阶段之间传递数据的图像块
图1显示了A11 GPU架构以及图像块如何在渲染通道的片段和图块阶段之间传递数据。 虽然线程组内存适用于非结构化数据,但建议使用图像块作为图像数据。
Imageblock Structure - Imageblock 结构
图像块Imageblock
是具有宽度,高度和像素深度的2D数据结构。 图像块中的每个像素可以由多个组件组成,并且每个组件可以作为其自己的图像切片来寻址。 图2显示了由三个图像切片组成的图像块,这三个图像切片代表反照率,镜面反射和正常分量(albedo, specular, and normal components)
。
图像块可用于内核和片段函数,并在绘图和调度之间持续使用图块的生命周期。 Imageblock持久性意味着您可以在单个渲染过程中混合渲染和计算操作,同时访问相同的本地内存。通过在tile中保留多个操作,您可以创建保留在本地GPU内存中的复杂算法。
您现有的代码会自动创建与渲染附件格式匹配的图像块。但是,您也可以在着色器中完全定义自己的图像块。您定义的图像块可能比渲染附件创建的图像块复杂得多;例如,它们可以包含其他通道,数组和嵌套结构。此外,您定义的图像块可以在计算的不同阶段重复用于不同的目的。
在片段着色器中,当前片段仅可访问与片段在tile
中的位置相关联的图像块数据。在计算功能中,线程可以访问所有图像块数据。使用带附件的渲染时,继续加载和存储操作,作为从tile内存读取和写入数据片段的方法。但是,如果您使用显式图像块,则使用计算函数显式读取和写入设备内存。利用内存硬件,写入通常可以作为块传输执行。
后记
本篇主要讲述了,感兴趣的给个赞或者关注~~~