Developer Notes

Directly port desktop renderer functionality to mobile is currently not supported, there will need to be different functionality to produce the result with EyeAdaptation, as reading data from the render target does not work properly on OpenGLES for mobile. (Feature Request UE-84405 created)

Description

From user:

"I believe the issue is deal to the implementation of FAndroidOpenGL, there is no overriding of FOpenGL::SupportsMapBuffer(),which always return from the base FOpenGLES2 method and it is always false. in OpenGLResources.h line 578, this can cause bCanUseMapBuffer always be false and not perform any mapping and reading in subsequent code. even if i override SupportsMapBuffer() and simply return true, there is still lacking of correct implementation for MapBufferRange under opengl es3 enviorment."

Steps to Reproduce

In the PostProcessEyeAdaptation.cpp of ue engine source code in function FSceneViewState::FEyeAdaptationRTManager::SwapRTs watch the value pointed to by ResultsBuffer after execution of RHICmdList.MapStagingSurface on android under opengles 3

 

(Modify PostProcessEyeAdaptation.cpp to insert a log after MapStagingSurface to output the value pointed to by ResultsBuffer, and check that value in the log on android using adb. Make sure you are running with opengl es3.x enabled, not opengles2.)

 

Result: 
The value is an undefined value something like -431602080
 
Expected: 
The value should be a correct meaningful value, which is readed back from a 1x1 rendertarget.

Have Comments or More Details?

There's no existing public thread on this issue, so head over toAnswerHub just mention UE-78510 in the post.

1
Login to Vote

Won't Fix
ComponentPlatform - Mobile
Affects Versions4.22
CreatedAug 7, 2019
ResolvedNov 14, 2019
UpdatedNov 14, 2019