Please provide a easy way to make "Private" modules "Public" when it is necessary.

For instance, in some case, we accidentally need to access some functions in the folder /Runtime/Renderer/Private/ from game module. Currently, as far as I know, the only thing we can do is to mark all functions which we need to access as <ModuleName>_API, then spend hours to compile the entire engine. It’s apparently a inefficient workflow, even compared to some small game engine like Unity3D. Especially, sometimes, we could miss marking some potentially usable functions before the first time we build the engine. Then we need to build the engine over and over again. It’s pretty time-consuming. However, there are many useful functions in private folders, including most rendering API, and some view related API. For instance, in Unity3D, user can easily modify camera matrices and access some render API like directly create and manipulate render target at low level by typing just several lines code. In UE4, we’re unable to do things like that without modifying the engine source code and rebuilding the entire engine, even if we are capable of modifying the source code, it’s still a tough task since the most low level APIs are complicatedly designed. So please provide a solution to eliminating these issues and redesign some APIs. Thanks.

Thanks. This is feedback that we get fairly frequently. Rendering system extensibility is high on our priority list. I’m hoping we’ll be able to put a significant amount of effort in next year to allow you to customize rendering/shading/post in your own modules. For now, it’s a bit rough though. :confused:

In the meantime, if you do end up finding bits of the rendering internals that you’ve had to expose for some reason or another, please send us a pull request. Generally you shouldn’t need to modify the renderer to add custom graphics, including dynamically rendered primitives.