I finally got my edge-detection shader to work on render textures! This took a really long time to figure out, so I’m really happy to have solved this issue.
Basically, for a long time, I didn’t know how to get shaders applied to render textures. Since the portals in the game use render textures to create the illusion of a world on the other side, this meant an inconsistency in visual style when looking through a portal, like this:
You can see that everything that appears inside the portal doesn’t have edge-detection applied. This didn’t affect gameplay or anything, but I knew that this would definitely need to be fixed for the final release of the game, and I had no idea how to address this problem.
A few weeks ago, I finally decided to roll up my sleeves and really figure out how render textures work. Up until then, the portal system was just hacked together, and I only knew enough to get things barely working.
I knew I would need the shader to get applied to a camera, but for a long time, I just couldn’t find where that camera was!
Eventually, I discovered this line of code:
go.hideFlags = HideFlags.HideAndDontSave;
“go” is the game object with the camera attached, and what this line did was told the engine to hide it from the editor hierachy (so that it wasn’t seen), and to not save it after run time.
I changed it to this:
go.hideFlags = HideFlags.DontSave;
So now, I could see the camera created during runtime inside the editor hierarchy during run time.
From here, I just added the edge-detection shader to the run time generated camera.
This is what it looks like now:
This still isn’t perfect. There’s still the problem of shadows not being rendered on render textures, and making the lighting look inconsistent.
However, I’m really happy to have been able to cross a big item off of the bug list.