Wie kann man realistisches Eis rendern?

45

Ich versuche, in Unity einen Ice-Shader zu schreiben, der gut und zumindest halbrealistisch aussieht.

Wenn die folgende Aufnahme ( bei Google gefunden ) CG wäre, welche würde der Shader enthalten? (die vordergrundhöhle). Ich könnte mich irren, aber es sieht so aus, als hätte es sogar ein anderes Beleuchtungsmodell als das Standard-Diffusmodell.

Bildbeschreibung hier eingeben

Daniel Pendergast
quelle
Hier ist ein Tutorial für DirectX 11 mit HLSL und C ++. Vielleicht kannst du die Prinzipien nachlesen. Wo haben Sie gesehen, dass das Bild CG ist? Es wird als echt gemeldet.
MichaelHouse
Ich habe es nicht gesagt. Ich sagte "wenn" es war. und danke! Ich werde es überprüfen
Daniel Pendergast
9
Dieses Phänomen wird als Streuung unter der Oberfläche bezeichnet. Es wird verursacht, weil Licht die Oberfläche des Materials durchdringt und durch das Medium des Materials selbst gestreut wird. Deshalb sehen zum Beispiel menschliche Ohren bei Gegenlicht rot aus. Hier ist ein Blog-Beitrag, der erklärt, wie jemand versucht, damit einen Eis-Effekt zu erzeugen.
Ah, tut mir leid, dass ich das "Wenn" verpasst habe.
MichaelHouse
@ Byte56, kein Problem
Daniel Pendergast

Antworten:

53

Eis ist lichtdurchlässig, daher glaube ich, dass das Wichtigste, was Sie in Ihrem Shader simulieren müssen, um realistische Ergebnisse zu erzielen, die Streuung unter der Oberfläche oder kurz SSS ist. SSS beschreibt im Wesentlichen, wie Lichtstrahlen die Oberfläche von durchscheinenden Objekten durchdringen und darunter streuen und dabei unregelmäßig mehrfach reflektiert werden, bevor sie schließlich durch einen anderen Ort austreten.

Hier ist ein Bild, von dem ich denke, dass es den Effekt gut demonstriert:

Bildbeschreibung hier eingeben

Aus dem Bild in Ihrer Frage können wir auch ersehen, dass Eis ziemlich reflektierend ist. Daher sollten Sie es wahrscheinlich auch mit einer Art Umgebungsabbildung für Reflexionen kombinieren und die Spiegelung verbessern , um die Glanzlichter zu verstärken.

Sie können auch andere Dinge ausprobieren, z. B. ein bisschen Brechung hinzufügen, eine Art Rauschtextur überlagern , um ein bisschen Variation hinzuzufügen, oder sogar eine Art Bump-Mapping oder Verschiebungs-Mapping für sehr kleine und subtile Details.

Ressourcen

Einige andere Ressourcen, die ich beim Schreiben der Antwort gefunden habe:

David Gouveia
quelle
Möglicherweise möchten Sie auch Ambient Occlusion ( en.wikipedia.org/wiki/Ambient_occlusion ) untersuchen, um die Verdunkelung in den Klippen zu simulieren, da es normalerweise ziemlich schwierig ist, nur mit Schatten die richtigen Ergebnisse zu erzielen.
Koarl