Image Effect on single camera only

Hi everyone,

Ive got a GUI camera and a game camera, and I want a fish-eye effect only on my GUI. However when I add the image-effect to my GUI camera it also effects the second one. I’ve gotten around this by applying the equivalent of a negative fish-eye on the game camera, but it’s not going to work the way I’d like. How come the image effects are passed down to the next camera?

I’m still looking for a solution to this myself, but the problem you’re running into is that Fish-Eye and other Image Effects operate during the OnRenderImage function. This function allows you to use Shaders to filter and distort the final rendered image, doing the Fish-Eye effect and others.

Unfortunately, this takes only the final flattened rendered image, so it combines your Game and GUI cameras into a single image and then Fish-Eyes both together. Assigning a second Fish-Eye to the game camera to “un-Fish-Eye” it won’t work since they both operate on the same, flattened render image.

There might be a way around this, but I haven’t found a way to do it myself yet and it will almost certainly involve some rewriting of the Fish-Eye script.

Also, keep in mind that it is only an Image distortion, so if you need to be able to click on buttons in the UI or have other interaction, the image might be distorted away from your collisions, especially near the edges of the screen. You might be able to get the same look by faking a Fish-Eye with static UI textures that have the curved edges built into them. Of course, without knowing your intents, that might not work. If the UI pieces have to slide around the screen and dynamically distort around the Fish-Eye lenses, you can’t build that using a static image.