FFR总结

                         FFR总结

 

1、参数意义

 

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

 

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]

 FFR总结

 

 

 

 

 

2、实现逻辑

 

首先需要绑定texture,设置参数,包括GL_TEXTURE_FOVEATED_FEATURE_BITS_QCOM、GL_TEXTURE_PREVIOUS_SOURCE_TEXTURE_QCOM和GL_TEXTURE_FOVEATED_MIN_PIXEL_DENSITY_QCOM。

 

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

 FFR总结

 

 

 

 

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

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

Unity/Native

 

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

 FFR总结

 

 

 

 

UE

 

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

 

 FFR总结

 

 

 

 

3、关于Subsampled

 

FFR的GL_TEXTURE_FOVEATED_FEATURE_BITS_QCOM参数可以传GL_FOVEATION_SCALED_BIN_METHOD_BIT_QCOM,也可以设置为GL_FOVEATION_SUBSAMPLED_LAYOUT_METHOD_BIT_QCOM。

 

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

 

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

一是需要开启扩展:

"#extension GL_QCOM_texture_foveated_subsampled_layout : require\n"

二是需要使用subsampled采样

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

 

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

 

上一篇:BZOJ4487 [Jsoi2015]染色问题


下一篇:vue 图片优化