Hello Epic Team,
I’m experiencing an issue with the Text Render Component. When using modern anti-aliasing methods like TAA or TSR, the text in world space appears to “morph,” fade, or ghost—especially when the text changes frequently (such as when displaying dynamic numbers or labels).
I understand that this is likely due to the temporal nature of TAA/TSR, but switching to FXAA or disabling AA for the whole project significantly reduces the visual quality of the rest of the scene, which isn’t ideal.
My questions:
- Is there a recommended way to prevent or minimize this morphing/fading effect on Text Render Components while still using TAA or TSR for the rest of the scene?
- Are there any settings, workflows, or best practices to make dynamic world-space text remain crisp and readable under these anti-aliasing methods?
- Is it possible to exclude certain objects (like text) from TAA/TSR, or to apply a different AA method to them?
Any advice or official guidance would be greatly appreciated!
Thank you!
Hey there! The trick here is that the changing numbers don’t generate any velocity values, so it’s hard for TSR to know how to properly re-project those pixels. A few options you could explore:
- You’ll need to make a new material to use for text rendering for this. I recommend duplicating the existing materials used by the text render component so we can make modifications without affecting base engine files. Once you do, enabling “Has Pixel Animation” in the material graph to hint to TSR that these pixels are more likely to change without velocity.
- If you’re using translucent materials for your text, make sure they have “Output Depth and Velocity” enabled as well
- You may also find some success tuning TSR settings like r.TSR.History.SampleCount or r.TSR.ShadingRejection.Samplecount/Flickering.
- You might be able to skip TSR on these materials if you use a translucent blend mode and set it to render After DOF, since that’s composited in after TSR’s upscaling. It doesn’t work in a lot of cases, but for yours this might suffice.
Thoughts?