Takémodel osvětlení, shading modelPokročilý
Definice
Osvětlovací model je matematický popis toho, jak se v počítačové grafice vypočítá barva povrchu podle světel, materiálu, normály a směru pohledu. Používá se v rendererech a shaderech k simulaci matného odrazu, lesku, stínů i fyzikálně věrohodnějšího chování materiálů.
Co osvětlovací model počítá
Osvětlovací model popisuje, jak renderer odhadne barvu bodu na povrchu podle světel, materiálu, směru kamery a okolní scény. V reálném světě se světlo mnohokrát odráží, láme a pohlcuje. V počítačové grafice se tento děj zjednodušuje do výpočtu, který je dost rychlý pro hru, náhled v editoru nebo finální render.
Základní vstupy bývají normála povrchu, směr ke světlu, směr k pozorovateli, barva světla a vlastnosti materiálu. Materiál může obsahovat difuzní složku, lesk, kovovost, drsnost, průhlednost nebo texturované hodnoty. Proto osvětlovací model často úzce souvisí s texturou, UV mapováním a kvalitou normál v polygonální síti.
Od jednoduchého Phonga k fyzikálně založenému renderingu
Starší modely, například Lambertův difuzní odraz nebo Phongův model, rozdělují osvětlení na srozumitelné části: okolní světlo, matný rozptyl a zrcadlový odlesk. Výhoda je jednoduchost a rychlost. Nevýhoda je menší věrnost, protože parametry často neodpovídají skutečným materiálům.
Moderní PBR přístup používá materiálové veličiny, které se lépe chovají při změně světelného prostředí. Drsnost ovlivňuje šířku odlesku, kovovost mění vztah mezi difuzní a zrcadlovou složkou a energie by se neměla vytvářet z ničeho. PBR ale neznamená automaticky fotorealismus. Výsledek závisí také na světlech, expozici, stínech, odrazech, postprocessingu a kvalitě vstupních dat.
Kde se osvětlovací model projeví v pipeline
Osvětlovací model se může vyhodnocovat ve vertex shaderu, fragment shaderu, ray traceru nebo offline rendereru. Výpočet po vrcholech je levný, ale může rozmazat odlesky na řídké geometrii. Výpočet po pixelech je přesnější pro detaily, protože každý fragment dostane vlastní normálu, světelný směr a materiálové hodnoty.
Ray tracing a path tracing pracují s paprsky a mohou lépe zachytit globální osvětlení, měkké stíny a vícenásobné odrazy. I tam ale existuje model materiálu: renderer musí vědět, jak se paprsek po dopadu rozdělí, pohltí nebo odrazí.
Praktické příklady
Příklad 1: Plastové tlačítko ve WebGL scéně
Vývojář vykresluje 3D tlačítko a potřebuje, aby působilo plastově, ne kovově. Jednoduchý difuzní výpočet ukáže tvar, ale bez odlesku bude objekt plochý. Přidání spekulární složky vytvoří jasný highlight a uživatel lépe přečte zaoblení.
vec3 N = normalize(normal);
vec3 L = normalize(lightDir);
float diffuse = max(dot(N, L), 0.0);
vec3 color = baseColor * lightColor * diffuse;Příklad 2: Kovový produkt v katalogovém renderu
Grafik připravuje vizualizaci hodinek a použije PBR materiál s vysokou kovovostí a nízkou drsností. Kov potom nepůsobí jako šedě nabarvený plast, protože silně odráží okolní prostředí. Špatná HDR mapa nebo chybějící odrazové sondy ale zničí dojem i při správném materiálu.
Proč stejný materiál vypadá v různých enginech jinak
Osvětlovací model není jediný článek řetězce. Dva enginy mohou používat podobné parametry materiálu, ale odlišnou tonemapping křivku, barevný prostor, výpočet stínů, aproximaci nepřímého světla nebo normalizaci BRDF. Přenos materiálů proto vyžaduje kontrolu celé renderovací konfigurace, ne jen opsání hodnot z jednoho editoru do druhého.
Příklady z praxe
Plastové tlačítko ve WebGL scéně
Vývojář vykresluje 3D tlačítko a potřebuje, aby působilo plastově, ne kovově. Jednoduchý difuzní výpočet ukáže tvar, ale bez odlesku bude objekt plochý. Přidání spekulární složky vytvoří jasný highlight a uživatel lépe přečte zaoblení.
vec3 N = normalize(normal); vec3 L = normalize(lightDir); float diffuse = max(dot(N, L), 0.0); vec3 color = baseColor * lightColor * diffuse;Kovový produkt v katalogovém renderu
Grafik připravuje vizualizaci hodinek a použije PBR materiál s vysokou kovovostí a nízkou drsností. Kov potom nepůsobí jako šedě nabarvený plast, protože silně odráží okolní prostředí. Špatná HDR mapa nebo chybějící odrazové sondy ale zničí dojem i při správném materiálu.
Časté omyly
- MýtusOsvětlovací model je jen nastavení světel ve scéně.
- Ve skutečnostiOsvětlovací model neurčuje pouze rozmístění lamp. Osvětlovací model popisuje výpočet reakce povrchu na světlo, takže zahrnuje materiál, směr pohledu, normály a často i odrazy okolí.
- MýtusPBR materiál bude automaticky realistický v každém rendereru.
- Ve skutečnostiPBR materiál zlepšuje konzistenci, ale výsledek závisí na osvětlení, barevném prostoru, expozici, stínech a implementaci rendereru. Stejné textury mohou v různých enginech působit odlišně.
Časté dotazy
- Je osvětlovací model totéž co shader?
- Osvětlovací model určuje pravidla, podle kterých se z materiálu, světel a směru pohledu vypočítá výsledná barva. Shader je program nebo část programu, která tato pravidla provede na grafické kartě nebo v renderovací pipeline. Jeden shader může implementovat konkrétní osvětlovací model, ale může také dělat úplně jiné věci, například deformaci geometrie, postprocessing nebo výpočet částic.
- Kdy dává u osvětlovacího modelu smysl PBR?
- Osvětlovací model PBR dává smysl, když má scéna fungovat pod různými světly a materiály mají být konzistentní. Produktové vizualizace, hry, architektura i 3D konfigurátory z něj těží, protože parametry jako drsnost nebo kovovost mají předvídatelnější význam. Jednoduchý stylizovaný projekt ale může záměrně použít nefyziální model, pokud je rychlejší, čitelnější nebo lépe odpovídá výtvarnému směru.
- Proč osvětlovací model vypadá v editoru jinak než ve výsledné aplikaci?
- Osvětlovací model může vypadat špatně kvůli chybným normálám, špatnému barevnému prostoru, nevhodné expozici, slabému prostředí pro odrazy nebo nesprávně připraveným texturám. Lesklý materiál například potřebuje co odrážet. Matný materiál zase často prozradí špatně vyhlazenou geometrii. Ladění proto začíná kontrolou vstupních dat, světel a renderovacího nastavení, ne jen změnou jedné hodnoty materiálu.
- Liší se osvětlovací model ve hrách a offline renderingu?
- Osvětlovací model pro real-time grafiku obvykle používá aproximace, aby se snímek stihl vykreslit v interaktivní rychlosti. Offline render může počítat déle a přesněji, například s více odrazy světla nebo složitějšími materiály. Rozdíl není jen v kvalitě, ale i v cíli: hra potřebuje stabilní odezvu, filmový render může obětovat čas za menší šum a věrnější světlo.
Zdroje
- Phong reflection model(otevře se v novém okně)
- Rendering equation(otevře se v novém okně)
- Bidirectional reflectance distribution function(otevře se v novém okně)