Skip to content

Commit 3c0c525

Browse files
committed
Add sheen shading support
1 parent f233ec3 commit 3c0c525

14 files changed

Lines changed: 412 additions & 22 deletions

File tree

doc/classes/BaseMaterial3D.xml

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,24 @@
374374
<member name="shadow_to_opacity" type="bool" setter="set_flag" getter="get_flag" default="false">
375375
If [code]true[/code], enables the "shadow to opacity" render mode where lighting modifies the alpha so shadowed areas are opaque and non-shadowed areas are transparent. Useful for overlaying shadows onto a camera feed in AR.
376376
</member>
377+
<member name="sheen" type="float" setter="set_sheen" getter="get_sheen" default="1.0">
378+
Sets the strength of the sheen effect. Setting to [code]0[/code] looks the same as disabling the sheen effect.
379+
</member>
380+
<member name="sheen_color" type="Color" setter="set_sheen_color" getter="get_sheen_color" default="Color(1, 1, 1, 1)">
381+
Sets the color of the sheen effect. It should be adjusted according to the color [member albedo_color] or [member albedo_texture].
382+
[b]Note:[/b] Taking the luminance of [member albedo_color] as the [member sheen_color] will produce a fairly natural effect that works for common cloth. A dark [member albedo_color] combined with a bright/saturated [member sheen_color] can be used to create velvet.
383+
</member>
384+
<member name="sheen_enabled" type="bool" setter="set_feature" getter="get_feature" default="false">
385+
If [code]true[/code], sheen effect is enabled. Sheen lighting simulate the soft luster and light scattering caused by the fibrous microstructure or fine particles on a material's surface.
386+
It is mainly used to give a realistic look to fabrics (like velvet or wool), and it serves as a PBR alternative to [member rim].
387+
[b]Note:[/b] Sheen lighting is not visible if the material's [member shading_mode] is [constant SHADING_MODE_UNSHADED].
388+
</member>
389+
<member name="sheen_roughness" type="float" setter="set_sheen_roughness" getter="get_sheen_roughness" default="0.5">
390+
Sets the roughness of the sheen pass. A higher value results in a rougher sheen while a lower value results in a smoother sheen.
391+
</member>
392+
<member name="sheen_texture" type="Texture2D" setter="set_texture" getter="get_texture">
393+
Texture that defines the strength of the sheen effect and the roughness of the sheen. Strength is specified in the red channel while roughness is specified in the green channel.
394+
</member>
377395
<member name="specular_mode" type="int" setter="set_specular_mode" getter="get_specular_mode" enum="BaseMaterial3D.SpecularMode" default="0">
378396
The method for rendering the specular blob.
379397
[b]Note:[/b] [member specular_mode] only applies to the specular blob. It does not affect specular reflections from the sky, screen-space reflections, [VoxelGI], SDFGI or [ReflectionProbe]s. To disable reflections from these sources as well, set [member metallic_specular] to [code]0.0[/code] instead.
@@ -512,6 +530,9 @@
512530
<constant name="TEXTURE_RIM" value="5" enum="TextureParam">
513531
Texture specifying per-pixel rim value.
514532
</constant>
533+
<constant name="TEXTURE_SHEEN" value="19" enum="TextureParam">
534+
Texture specifying per-pixel sheen value.
535+
</constant>
515536
<constant name="TEXTURE_CLEARCOAT" value="6" enum="TextureParam">
516537
Texture specifying per-pixel clearcoat value.
517538
</constant>
@@ -548,7 +569,7 @@
548569
<constant name="TEXTURE_ORM" value="17" enum="TextureParam">
549570
Texture holding ambient occlusion, roughness, and metallic.
550571
</constant>
551-
<constant name="TEXTURE_MAX" value="19" enum="TextureParam">
572+
<constant name="TEXTURE_MAX" value="20" enum="TextureParam">
552573
Represents the size of the [enum TextureParam] enum.
553574
</constant>
554575
<constant name="TEXTURE_FILTER_NEAREST" value="0" enum="TextureFilter">
@@ -647,7 +668,9 @@
647668
<constant name="FEATURE_BENT_NORMAL_MAPPING" value="12" enum="Feature">
648669
Constant for setting [member bent_normal_enabled].
649670
</constant>
650-
<constant name="FEATURE_MAX" value="13" enum="Feature">
671+
<constant name="FEATURE_SHEEN" value="13" enum="Feature">
672+
</constant>
673+
<constant name="FEATURE_MAX" value="14" enum="Feature">
651674
Represents the size of the [enum Feature] enum.
652675
</constant>
653676
<constant name="BLEND_MODE_MIX" value="0" enum="BlendMode">

