Jak stworzyć dobry metalowy shader?
Dla różnych metali i powiedzmy mniej więcej erodowane / zardzewiałe i tak dalej.
Wiem, że jedna różnica w porównaniu ze zwykłymi materiałami polega na tym, że metal powinien „zabarwić” światło zwierciadlane, ale kiedy robię to na przykład ze złotem, po prostu wygląda „żółty”, a nie metaliczny.
Każda pomoc doceniona!
graphics
shaders
graphic-effects
Valmond
źródło
źródło
Odpowiedzi:
Niedawno stworzyłem shadery dla czystych i szczotkowanych metali dla mojej gry w toku i jestem całkiem zadowolony z rezultatów.
Czysty metal: Najważniejszą cechą moich eksperymentów były odbicia środowiska z mapami kostek. Wdrożyłem je w środowiskach renderowania w czasie rzeczywistym, ale także obrazy statyczne często dają dobre wyniki i łatwiej je rozmazać. Drugą najważniejszą cechą był efekt Fresnela, który poprawia silhuette obiektów. Daje to na przykład okrągły wygląd kulek. Oświetlenie zwierciadlane niekoniecznie jest potrzebne, ponieważ mapa kostki może bezpośrednio podświetlać. Renderowanie HDR jest również ważne, aby odbicia mapy kostki wyglądały dobrze.
Szczotkowanego metalu: Dla metali szczotkowane uzyskać dobre rezultaty dość łatwo za pomocą tekstury pędzla, coś jak towraz z oświetleniem anizotropowym. W przypadku oświetlenia anizotropowego można znaleźć samouczki z Internetu, ale zaimplementowałem własne, używając bazy blinn-phong jako podstawy, ale z pół-wektora wyeliminowałem 80% kierunku stycznej. Oznacza to, że oprócz normalnych w swoich modelach potrzebujesz stycznych lub bitangentów. Odbicia otoczenia są trudne dla szczotkowanego metalu. Możesz próbkować z wielu kierunków z mapy sześcianu na podstawie kierunków stycznych / bitangentów, ale możesz potrzebować wielu próbek, aby uzyskać dobre wyniki. Nie jest to jednak konieczne, ponieważ tekstura i anizotropowe oświetlenie z wieloma źródłami światła już wygląda całkiem ładnie. Wynik końcowy w moim przypadku wygląda następująco:
źródło
Jak powiedział Nicol w swoim komentarzu, w wysokiej jakości metalowym shaderze jest wiele rzeczy. Aby uzyskać najlepsze wyniki, Twój renderer musi być poprawny pod względem gamma i korzystać z fizycznych modeli cieniowania (zobacz w szczególności dwa artykuły Naty Hoffman pod tym linkiem).
Biorąc to pod uwagę, typowym sposobem na wykonanie materiału metalowego jest uzyskanie bardzo niskiego lub nieistniejącego rozproszonego koloru i wysokiego współczynnika odbicia światła w zakresie od 50% do 100% (w liniowej przestrzeni kolorów). Jak zauważyłeś, w przypadku niektórych metali lusterko będzie zabarwione.
Ponieważ wygląd metalu jest całkowicie lustrzany, z niewielkim rozproszeniem lub bez rozproszenia, odbicie będzie niezwykle ważne. Jeśli tylko w szczególny sposób odbija światła punktowe, uzyskasz wygląd czarnego materiału, ponieważ brakuje reszty otoczenia (nawet bardzo szorstki metal odbije zamazany obraz swojego otoczenia). Typowym sposobem na uzyskanie większej refleksji jest użycie mapy sześciennej. Realistyczne odbicie w grafice w czasie rzeczywistym jest jednak ogromnym tematem i istnieje wiele różnych podejść.
źródło