Switch between two shaders : alpha does not return in its initial state
Hi all,
I am currently working on a highlight system that switches the shader of the material on my targeted object. The first step Standard Shader to Highlight Shader works fine.
My problem occurs on the second step : Highlight shader to Standard Shader. When I "untarget" a glass and return to the Standard shader, the glass becomes totally transparent instead of its initial level of 80% of transparency. I checked in the inspector, the alpha level is correct (80% transparency) so I tried to modify it and the glass recovered immediately its original state. It seems the alpha level is "reset" or just not applied when I change back the shader, I don't know.
I tried in my "switchShader" code to use material.SetColor() in order to force the material to applied the alpha level like I did manually in the inspector but it doesn't work.
Here my two functions to switch shaders :
public void SwitchOn (Renderer renderer, string propertyName, Color color)
{
if (renderer) {
foreach (Material mat in renderer.materials) {
if (mat.shader == normalShader) {
mat.shader = highlightShader;
mat.SetColor (propertyName, color);
}
}
}
}
public void SwitchOff (Renderer renderer)
{
if (renderer) {
foreach (Material mat in renderer.materials) {
if (mat.shader == highlightShader) {
mat.shader = normalShader;
}
}
}
}
If someone has an idea to avoid this transparency problem. Thanks for helping
Your answer
Follow this Question
Related Questions
Is there a shader I could use to always render a material over another material? 0 Answers
How to change a child's shader to another shader? 1 Answer
Anyone know how to change the size of a point with a vertex shader? 1 Answer
LWRP - Proper way to set up LWRP Standard and Simple lighting shaders? 0 Answers
Skybox not correctly alpha blending with custom Shader 1 Answer