HarmonyOS鸿蒙Next中优画质低功耗,空域GPU超分技术引领图像渲染新体验

HarmonyOS鸿蒙Next中优画质低功耗,空域GPU超分技术引领图像渲染新体验 随着大数据时代的发展,虚拟现实、增强现实等需要实时图像处理和计算的应用,对GPU加速引擎服务提出了新的挑战和机遇。

HarmonyOS SDK GPU加速引擎服务(XEngine Kit)提供的空域GPU超分能力,基于单帧输入图像,使用空间邻域信息实现超采样。当GPU性能不足以支持渲染高分辨率场景时,为了提高用户体验,可以使用空域GPU超分能力,将较低分辨率图像通过超分重建为高分辨率图像。相较于直接渲染高分辨率图像,使用超分能力能够降低GPU渲染负载,降低功耗。

下面是空域GPU超分(GLES)功能演示,如果开发者对实现方式感兴趣,可以下载GLES DemoVulkan Demo体验,基于具体的应用场景优化。

空域GPU超分开发步骤

一、API介绍

1.OpenGL ES API

HMS_XEG_SpatialUpscaleParameter用于输入超分的参数,根据头文件提供的枚举可知,一共需要输入两个参数:

  • XEG_SPATIAL_UPSCALE_SCISSOR 用于设置超分的采样区域,值为格式为长度为4的int型数组的地址。
  • XEG_SPATIAL_UPSCALE_SHARPNESS用于设置锐化度,值为float类型数的地址。

HMS_XEG_RenderSpatialUpscale用于执行超分渲染,输入为待超分的纹理id。

伪代码为:

float m_sharpness = 0.3;
int upscaleScissor[4] = {0, 0, 720, 540};
HMS_XEG_SpatialUpscaleParameter(XEG_SPATIAL_UPSCALE_SHARPNESS, &m_sharpness);
HMS_XEG_SpatialUpscaleParameter(XEG_SPATIAL_UPSCALE_SCISSOR, upscaleScissor);
...
glBindFramebuffer(GL_FRAMEBUFFER, framebufferID);
glViewport(0, 0, 1080, 720);
glScissor(0, 0, 1080, 720);
HMS_XEG_RenderSpatialUpscale(textureID);

当输入枚举XEG_SPATIAL_UPSCALE_SCISSOR为{0,0,textureWidth,textureHeight},调整sharpness值所对应的图像如下:

  • Sharpness=0:

  • Sharpness = 0.3:

  • 尖锐度继续调高,sharpness = 1:

当输入枚举XEG_SPATIAL_UPSCALE_SCISSOR为{ textureWidth/4,textureHeight /4, textureWidth/2,textureHeight/2}时,即:输入纹理从四分之一的宽高处开始,宽高长度为纹理的一半。超分效果如图:

原始图与超分1.5倍后图片对比如下:

二、Vulkan API

HMS_XEG_CreateSpatialUpscale用于创建一个超分实例,构造参数是一个struct,具体参数说明如下:

在创建时指定图像尺寸好处在于当一个实例创建完成后,后续使用过程中只需要传递超分的输入和输出图片即可。由于超分需要使用的Vulkan资源在此接口创建完成,在超分过程中仅进行绘制,开销很小。缺点是由于实例创建后输入输出的尺寸、锐化值等被固定,当有参数变化时,都需要重新创建实例,所以使用此接口时,最好先明确超分的尺寸,避免运行时进行超分实例的创建、销毁。

XEG_SpatialUpscaleDescription用于执行超分,和一般Vulkan命令一样,此接口仅用于Vulkan的录制,录制完成后需要submit接口输入的commandbuffer。

伪代码为:

VKAPI_ATTR void VKAPI_CALL HMS_XEG_CmdRenderSpatialUpscale (VkCommandBuffer commandBuffer, XEG_SpatialUpscale xegSpatialUpscale, XEG_SpatialUpscaleDescription *pXegSpatialUpscaleDescription)

此接口的入参包括一个vkcommandbuffe、创建完成的超分实例xegSpatialUpscale,超分的输入输出结构体。XEG_SpatialUpscaleDescription包括两个vkiamgeview,分别是超分输入纹理和输出纹理的vkimageview。

HMS_XEG_DestroySpatialUpscale:用于销毁超分实例xegSpatialUpscale。

