hide next pass for material types that make it pointless, closes #10686
This commit is contained in:
parent
f5c5d07f9c
commit
308a6f4f99
2 changed files with 17 additions and 0 deletions
|
@ -65,6 +65,12 @@ RID Material::get_rid() const {
|
||||||
|
|
||||||
return material;
|
return material;
|
||||||
}
|
}
|
||||||
|
void Material::_validate_property(PropertyInfo &property) const {
|
||||||
|
|
||||||
|
if (!_can_do_next_pass() && property.name=="next_pass") {
|
||||||
|
property.usage=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Material::_bind_methods() {
|
void Material::_bind_methods() {
|
||||||
|
|
||||||
|
@ -204,6 +210,11 @@ void ShaderMaterial::get_argument_options(const StringName &p_function, int p_id
|
||||||
Resource::get_argument_options(p_function, p_idx, r_options);
|
Resource::get_argument_options(p_function, p_idx, r_options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ShaderMaterial::_can_do_next_pass() const {
|
||||||
|
|
||||||
|
return shader.is_valid() && shader->get_mode()==Shader::MODE_SPATIAL;
|
||||||
|
}
|
||||||
|
|
||||||
ShaderMaterial::ShaderMaterial() {
|
ShaderMaterial::ShaderMaterial() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -53,6 +53,9 @@ class Material : public Resource {
|
||||||
protected:
|
protected:
|
||||||
_FORCE_INLINE_ RID _get_material() const { return material; }
|
_FORCE_INLINE_ RID _get_material() const { return material; }
|
||||||
static void _bind_methods();
|
static void _bind_methods();
|
||||||
|
virtual bool _can_do_next_pass() const { return false; }
|
||||||
|
|
||||||
|
void _validate_property(PropertyInfo &property) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
enum {
|
enum {
|
||||||
|
@ -84,6 +87,8 @@ protected:
|
||||||
|
|
||||||
void get_argument_options(const StringName &p_function, int p_idx, List<String> *r_options) const;
|
void get_argument_options(const StringName &p_function, int p_idx, List<String> *r_options) const;
|
||||||
|
|
||||||
|
virtual bool _can_do_next_pass() const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void set_shader(const Ref<Shader> &p_shader);
|
void set_shader(const Ref<Shader> &p_shader);
|
||||||
Ref<Shader> get_shader() const;
|
Ref<Shader> get_shader() const;
|
||||||
|
@ -394,6 +399,7 @@ private:
|
||||||
protected:
|
protected:
|
||||||
static void _bind_methods();
|
static void _bind_methods();
|
||||||
void _validate_property(PropertyInfo &property) const;
|
void _validate_property(PropertyInfo &property) const;
|
||||||
|
virtual bool _can_do_next_pass() const { return true; }
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void set_albedo(const Color &p_albedo);
|
void set_albedo(const Color &p_albedo);
|
||||||
|
|
Loading…
Reference in a new issue