XEngine 扩展定义速查:所有特性名称和参数宏一览
前面 14 篇文章分别介绍了 XEngine Kit 的各个特性。在实际开发中,你经常需要查阅各种扩展名称、参数宏定义。这篇文章把xeg_extension_defs.h里的所有宏定义整理出来,方便你快速查找。
可以把它当作一个"字典"来用。
扩展名称宏
下面是 XEngine 各类扩展的整体分类:
这些宏定义了各个 XEngine 特性的名称字符串。在查询扩展支持的时候需要用到它们。
超分类
| 宏名 | 值 | 说明 |
|---|---|---|
XEG_SPATIAL_UPSCALE_EXTENSION_NAME | "XEG_spatial_upscale" | 空域 GPU 超分 |
XEG_SPATIAL_UPSCALE_VERSION | 1 | 空域 GPU 超分版本号 |
XEG_NEURAL_UPSCALE_EXTENSION_NAME | "XEG_neural_upscale" | 空域 AI 超分 |
XEG_NEURAL_UPSCALE_VERSION | 1 | 空域 AI 超分版本号 |
XEG_TEMPORAL_UPSCALE_EXTENSION_NAME | "XEG_temporal_upscale" | 时域 AI 超分 |
XEG_TEMPORAL_UPSCALE_VERSION | 1 | 时域 AI 超分版本号 |
着色率类
| 宏名 | 值 | 说明 |
|---|---|---|
XEG_ADAPTIVE_VRS_EXTENSION_NAME | "XEG_adaptive_vrs" | 自适应 VRS |
XEG_ADAPTIVE_VRS_VERSION | 1 | 自适应 VRS 版本号 |
光线追踪类
| 宏名 | 值 | 说明 |
|---|---|---|
XEG_RTGI_EXTENSION_NAME | "XEG_rtgi" | 光线追踪全局光照 |
XEG_RT_SHADOW_AO_EXTENSION_NAME | "XEG_rt_shadow_ao" | 光线追踪阴影和环境光遮蔽 |
XEG_RT_REFLECTION_EXTENSION_NAME | "XEG_rt_reflection" | 光线追踪反射 |
高性能着色器类
| 宏名 | 值 | 说明 |
|---|---|---|
XEG_HPS_RADIX_SORT_EXTENSION_NAME | "XEG_hps_radix_sort" | 高性能基数排序 |
特性开关宏
除了扩展名称,还有几个特性开关宏:
| 宏名 | 值 | 说明 |
|---|---|---|
XEG_spatial_upscale | 1 | 空域 GPU 超分特性开关 |
XEG_neural_upscale | 1 | 空域 AI 超分特性开关 |
XEG_temporal_upscale | 1 | 时域 AI 超分特性开关 |
XEG_adaptive_vrs | 1 | 自适应 VRS 特性开关 |
自适应 VRS 参数宏
这些宏用在HMS_XEG_AdaptiveVRSParameter(GLES)或者XEG_AdaptiveVRSDescription(Vulkan)里。
| 宏名 | 值 | 说明 | 类型 | 必选/可选 |
|---|---|---|---|---|
XEG_ADAPTIVE_VRS_INPUT_SIZE | 0x1U | 输入图像宽高 | GLsizei[2] | 必填 |
XEG_ADAPTIVE_VRS_INPUT_REGION | 0x2U | 输入图像区域 | GLuint[4] | 可选 |
XEG_ADAPTIVE_VRS_TEXEL_SIZE | 0x3U | 纹素大小,支持 [8,8] 和 [16,16] | GLsizei[2] | 可选,默认 [8,8] |
XEG_ADAPTIVE_VRS_ERROR_SENSITIVITY | 0x4U | 灵敏度阈值,[0,1] | GLfloat* | 可选,默认 0.5 |
XEG_ADAPTIVE_VRS_FLIP | 0x5U | 是否翻转图像 | GLboolean* | 可选,默认 false |
神经网络超分参数宏
用在HMS_XEG_NeuralUpscaleParameter(GLES)里。
| 宏名 | 值 | 说明 | 类型 | 必选/可选 |
|---|---|---|---|---|
XEG_NEURAL_UPSCALE_SCISSOR | 0x1U | 裁剪窗口 (x, y, w, h) | GLuint[4] | 可选 |
XEG_NEURAL_UPSCALE_SHARPNESS | 0x2U | 锐化度,[0, 1] | GLfloat* | 可选,默认 0.2 |
XEG_NEURAL_UPSCALE_INPUT_HANDLE | 0x4U | OH_NativeBuffer handle | 指针 | 必填 |
注意:XEG_NEURAL_UPSCALE_INPUT_HANDLE是必填的。神经网络超分的输入纹理必须由OH_NativeBuffer创建,且需要把对应的 handle 设置进去。
空域 GPU 超分参数宏
用在HMS_XEG_SpatialUpscaleParameter(GLES)里。
| 宏名 | 值 | 说明 | 类型 | 必选/可选 |
|---|---|---|---|---|
XEG_SPATIAL_UPSCALE_SCISSOR | 0x1U | 裁剪窗口 (x, y, w, h) | GLuint[4] | 可选 |
XEG_SPATIAL_UPSCALE_SHARPNESS | 0x2U | 锐化度,[0, 1] | GLfloat* | 可选 |
时域 AI 超分参数宏
用在HMS_XEG_TemporalUpscaleParameter(GLES)里。
| 宏名 | 值 | 说明 | 类型 | 必选/可选 |
|---|---|---|---|---|
XEG_TEMPORAL_UPSCALE_INPUT_SIZE | 0x1U | 输入纹理宽高 | GLuint[2] | 必填 |
XEG_TEMPORAL_UPSCALE_JITTER_NUM | 0x2U | 抖动周期数,[4, 16],推荐 8 | GLuint* | 必填 |
XEG_TEMPORAL_UPSCALE_DEPTH_REVERSED | 0x3U | 深度是否反转 | GLboolean* | 必填 |
XEG_TEMPORAL_UPSCALE_RESET_HISTORY | 0x4U | 是否重置历史帧 | GLboolean* | 必填 |
XEG_TEMPORAL_UPSCALE_STEADY_LEVEL | 0x5U | 稳定等级,[0, 1],默认 0.5 | GLfloat* | 可选 |
其他通用宏
| 宏名 | 值 | 说明 |
|---|---|---|
XEG_EXTENSIONS | 0x01U | GLES 扩展查询的入参 |
XEG_MAX_EXTENSION_NAME_SIZE | 256 | 扩展名最大长度 |
怎么用这些宏
下面是扩展查询和使用的整体流程:
这些宏主要有两个用途:
1. 查询扩展支持时作为判断依据
// GLES 环境constGLubyte*extensions=HMS_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结构体里
这篇文章可以作为日常开发的快速参考手册。当你不确定某个宏的值或者用法的时候,翻到这里查一下就行。