XEngine 扩展定义速查所有特性名称和参数宏一览前面 14 篇文章分别介绍了 XEngine Kit 的各个特性。在实际开发中你经常需要查阅各种扩展名称、参数宏定义。这篇文章把xeg_extension_defs.h里的所有宏定义整理出来方便你快速查找。可以把它当作一个字典来用。扩展名称宏下面是 XEngine 各类扩展的整体分类XEngine 扩展特性超分类着色率类光线追踪类高性能着色器类空域 GPU 超分空域 AI 超分时域 AI 超分自适应 VRSRTGI 全局光照RT ShadowAO 阴影和环境光遮蔽RT Reflection 反射HPS 基数排序这些宏定义了各个 XEngine 特性的名称字符串。在查询扩展支持的时候需要用到它们。超分类宏名值说明XEG_SPATIAL_UPSCALE_EXTENSION_NAMEXEG_spatial_upscale空域 GPU 超分XEG_SPATIAL_UPSCALE_VERSION1空域 GPU 超分版本号XEG_NEURAL_UPSCALE_EXTENSION_NAMEXEG_neural_upscale空域 AI 超分XEG_NEURAL_UPSCALE_VERSION1空域 AI 超分版本号XEG_TEMPORAL_UPSCALE_EXTENSION_NAMEXEG_temporal_upscale时域 AI 超分XEG_TEMPORAL_UPSCALE_VERSION1时域 AI 超分版本号着色率类宏名值说明XEG_ADAPTIVE_VRS_EXTENSION_NAMEXEG_adaptive_vrs自适应 VRSXEG_ADAPTIVE_VRS_VERSION1自适应 VRS 版本号光线追踪类宏名值说明XEG_RTGI_EXTENSION_NAMEXEG_rtgi光线追踪全局光照XEG_RT_SHADOW_AO_EXTENSION_NAMEXEG_rt_shadow_ao光线追踪阴影和环境光遮蔽XEG_RT_REFLECTION_EXTENSION_NAMEXEG_rt_reflection光线追踪反射高性能着色器类宏名值说明XEG_HPS_RADIX_SORT_EXTENSION_NAMEXEG_hps_radix_sort高性能基数排序特性开关宏除了扩展名称还有几个特性开关宏宏名值说明XEG_spatial_upscale1空域 GPU 超分特性开关XEG_neural_upscale1空域 AI 超分特性开关XEG_temporal_upscale1时域 AI 超分特性开关XEG_adaptive_vrs1自适应 VRS 特性开关自适应 VRS 参数宏这些宏用在HMS_XEG_AdaptiveVRSParameterGLES或者XEG_AdaptiveVRSDescriptionVulkan里。宏名值说明类型必选/可选XEG_ADAPTIVE_VRS_INPUT_SIZE0x1U输入图像宽高GLsizei[2]必填XEG_ADAPTIVE_VRS_INPUT_REGION0x2U输入图像区域GLuint[4]可选XEG_ADAPTIVE_VRS_TEXEL_SIZE0x3U纹素大小支持 [8,8] 和 [16,16]GLsizei[2]可选默认 [8,8]XEG_ADAPTIVE_VRS_ERROR_SENSITIVITY0x4U灵敏度阈值[0,1]GLfloat*可选默认 0.5XEG_ADAPTIVE_VRS_FLIP0x5U是否翻转图像GLboolean*可选默认 false神经网络超分参数宏用在HMS_XEG_NeuralUpscaleParameterGLES里。宏名值说明类型必选/可选XEG_NEURAL_UPSCALE_SCISSOR0x1U裁剪窗口 (x, y, w, h)GLuint[4]可选XEG_NEURAL_UPSCALE_SHARPNESS0x2U锐化度[0, 1]GLfloat*可选默认 0.2XEG_NEURAL_UPSCALE_INPUT_HANDLE0x4UOH_NativeBuffer handle指针必填注意XEG_NEURAL_UPSCALE_INPUT_HANDLE是必填的。神经网络超分的输入纹理必须由OH_NativeBuffer创建且需要把对应的 handle 设置进去。空域 GPU 超分参数宏用在HMS_XEG_SpatialUpscaleParameterGLES里。宏名值说明类型必选/可选XEG_SPATIAL_UPSCALE_SCISSOR0x1U裁剪窗口 (x, y, w, h)GLuint[4]可选XEG_SPATIAL_UPSCALE_SHARPNESS0x2U锐化度[0, 1]GLfloat*可选时域 AI 超分参数宏用在HMS_XEG_TemporalUpscaleParameterGLES里。宏名值说明类型必选/可选XEG_TEMPORAL_UPSCALE_INPUT_SIZE0x1U输入纹理宽高GLuint[2]必填XEG_TEMPORAL_UPSCALE_JITTER_NUM0x2U抖动周期数[4, 16]推荐 8GLuint*必填XEG_TEMPORAL_UPSCALE_DEPTH_REVERSED0x3U深度是否反转GLboolean*必填XEG_TEMPORAL_UPSCALE_RESET_HISTORY0x4U是否重置历史帧GLboolean*必填XEG_TEMPORAL_UPSCALE_STEADY_LEVEL0x5U稳定等级[0, 1]默认 0.5GLfloat*可选其他通用宏宏名值说明XEG_EXTENSIONS0x01UGLES 扩展查询的入参XEG_MAX_EXTENSION_NAME_SIZE256扩展名最大长度怎么用这些宏下面是扩展查询和使用的整体流程GLESVulkan是否确定需要使用的特性查找对应的扩展名称宏GLES 还是 Vulkan 环境?HMS_XEG_GetString 查询扩展列表HMS_XEG_EnumerateDeviceExtensionProperties用 strstr 检查是否包含扩展名遍历 properties 比较扩展名支持?查找对应的参数宏使用替代方案或放弃用参数宏设置特性参数这些宏主要有两个用途1. 查询扩展支持时作为判断依据// GLES 环境constGLubyte*extensionsHMS_XEG_GetString(XEG_EXTENSIONS);if(strstr((constchar*)extensions,XEG_SPATIAL_UPSCALE_EXTENSION_NAME)!NULL){// 支持空域 GPU 超分}// Vulkan 环境if(strcmp(properties[i].extensionName,XEG_RTGI_EXTENSION_NAME)0){// 支持 RTGI}2. 设置参数时作为参数名// 设置自适应 VRS 的输入尺寸HMS_XEG_AdaptiveVRSParameter(XEG_ADAPTIVE_VRS_INPUT_SIZE,inputSize);// 设置神经网络超分的 OH_NativeBuffer handleHMS_XEG_NeuralUpscaleParameter(XEG_NEURAL_UPSCALE_INPUT_HANDLE,handle);// 设置时域超分的输入尺寸HMS_XEG_TemporalUpscaleParameter(XEG_TEMPORAL_UPSCALE_INPUT_SIZE,inputSize);版本兼容性5.0.0(12) 版本引入的特性超分三种、自适应 VRS、GLES/Vulkan 扩展查询6.0.0(20) 版本引入的特性RTGI、RT ShadowAO、RT Reflection、HPS、Vulkan 通用模块如果你的目标设备运行的是 5.0.0 系统版本只能使用超分和 VRS 特性。光线追踪相关的特性需要 6.0.0 及以上版本。速查小贴士所有扩展名宏都以_EXTENSION_NAME结尾所有版本号宏都以_VERSION结尾参数宏的命名格式是XEG_特性名_参数名GLES 版参数用在HMS_XEG_xxxParameter函数里Vulkan 版参数用在XEG_xxxDescription结构体里这篇文章可以作为日常开发的快速参考手册。当你不确定某个宏的值或者用法的时候翻到这里查一下就行。