The specular color in metalness/roughness workflow is usually defined as following:

float3 specColor = lerp(0.03f, albedoColor, metallic);

The Cook-Torrance BRDF is given with the following formula:

Cook-Torrance BRDF

The final color will be:

Ci = (diffColor*(n.l)+Ks*specColor*cook);

My question is - won't specular be too dim for non-metals? Cook-Torrance term will be multiplied by 0.03 in case of dielectrics - this will make the specular component virtually non-existent. This doesn't seem realistic to me, because smooth plastic reflects a lot of light, almost as much as metals:

enter image description here

What am I missing?


I think I got my answer - Beckmann distribution term from the Cook-Torrance equation becomes really high when the roughness is low: For roughness = 0.01 the Beckmann term becomes 3183; for 0.001, it becomes 318310.

The roughness has to be much lower on non-metals to make the specular highlight noticeable.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.