drivers/gles3/storage/material_storage.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1310,6 +1310,9 @@ MaterialStorage::MaterialStorage() {
13101310
actions.renames["ROUGHNESS"] = "roughness";
13111311
actions.renames["RIM"] = "rim";
13121312
actions.renames["RIM_TINT"] = "rim_tint";
1313+
actions.renames["SHEEN"] = "sheen";
1314+
actions.renames["SHEEN_ROUGNESS"] = "sheen_roughness";
1315+
actions.renames["SHEEN_COLOR"] = "sheen_color";
13131316
actions.renames["CLEARCOAT"] = "clearcoat";
13141317
actions.renames["CLEARCOAT_ROUGHNESS"] = "clearcoat_roughness";
13151318
actions.renames["ANISOTROPY"] = "anisotropy";
@@ -1367,6 +1370,9 @@ MaterialStorage::MaterialStorage() {
13671370
actions.usage_defines["BINORMAL"] = "@TANGENT";
13681371
actions.usage_defines["RIM"] = "#define LIGHT_RIM_USED\n";
13691372
actions.usage_defines["RIM_TINT"] = "@RIM";
1373+
actions.usage_defines["SHEEN"] = "#define LIGHT_SHEEN_USED\n";
1374+
actions.usage_defines["SHEEN_ROUGNESS"] = "@SHEEN";
1375+
actions.usage_defines["SHEEN_COLOR"] = "@SHEEN";
13701376
actions.usage_defines["CLEARCOAT"] = "#define LIGHT_CLEARCOAT_USED\n";
13711377
actions.usage_defines["CLEARCOAT_ROUGHNESS"] = "@CLEARCOAT";
13721378
actions.usage_defines["ANISOTROPY"] = "#define LIGHT_ANISOTROPY_USED\n";
@@ -2986,6 +2992,7 @@ void SceneShaderData::set_code(const String &p_code) {
29862992
uses_position = false;
29872993
uses_sss = false;
29882994
uses_transmittance = false;
2995+
uses_sheen = false;
29892996
uses_screen_texture = false;
29902997
uses_screen_texture_mipmaps = false;
29912998
uses_depth_texture = false;
@@ -3068,6 +3075,8 @@ void SceneShaderData::set_code(const String &p_code) {
30683075
actions.usage_flag_pointers["SSS_STRENGTH"] = &uses_sss;
30693076
actions.usage_flag_pointers["SSS_TRANSMITTANCE_DEPTH"] = &uses_transmittance;
30703077

3078+
actions.usage_flag_pointers["SHEEN"] = &uses_sheen;
3079+
30713080
actions.usage_flag_pointers["DISCARD"] = &uses_discard;
30723081
actions.usage_flag_pointers["TIME"] = &uses_time;
30733082
actions.usage_flag_pointers["ROUGHNESS"] = &uses_roughness;
@@ -3174,6 +3183,10 @@ void SceneShaderData::set_code(const String &p_code) {
31743183
if (uses_normal_texture) {
31753184
WARN_PRINT_ONCE_ED("Reading from the normal-roughness texture is only available when using the Forward+ or Mobile renderer.");
31763185
}
3186+
3187+
if (uses_sheen) {
3188+
WARN_PRINT_ONCE_ED("Sheen shading is only available when using the Forward+ renderer.");
3189+
}
31773190
#endif
31783191

31793192
#if 0

drivers/gles3/storage/material_storage.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,7 @@ struct SceneShaderData : public ShaderData {
326326
bool uses_position;
327327
bool uses_sss;
328328
bool uses_transmittance;
329+
bool uses_sheen;
329330
bool uses_screen_texture;
330331
bool uses_screen_texture_mipmaps;
331332
bool uses_depth_texture;

modules/visual_shader/visual_shader.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4240,6 +4240,10 @@ const VisualShaderNodeOutput::Port VisualShaderNodeOutput::ports[] = {
42404240
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "Depth", "DEPTH" },
42414241
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR_3D, "Bent Normal Map", "BENT_NORMAL_MAP" },
42424242

4243+
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "Sheen", "SHEEN" },
4244+
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "Sheen Roughness", "SHEEN_ROUGHNESS" },
4245+
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR_3D, "Sheen Color", "SHEEN_COLOR" },
4246+
42434247
////////////////////////////////////////////////////////////////////////
42444248
// Spatial, Light.
42454249
////////////////////////////////////////////////////////////////////////

scene/resources/material.cpp

Lines changed: 82 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -569,6 +569,9 @@ void BaseMaterial3D::init_shaders() {
569569
shader_names->normal_scale = "normal_scale";
570570
shader_names->rim = "rim";
571571
shader_names->rim_tint = "rim_tint";
572+
shader_names->sheen = "sheen";
573+
shader_names->sheen_roughness = "sheen_roughness";
574+
shader_names->sheen_color = "sheen_color";
572575
shader_names->clearcoat = "clearcoat";
573576
shader_names->clearcoat_roughness = "clearcoat_roughness";
574577
shader_names->anisotropy = "anisotropy_ratio";
@@ -604,6 +607,7 @@ void BaseMaterial3D::init_shaders() {
604607

605608
shader_names->metallic_texture_channel = "metallic_texture_channel";
606609
shader_names->ao_texture_channel = "ao_texture_channel";
610+
shader_names->sheen_texture_channel = "sheen_texture_channel";
607611
shader_names->clearcoat_texture_channel = "clearcoat_texture_channel";
608612
shader_names->rim_texture_channel = "rim_texture_channel";
609613
shader_names->heightmap_texture_channel = "heightmap_texture_channel";
@@ -620,6 +624,7 @@ void BaseMaterial3D::init_shaders() {
620624
shader_names->texture_names[TEXTURE_NORMAL] = "texture_normal";
621625
shader_names->texture_names[TEXTURE_BENT_NORMAL] = "texture_bent_normal";
622626
shader_names->texture_names[TEXTURE_RIM] = "texture_rim";
627+
shader_names->texture_names[TEXTURE_SHEEN] = "texture_sheen";
623628
shader_names->texture_names[TEXTURE_CLEARCOAT] = "texture_clearcoat";
624629
shader_names->texture_names[TEXTURE_FLOWMAP] = "texture_flowmap";
625630
shader_names->texture_names[TEXTURE_AMBIENT_OCCLUSION] = "texture_ambient_occlusion";
@@ -1076,6 +1081,15 @@ uniform sampler2D texture_bent_normal : hint_roughness_normal, %s;
10761081
uniform float rim : hint_range(0.0, 1.0, 0.01);
10771082
uniform float rim_tint : hint_range(0.0, 1.0, 0.01);
10781083
uniform sampler2D texture_rim : hint_default_white, %s;
1084+
)",
1085+
texfilter_str);
1086+
}
1087+
if (features[FEATURE_SHEEN]) {
1088+
code += vformat(R"(
1089+
uniform float sheen : hint_range(0.0, 1.0, 0.01);
1090+
uniform float sheen_roughness : hint_range(0.0, 1.0, 0.01);
1091+
uniform vec3 sheen_color : source_color;
1092+
uniform sampler2D texture_sheen : hint_default_white, %s;
10791093
)",
10801094
texfilter_str);
10811095
}
@@ -1877,6 +1891,21 @@ void fragment() {)";
18771891
)";
18781892
}
18791893

