I’ve noticed that the Cloth shading model seems to be broken? I’m tried this in 5.5.4 and 5.6.0, and it’s the same result. The BRDF for cloth in `ShadingModels.ush` appears to be fine/standard, but in `DiffuseIndirectComposite.usf` starting at line 569, the it just adds the fuzz color to the diffuse color without doing anything else. I’ve included an image comparing the results in Unreal vs Blender and Substance Painter for reference. It’s obvious that the results from Unreal are very incorrect.
I did try Substrate, and the results for cloth there seem to be correct, but unfortunately Substrate is not an option for my project.
What can be be done to improve the results of cloth shading?
Steps to Reproduce
Create a material with:
Base color = sRGB 0.5,0.5,0.5
Roughness = 0.5
Fuzz Color = sRGB 1,0,0
Notice that as the Cloth value increases from 0 to 1, the material just takes on more of the fuzz color instead of correctly matching sheen models.
Hi,
Apologies for the delay, it does look off as you mentioned.
After testing things, I found that in the material you can add a fresnel node that you multiply by the fuzz color and add or lerp that to the base color in the mat. (Note you may need to change the “ExponentIn” on the fresnel node - it looks like between 3 to 6 works the best)
Like this:
[Image Removed]or:
[Image Removed]Please let me know how that goes for you!
Regards
Hey there! Since Substrate isn’t an option for y’all, I think it may be worthwhile to make the modifications you want directly in DiffuseIndirectComposite.usf. For what it’s worth, that section of code has been unchanged since 5.0 so the integration effort should be relatively low when you take additional engine updates. Thoughts?
While that does get close, it will not match a correct cloth NDF. It also does this in the forward pass instead of deferred along with the rest of lighting.
Sorry about that, I went ahead and reassigned this to Epic as they’ll be able to provide a more technical solution.
That good to know that section is pretty stable. Using the distribution function from the cloth brdf from ShadingModels in DiffuseIndirectComposite works well enough for my needs. Thank you!