How to apply a shader on a part of the scene ?
Hello everyone,
I am encountering some issues while trying to apply a shader on some gameobject of the scene.
Here is what I want to do : I have a scene with a point cloud as a gameobject on a layer (let's say layerA) and other objects without layer. I would like to apply my shader (which intensify the edges of the objects) only on objects which are part of layerA.
In order to do this, I instantiate two cameras and set their cullingMask to "layerA" and "everything except layerA". Then I apply my shader on the first camera view and try to render the view with the shader and the other camera view.
void OnRenderImage(RenderTexture source, RenderTexture destination)
{
int layerValue = 10;
Camera cam2 = camera;
camera.cullingMask = ~(1 << layerValue);
cam2.cullingMask = (1 << layerValue);
camera.depth = cam2.depth + 1;
cam2.clearFlags = CameraClearFlags.Depth;
Material mat = material; // shader
Graphics.Blit(source, destination, mat, -1);
}
My problem is that after this process, my gameobjects with no layer are behind my point cloud. Here is a before/after picture :
Before
After
You can see that my cube disappear behind the pillar whereas it should stay like in the 1st picture.
Is there a way to apply my effect only on my point cloud while not changing the positionning of my scene ?
I hope I have been clear enough.
Thanks in advance.
Your answer
Follow this Question
Related Questions
URP Render Feature missing in final output 0 Answers
How to draw texture on top of everything? 0 Answers
Weird Rendering Unity5 1 Answer
Camer do not render correctly! 0 Answers
Scene and game view in old project became completely black. 0 Answers