diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2020-04-04 17:14:48 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-04 17:14:48 +0200 |
commit | da887714be65290697f0b1071acde580711570bc (patch) | |
tree | 149c7080fc10f8809cbee827e2a8e0a80228d295 /scene/resources/material.cpp | |
parent | 1957c99ab497ea6a9660fd39dd2c61ee1a70fa8f (diff) | |
parent | c54f80d35c5e91451b9feaac3a3187470cc069b4 (diff) | |
download | redot-engine-da887714be65290697f0b1071acde580711570bc.tar.gz |
Merge pull request #37570 from reduz/implement-sss
Re-implement subsurface scattering.
Diffstat (limited to 'scene/resources/material.cpp')
-rw-r--r-- | scene/resources/material.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/scene/resources/material.cpp b/scene/resources/material.cpp index 84c1c9d734..85adc8c5f1 100644 --- a/scene/resources/material.cpp +++ b/scene/resources/material.cpp @@ -444,6 +444,9 @@ void BaseMaterial3D::_update_shader() { case DEPTH_DRAW_DISABLED: code += ",depth_draw_never"; break; } + if (features[FEATURE_SUBSURACE_SCATTERING] && flags[FLAG_SUBSURFACE_MODE_SKIN]) { + code += ",sss_mode_skin"; + } if (transparency == TRANSPARENCY_ALPHA_DEPTH_PRE_PASS) { code += ",depth_prepass_alpha"; } @@ -2284,6 +2287,7 @@ void BaseMaterial3D::_bind_methods() { ADD_GROUP("Subsurf Scatter", "subsurf_scatter_"); ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "subsurf_scatter_enabled"), "set_feature", "get_feature", FEATURE_SUBSURACE_SCATTERING); ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "subsurf_scatter_strength", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_subsurface_scattering_strength", "get_subsurface_scattering_strength"); + ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "subsurf_scatter_skin_mode"), "set_flag", "get_flag", FLAG_SUBSURFACE_MODE_SKIN); ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "subsurf_scatter_texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_texture", "get_texture", TEXTURE_SUBSURFACE_SCATTERING); ADD_GROUP("Transmission", "transmission_"); @@ -2436,6 +2440,7 @@ void BaseMaterial3D::_bind_methods() { BIND_ENUM_CONSTANT(FLAG_USE_SHADOW_TO_OPACITY); BIND_ENUM_CONSTANT(FLAG_USE_TEXTURE_REPEAT); BIND_ENUM_CONSTANT(FLAG_INVERT_HEIGHTMAP); + BIND_ENUM_CONSTANT(FLAG_SUBSURFACE_MODE_SKIN); BIND_ENUM_CONSTANT(FLAG_MAX); BIND_ENUM_CONSTANT(DIFFUSE_BURLEY); |