Millised on parimad näpunäited OpenGL® valgustuse jaoks?

OpenGL® valgustus on kolmemõõtmelise (3D) arvutigraafika programmeerimise üks keerukamaid ja mõnikord kõige vähem mõistetavaid aspekte. Seda saab kasutada renderdatud stseenile vajalike realistlike lihvide lisamiseks, kuid see võib olla ka arvutuslikult nõudlik ja lõpuks segadust tekitav, kui efekte pole lihtsalt võimalik saavutada. Teatud elemente, nagu pinnanormaalide määratlemine, saab hõlpsasti mõista, samas kui valgustusmudeli muud osad, näiteks erinevate valgustüüpide jaotus, võivad vajada rohkem uurimist, et täielikult mõista. OpenGL® valgustusega töötamisel on tavaliselt kaks probleemi: renderdamiskiirus ja kvaliteet. On mõned näpunäited, mis aitavad saavutada mõlema vastuvõetava osa, kuid lõpuks tuleb teha kompromisse kvaliteedi ja kiiruse vahel.

Üks sageli esinev probleem, eriti neile, kes pole OpenGL®-i valgustust kasutanud, on see, et stseeni iga tipu pind peab olema normaalselt määratletud. Ilma normaalväärtusteta kasutab renderdaja selle asemel ühte konstanti, mis muudab stseeni kõik lamedaks ja varjutamata. Üks nipp normaalväärtuste määratlemisel on kasutada väärtusi, mis ei ole pinnaga risti, vaid on suunatud erinevas suunas. See muudab seda, kuidas valgust pinnale renderdatakse, ja seda saab kasutada hõlpsasti müra või kiviste tekstuuride tekitamiseks – seda protsessi nimetatakse löökide kaardistamiseks.

Heade ja potentsiaalselt ainulaadsete efektide saamiseks OpenGL®-i valgustusega stseenis on vaja täielikult mõista, mida ümbritsevad, peegeldavad, hajusad ja kiirgavad valgusallikad endaga kaasa toovad. Udu täis stseeni saab muuta realistlikumaks kõrge halli keskkonnaväärtusega. Samamoodi saab kiirgavate materjalide ja valgusallikate abil teha eriefekte, nagu tuli või valgustus. Nelja põhimudeli kihilisus ja kombinatsioon muudavad stseeni realistlikumaks.

Oluline on mõista, et OpenGL®-i valgustus nõuab iga renderdatud kaadri jaoks palju protsessori võimsust. See tähendab, et stseeni optimeerimine võib aidata saavutada paremat kaadrisagedust. Mõned asjad, mis võivad renderdusaega lühendada, on kasutada võimalikult vähe valgusallikaid, minimeerida valgustatavate pindade hulka ja vältida algoritme või laiendusi, mis töötlevad lõplikku kaadripuhvrit mitu korda. Valgustuse liigutamine stseenis võib samuti mõjutada jõudlust ja seda tuleks vältida, kui renderduskiirus muutub problemaatiliseks.

Üks viimane näpunäide OpenGL® valgustuse kasutamise kohta on teada, millal OpenGL® valgustust mitte kasutada. Võib olla lihtne mõelda kiirgavate objektide ja valguste paigutamisele stseeni igasse kohta, kus see tegelikkuses viibiks, kuid see võib kiiresti muutuda ebapraktiliseks. Selle asemel saab paljusid valgustusnippe teha illusioonide kaudu, kasutades hästi tehtud tekstuurpilte, mille valgustus on juba pinnale joonistatud. Samamoodi võib stseeni geomeetria korrastamine mõnikord kaotada vajaduse mitme valgusallika järele, varjates mõned probleemsed alad või võimaldades õõnsas liitobjektis ühel allikal paista läbi mitme planeeritud ava.