Vulkan简介(2)

Vulkan纹理特征
1、多重纹理:
多重纹理或多重纹理是一次在多边形上使用多个纹理。
Adreno 4x在单个渲染过程中最多支持32个纹理,这意味着片段着色器中最多支持16个纹理,顶点着色器一次最多支持16个纹理。有效地使用多个纹理可以显著减少过度渲染,节省碎片着色器的算法逻辑单元(ALU)成本,并避免不必要的顶点变换。
视频纹理:
如今,越来越多的游戏和图形应用程序需要视频纹理,其中包括从视频文件实时流式传输的移动图像。Adreno GPU支持视频纹理。
视频纹理是当今Android(蜂窝或更高版本)中的标准API功能。有关表面纹理的详细信息,请参见Android文档:
http://developer.android.com/reference/android/graphics/SurfaceTexture.html

除了按照建议使用标准的Android API外,如果应用程序需要视频纹理,也可以使用标准的OpenGL ES扩展。见 :
http://www.khronos.org/registry/gles/ extensions/OES/OES_EGL_image.txt
视频纹理示例:
在这里插入图片描述
2、纹理压缩
纹理压缩可以显著提高图形应用程序的性能和加载时间,因为它减少了纹理内存和总线带宽的使用。压缩纹理可以使用Adreno纹理压缩和可视化工具创建,然后由 OpenGL ES应用程序使用。

Adreno 3xx支持的重要压缩纹理格式有:
ATC–专有Adreno纹理压缩格式(用于RGB和RGBA)等–标准OpenGL ES 2.0纹理压缩格式(用于RGB)。
ETC2–OpenGL ES 3.0 API(用于R、RG、RGB和RGBA)和Vulkan API中支持的纹理压缩格式。
ASTC-纹理压缩格式,在OpenGL ES 3.0api和Vulkan中都支持-允许压缩为可变块大小。

Adreno 4x增加了对ASTC LDR压缩的支持,这是通过Android扩展包提供的。

3、浮点纹理:
Adreno 2xx、3xx和更高版本支持相同的纹理功能,包括:
通过GL_OES_texture_half_float和GL_OES_texture_half_float_linear 延伸对FP16纹理进行纹理和线性过滤。
通过GL_OES_texture_float从FP32纹理进行纹理处理。
通过OpenGL ES 3.0API,Adreno 3xx和更高版本还包括对FP16(完全支持)和FP32(不混合)的渲染支持。
具有无缝边的立方体映射:
立方体映射是创建高级图形效果(如环境映射)的一种快速而廉价的方法。立方体贴图采用三维纹理坐标,并从给定的立方体贴图(类似于天空框)返回texel。
Adreno 3xx及更高版本支持立方体贴图纹理采样的无缝边缘支持。
立方体映射:
在这里插入图片描述
4、3D纹理
除了二维纹理和立方体贴图外,还有一个已批准的用于三维纹理的OpenGL ES 2.0扩展名为GL_OES_纹理_3D。此扩展允许三维纹理初始化并用于体积渲染。这是从OpenGL ES 3.0开始的核心功能。
3D纹理:
在这里插入图片描述

支持纹理大小:

Adreno 330支持高达8192x8192x8192的纹理大小。取决于内存可用性,
Adreno 420可以处理分辨率高达16384x16384x16384的纹理。

sRGB纹理和渲染目标:
sRGB是一个标准的RGB颜色空间,由Hewlett-Packard和Microsoft于1996年合作创建,用于显示器、打印机和互联网。如今,智能手机和平板电脑显示器也采用了sRGB(非线性)色彩空间。为了获得正确颜色的最佳观看体验,渲染目标和纹理的颜色空间必须与显示的颜色空间(即sRGB)匹配。不幸的是,OpenGL ES默认采用线性或RGB颜色空间。由于Adreno 3xx、4x和5x支持用于渲染目标和纹理的sRGB颜色空间,因此可以确保正确的颜色查看体验。请注意,Vulkan在纹理和swapchain可呈现的图像中完全处理sRGB。

深度纹理的PCF :
Adreno 3xx、4x和5x具有OpenGL ES 3.0和Vulkan百分比接近滤波(PCF)功能的硬件支持。在阴影贴图纹理中提取一个硬件双线性样本,从而减轻了阴影贴图在实时应用中出现的混叠问题 。

发布了146 篇原创文章 · 获赞 28 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/weixin_38498942/article/details/103382336