mirror of
https://github.com/luanti-org/luanti.git
synced 2025-10-12 16:15:20 +02:00
Make shading of CAOs optional (#10033)
This commit is contained in:
@@ -577,10 +577,16 @@ void GenericCAO::addToScene(ITextureSource *tsrc)
|
||||
|
||||
if (m_enable_shaders) {
|
||||
IShaderSource *shader_source = m_client->getShaderSource();
|
||||
u32 shader_id = shader_source->getShader(
|
||||
"object_shader",
|
||||
(m_prop.use_texture_alpha) ? TILE_MATERIAL_ALPHA : TILE_MATERIAL_BASIC,
|
||||
NDT_NORMAL);
|
||||
MaterialType material_type;
|
||||
|
||||
if (m_prop.shaded && m_prop.glow == 0)
|
||||
material_type = (m_prop.use_texture_alpha) ?
|
||||
TILE_MATERIAL_ALPHA : TILE_MATERIAL_BASIC;
|
||||
else
|
||||
material_type = (m_prop.use_texture_alpha) ?
|
||||
TILE_MATERIAL_PLAIN_ALPHA : TILE_MATERIAL_PLAIN;
|
||||
|
||||
u32 shader_id = shader_source->getShader("object_shader", material_type, NDT_NORMAL);
|
||||
m_material_type = shader_source->getShaderInfo(shader_id).material;
|
||||
} else {
|
||||
m_material_type = (m_prop.use_texture_alpha) ?
|
||||
@@ -1504,6 +1510,7 @@ bool GenericCAO::visualExpiryRequired(const ObjectProperties &new_) const
|
||||
return old.backface_culling != new_.backface_culling ||
|
||||
old.is_visible != new_.is_visible ||
|
||||
old.mesh != new_.mesh ||
|
||||
old.shaded != new_.shaded ||
|
||||
old.use_texture_alpha != new_.use_texture_alpha ||
|
||||
old.visual != new_.visual ||
|
||||
old.visual_size != new_.visual_size ||
|
||||
|
@@ -341,7 +341,7 @@ bool checkMeshNormals(scene::IMesh *mesh)
|
||||
// hurting the performance and covering only really weird broken models.
|
||||
f32 length = buffer->getNormal(0).getLength();
|
||||
|
||||
if (!std::isfinite(length) || std::fabs(length) < 1e-10f)
|
||||
if (!std::isfinite(length) || length < 1e-10f)
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@@ -537,11 +537,13 @@ ShaderInfo generate_shader(const std::string &name, u8 material_type, u8 drawtyp
|
||||
shaderinfo.base_material = video::EMT_SOLID;
|
||||
break;
|
||||
case TILE_MATERIAL_ALPHA:
|
||||
case TILE_MATERIAL_PLAIN_ALPHA:
|
||||
case TILE_MATERIAL_LIQUID_TRANSPARENT:
|
||||
case TILE_MATERIAL_WAVING_LIQUID_TRANSPARENT:
|
||||
shaderinfo.base_material = video::EMT_TRANSPARENT_ALPHA_CHANNEL;
|
||||
break;
|
||||
case TILE_MATERIAL_BASIC:
|
||||
case TILE_MATERIAL_PLAIN:
|
||||
case TILE_MATERIAL_WAVING_LEAVES:
|
||||
case TILE_MATERIAL_WAVING_PLANTS:
|
||||
case TILE_MATERIAL_WAVING_LIQUID_BASIC:
|
||||
@@ -644,9 +646,11 @@ ShaderInfo generate_shader(const std::string &name, u8 material_type, u8 drawtyp
|
||||
"TILE_MATERIAL_WAVING_LIQUID_BASIC",
|
||||
"TILE_MATERIAL_WAVING_LIQUID_TRANSPARENT",
|
||||
"TILE_MATERIAL_WAVING_LIQUID_OPAQUE",
|
||||
"TILE_MATERIAL_PLAIN",
|
||||
"TILE_MATERIAL_PLAIN_ALPHA",
|
||||
};
|
||||
|
||||
for (int i = 0; i < 10; i++){
|
||||
for (int i = 0; i < 12; i++){
|
||||
shaders_header += "#define ";
|
||||
shaders_header += materialTypes[i];
|
||||
shaders_header += " ";
|
||||
|
@@ -150,6 +150,8 @@ enum MaterialType{
|
||||
TILE_MATERIAL_WAVING_LIQUID_BASIC,
|
||||
TILE_MATERIAL_WAVING_LIQUID_TRANSPARENT,
|
||||
TILE_MATERIAL_WAVING_LIQUID_OPAQUE,
|
||||
TILE_MATERIAL_PLAIN,
|
||||
TILE_MATERIAL_PLAIN_ALPHA
|
||||
};
|
||||
|
||||
// Material flags
|
||||
|
Reference in New Issue
Block a user