BloodRain a scris:
Foarte tare

.
Citez de la ARBORI SPAȚIALI BINARI(Adrian Manolache) :
"Dacă cele doua triunghiuri ar fi transparente și s-ar folosi o funcție de combinare a culorilor necomutativă nici măcar buffer-ul de adâncime nu ar fi de ajuns." - Exista efecte mai comune care au nevoie de functie necomutativa de combinare a culorilor ?
Sigur ca da! Sa vedem ce inseamna combinarea necomutativa a culorilor.
Dupa cum stii pentru blending, se folosesc functii de combinare a culorilor fragmentelor; dintre cele mai folosite este urmatoarea functie:
outputColor(f0,f1) = f0*src + f1*dst
unde src si dst sunt parametri ce pot fi alterati, iar f0 si f1 sunt culorile fragmentelor.
Daca setam src=1 si dst=1 avem:
outputColor(f0, f1) = f0 + f1
Putem COMUTA argumentele functiei astfel:
outputColor(f1, f0) = f1 + f0 = f0 + f1 = outputColor(f0, f1).
Iata o functie de combinare comutativa a culorilor.
Pentru a obtine o metoda necomutativa putem sa ne gandim la cazul in care dorim transparenta unei suprafete in functie de o valoare alpha.(de eg. dorim o suprafata ce ar semana cu un geam).
Avem:
outputColor(f0,f1) = f0*src + f1*dst
Setam src = alphaWindow si dst = 1.0 - alphaWindow, obtinem:
outputColor(f0, f1) = f0 * alphaWindow + f1 - f1*alphaWindow =
alphaWindow(f0-f1)+f1
Comutam argumentele functiei, sa vedem ce se intampla
outputColor(f1, f0) = f1*alphaWindow + f0 - f1*alphaWindow =
-alphaWindow(f0-f1) + f0 != alphaWindow(f0-f1)+f1 => daca vom comuta argumentele functiei, adica ordinea in care se face combinarea fragmentelor din scena nu vom obtine acelasi rezultat.
Well, that's the theory, raspunsul e DA si functia de mai sus, necomutativa se foloseste foarte des in practica.. cum se rezolva problema sortarii? Pai, folosind solutii aproximative, depth peeling and so on
