Bir yağ tabakasının renklerinin fiziksel temeli yanardönerdir ve ayrıca Newton'un halkalarıyla da ilişkilidir . Özellikle, yağ tabakasının kalınlığı ışığın dalga boyu mertebesindedir. Işık yağın hem üst hem de alt yüzeyinden, herhangi bir dalga boyunda yansıdığı için, bazı açılardan, iki yansıma faz dışı olacak ve birbirini iptal edecektir; diğer açılardan yansımalar evrede olacak ve birlikte eklenecektir. Bu, her dalga boyu için farklı açılarda gerçekleşir, bu nedenle yağı beyaz ışıkla aydınlatmak tüm bu renkleri üretir. Tek bir frekansla (örneğin lazer ışığı) aydınlatırsanız, yalnızca bir dizi açık ve koyu halka görürsünüz.
Yağ tabakasındaki kırılmayı görmezden gelirseniz, sadece durumun geometrisini çalışarak, herhangi bir dalga boyu için yansıyan ışığın parlaklığının
sin(2.0 * pi * oilThickness / (dot(L, H) * wavelength)) * 0.5 + 0.5
Teorik olarak bu tüm dalga boylarına entegre edilmelidir, ancak pratikte muhtemelen sadece kırmızı, yeşil ve mavi için yapabilirsiniz - diyelim ki sırasıyla 700, 550 ve 400 nm. Yağ kalınlığının değiştirilmesi, renk halkalarının görünen yarıçapını değiştirecektir. Muhtemelen 2.0 * pi * oilThickness / wavelength
gölgelendiriciye eşit bir değer olarak sağlanan tek bir RGB değerine sararım. İsterseniz, değişen yağ kalınlığını simüle etmek için bir doku ile çarpabilirsiniz - muhtemelen yukarıdaki resimde ilginç dokuların çoğunu veren şeydir.
Bu, BRDF'nize çarpabileceğiniz bir RGB renk değeri üretir. dot(L, H)
Faktör noktası / yönlü ışıklar için kullanılacak ve yerini alabilir dot(N, V)
bir ortam haritası yansıması bu uygulamadan için de içeride.
Feragatname: Bunu bir gölgelendiricide denemedim, sadece bazı diyagramlar çizdim ve kendimi "işe yaraması" gerektiğine ikna ettim ... bu yüzden denerseniz sonuçları bana bildirin! :)