Possible strange behaviour of transmission

Hi, i have a problem with transparency (principled shader), and I do not know if it is a bug or I am doing it wrong. I have created a tube with relatively thin wall. It should be transparent like plexi glass. I created a principled shader with all values zero except transmission, which is nearly 1. IOR is 1. Color is full white (255,255,255). Now I get strange black shades on the surface, like it tries to calculate some total reflection even when IOR is 1. It looks very strange. The effect is stronger at the ends of the tube. The normals look OK. Blender version is 2.79b.

strangemat.blend (476.4 KB)

I’ve not downloaded the file as of yet but made my own scene (lowIORTransmissionTest.blend) (116.8 KB) (Cylinder, remove caps, solidify modifier, shade smooth; BPT, high bounces, no glossy filter, no clamping, etc.) You’ll want to supply your own background image. Here’s some observations:

(Principled BSDF)
(With GGX)
IOR=1.00, any roughness: thin black areas along tube rims.
IOR<1.0001, high roughness: thin black areas along tube rims.
IOR>=1.0001, high roughness: thin black areas still but transition into larger dark areas.

(With Multiscatter GGX)
IOR=1.00, roughness<=0.05: thin black areas along tube rims.
IOR=1.00, roughness>0.05: tube gets lots of black noise throughout.
IOR>1.00, roughness<=0.05: thin black areas along tube rims.
IOR>1.00, roughness>0.05: no black areas, looks good.

(Glass BSDF)
(With GGX)
IOR=1.00, any roughness: thin black areas along tube rims.
IOR<1.0001, high roughness: thin black areas along tube rims.
IOR>=1.0001, high roughness: thin black areas still but transition into larger dark areas.

(With Multiscatter GGX)
IOR=1.00, roughness<0.0177828: invisible, which seems correct.
IOR=1.00, roughness>=0.0177828: tube gets lots of black noise throughout.
IOR>1.00, roughness<0.0177828: invisible.
IOR>1.00, roughness=>0.0177828: thin reflective area along tube rims, seems correct.

Image of the “thin black areas along tube rims”, with a 128-sided cylinder on the right for comparison (not included in file):

IORTransmissionTestEx1

In conclusion, ways to improve the situation:

  • shade flat
  • increase subdivisions
  • avoid extreme IOR/roughness values

(now I’m going to actually look at your file, will edit this post a little later to report if I got the wrong end of the stick. :slight_smile: )

edit 1: ok, similar but not identical situation. So far, more subdivs and fiddling ior/roughness hasn’t fixed anything. Shading all flat “fixes” it, but is that good enough?

edit 2: if you leave shading as is, but add more edge loops near the top and bottom (both inside and outside), that will minimise the affected area so you end up with the thinner black lines, like in the picture above. Get the loops very close to the ends and the lines almost (but not completely) disappear.