When you override roughness in a declared finish that has specular
albedo, the specular is not recalculated for the new roughness. To get
proper results, you have to restate the specular albedo. Here is an
example:
----------[BEGIN CODE EXCERPT]----------
#declare SMOOTH = 0.0005;
#declare ROUGH = 0.02;
#declare BUMP_SIZE = 0.2;
#declare MICROSCALE = 0.0001;
#declare f_Gloss = finish
{ fresnel
reflection { 0 1 fresnel } conserve_energy
specular albedo 1 roughness SMOOTH
ambient 0 diffuse 0
}
#declare t_Glass = texture
{ pigment { rgbf 1 }
finish { f_Gloss }
}
#declare t_Frost1 = texture
{ pigment { rgbf 1 }
finish { f_Gloss roughness ROUGH }
normal { bumps BUMP_SIZE scale MICROSCALE }
}
#declare t_Frost2 = texture
{ pigment { rgbf 1 }
finish { f_Gloss roughness ROUGH specular albedo 1 }
normal { bumps BUMP_SIZE scale MICROSCALE }
}
-----------[END CODE EXCERPT]-----------
The second row of images uses the textures as declared above; the first
row uses the finishes modified to not use finish-level Fresnel. I will
post the complete scene files in p.binaries.scene-files.
The leftmost image of each row uses t_Glass, with the unmodified finish.
The center image uses t_Frost1, which has roughness increased, which
results in a grossly overly strong highlight. The rightmost image uses
t_Frost2, which restates the specular albedo.
Post a reply to this message
Attachments:
Download 'roughness_override-pbi.jpg' (94 KB)
Preview of image 'roughness_override-pbi.jpg'
|