Of course, performance. Some effects such as Crepuscular Rays, Depth of Field and Bloom are very taxing of fps, in particular in older GPUs. Also a good way to gain some extra fps is to reduce or disable reflections and shadows. Also - to repeat Artelius point - visual effects will also hit battery life.
Besides that:
- Some effects may be glitchy. Not all machines are made equal, and some GPU may handle wrong your code... having a way to disable effects is good for the players suffering from such cases, and is good for the developers for ease of debugging.
- Some effects may handicap gameplay. In particular effects that hide details, such as Depth of Field, Motion Blur and to a lesser extend Anisotropic filtering and Anti-aliasing.
- Some effects may be annoying / distracting. That happens to me with Depth of Field, when the focus changes, it litteraly drives attention to it.
- Some effects should be considered for Accessibility Options. This is the case of View Bobbing and Motion Blur, these can make some people sick, no joke.
- Some effects should be considered for Parental Control. Turning off blood particle effects and similar - at least it helps with parental game reviews.
Modded Minecraft is really a good playground for this. Minecraft renders whole chunks, so its polygon count is greater than it appears to be. Add to that the complications of disposing chunks on a garbage collected and devoid of pointer language such as Java[1], and you may expect some performance issues - in particular, in old hardware, as always. Some people demanded better graphics, while others wanted better performance. And so, mods such as GLSL Shaders Mod and Optifine came to be, both adding extra graphic options - although to different ends - they are compatible[2], if you have the chance to use them you may experiment on the performance effects of the visual effects.
[1]: Microsoft has made a C++ port of Minecraft for Windows 10 - based on the pocket edition - it performs much better than the older Java versions. That's not mean Java can't perform, this is not only a symptom of being C++ but also of being Microsoft.
[2]: In fact, those mods merged for Minecraft 1.8.9 - Optifine absorbed GLSL Shaders Mod.
And you say you are developing a game engine, so you expect your code to have a chance of being reused for many different games. It is a good idea to allow the game developer to decide if they want to use these effects, and if they want provide options to disable them or not. Not all effects may make sense for all games, and some games may depend on some effects.
Consider that some games will use these effects to set a mood, to convey information to the player, or just for artistic license.
In particular there is tred of using visual effects to try to make the look as if seen by a camera instead of the human eye. This is attempted by using effects such as Chromatic Aberrations, Lens Flares, Film grain and other "Cinematic" effects. These are not a good fit for every game, and so they shouldn't be imposed by the game engine.
Arguably most of this - if not all - is done in shaders, let your game engine allow the developer to upload their shaders.
A note on Accessibility Options: Many video games disregard deaf people. Providing information only in auditory manner may not be good enough. Adding visual effects to reflect things such as the direction of incoming fire or the presence of nearby enemies (that you "can hear") is a good idea[3]. And of course, close caption. Also, be aware that there is color blind people... those items that are only distinguished by color... yeah, considered a redesign.
[3]: You just don't know what a pain are those creepers in Minecraft, when you can't hear not even a hiss. They become random instadeath.
The more you know ★