Don't know if this has been mentioned yet, but you can easily load your own shaders via script without overwriting default files.
$Shader::Enabled = 1;
$Shader::ShaderName = "myShader"; //will need myShader_vert.glsl and myShader_frag.glsl in shaders folder
$Shader::ShadowCount = 4; //how many shadow splits to use, valid range 1-4, scene is re-rendered for each split
$Shader::ShadowSize = 4096; //shadow map texture size
$Shader::DynamicShadows0 = 1; //render dynamic object shadows (vehicles, players, etc) at each shadow split
$Shader::DynamicShadows1 = 1; // example: setting DynamicShadows3 = 0 will turn off dynamic object shadows furthest away from the camera
$Shader::DynamicShadows2 = 1; // this can significantly improve performance in some cases
$Shader::DynamicShadows3 = 1;
//reinitialize shader stuff
initializeShaderAssets();
regenerateShadowMapFBOs();
flushVBOCache();
I haven't tested this but it's the way the default shaders work so it should be fine.