Direct 3D - Lesk
Touto kapitolou by som chcel nadviazať na predchádzajúcu časť o svetlách. Okrem toho, že svetlo objekt osvetluje, dokáže vytvoriť aj dojem lesku. To sa vám môže veľmi hodiť pri vytváraní lesklých predmetov ako napr. poháre, kryštály, lesklé kovy…
Ako to funguje?
Posledný parameter svetla, ktorý sme si nespomenuli je specular farba. Po zapnutí specular light sú niektoré trojuholníky na objekte “vysvietené”. My ich však vnímame ako lesklú plochu. Specular svetlo je počítané pre každý vertex a následne pridané k obyčajnému svetlu. Jeho intenzita závisí od uhlu medzi svetlom, objektom a kamerou.
Použitie specular svetla
Specular light je najlepšie vidieť na objektoch s viacerým polygonmi - modeloch. D3D ponúka okrem možnosti nahrať model z X súboru aj vlastné preddefinované modely. Vytvoriť ich môžete napr. tymito funkciami: CreateCylinder (valec), CreateSphere (guľa), CreateTeapot (čajník), CreateTorus (koláč). Ich deklarácia, použitie a spôsob renderovania je rovnaký ako u klasických modelov.
Ďalším krokom je úprava materiálu. Pribudli 3 nové parametre:
specular - farba specular svetla
power - sila specular svetla od 0 po 255
emissive - farba, ktorá bude zvýraznená. Tmavé miesta sa môžu stať oveľa svetlejšími.
Ďalej pridáme specular zložku aj svetelnému zdroju. Keď už máme nakonfigurované svetlo aj materiál, poslednou úlohou je zapnúť specular svetlo:
D3DDevice.SetRenderState D3DRS_SPECULARENABLE, 1
D3D počíta specular svetlo podľa zložitého vzorca. Ponúka však aj prepočet pomocou iného, bohužiaľ ešte zložitejšieho vzorca. Ak sa rozhodnete pre druhý typ, musíte zapnúť localviewer (pozn.: defaultne je zapnutý). Bohužiaľ za cenu FPS.
D3DDevice.SetRenderState D3DRS_LOCALVIEWER, 1
Používajte specular svetlo iba v nutných prípadoch. Je totiž takmer 2x náročnejšie ako klasické. Riešením pre statické objekty je aj použitie specular textúry namiesto svetla. Na obyčajnú textúru sa nanesie ešte ďalšia specular textúra. O tom bližšie až pri lekcii o miešaní textúr.