OK, I did some quick testing and:
1. Loaded a game without the plugin, no shader loaded. Screenshoted.
2. Loaded a game with the plugin, shader loaded. Screenshoted and saved.
3. Loaded the saved game without the plugin, shader not loaded. Screenshoted and saved.
4. Loaded previously saved game. Screenshoted.
Screenshots 1, 3 and 4 are identical, with only 2 showing the effect. This is with no removefullscreenshader calls, just letting OBGEv2 handle everything internally, so it looks like everything will be fine regarding previous OBGE mods working with OBGEv2. In all cases, the shader file was present, even when the plugin was not active.
The OBGEv2 log for 1:
Ingnoring message.RESZ format supported.Depth buffer texture (INTZ) (1366,768) created OK.Depth buffer attached OK. 0Releasing the original depth surface.Received load game message.Loading a game.Creating vertex buffers.Creating screen texture.Width = 1366, Height = 768Setting screen surface.Setting depth texture.Loading the shaders.Loading shader (data\shaders\)Failed to load.Added to list OK.Loading the shaders.Loading shader (data\shaders\)Failed to load.No texture data found in save file.No shader data in save file.
The OBGEv2 log for 3 was:
Ingnoring message.RESZ format supported.Depth buffer texture (INTZ) (1366,768) created OK.Depth buffer attached OK. 0Releasing the original depth surface.Received load game message.Loading a game.Creating vertex buffers.Creating screen texture.Width = 1366, Height = 768Setting screen surface.Setting depth texture.Loading the shaders.Loading shader (data\shaders\)Failed to load.Added to list OK.Loading the shaders.Loading shader (data\shaders\)Failed to load.Save file links 0 textures.Shader Index = 1Shader num = 0Filename = AmbientDungeons.fxEnabled = 1RefID = 9000ED3Is in use = 0Received save game message.Ingnoring message.Saving a game.Calling TextureManager::SaveGameShaderManager::SaveGameShader index = 1
and then when I loaded 4:
Ingnoring message.RESZ format supported.Depth buffer texture (INTZ) (1366,768) created OK.Depth buffer attached OK. 0Releasing the original depth surface.Received load game message.Loading a game.Creating vertex buffers.Creating screen texture.Width = 1366, Height = 768Setting screen surface.Setting depth texture.Loading the shaders.Loading shader (data\shaders\)Failed to load.Added to list OK.Loading the shaders.Loading shader (data\shaders\)Failed to load.Save file links 0 textures.Shader Index = 1
I'm not entirely sure, but it looks like that when you save the game with plugin, the shader is saved in it. Then, when you load that save, OBGEv2 references the shader, but doesn't apply it because the plugin no longer exists. If that is then saved, a 'clean save' takes place, and the shader is no longer referenced at all, but there is still a shader indexed in the save (compare with OBGEv2 log). So it looks like there is a need for a RemoveFullScreenshader call, otherwise this index will remain.
EDIT: I agree with the one name per shader file, over all versions. It could get confusing otherwise, and you can always record versions inside the shader itself.