欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

FFR总结

最编程 2024-07-22 16:52:12
...

                         FFR总结

 

1、参数意义

 

以下关于FFR 参数意义解释,以及4Level对应的参数设置。

 

FoveationGainX, FoveationGainY

        ---- X/Y 轴方向外围像素的缩减率,值越大缩减的越多。

 

FoveationArea

-----注视点周围分辨率不降范围,值越大,中心清晰区域越大。

 

FoveationMinimum

       --------默认最小像素密度,像素密度大于等于FoveationMinimum

 

 

Foveation Level 【SDK提供了四种Level可选】

Low [3.0f, 3.0f, 1.0f, 0.125f]

Med [4.0f, 4.0f, 1.0f, 0.125f]

High [6.0f, 6.0f, 1.0f, 0.0625f]

Top High[7.0f, 7.0f, 0.0f, 0.0625f]

 

 

 

 

 

 

2、实现逻辑

 

首先需要绑定texture,设置参数,包括GL_TEXTURE_FOVEATED_FEATURE_BITS_QCOMGL_TEXTURE_PREVIOUS_SOURCE_TEXTURE_QCOMGL_TEXTURE_FOVEATED_MIN_PIXEL_DENSITY_QCOM

 

以下对于每个texture只执行一次。

 

 

 

 

 

然后需要在render之前,调用高通扩展函数glTextureFoveationParametersQCOM

针对不同平台,所传的参数也不同,具体如下:

Unity/Native

 

focalPointXfocalPointY参数代表的是注视点坐标,一般在开启Eyetracking时,计算眼睛注视点,可以实现眼睛看到的地方,屏幕像素密度高,眼睛注视边缘位置像素密度低。未开启Eyetracking情况下,一般设置为0,也就是中心位置作为最大像素密度点。

 

 

 

 

 

UE

 

UEtexture是将左右眼的图合并成一张传下啦,所以在传参时要考虑将GanX的值乘以2,同时将focalPointX的值除以2。同时将合并的texture拆分成两个layer,作为左右眼(0,1)的图分别调用glTextureFoveationParametersQCOM

 

 

 

 

 

 

3、关于Subsampled

 

FFRGL_TEXTURE_FOVEATED_FEATURE_BITS_QCOM参数可以传GL_FOVEATION_SCALED_BIN_METHOD_BIT_QCOM,也可以设置为GL_FOVEATION_SUBSAMPLED_LAYOUT_METHOD_BIT_QCOM

 

之前和高通沟通,开启Subsampled的,更能精确控制显示像素密度,并且优化了渲染,提高了性能,但是一直没有真正的对比测试。

 

Subsampled仅在NEO3上有效,在G2-4kNEO2上开启都会有白线,开启Subsampled的话,需要修改shader,

一是需要开启扩展:

"#extension GL_QCOM_texture_foveated_subsampled_layout : require\n"

二是需要使用subsampled采样

"layout(subsampled) uniform mediump sampler2D Texture0;\n"

 

所以要想使用Subsampled,必须将所有shader都按照以上修改,否则会出现黑色方块,singlepass,投屏都已适配,之前发现只要一出现boundary就有黑块,是因为boundaryshader并没有按照以上修改,后期如果使用Subsampled,需要boundary按照以上适配。