Renderowanie oceanu Źródło: „Procedural Ocean Effects” László Szécsi Khashayar Arman Budapest University of Technology
Fale na głębokiej wodzie Głę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ę.
Fale na głębokiej wodzie
Fale na głębokiej wodzie Prędkość fali: Prędkość zmiany fazy przez cząstkę: Faza początkowa cząstki: Faza cząstki: Wektor przemieszczenia cząstki:
Fale na płytkiej wodzie Wraz ze zmniejszeniem głębokości wody maleje prędkość i długość fali.
Fale na płytkiej wodzie Skró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
Fale na płytkiej wodzie Gdy 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:
Fale na płytkiej wodzie Gdy 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)
Fale na płytkiej wodzie Gdy 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)
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
Geometria siatki wody
Geometria siatki wody Nieskończony ocean wymaga zmiany liczenia głębokości pikseli:
Liczenie koloru wody Aproksymacja Schlicka współczynnika Fresnela: 1. 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
Liczenie koloru wody
Liczenie koloru odbicia Kolor 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)) * 0.6 + 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);
Liczenie koloru odbicia
Liczenie koloru odbicia
Liczenie koloru odbicia
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:
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:
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:
System cząstek dla piany
System cząstek dla piany