I have experience with C++ and graphics programming but am relatively new to Unreal Engine so am still working to grasp the general working paradigm. I understand that within my Game solution I can easily create, duplicate, edit, make children of, etc any number of classes that affect gameplay, without having to recompile anything except the class itself.
However when it comes to the engine code itself I’m not sure what the proper way to go about modifying it would be. It seems my installation of Unreal came with all the Engine code, at least the way I installed it, however I gather if I were to modify any of it that A) it would require building the entire engine and B) would affect all of my projects/games. So my question is: if I wanted to make even the most basic of changes to the engine itself is there an equivalent or similar way to override engine classes as easily as one can override gameplay actors and objects and thus not change the source code or affect all subsequent projects I might make?
I’ll give an example: all I’m trying to do is make some basic adjustments to 1) how the film grain shader works or 2) playing with the falloff distance calculations for the ExponentialHeightFog. Both of which should only be changing one or two lines of code. However it’s unclear to me the best way to do that without A) editing the engine source and ending up with my own fork of Unreal, which seems not ideal as my first experiments with the engine! B) doing it in a way that’s re-usable/possibly able to package into a plugin or is portable C) only affects the current game/project I’d like it to (if that’s even possible).
To be clear I’m not interested in creating my own complete, replacement features, like creating my own alternative post processing effect that I call instead of the built in one (although that would be nice to know how to do as well) at least not within the context of this question. I’m also not interested in the existing post processing material I know I could create as an alternative also, which the documentation notes are not implemented as efficiently as the built in PostProcessVolume. I’m simply curious the feasibility of making minor tweaks to existing engine features in general (even if one might recommend that’s not the best way to go about my particular examples!) which would greatly help me understand how Unreal Engine works and how I should be using it.
I do see it’s possible to create a Global Shader myself which apparently the process is literally adding a new file to Engine/Shaders which gets compiled on command, which begs the question then: do the existing built-in Unreal shaders that exist there also get compiled “live” when I run the game and are thus modifiable? Would I be able to edit and compile an existing post process shader that came with the engine without having to build the entire engine? And if so are shaders/.usf files the only part of the engine files that that is true? And what would I do if it was the .cpp file that calls one of those shaders that I needed to modify, and not the .usf file?
Sorry if any or all of my questions are dumb or completely off base. Again I’m completely new to Unreal so am just trying to understand the basics of working with it!