Mam nieskończoną sześciokątną podłogę, wygenerowaną przez mozaikowanie siatki punktów w parze modułów cieniujących mozaikowania:
Zauważ, że jest to płaski szkielet - „cienie” to sztuczka oświetleniowa:
Teraz chciałbym, aby wyglądało to na grube, refrakcyjne szkło, ale nie jestem pewien, jak postępować.
Pierwszą rzeczą, jaka przyszła mi do głowy, jest
- ustaw mundur zawierający żądaną „grubość” bloków
- Podczas obliczania oświetlenia użyj prawa Snell'a, aby obliczyć długość ścieżki optycznej, którą promień przejdzie przez blok heksadecym, jeśli faktycznie jest tak gruby, jak mówi mundur „grubości”, i zsumuj wartość alfa na tej długości. To dałoby przezroczystość, ale nie radzi sobie z takimi rzeczami jak odbicie wewnętrzne / TIR itp.
Jeszcze tego nie próbowałem, więc nie jestem pewien, jaki byłby efekt wizualny.
Ostatecznie, na tym konkretnym poziomie, staram się uzyskać ten szklany, sześciokątny wygląd podłogi użyty w Tron: Dziedzictwo podczas bitwy na dysku. ( Zobacz to zdjęcie jako przykład .)
Propozycje?
Odpowiedzi:
Ten artykuł w GPU Gems zawiera szczegółowe informacje na temat refrakcji, która może dać całkiem niezłe wyniki
W najbardziej podstawowym tego słowa znaczeniu
Poniższa lista pokazuje moduł cieniujący, który demonstruje to podejście
Następne obrazy ilustrują te trzy kroki
W tym samym artykule znajdują się bardziej zaawansowane techniki, które mogą osiągnąć znacznie bardziej atrakcyjny wygląd
Aby uzyskać podobny efekt w Unity, możesz zajrzeć na stronę wiki The Refraction Shader
źródło
Wezmę pokazany obraz jako odniesienie do tego, jak wyobrażam sobie efekt. Algorytm, o którym myślę, jest prosty:
Jeśli chodzi o moduł cieniujący załamanie, należy symulować szkło, które można zrobić
Właśnie pomyślałem o tym pomyśle, więc go nie przetestowałem. Jestem pewien, że potrzebuje więcej pracy. Może zrobię to, kiedy wrócę z pracy.
źródło