The project started small as a test of dispersion but it ended up as a complete physically based uber shader for Cycles. Many physical principles are involved in the shader. You can purchase it if you are stuggling with PBR in Cycles: https://blendermarket.com/products/universal-pbr-uber-shader