Browse Source

Fix disallow stencil mode outline and xray for RENDER_PRIORITY_MAX

Squamto 1 month ago
parent
commit
cd737eed2f
1 changed files with 6 additions and 0 deletions
  1. 6 0
      scene/resources/material.cpp

+ 6 - 0
scene/resources/material.cpp

@@ -64,6 +64,7 @@ Ref<Material> Material::get_next_pass() const {
 void Material::set_render_priority(int p_priority) {
 void Material::set_render_priority(int p_priority) {
 	ERR_FAIL_COND(p_priority < RENDER_PRIORITY_MIN);
 	ERR_FAIL_COND(p_priority < RENDER_PRIORITY_MIN);
 	ERR_FAIL_COND(p_priority > RENDER_PRIORITY_MAX);
 	ERR_FAIL_COND(p_priority > RENDER_PRIORITY_MAX);
+
 	render_priority = p_priority;
 	render_priority = p_priority;
 
 
 	if (material.is_valid()) {
 	if (material.is_valid()) {
@@ -3217,6 +3218,11 @@ void BaseMaterial3D::set_stencil_mode(StencilMode p_stencil_mode) {
 		return;
 		return;
 	}
 	}
 
 
+	if (p_stencil_mode == StencilMode::STENCIL_MODE_OUTLINE || p_stencil_mode == StencilMode::STENCIL_MODE_XRAY) {
+		ERR_FAIL_COND_EDMSG(get_render_priority() >= RENDER_PRIORITY_MAX,
+				vformat("Cannot use stencil mode Outline or Xray, when render priority is RENDER_PRIORITY_MAX(%d).", RENDER_PRIORITY_MAX));
+	}
+
 	stencil_mode = p_stencil_mode;
 	stencil_mode = p_stencil_mode;
 	_prepare_stencil_effect();
 	_prepare_stencil_effect();
 	_queue_shader_change();
 	_queue_shader_change();