Rendering wolumetryczny - cz. II

20.12.2010 - Adam Błaszkiewicz
TrudnośćTrudnośćTrudność
Krok 8 - Mgła

Wykorzystując wcześniej zapisaną mapę głębokości, możemy prosto utworzyć czarną mgłę. Przyciemniamy punkty w zależności od ich odległości od kamery. Dodatkowo używamy tutaj wcześniej obliczonych przy okazji wartości: minimalnej i maksymalnej głębokości piksela (maksymalnej spośród skończonych głębokości). Punkty leżące w minimalnej głębokości nie będą w ogóle zamglone, natomiast punkty leżące w maksymalnej głębokości będą zamglone ze współczynnikiem 0.8.

1
2
3
4
5
6
7
8
9
10
11
double depthAmplitudeInv = 0.8 / (maxDepth - minDepth);
for (int y = 1; y < sizeY + 1; ++y)
{
    for (int x = 1; x < sizeX + 1; ++x)
    {
        double depth = (pixels[x, y].depth - minDepth) * depthAmplitudeInv;
        pixels[x, y].color *= 1 - depth;
    }
 
    // (...)
}

5
Twoja ocena: Brak Ocena: 5 (2 ocen)

Copyright © 2008-2010 Wrocławski Portal Informatyczny

design: rafalpolito.com