Merge pull request #60803 from Chaosus/shader_hint_rename

Rename `hint_albedo`, `hint_white/black` in shaders
This commit is contained in:
Rémi Verschelde 2022-05-24 08:15:33 +02:00 committed by GitHub
commit 1314e6cbcc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 199 additions and 290 deletions

View file

@ -700,7 +700,7 @@ String VisualShaderNodeTexture::generate_global(Shader::Mode p_mode, VisualShade
case TYPE_DATA:
break;
case TYPE_COLOR:
u += " : hint_albedo";
u += " : source_color";
break;
case TYPE_NORMAL_MAP:
u += " : hint_normal";
@ -1463,7 +1463,7 @@ String VisualShaderNodeCubemap::generate_global(Shader::Mode p_mode, VisualShade
case TYPE_DATA:
break;
case TYPE_COLOR:
u += " : hint_albedo";
u += " : source_color";
break;
case TYPE_NORMAL_MAP:
u += " : hint_normal";
@ -5113,7 +5113,7 @@ Color VisualShaderNodeColorUniform::get_default_value() const {
}
String VisualShaderNodeColorUniform::generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const {
String code = _get_qual_str() + "uniform vec4 " + get_uniform_name() + " : hint_color";
String code = _get_qual_str() + "uniform vec4 " + get_uniform_name() + " : source_color";
if (default_value_enabled) {
code += vformat(" = vec4(%.6f, %.6f, %.6f, %.6f)", default_value.r, default_value.g, default_value.b, default_value.a);
}
@ -5567,6 +5567,110 @@ Vector<StringName> VisualShaderNodeTransformUniform::get_editable_properties() c
VisualShaderNodeTransformUniform::VisualShaderNodeTransformUniform() {
}
//////////////
String get_sampler_hint(VisualShaderNodeTextureUniform::TextureType p_texture_type, VisualShaderNodeTextureUniform::ColorDefault p_color_default, VisualShaderNodeTextureUniform::TextureFilter p_texture_filter, VisualShaderNodeTextureUniform::TextureRepeat p_texture_repeat) {
String code;
bool has_colon = false;
// type
{
String type_code;
switch (p_texture_type) {
case VisualShaderNodeTextureUniform::TYPE_DATA:
if (p_color_default == VisualShaderNodeTextureUniform::COLOR_DEFAULT_BLACK) {
type_code = "hint_default_black";
}
break;
case VisualShaderNodeTextureUniform::TYPE_COLOR:
type_code = "source_color";
if (p_color_default == VisualShaderNodeTextureUniform::COLOR_DEFAULT_BLACK) {
type_code += ", hint_default_black";
}
break;
case VisualShaderNodeTextureUniform::TYPE_NORMAL_MAP:
type_code = "hint_normal";
break;
case VisualShaderNodeTextureUniform::TYPE_ANISOTROPY:
type_code = "hint_anisotropy";
break;
default:
break;
}
if (!type_code.is_empty()) {
code += " : " + type_code;
has_colon = true;
}
}
// filter
{
String filter_code;
switch (p_texture_filter) {
case VisualShaderNodeTextureUniform::FILTER_NEAREST:
filter_code = "filter_nearest";
break;
case VisualShaderNodeTextureUniform::FILTER_LINEAR:
filter_code = "filter_linear";
break;
case VisualShaderNodeTextureUniform::FILTER_NEAREST_MIPMAP:
filter_code = "filter_nearest_mipmap";
break;
case VisualShaderNodeTextureUniform::FILTER_LINEAR_MIPMAP:
filter_code = "filter_linear_mipmap";
break;
case VisualShaderNodeTextureUniform::FILTER_NEAREST_MIPMAP_ANISOTROPIC:
filter_code = "filter_nearest_mipmap_anisotropic";
break;
case VisualShaderNodeTextureUniform::FILTER_LINEAR_MIPMAP_ANISOTROPIC:
filter_code = "filter_linear_mipmap_anisotropic";
break;
default:
break;
}
if (!filter_code.is_empty()) {
if (!has_colon) {
code += " : ";
has_colon = true;
} else {
code += ", ";
}
code += filter_code;
}
}
// repeat
{
String repeat_code;
switch (p_texture_repeat) {
case VisualShaderNodeTextureUniform::REPEAT_ENABLED:
repeat_code = "repeat_enable";
break;
case VisualShaderNodeTextureUniform::REPEAT_DISABLED:
repeat_code = "repeat_disable";
break;
default:
break;
}
if (!repeat_code.is_empty()) {
if (!has_colon) {
code += " : ";
} else {
code += ", ";
}
code += repeat_code;
}
}
return code;
}
////////////// Texture Uniform
String VisualShaderNodeTextureUniform::get_caption() const {
@ -5608,105 +5712,8 @@ String VisualShaderNodeTextureUniform::get_output_port_name(int p_port) const {
}
String VisualShaderNodeTextureUniform::generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const {
bool has_colon = false;
String code = _get_qual_str() + "uniform sampler2D " + get_uniform_name();
// type
{
String type_code;
switch (texture_type) {
case TYPE_DATA:
if (color_default == COLOR_DEFAULT_BLACK) {
type_code = "hint_black";
}
break;
case TYPE_COLOR:
if (color_default == COLOR_DEFAULT_BLACK) {
type_code = "hint_black_albedo";
} else {
type_code = "hint_albedo";
}
break;
case TYPE_NORMAL_MAP:
type_code = "hint_normal";
break;
case TYPE_ANISOTROPY:
type_code = "hint_anisotropy";
break;
default:
break;
}
if (!type_code.is_empty()) {
code += " : " + type_code;
has_colon = true;
}
}
// filter
{
String filter_code;
switch (texture_filter) {
case FILTER_NEAREST:
filter_code = "filter_nearest";
break;
case FILTER_LINEAR:
filter_code = "filter_linear";
break;
case FILTER_NEAREST_MIPMAP:
filter_code = "filter_nearest_mipmap";
break;
case FILTER_LINEAR_MIPMAP:
filter_code = "filter_linear_mipmap";
break;
case FILTER_NEAREST_MIPMAP_ANISOTROPIC:
filter_code = "filter_nearest_mipmap_anisotropic";
break;
case FILTER_LINEAR_MIPMAP_ANISOTROPIC:
filter_code = "filter_linear_mipmap_anisotropic";
break;
default:
break;
}
if (!filter_code.is_empty()) {
if (!has_colon) {
code += " : ";
has_colon = true;
} else {
code += ", ";
}
code += filter_code;
}
}
// repeat
{
String repeat_code;
switch (texture_repeat) {
case REPEAT_ENABLED:
repeat_code = "repeat_enable";
break;
case REPEAT_DISABLED:
repeat_code = "repeat_disable";
break;
default:
break;
}
if (!repeat_code.is_empty()) {
if (!has_colon) {
code += " : ";
} else {
code += ", ";
}
code += repeat_code;
}
}
code += get_sampler_hint(texture_type, color_default, texture_filter, texture_repeat);
code += ";\n";
return code;
}
@ -5986,33 +5993,8 @@ String VisualShaderNodeTexture2DArrayUniform::get_output_port_name(int p_port) c
String VisualShaderNodeTexture2DArrayUniform::generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const {
String code = _get_qual_str() + "uniform sampler2DArray " + get_uniform_name();
switch (texture_type) {
case TYPE_DATA:
if (color_default == COLOR_DEFAULT_BLACK) {
code += " : hint_black;\n";
} else {
code += ";\n";
}
break;
case TYPE_COLOR:
if (color_default == COLOR_DEFAULT_BLACK) {
code += " : hint_black_albedo;\n";
} else {
code += " : hint_albedo;\n";
}
break;
case TYPE_NORMAL_MAP:
code += " : hint_normal;\n";
break;
case TYPE_ANISOTROPY:
code += " : hint_anisotropy;\n";
break;
default:
code += ";\n";
break;
}
code += get_sampler_hint(texture_type, color_default, texture_filter, texture_repeat);
code += ";\n";
return code;
}
@ -6035,33 +6017,8 @@ String VisualShaderNodeTexture3DUniform::get_output_port_name(int p_port) const
String VisualShaderNodeTexture3DUniform::generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const {
String code = _get_qual_str() + "uniform sampler3D " + get_uniform_name();
switch (texture_type) {
case TYPE_DATA:
if (color_default == COLOR_DEFAULT_BLACK) {
code += " : hint_black;\n";
} else {
code += ";\n";
}
break;
case TYPE_COLOR:
if (color_default == COLOR_DEFAULT_BLACK) {
code += " : hint_black_albedo;\n";
} else {
code += " : hint_albedo;\n";
}
break;
case TYPE_NORMAL_MAP:
code += " : hint_normal;\n";
break;
case TYPE_ANISOTROPY:
code += " : hint_anisotropy;\n";
break;
default:
code += ";\n";
break;
}
code += get_sampler_hint(texture_type, color_default, texture_filter, texture_repeat);
code += ";\n";
return code;
}
@ -6084,33 +6041,8 @@ String VisualShaderNodeCubemapUniform::get_output_port_name(int p_port) const {
String VisualShaderNodeCubemapUniform::generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const {
String code = _get_qual_str() + "uniform samplerCube " + get_uniform_name();
switch (texture_type) {
case TYPE_DATA:
if (color_default == COLOR_DEFAULT_BLACK) {
code += " : hint_black;\n";
} else {
code += ";\n";
}
break;
case TYPE_COLOR:
if (color_default == COLOR_DEFAULT_BLACK) {
code += " : hint_black_albedo;\n";
} else {
code += " : hint_albedo;\n";
}
break;
case TYPE_NORMAL_MAP:
code += " : hint_normal;\n";
break;
case TYPE_ANISOTROPY:
code += " : hint_anisotropy;\n";
break;
default:
code += ";\n";
break;
}
code += get_sampler_hint(texture_type, color_default, texture_filter, texture_repeat);
code += ";\n";
return code;
}