1)在Vulkan初始化时创建xegSpatialUpscale。

XEG_SpatialUpscale xegSpatialUpscale;
VkRect2D srcRect2D;
srcRect2D.offset.x = 0;
srcRect2D.offset.y = 0;
srcRect2D.extent.width = 960;
srcRect2D.extent.height = 540

VkRect2D dstRect2D;
dstRect2D.offset.x = 0;
dstRect2D.offset.y = 0;
dstRect2D.extent.width = 1440;
dstRect2D.extent.height = 810;

XEG_SpatialUpscaleCreateInfo createInfo;
createInfo.format = VK_FORMAT_R8G8B8A8_UNORM;
createInfo.sharpness = 0.2f;
createInfo.outputSize = dstRect2D.extent;
createInfo.inputRegion = srcRect2D;
createInfo.inputSize = srcRect2D.extent;
createInfo.outputRegion = dstRect2D;
HMS_XEG_CreateSpatialUpscale(device, &createInfo, &xegSpatialUpscale);

2)执行超分命令,超分命令录制需要在renderpass外进行。

正常的vk命令录制,首先begincommandbuffer。

结束一个renderpass。

一个renderpass结束后,可以进行超分。

超分完成后,进行下一个renderpass命令的录制,直到全部的命令录制完成。

3)当进程准备销毁时,需要销毁超分实例。

HMS_XEG_DestroySpatialUpscale(xegSpatialUpscale);

超分效果图:

  • 当inputRegion是输入纹理的全部区域,outputRegin是输出纹理的全部区域,sharpness = 0:

  • 提高锐化度Sharpness = 0.3:

  • 继续提高锐化度sharnpness =1.1 此时已经出现锐化过度的现象:

  • 当修改inputregion为输入纹理的中间区域,如{ inputTextureWidth/4, inputTextureHeight/4,inputTextureWidth/2, inputTextureHeight/2 }, 即:输入纹理从四分之一的宽高处开始,宽高长度为纹理的一半。超分结果效果如图:

  • 继续调整输出区域outputRegion,如:{outputTextureWidth/3, outputTextureHeight/3, outputTextureWidth/2, outputTextureHeight/2},即从宽高的三分之一开启,宽高长度为纹理宽高的一半,效果如图:

  • 原始图与超分1.5倍后图片对比如下:

注:本文演示图片部分素材来源于Frank Meinl制作的Crytek Sponza,Crytek已根据CC BY 3.0获得授权许可。

了解更多详情>>

访问GPU加速引擎服务官网

获取空域GPU超分开发指导文档


更多关于HarmonyOS鸿蒙Next中优画质低功耗,空域GPU超分技术引领图像渲染新体验的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

HarmonyOS鸿蒙Next中引入的优画质低功耗技术,通过空域GPU超分技术实现了图像渲染的新体验。空域GPU超分技术是一种基于深度学习的图像增强技术,能够在保持低功耗的同时提升图像的分辨率和细节表现。该技术通过优化GPU的渲染流程,减少不必要的计算资源消耗,从而在保证画质的前提下降低功耗。

具体来说,空域GPU超分技术通过对图像的空域信息进行分析和处理,利用深度学习模型对低分辨率图像进行超分辨率重建。这一过程中,GPU的渲染效率得到了显著提升,使得在移动设备上也能实现高质量的图像渲染效果。此外,该技术还能够根据设备的硬件性能和当前的使用场景动态调整渲染策略,进一步优化功耗和画质之间的平衡。

总的来说,HarmonyOS鸿蒙Next中的空域GPU超分技术通过深度学习模型和GPU渲染优化,实现了优画质低功耗的图像渲染新体验,为用户提供了更加流畅和高质量的视觉体验。

更多关于HarmonyOS鸿蒙Next中优画质低功耗,空域GPU超分技术引领图像渲染新体验的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS鸿蒙Next通过空域GPU超分技术,实现了优画质与低功耗的完美平衡。该技术利用先进的图像处理算法,在保证图像高质量的同时,显著降低了GPU的能耗。空域超分技术能够智能优化图像渲染过程,提供更流畅、更细腻的视觉体验,特别适用于高清视频播放和图形密集型应用。这一创新不仅提升了用户体验,还延长了设备的电池续航时间,体现了鸿蒙系统在智能设备领域的领先优势。

回到顶部