When I try to set the capture source of a SceneCaptureComponent2D to "Final Color (LDR with PostProcess) and turn on “Capture Every Frame”, the result is a black renderTarget texture. I can capture Scene Color HDR every frame just fine, but this isn’t workable for my current project, where I need to composite 2 renderTargets which have been post-processed beforehand (pre-post-processed, you could say). I can kludge constant updates by wiggling the SceneCapture object every tick, but the postprocess results are buggy (no screenspace reflections).
Currently post process effects are not available with LDR. There is some documentation that goes over the limitations of this feature which can be found here.
LDR (Low Dynamic Range)
Low dynamic range or LDR mode is the highest performance tier supported in UE4 and is recommended for games that do not require lighting or postprocessing features. In order to use this mode, you must disable Mobile HDR for your project in the Rendering section of the Project Settings Editor.
The fastest and lowest overhead mode available for mobile devices. Enables your game to run well on slower mobile devices.
Still provides full access to the Material editor to define custom shaders and even perform simple shading to fake lighting.
The scene’s color is written out in gamma space with each color channel clamped to the range [0,1].
Translucent primitives are blended in gamma space. In most cases, this requires that you author your translucent textures and Materials differently than you would in HDR or for a normal PC game.
Postprocessing features are unavailable in this mode."
I hoped this help clarify your question. If you have any further issue please let us know how we can assist you.
My understanding is that the Final Color setting SceneCapture2D means it takes an HDR image, applies postprocessing effects, and outputs a LDR image for final screen display. There’s still the issue that this setting breaks the SceneCapture2D’s output if “capture every frame” is enabled.
So I have a test project set up to have two SceneCapture2D assets with their own render target textures. These render target’s textures are rendering one another’s scene and applied to a material on to a plane. I changed the settings to from HDR to ‘Final Color (LDR with PostProcess)’ and ticked on ‘Capture Every Frame.’
I was still able to see the updates on my material when I played, however in the viewport the image is stationary. Even when toggling on ‘Realtime’ in the viewport the image is still stationary. It is only when you play will you see the updated frames on your texture/material.
Would you mind showing me how you have your scene and material set up. I can give you some screenshots of my own project to show you how I set my own.
Outside Render Target
Wooden Room Render Target
Material Set Up
I hope this helps resolve your issue. Let me know if you are still having problems.
Here’s my setup: 2 SceneCaptureComponent2D components in my player each rendering to renderTargets. You can see that they’re black; I tried playing in viewport, external window, etc. and they did not update. I tried changing the compression settings and turning off “HDR” in the renderTargets, didn’t change anything.
My final material is a postprocess material; I’m masking the two images and combining them. The material is set to “after tonemapping” to avoid doubling up on the effects, since I want bloom/reflections/AA to occur on the renderTarget level.I’m piping one of the renderTargets directly into the output here to show that the problem is in the rendertarget, not the material.
Tested further - both renderTargets break if either one is used in the post process material, applied as a blendable to an unbound postprocess volume in-scene. If the volume is bound and the cameras don’t enter the volume, they function properly. Is there a way for me to exclude them from being affected by the PP volume?
Solved the problem: I put the final composite post-process directly on the player camera, rather than on a pesky PP volume that my render cams might wander into. Thanks!
Just ran into the same problem in UE5. Moving my RenderTargetPostProcess material from a separate Blueprint to the Player Camera solved it, thanks