Anslut till Senaste Tekniska Nyheter, Bloggar, Recensioner

Allt om belysning

Gouraud Shading

Gouraud Shading används i praktiskt taget alla engångsrenderingsmotorer. Dess enkelhet, hastighet och flexibilitet gör den kanske till den enda typen av belysning som är direkt applicerbar av hårdvaru-3D-acceleratorer. Det enda problemet med Gouraud-skuggning är att det är, ja, väldigt falskt.

Som du kan se från bilden ovan är Gouraud Shading (som kan användas som belysning) inte särskilt vacker. Eftersom texturen är tänkt att vara en glänsande metall, skulle du förvänta dig att ljuset reflekteras från metallen. Dessutom är chansen stor att du förväntar dig en “höjdpunkt” (ljuspunkt) i mitten av scenen ovan. [Textures used are from Planet Half-life’s Texture Studio Pak]

Varför?

Varför är Gouraud Shading så snabb, men ändå så ful? Nåväl, algoritmen för Gouraud Shading kommer att förklara. Gouraud Shading beräknar en intensitet vid varje hörn av en polygon och interpolerar sedan LINJÄRT intensiteterna längs polygonkanter och över polygonrader. När det kommer till belysning är chansen stor att om du ser världen linjär är det en uppskattning. Medan Gouraud Shading ser bra ut för upplysta polygoner sett i vinkel. Polygoner rakt framför ljuskällan är i allmänhet skuggade med samma färg genomgående, eftersom intensiteterna är ungefär desamma vid varje vertex. (I verkligheten borde mitten vara ljusare, eftersom vinkeln mellan ljuskällan och polygonens centrum (förutsatt att polygonen är rakt framför ljuset) är mycket mindre (nåja, liten beror på hur man ser på den). Du kan också använda intensitetsformeln för att se att i mitten av polygonen är intensiteten större (intensitet vid en punkt = Ljusintensitet / (avstånd från ljuskälla)^2). Matematiken är nedan:

Inte nog med att Gouraud inte skuggar korrekt i de flesta fall (egentligen alla fall, men polygoner sett från sidan är relativt exakta, eller åtminstone ser bra ut), Gouraud-skuggning producerar en intensitetsförvrängning, eftersom intensiteterna är LINJÄRT interpolerade, gör de INTE ta hänsyn till polygonens 3D-egenskaper. Detta leder till “förvrängning” som ses i linjär (ibland kallad affin) texturmappning, men inte lika märkbar. “Perspektiv korrekt” Gouraud-skuggning förringar Gouraud-skuggningens främsta fördel gentemot andra belysningsmetoder, hastighet, så den används i allmänhet inte (kanske hårdvara gör detta, inte säker).