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)
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."
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.
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-78510 in the post.
1 |
Component | UE - Platform - Mobile |
---|---|
Affects Versions | 4.22 |
Created | Aug 7, 2019 |
---|---|
Resolved | Nov 14, 2019 |
Updated | Nov 14, 2019 |