OpenGL ES 3.1 Android扩展包介绍

  • 5 OpenGL ES 3.1 Android扩展包介绍
  • 5.1 概述
  • 5.2 几何着色器
  • 5.3 镶嵌着色器
  • 5.4 高级混合模式
  • 5.5 ASTC LDR


5 OpenGL ES 3.1 Android扩展包介绍

5.1 概述

AEP是Adreno SDK的一部分,其中包含一组OpenGL ES 3.1扩展,请阅读本章以快速介绍这些扩展背后的概念以及它们可能为应用带来的好处。更详细的信息。

5.2 几何着色器

几何着色器是一种新的着色器类型,可以选择在Fragment Shader阶段的紧前面插入渲染管道。

输入到几何着色器的几何可以如下:

  • 线
  • 带有邻接数据的行
  • 三角形
  • 带有邻接数据的三角形
    这些输入用于生成可以是以下内容的输出:
  • 线带
  • 三角带
    原始几何体将被丢弃。

几何着色器可用于分层渲染,其中图元可栅格化为单个纹理对象中保存的多个单独图像。 可以以这种方式使用的渲染目标的示例包括:

  • 3D纹理切片
  • 2D阵列纹理的图层
  • 立方体贴图纹理面

几何着色器可用于调试,例如用于正常数据的可视化。 它们还可以用于广告牌和散景效果渲染。

有关几何着色器的更多信息,请参见:

注意:
Wiki条目包含仅在桌面OpenGL中可用而在OpenGL ES中不可用的功能的讨论。

5.3 镶嵌着色器

曲面细分着色器一词涵盖了两个新的着色器阶段:曲面细分控制和曲面细分评估。 它们可以选择在顶点着色器阶段之后(和几何着色器之前)立即插入渲染管线中。

细分可以用于减少需要馈入图形管线的几何图形的数量。 细分过程的输入是一组称为面点顶点的顶点。 这些以应用程序定义的方式表示几何形状。 曲面细分控制着色器阶段负责确定由下一级固定功能曲面细分器执行的曲面细分的粒度。 镶嵌生成的顶点将构成过程的输出几何形状。 然后,细分评估着色器阶段将位置和属性值分配给这些顶点。 输入的面片顶点将被丢弃。

细分可用于处理已通过顶点着色器馈入的几何。

注意:
细分过程中生成的几何可以进一步由几何着色器细分。

镶嵌着色器的常见应用包括:

  • LoD驱动的地形渲染–特定补丁的细分粒度取决于其与相机的距离
  • LoD驱动的网格平滑–应用于补丁的平滑量取决于其紧密程度
  • 位移贴图–动态调整曲面细分过程生成的顶点的位移复杂度

在此处查找有关镶嵌细分着色器的更多信息,请参见:

注意:
Wiki条目包含仅在桌面OpenGL中可用而在OpenGL ES中不可用的功能的讨论。

5.4 高级混合模式

可以使用许多新的混合模式:

  • 色彩燃烧
  • 闪避
  • 变暗
  • 差异
  • 排除
  • 硬灯
  • HSL颜色
  • HSL色相
  • HSL发光度
  • HSL饱和
  • 减轻
  • 相乘
  • 叠加
  • 屏幕
  • 柔光

与核心OpenGL ES中的混合模式相比,这些新模式提供了许多高级混合方程式,这些方程式可用于执行更复杂的颜色混合操作。

有关更多信息,请参见http://www.khronos.org/registry/gles/extensions/KHR/blend_equation_advanced.txt上的扩展规范。

注意:
有一些重要的限制会影响何时以及如何使用这些新的混合模式。 有关详细信息,请阅读扩展规范。

5.5 ASTC LDR

ASTC LDR是一种新的纹理压缩格式。 给定获得的压缩比,图像降级的程度通常非常低。 用户能够通过选择许多不同的块大小之一来控制质量/大小的权衡。

注意:
该格式支持NPOT纹理。 每个纹理像素最多可容纳四个8位分量的数据,并支持线性RGB和sRGB色彩空间。

如果使用浮点数据,则不适合使用ASTC LDR,请考虑使用ASTC HDR。

有关更多信息,请参见扩展规范,网址为http://www.khronos.org/registry/gles/extensions/KHR/texture_compression_astc_hdr.txt