İlk prototipin bitimi ve sunumu için ilerlemekte olurken, oyun motorunun destekleyebileceği shaderları teker tekrar öğrenmeye koyuldum.
Bump-Normal Mapping;
Bump mapler, bir texture üzerinde bir nevi üç boyutluluğu taklit eden bir shader türüdür. Kısacası, 2D bir texture yüzeyini 3D gibi gözükmesini sağlar, ama aslında tabiiki değildir. Bump map yapımı işlemine “Normal Mapping” denir.
Örnek olarak resimde, solda textuerın difuse halini görüyoruz, sağda ise bump mapi. Kırmızı renker yatay, yeşil yükseklik, mavi ise derinlik değerleri ile birlikte ışığın ne şekilde yansıyacağını hesaplıyorlar. Yani aslında gördüğümüz, küçük bir ışık ilizyonu.
Soldaki, normal/bump mape sahip olmayan yüzey ve ışıklar tek bir şekilde yansıyor, yüzeyden bilgi almıyorlar. Ama sağda ise bump/normal map var, ve ışık RGB ile kodlanmış noktalardan farklı yerlere yansımaları gerektiği bilgisi alıyor, böylece o resim/texture veya dokunun üzerinde belirli yükselikte olabilicek parçaların kenarları daha karanlık.
Normal Mapping biraz yorucu bir iş, ama bunu kolaylaştıran birkaç program tavsiye edebilirim
Her bir program, farklı sonuçlarla karşınıza çıkıcaktır. Crazy_bump ve texture maker en fazla tercih edilenlerden, yinede NVIDIA photoshop pluginleri bolca kullanan insanlarda mevcut.
Specular Mapping;
Specular mappinp, normal mappingden çok farklı değil. Bump RGB ile (x y z) yükseklik değerlerini alırken, specular mapping sadece siyah beyazdır. Bir alan ne kadar beyaz ise o kadar parlaktır ve ne kadar siyah ise o kadar az yansıma yapar.
Sol üstte renkli gördüğümüz “Diffuse”, yani dokunun kendisi. Sağ üstteki bump ise, normal map değildir. Gri ve siyah bump mapler, self-shadowing bump maplerdir. Dışardan alabileceği farklı ışıklardan bilgi almak yerine, kendi içinde gölgelendirmeler ile aynı effekti sağlamaya çalışır, genelde modellerde veya yüzeydeki detayların hep belirgin olması için kullanılır.
Displace mapping ise, normal map x y z değerleri ışık oyunuyla bump effektini yaratırken, displacement sadece yükseklikte ve derinlikteki belirli noktalar ile ilgilenir, bütün resme bakmaz.
Parallax mapping, aslında benimde bilgimin biraz zayıf olduğu bir konu, ve şu an kullandığım Source oyun motoru bile desteklememekte, ama bump/displacement birleşimine rakip bir shader gibi. Çünkü bir doku üzerindeki en büyük detayları tanıyıp, sadece onlara gerekli x y z değerlerini verebiliyor. Dokuda belirli vertexler vererek, buna “sun vertex modelling” deniyor.
Bu shaderları öğrendikten sonra, oyun motorunuza nasıl aktarabileceğinizi düşünmeye başlamalısınız. Mesela Source, bump map ile specular mappingin bir arada kullanılmasını desteklemiyor ve buna bir çözüm bulmam gerekti.
Bu daha önce göstermiş olduğum haritam, Low resolution texturelar ve shader yok – Eski hali -> http://i.imgur.com/Sjecl.jpg
Her hafta internetten bolca High Res texture toplamaya çalışıyorum olabildiğince, Yeni hali -> http://i.imgur.com/jOLEg.jpg (normal mapping)
Normap Mappingi çözdükten sonra sıra specular mappinge geldi, ve bump map ile birlikte kullanılmıyor… Ve benimde gerçekçi bir çamur yaratmam gerek…
Çözüm aslında basit, doku için kullanacağınız normal mapin alpha layerına yerleştirebilirsiniz specular mapinizi.. Böylece motor, normal mapi yerleştirirken, siyah-beyaz specular mappinizide işleme koymuş olucak. Tabii, aslında tam specular bir map gibi gözükmeyecek ve bump mapin üzerinde başka bir layer varmış gibi durucak. Ama effektin taklidini en iyi bu şekilde yapıpılabileceğini düşünüyorum.
Çamur -> http://i.imgur.com/VJdXm.jpg
Ve dokular üzerinden x y z yansıtma değerlerini düşürebilirsiniz. Önceki gösterdiğim resimlerde, dokulardan yansıma oranı .5 .5 .5 iken, şimdi .1 e indirdim.
Ve sonuç -> http://i.imgur.com/HUiKE.jpg
Bu haftalık bu kadar, prototip hazırlanması için nerdeyse herşey hazır. Haftaya rahat yetişeceğinden eminim.