1894+
if (features[FEATURE_SHEEN]) {
1895+
code += R"(
1896+
// Sheen: Enabled
1897+
)";
1898+
if (flags[FLAG_UV1_USE_TRIPLANAR]) {
1899+
code += " vec2 sheen_tex = triplanar_texture(texture_sheen, uv1_power_normal, uv1_triplanar_pos).xy;\n";
1900+
} else {
1901+
code += " vec2 sheen_tex = texture(texture_sheen, base_uv).xy;\n";
1902+
}
1903+
code += R"( SHEEN = sheen * sheen_tex.x;
1904+
SHEEN_ROUGHNESS = sheen_roughness * sheen_tex.y;
1905+
SHEEN_COLOR = sheen_color;
1906+
)";
1907+
}
1908+
18801909
if (features[FEATURE_CLEARCOAT]) {
18811910
code += R"(
18821911
// Clearcoat: Enabled
@@ -2224,6 +2253,33 @@ float BaseMaterial3D::get_ao_light_affect() const {
22242253
return ao_light_affect;
22252254
}
22262255

2256+
void BaseMaterial3D::set_sheen(float p_sheen) {
2257+
sheen = p_sheen;
2258+
_material_set_param(shader_names->sheen, p_sheen);
2259+
}
2260+
2261+
float BaseMaterial3D::get_sheen() const {
2262+
return sheen;
2263+
}
2264+
2265+
void BaseMaterial3D::set_sheen_roughness(float p_sheen_roughness) {
2266+
sheen_roughness = p_sheen_roughness;
2267+
_material_set_param(shader_names->sheen_roughness, p_sheen_roughness);
2268+
}
2269+
2270+
float BaseMaterial3D::get_sheen_roughness() const {
2271+
return sheen_roughness;
2272+
}
2273+
2274+
void BaseMaterial3D::set_sheen_color(const Color &p_sheen_color) {
2275+
sheen_color = p_sheen_color;
2276+
_material_set_param(shader_names->sheen_color, p_sheen_color);
2277+
}
2278+
2279+
Color BaseMaterial3D::get_sheen_color() const {
2280+
return sheen_color;
2281+
}
2282+
22272283
void BaseMaterial3D::set_clearcoat(float p_clearcoat) {
22282284
clearcoat = p_clearcoat;
22292285
_material_set_param(shader_names->clearcoat, p_clearcoat);
@@ -2703,6 +2759,10 @@ void BaseMaterial3D::_validate_property(PropertyInfo &p_property) const {
27032759
p_property.usage = PROPERTY_USAGE_NONE;
27042760
}
27052761

2762+
if (p_property.name.begins_with("sheen")) {
2763+
p_property.usage = PROPERTY_USAGE_NONE;
2764+
}
2765+
27062766
if (p_property.name.begins_with("clearcoat")) {
27072767
p_property.usage = PROPERTY_USAGE_NONE;
27082768
}
@@ -3366,6 +3426,15 @@ void BaseMaterial3D::_bind_methods() {
33663426
ClassDB::bind_method(D_METHOD("set_rim_tint", "rim_tint"), &BaseMaterial3D::set_rim_tint);
33673427
ClassDB::bind_method(D_METHOD("get_rim_tint"), &BaseMaterial3D::get_rim_tint);
33683428

3429+
ClassDB::bind_method(D_METHOD("set_sheen", "sheen"), &BaseMaterial3D::set_sheen);
3430+
ClassDB::bind_method(D_METHOD("get_sheen"), &BaseMaterial3D::get_sheen);
3431+
3432+
ClassDB::bind_method(D_METHOD("set_sheen_roughness", "sheen_roughness"), &BaseMaterial3D::set_sheen_roughness);
3433+
ClassDB::bind_method(D_METHOD("get_sheen_roughness"), &BaseMaterial3D::get_sheen_roughness);
3434+
3435+
ClassDB::bind_method(D_METHOD("set_sheen_color", "sheen_color"), &BaseMaterial3D::set_sheen_color);
3436+
ClassDB::bind_method(D_METHOD("get_sheen_color"), &BaseMaterial3D::get_sheen_color);
3437+
33693438
ClassDB::bind_method(D_METHOD("set_clearcoat", "clearcoat"), &BaseMaterial3D::set_clearcoat);
33703439
ClassDB::bind_method(D_METHOD("get_clearcoat"), &BaseMaterial3D::get_clearcoat);
33713440

@@ -3624,6 +3693,13 @@ void BaseMaterial3D::_bind_methods() {
36243693
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "rim_tint", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_rim_tint", "get_rim_tint");
36253694
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "rim_texture", PROPERTY_HINT_RESOURCE_TYPE, Texture2D::get_class_static()), "set_texture", "get_texture", TEXTURE_RIM);
36263695

3696+
ADD_GROUP("Sheen", "sheen_");
3697+
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "sheen_enabled", PROPERTY_HINT_GROUP_ENABLE), "set_feature", "get_feature", FEATURE_SHEEN);
3698+
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "sheen", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_sheen", "get_sheen");
3699+
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "sheen_roughness", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_sheen_roughness", "get_sheen_roughness");
3700+
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "sheen_color"), "set_sheen_color", "get_sheen_color");
3701+
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "sheen_texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_texture", "get_texture", TEXTURE_SHEEN);
3702+
36273703
ADD_GROUP("Clearcoat", "clearcoat_");
36283704
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "clearcoat_enabled", PROPERTY_HINT_GROUP_ENABLE), "set_feature", "get_feature", FEATURE_CLEARCOAT);
36293705
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "clearcoat", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_clearcoat", "get_clearcoat");
@@ -3759,6 +3835,7 @@ void BaseMaterial3D::_bind_methods() {
37593835
BIND_ENUM_CONSTANT(TEXTURE_NORMAL);
37603836
BIND_ENUM_CONSTANT(TEXTURE_BENT_NORMAL);
37613837
BIND_ENUM_CONSTANT(TEXTURE_RIM);
3838+
BIND_ENUM_CONSTANT(TEXTURE_SHEEN);
37623839
BIND_ENUM_CONSTANT(TEXTURE_CLEARCOAT);
37633840
BIND_ENUM_CONSTANT(TEXTURE_FLOWMAP);
37643841
BIND_ENUM_CONSTANT(TEXTURE_AMBIENT_OCCLUSION);
@@ -3809,6 +3886,7 @@ void BaseMaterial3D::_bind_methods() {
38093886
BIND_ENUM_CONSTANT(FEATURE_REFRACTION);
38103887
BIND_ENUM_CONSTANT(FEATURE_DETAIL);
38113888
BIND_ENUM_CONSTANT(FEATURE_BENT_NORMAL_MAPPING);
3889+
BIND_ENUM_CONSTANT(FEATURE_SHEEN);
38123890
BIND_ENUM_CONSTANT(FEATURE_MAX);
38133891

38143892
BIND_ENUM_CONSTANT(BLEND_MODE_MIX);
@@ -3918,7 +3996,10 @@ BaseMaterial3D::BaseMaterial3D(bool p_orm) :
39183996
set_normal_scale(1);
39193997
set_rim(1.0);
39203998
set_rim_tint(0.5);
3921-
set_clearcoat(1);
3999+
set_sheen(1.0);
4000+
set_sheen_roughness(0.5);
4001+
set_sheen_color(Color(1, 1, 1));
4002+
set_clearcoat(1.0);
39224003
set_clearcoat_roughness(0.5);
39234004
set_anisotropy(0);
39244005
set_heightmap_scale(5.0);

scene/resources/material.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@ class BaseMaterial3D : public Material {
164164
TEXTURE_DETAIL_NORMAL,
165165
TEXTURE_ORM,
166166
TEXTURE_BENT_NORMAL,
167+
TEXTURE_SHEEN,
167168
TEXTURE_MAX
168169
};
169170

@@ -220,6 +221,7 @@ class BaseMaterial3D : public Material {
220221
FEATURE_REFRACTION,
221222
FEATURE_DETAIL,
222223
FEATURE_BENT_NORMAL_MAPPING,
224+
FEATURE_SHEEN,
223225
FEATURE_MAX
224226
};
225227

@@ -471,6 +473,9 @@ class BaseMaterial3D : public Material {
471473
StringName normal_scale;
472474
StringName rim;
473475
StringName rim_tint;
476+
StringName sheen;
477+
StringName sheen_roughness;
478+
StringName sheen_color;
474479
StringName clearcoat;
475480
StringName clearcoat_roughness;
476481
StringName anisotropy;
@@ -504,6 +509,7 @@ class BaseMaterial3D : public Material {
504509

505510
StringName metallic_texture_channel;
506511
StringName ao_texture_channel;
512+
StringName sheen_texture_channel;
507513
StringName clearcoat_texture_channel;
508514
StringName rim_texture_channel;
509515
StringName heightmap_texture_channel;
@@ -545,6 +551,9 @@ class BaseMaterial3D : public Material {
545551
float normal_scale = 0.0f;
546552
float rim = 0.0f;
547553
float rim_tint = 0.0f;
554+
float sheen = 0.0f;
555+
float sheen_roughness = 0.0f;
556+
Color sheen_color;
548557
float clearcoat = 0.0f;
549558
float clearcoat_roughness = 0.0f;
550559
float anisotropy = 0.0f;
@@ -675,6 +684,15 @@ class BaseMaterial3D : public Material {
675684
void set_ao_light_affect(float p_ao_light_affect);
676685
float get_ao_light_affect() const;
677686

687+
void set_sheen(float p_sheen);
688+
float get_sheen() const;
689+
690+
void set_sheen_roughness(float p_sheen_roughness);
691+
float get_sheen_roughness() const;
692+
693+
void set_sheen_color(const Color &p_sheen_color);
694+
Color get_sheen_color() const;
695+
678696
void set_clearcoat(float p_clearcoat);
679697
float get_clearcoat() const;
680698

servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -756,6 +756,9 @@ void SceneShaderForwardClustered::init(const String p_defines) {
756756
actions.renames["ROUGHNESS"] = "roughness_highp";
757757
actions.renames["RIM"] = "rim";
758758
actions.renames["RIM_TINT"] = "rim_tint";
759+
actions.renames["SHEEN"] = "sheen";
760+
actions.renames["SHEEN_ROUGHNESS"] = "sheen_roughness";
761+
actions.renames["SHEEN_COLOR"] = "sheen_color";
759762
actions.renames["CLEARCOAT"] = "clearcoat";
760763
actions.renames["CLEARCOAT_ROUGHNESS"] = "clearcoat_roughness";
761764
actions.renames["ANISOTROPY"] = "anisotropy";
@@ -813,6 +816,9 @@ void SceneShaderForwardClustered::init(const String p_defines) {
813816
actions.usage_defines["BINORMAL"] = "@TANGENT";
814817
actions.usage_defines["RIM"] = "#define LIGHT_RIM_USED\n";
815818
actions.usage_defines["RIM_TINT"] = "@RIM";
819+
actions.usage_defines["SHEEN"] = "#define LIGHT_SHEEN_USED\n";
820+
actions.usage_defines["SHEEN_ROUGHNESS"] = "@SHEEN";
821+
actions.usage_defines["SHEEN_COLOR"] = "@SHEEN";
816822
actions.usage_defines["CLEARCOAT"] = "#define LIGHT_CLEARCOAT_USED\n";
817823
actions.usage_defines["CLEARCOAT_ROUGHNESS"] = "@CLEARCOAT";
818824
actions.usage_defines["ANISOTROPY"] = "#define LIGHT_ANISOTROPY_USED\n";

0 commit comments

Comments
 (0)