forked from Mirrorlandia_minetest/minetest
Fix broken coloring of wielditems (#9969)
Fixes a regression that appeared in 5.3.0-dev.
This commit is contained in:
parent
7148834440
commit
fe3e69eb40
@ -145,8 +145,10 @@ void main(void)
|
|||||||
|
|
||||||
vec4 col = vec4(color.rgb, base.a);
|
vec4 col = vec4(color.rgb, base.a);
|
||||||
|
|
||||||
|
col.rgb *= gl_Color.rgb;
|
||||||
|
|
||||||
col.rgb *= emissiveColor.rgb * vIDiff;
|
col.rgb *= emissiveColor.rgb * vIDiff;
|
||||||
|
|
||||||
#ifdef ENABLE_TONE_MAPPING
|
#ifdef ENABLE_TONE_MAPPING
|
||||||
col = applyToneMapping(col);
|
col = applyToneMapping(col);
|
||||||
#endif
|
#endif
|
||||||
|
@ -38,7 +38,12 @@ void main(void)
|
|||||||
|
|
||||||
lightVec = sunPosition - worldPosition;
|
lightVec = sunPosition - worldPosition;
|
||||||
eyeVec = -(gl_ModelViewMatrix * gl_Vertex).xyz;
|
eyeVec = -(gl_ModelViewMatrix * gl_Vertex).xyz;
|
||||||
vIDiff = directional_ambient(normalize(gl_Normal));
|
|
||||||
|
// This is intentional comparison with zero without any margin.
|
||||||
|
// If normal is not equal to zero exactly, then we assume it's a valid, just not normalized vector
|
||||||
|
vIDiff = length(gl_Normal) == 0.0
|
||||||
|
? 1.0
|
||||||
|
: directional_ambient(normalize(gl_Normal));
|
||||||
|
|
||||||
gl_FrontColor = gl_BackColor = gl_Color;
|
gl_FrontColor = gl_BackColor = gl_Color;
|
||||||
}
|
}
|
||||||
|
@ -467,7 +467,11 @@ void WieldMeshSceneNode::setColor(video::SColor c)
|
|||||||
bc.getGreen() * green / 255,
|
bc.getGreen() * green / 255,
|
||||||
bc.getBlue() * blue / 255);
|
bc.getBlue() * blue / 255);
|
||||||
scene::IMeshBuffer *buf = mesh->getMeshBuffer(j);
|
scene::IMeshBuffer *buf = mesh->getMeshBuffer(j);
|
||||||
colorizeMeshBuffer(buf, &buffercolor);
|
|
||||||
|
if (m_enable_shaders)
|
||||||
|
setMeshBufferColor(buf, buffercolor);
|
||||||
|
else
|
||||||
|
colorizeMeshBuffer(buf, &buffercolor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -481,9 +485,9 @@ void WieldMeshSceneNode::setNodeLightColor(video::SColor color)
|
|||||||
video::SMaterial &material = m_meshnode->getMaterial(i);
|
video::SMaterial &material = m_meshnode->getMaterial(i);
|
||||||
material.EmissiveColor = color;
|
material.EmissiveColor = color;
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
setColor(color);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setColor(color);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WieldMeshSceneNode::render()
|
void WieldMeshSceneNode::render()
|
||||||
|
Loading…
Reference in New Issue
Block a user