Is different shader LOD for different camera available

I’m working on a mirror reflection water. There are two camera in the scene, one is general camera and the other for getting reflection texture. So the objects above the water will be rendered twice by two camera, and the number of vertices is double. The reflection picture is twisted,I guess the reflection objects can use some low detail shader for the reflection camera, so I want to ask that is there any way to make a material using different shader LOD for different camera ?

sure! Just add a script that changes the LOD (either global or per material) in OnPreRender and back to default in OnPostRender.

MonoBehaviour.OnPreRender or Camera.OnPreRender?
If I add this script to the reflection object, does OnPreRender run twice when I have two camera? How can I know which camera called this function?

You can use MonoBehaviour.OnPreRender.

If you define this function in a script that is assigned to a game object which ALSO has a camera component attached, this function will be called. So in your case, you would have two script - one assigned to each Camera - that would implement this function that would set the LOD depending on the camera.

Thank you Gaski! I understand now. I need get all material of reflection object in OnPreRender function which is attached to reflection camera, then set the shader lod of them. But if I had many different reflection objects,and the shader lod is all different,I need find all of them and set everyone’s lod.
Is there any easier way ?