mirror of
https://github.com/Redot-Engine/redot-engine.git
synced 2025-12-06 07:17:42 -05:00
Merge commit godotengine/godot@428a762e98
This commit is contained in:
@@ -648,6 +648,7 @@ void BaseMaterial3D::init_shaders() {
|
||||
shader_names->texture_names[TEXTURE_ROUGHNESS] = "texture_roughness";
|
||||
shader_names->texture_names[TEXTURE_EMISSION] = "texture_emission";
|
||||
shader_names->texture_names[TEXTURE_NORMAL] = "texture_normal";
|
||||
shader_names->texture_names[TEXTURE_BENT_NORMAL] = "texture_bent_normal";
|
||||
shader_names->texture_names[TEXTURE_RIM] = "texture_rim";
|
||||
shader_names->texture_names[TEXTURE_CLEARCOAT] = "texture_clearcoat";
|
||||
shader_names->texture_names[TEXTURE_FLOWMAP] = "texture_flowmap";
|
||||
@@ -875,7 +876,9 @@ void BaseMaterial3D::_update_shader() {
|
||||
if (flags[FLAG_DISABLE_FOG]) {
|
||||
code += ", fog_disabled";
|
||||
}
|
||||
|
||||
if (flags[FLAG_DISABLE_SPECULAR_OCCLUSION]) {
|
||||
code += ", specular_occlusion_disabled";
|
||||
}
|
||||
if (transparency == TRANSPARENCY_ALPHA_DEPTH_PRE_PASS) {
|
||||
code += ", depth_prepass_alpha";
|
||||
}
|
||||
@@ -1022,6 +1025,12 @@ uniform vec4 refraction_texture_channel;
|
||||
code += vformat(R"(
|
||||
uniform sampler2D texture_normal : hint_roughness_normal, %s;
|
||||
uniform float normal_scale : hint_range(-16.0, 16.0);
|
||||
)",
|
||||
texfilter_str);
|
||||
}
|
||||
if (features[FEATURE_BENT_NORMAL_MAPPING]) {
|
||||
code += vformat(R"(
|
||||
uniform sampler2D texture_bent_normal : hint_roughness_normal, %s;
|
||||
)",
|
||||
texfilter_str);
|
||||
}
|
||||
@@ -1641,6 +1650,13 @@ void fragment() {)";
|
||||
code += " NORMAL_MAP_DEPTH = normal_scale;\n";
|
||||
}
|
||||
|
||||
if (features[FEATURE_BENT_NORMAL_MAPPING]) {
|
||||
code += R"(
|
||||
// Bent Normal Map: Enabled
|
||||
BENT_NORMAL_MAP = texture(texture_bent_normal, base_uv).rgb;
|
||||
)";
|
||||
}
|
||||
|
||||
if (features[FEATURE_EMISSION]) {
|
||||
code += R"(
|
||||
// Emission: Enabled
|
||||
@@ -2440,6 +2456,7 @@ void BaseMaterial3D::_validate_feature(const String &text, Feature feature, Prop
|
||||
|
||||
void BaseMaterial3D::_validate_property(PropertyInfo &p_property) const {
|
||||
_validate_feature("normal", FEATURE_NORMAL_MAPPING, p_property);
|
||||
_validate_feature("bent_normal", FEATURE_BENT_NORMAL_MAPPING, p_property);
|
||||
_validate_feature("emission", FEATURE_EMISSION, p_property);
|
||||
_validate_feature("rim", FEATURE_RIM, p_property);
|
||||
_validate_feature("clearcoat", FEATURE_CLEARCOAT, p_property);
|
||||
@@ -2585,6 +2602,10 @@ void BaseMaterial3D::_validate_property(PropertyInfo &p_property) const {
|
||||
p_property.usage = PROPERTY_USAGE_NONE;
|
||||
}
|
||||
|
||||
if (p_property.name.begins_with("bent_normal")) {
|
||||
p_property.usage = PROPERTY_USAGE_NONE;
|
||||
}
|
||||
|
||||
if (p_property.name.begins_with("backlight")) {
|
||||
p_property.usage = PROPERTY_USAGE_NONE;
|
||||
}
|
||||
@@ -3210,6 +3231,7 @@ void BaseMaterial3D::_bind_methods() {
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "specular_mode", PROPERTY_HINT_ENUM, "SchlickGGX,Toon,Disabled"), "set_specular_mode", "get_specular_mode");
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "disable_ambient_light"), "set_flag", "get_flag", FLAG_DISABLE_AMBIENT_LIGHT);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "disable_fog"), "set_flag", "get_flag", FLAG_DISABLE_FOG);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "disable_specular_occlusion"), "set_flag", "get_flag", FLAG_DISABLE_SPECULAR_OCCLUSION);
|
||||
|
||||
ADD_GROUP("Vertex Color", "vertex_color");
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "vertex_color_use_as_albedo"), "set_flag", "get_flag", FLAG_ALBEDO_FROM_VERTEX_COLOR);
|
||||
@@ -3250,6 +3272,10 @@ void BaseMaterial3D::_bind_methods() {
|
||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "normal_scale", PROPERTY_HINT_RANGE, "-16,16,0.01"), "set_normal_scale", "get_normal_scale");
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "normal_texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_texture", "get_texture", TEXTURE_NORMAL);
|
||||
|
||||
ADD_GROUP("Bent Normal Map", "bent_normal_");
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "bent_normal_enabled", PROPERTY_HINT_GROUP_ENABLE), "set_feature", "get_feature", FEATURE_BENT_NORMAL_MAPPING);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "bent_normal_texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_texture", "get_texture", TEXTURE_BENT_NORMAL);
|
||||
|
||||
ADD_GROUP("Rim", "rim_");
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "rim_enabled", PROPERTY_HINT_GROUP_ENABLE), "set_feature", "get_feature", FEATURE_RIM);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "rim", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_rim", "get_rim");
|
||||
@@ -3376,6 +3402,7 @@ void BaseMaterial3D::_bind_methods() {
|
||||
BIND_ENUM_CONSTANT(TEXTURE_ROUGHNESS);
|
||||
BIND_ENUM_CONSTANT(TEXTURE_EMISSION);
|
||||
BIND_ENUM_CONSTANT(TEXTURE_NORMAL);
|
||||
BIND_ENUM_CONSTANT(TEXTURE_BENT_NORMAL);
|
||||
BIND_ENUM_CONSTANT(TEXTURE_RIM);
|
||||
BIND_ENUM_CONSTANT(TEXTURE_CLEARCOAT);
|
||||
BIND_ENUM_CONSTANT(TEXTURE_FLOWMAP);
|
||||
@@ -3426,6 +3453,7 @@ void BaseMaterial3D::_bind_methods() {
|
||||
BIND_ENUM_CONSTANT(FEATURE_BACKLIGHT);
|
||||
BIND_ENUM_CONSTANT(FEATURE_REFRACTION);
|
||||
BIND_ENUM_CONSTANT(FEATURE_DETAIL);
|
||||
BIND_ENUM_CONSTANT(FEATURE_BENT_NORMAL_MAPPING);
|
||||
BIND_ENUM_CONSTANT(FEATURE_MAX);
|
||||
|
||||
BIND_ENUM_CONSTANT(BLEND_MODE_MIX);
|
||||
@@ -3468,6 +3496,7 @@ void BaseMaterial3D::_bind_methods() {
|
||||
BIND_ENUM_CONSTANT(FLAG_PARTICLE_TRAILS_MODE);
|
||||
BIND_ENUM_CONSTANT(FLAG_ALBEDO_TEXTURE_MSDF);
|
||||
BIND_ENUM_CONSTANT(FLAG_DISABLE_FOG);
|
||||
BIND_ENUM_CONSTANT(FLAG_DISABLE_SPECULAR_OCCLUSION);
|
||||
BIND_ENUM_CONSTANT(FLAG_MAX);
|
||||
|
||||
BIND_ENUM_CONSTANT(DIFFUSE_BURLEY);
|
||||
|
||||
Reference in New Issue
Block a user