1 Renderowanie oceanu Źródło: „Procedural Ocean Effects” László Szécsi Khashayar Arman Budapest University of Technology
2 Fale na głębokiej wodzieGłębokość wody co najmniej większa od połowy długości fali. Cząsteczki na powierzchni wody poruszają się po okręgach. Cząsteczki znajdujące się w różnych fazach tworzą powierzchnię fali – cykloidę.
3 Fale na głębokiej wodzie
4 Fale na głębokiej wodziePrędkość fali: Prędkość zmiany fazy przez cząstkę: Faza początkowa cząstki: Faza cząstki: Wektor przemieszczenia cząstki:
5 Fale na płytkiej wodzieWraz ze zmniejszeniem głębokości wody maleje prędkość i długość fali.
6 Fale na płytkiej wodzieSkrócona długość fali: Przy założeniu, że dno ma stałe nachylenie: Istnieje wzór przybliżony na fazę początkową: Wartość: wykorzystana zostanie jako współczynnik odległości od plaży Wzór na fazę: (przeszliśmy z wody 1D do wody 2D) p - pozycja cząstki k – kierunek fali
7 Fale na płytkiej wodzieGdy fala zbliża się do brzegu: 1. Fala ugina się w kierunku brzegu (refrakcja) 2. Fala załamuje się (np. gdy wysokość >= 1.3 głębokości) 3. Szczyty fal stają się bardziej strome Transformacja, która przybliża te efekty:
8 Fale na płytkiej wodzieGdy fala zbliża się do brzegu: 1. Fala ugina się w kierunku brzegu (refrakcja) 2. Fala załamuje się (np. gdy wysokość >= 1.3 głębokości) 3. Szczyty fal stają się bardziej strome Transformacja, która przybliża te efekty: Wektor przemieszczenia cząstki: b – normalna dna (plaży)
9 Fale na płytkiej wodzieGdy fala zbliża się do brzegu: 1. Fala ugina się w kierunku brzegu (refrakcja) 2. Fala załamuje się (np. gdy wysokość >= 1.3 głębokości) 3. Szczyty fal stają się bardziej strome Transformacja, która przybliża te efekty: Wektor przemieszczenia cząstki: b – normalna dna (plaży)
10 Sumowanie fal Przesunięta pozycja punktu p na powierzchni wody:Pochodne wysokości w kierunkach U, V (wyznaczających płaszczyznę oceanu): Normalna: Te same równania powierzchni wody służą do: A) Generowania siatki wody B) Generowania macierzy przekształceń dla statków na wodzie
11 Geometria siatki wody
12
13 Geometria siatki wody Nieskończony ocean wymaga zmiany liczenia głębokości pikseli:
14 Liczenie koloru wody Aproksymacja Schlicka współczynnika Fresnela: C_deep – kolor wody 2. C_shallow – ustalony kolor - efekt rozpraszania światła przy powierzchni wody 2. C_bottom – kolor dna 3. C_env – kolor idealnego odbicia
15 Liczenie koloru wody
16 Liczenie koloru odbiciaKolor odbicia A) Środowisko B) Bardzo silny rozbłysk zwierciadlany dla słońca C) Statki jako pary elipsoid float4 reflectedColor = texCUBElod(environmentCubeSampler, float4(reflDir, input.lod)) * float4(1000, 1000, 1000, 0) * pow(dot(float3(0.86,0.5,0.0), reflDir), 200.0); // Śledzenie promienia dla par elipsoid dla każdego ze statków if(max(t1,t2) > 0) reflectedColor = float4(1.0, 1.0, 1.0, 1.0); // reflectedColor = float4(0.02, 0.006, 0.3, 1.0);
17 Liczenie koloru odbicia
18 Liczenie koloru odbicia
19 Liczenie koloru odbicia
20 Mapowanie wypukłości Przestrzeń styczna jest znana na podstawie równania powierzchni wody. Tekstury wypukłości „przesuwają się” w czasie po powierzchni oceanu. Dobry efekt uzyskuje się po zsumowaniu czterech tak przesuwających się tekstur. Pojedyncza mapa wypukłości:
21 Mapowanie wypukłości Przestrzeń styczna jest znana na podstawie równania powierzchni wody. Tekstury wypukłości „przesuwają się” w czasie po powierzchni oceanu. Dobry efekt uzyskuje się po zsumowaniu czterech tak przesuwających się tekstur. Efekt użycia pojedynczej mapy wypukłości:
22 Mapowanie wypukłości Przestrzeń styczna jest znana na podstawie równania powierzchni wody. Tekstury wypukłości „przesuwają się” w czasie po powierzchni oceanu. Dobry efekt uzyskuje się po zsumowaniu czterech tak przesuwających się tekstur. Efekt sumowania czterech map wypukłości:
23 System cząstek dla piany
24 System cząstek dla piany