Poznámka k blendingu

Jedná se o textury s průhledností. Pokud je alpha kanál diskrétně 0 nebo 1, tak je to v pohodě, alpha testem si odříznu průhledné pixely/texely a zbytek textury vykreslím. Ne tak jednoduché to je u spojité průhlednosti, kde musím použít blending. Problémem jsou světla, ta kreslím tak, že pro každé světlo nakreslím jeho tvar a intenzitu do alpha bufferu, pomocí těchto hodnot a apha blendningu nakreslím kus mapy do colorbufferu. V tom se mi postupně vytváří a správně prolíná výsledná scéna. Bohužel když chci takto blendovat průhlednou texturu, která sama potřebuje blending, tak to nelze, každá operace totiž potřebuje jinou blendovací funkci. Já sice přibližně vím, jak by moje blenovací rovnice měla vypadat, taková ale v OpenGL (ani v extensions) není. Budu proto muset použít shadery, kterým zatím pořádně nerozumím a bude mi tedy chvíli trvat než je nastuduju.

Tento problém je zásadní pro particle systém, který je vícemeně jenom o blendingu. Ono totiž jedno nebo druhé funguje (stíny nebo průhlednost), nefunguje to však zároveň. U partiklů, které mají samy emitovat nějaké světllo, by to nevadillo (nakreslí se světlo a particke přes něj). Problém bude u partiklů typu kouře, tam se asi neočekává, že bude vidět i neosvětlen. Napadá mě použít stencil buffer pro odříznutí neosvětlených částí, ovšem přijdu tak o plynulý přechod do stínu, který mi původně zaručoval alpha blending. Stencil buffer mi dává jen diskrétní informaci – kreslit nekreslit.