aboutsummaryrefslogtreecommitdiff
path: root/servers/visual/rasterizer.cpp
diff options
context:
space:
mode:
authorJuan Linietsky2014-05-29 10:56:39 -0300
committerJuan Linietsky2014-05-29 10:56:39 -0300
commit6f0b4678e26c04abfc88c0226c803e78a108de98 (patch)
tree51b99b2ece75e5782c0b14c97bb6913c48e7f363 /servers/visual/rasterizer.cpp
parentd9adf2627a70ab37408aca9ae4140c6280dfe6df (diff)
downloadgodot-6f0b4678e26c04abfc88c0226c803e78a108de98.tar.gz
godot-6f0b4678e26c04abfc88c0226c803e78a108de98.tar.zst
godot-6f0b4678e26c04abfc88c0226c803e78a108de98.zip
Diffstat (limited to 'servers/visual/rasterizer.cpp')
-rw-r--r--servers/visual/rasterizer.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/servers/visual/rasterizer.cpp b/servers/visual/rasterizer.cpp
index 2de49d3d8..e21848eac 100644
--- a/servers/visual/rasterizer.cpp
+++ b/servers/visual/rasterizer.cpp
@@ -157,6 +157,9 @@ RID Rasterizer::_create_shader(const FixedMaterialShaderKey& p_key) {
if (p_key.use_alpha) {
code+="DIFFUSE_ALPHA=diffuse;\n";
+ if (p_key.discard_alpha) {
+ code+="DISCARD=diffuse.a<0.5;\n";
+ }
} else {
code+="DIFFUSE=diffuse.rgb;\n";
}
@@ -262,6 +265,7 @@ void Rasterizer::_free_shader(const FixedMaterialShaderKey& p_key) {
void Rasterizer::fixed_material_set_flag(RID p_material, VS::FixedMaterialFlags p_flag, bool p_enabled) {
+
Map<RID,FixedMaterial*>::Element *E = fixed_materials.find(p_material);
ERR_FAIL_COND(!E);
FixedMaterial &fm=*E->get();
@@ -271,6 +275,7 @@ void Rasterizer::fixed_material_set_flag(RID p_material, VS::FixedMaterialFlags
case VS::FIXED_MATERIAL_FLAG_USE_ALPHA: fm.use_alpha=p_enabled; break;
case VS::FIXED_MATERIAL_FLAG_USE_COLOR_ARRAY: fm.use_color_array=p_enabled; break;
case VS::FIXED_MATERIAL_FLAG_USE_POINT_SIZE: fm.use_pointsize=p_enabled; break;
+ case VS::FIXED_MATERIAL_FLAG_DISCARD_ALPHA: fm.discard_alpha=p_enabled; break;
}
if (!fm.dirty_list.in_list())
@@ -288,6 +293,7 @@ bool Rasterizer::fixed_material_get_flag(RID p_material, VS::FixedMaterialFlags
case VS::FIXED_MATERIAL_FLAG_USE_ALPHA: return fm.use_alpha;; break;
case VS::FIXED_MATERIAL_FLAG_USE_COLOR_ARRAY: return fm.use_color_array;; break;
case VS::FIXED_MATERIAL_FLAG_USE_POINT_SIZE: return fm.use_pointsize;; break;
+ case VS::FIXED_MATERIAL_FLAG_DISCARD_ALPHA: return fm.discard_alpha;; break;
}