habe einen neuen Shader gebastelt und den mal als kurzes Video bei YouTube hochgeladen. :)
Gruß
Zudo
Re: [Projekt] Eisschnee Shader
Verfasst: 10.08.2010, 00:04
von Krishty
In your face, Crysis!
Hast du den mit Megatextures kombiniert? Und – Gretchenfrage – sieht er nur durch enorme Texturdichte so gut aus, oder geht das auch mit niedrig aufgelöstem Boden? :P
Gruß, Ky
Re: [Projekt] Eisschnee Shader
Verfasst: 10.08.2010, 00:08
von Zudomon
Krishty hat geschrieben:Hast du den mit Megatextures kombiniert?
Ne, Megatextures sind das nicht... eigentlich nur ein paar normale Texturen und ein bischen geglitzer drauf. :D
Am ehesten noch mit Detailmapping vergleichbar.
Re: [Projekt] Eisschnee Shader
Verfasst: 10.08.2010, 00:08
von Krishty
Sehr schön – dann beide Daumen hoch statt nur einem ;)
Re: [Projekt] Eisschnee Shader
Verfasst: 10.08.2010, 00:11
von Zudomon
Hey, du hast deinen Beitrag ja nochmal editiert... also um dann noch auf deine Gretchenfrage zu antworten:
Die Texturen haben eine Maximalauflösung von 512x512.
Re: [Projekt] Eisschnee Shader
Verfasst: 10.08.2010, 01:37
von Chromanoid
Sieht geil aus!
Im Video erkennt man es schlecht, aber sind die Glitter auch weiter hinten zu sehen?
Wenn nicht könntest du das zumindest für die Pulverschneevariante noch einbauen :). Bei Rendermonkey gibt es einen wesentlich schlichteren Glitter-Shader, der Glitter anhand Pixelposition und Viewvector ermittelt - dort sieht man dann allerdings nur einen leuchtenden Pixel.
Re: [Projekt] Eisschnee Shader
Verfasst: 10.08.2010, 08:16
von Schrompf
Sieht gut aus. Wie sieht der Quelltext dazu aus? Und wie hast Du den Sonnenglanz umgesetzt? Das kommt im Video leider nicht vor, ist aber eins der Sachen, die mir in der Realität immer sehr gefallen :-)
Re: [Projekt] Eisschnee Shader
Verfasst: 10.08.2010, 10:33
von CodingCat
Was soll man sagen, geradezu unverschämt hübsch bei allem, was man bisher in die Richtung gesehen hat. Der Übergang Eis/Gras ist dir auch wunderbar gelungen. Sehe ich das richtig, dass du am Rand sogar die Gras-Bumpmap nutzt, um das Gras von oben nach unten einzufrieren? Eine großartige Tiefenwirkung hast du da, wenn die Kamera sich auf das Eis zu bewegt. Chromanoid hat Recht, in der Ferne könntest du dir noch etwas mehr Glitzer erlauben. :)
Re: [Projekt] Eisschnee Shader
Verfasst: 10.08.2010, 16:02
von Zudomon
Danke für das viele Lob... das ist wie immer motivierend! :D
Ihr habt Recht, der Glitter ist in der Entfernung nicht. Das liegt am Mipmapping der Texturen. Ich bin aber auch der Meinung, dass es sehr wichtig ist, dass es auch in der Ferne ab und an funkelt... das Problem ist hier allerdings die Engine. Habe die von früher ausgegraben und wollte da nichts mehr an dem Quellcode ändern, sondern nur schonmal den Shader ausarbeiten, da ich diesen damals schon begonnen hatte.
Schrompf hat geschrieben:Wie sieht der Quelltext dazu aus? Und wie hast Du den Sonnenglanz umgesetzt?
Tut mir leid dich da wieder enttäuschen zu müssen, aber da das ganze bald kommerziell genutzt werden soll, kann ich den Quellcode nicht rausgeben. (Falls das nun wieder eine Lawine der Empörung nach sich zieht, dann wird das hier für mich der letzte Vorstellungsthread gewesen sein)
Der Glitter ist nicht vom Sonnenglanz abhängig. Ich wollte nicht, dass man zuviel mit Lichtquellen rumhantieren muss.
@CodingCat
Bumpmaps sind da nicht drin, ich habe auch zu keiner der Texturen eine Normalmap/Höhenkarte.
In den letzten Sekunden des Videos kann man noch einen anderen Effekt, der in dem Shader implementiert ist, erahnen. Der Schnee taut nämlich auf. :D
Um das mal komplett verfolgen zu können, habe ich den ganzen Prozess nochmal aufgenommen. Das Video ist allerdings recht lang, da der auftauen so langsam von statten geht, aber ist ja auch ne menge Schnee, die da wegtaut. :lol: :lol: :lol:
Gruß
Zudo
Re: [Projekt] Eisschnee Shader
Verfasst: 10.08.2010, 16:08
von Alexander Kornrumpf
Tut mir leid dich da wieder enttäuschen zu müssen, aber da das ganze bald kommerziell genutzt werden soll, kann ich den Quellcode nicht rausgeben. (Falls das nun wieder eine Lawine der Empörung nach sich zieht, dann wird das hier für mich der letzte Vorstellungsthread gewesen sein)
Versteh das jetzt bitte nicht als Empörung und lass dich dadurch von nichts abhalten, aber ich denke ein Paper zu schreiben in dem die Grundideen erklärt werden, ohne Quellcode widerspricht einer kommerziellen Veröffentlichung nicht. Schade dass es keine zfxCon mehr gibt, um solcherlei Paper zumindest einen halbwegs vernünftigen Rahmen zu geben.
Re: [Projekt] Eisschnee Shader
Verfasst: 10.08.2010, 19:14
von Aramis
Sieht toll aus, das einzige was stoert sind die Wiederholungen im Schnee. Wenn du die noch in den Griff bekommst ist es der beste Schnee-Shader den ich bislang Realtime gesehen hab - inklusive diesem … Resourcentyranosaurus von Schnee den Crysis nutzt.
Re: [Projekt] Eisschnee Shader
Verfasst: 10.08.2010, 21:20
von Zudomon
Alexander Kornrumpf hat geschrieben:
Tut mir leid dich da wieder enttäuschen zu müssen, aber da das ganze bald kommerziell genutzt werden soll, kann ich den Quellcode nicht rausgeben. (Falls das nun wieder eine Lawine der Empörung nach sich zieht, dann wird das hier für mich der letzte Vorstellungsthread gewesen sein)
Versteh das jetzt bitte nicht als Empörung und lass dich dadurch von nichts abhalten, aber ich denke ein Paper zu schreiben in dem die Grundideen erklärt werden, ohne Quellcode widerspricht einer kommerziellen Veröffentlichung nicht. Schade dass es keine zfxCon mehr gibt, um solcherlei Paper zumindest einen halbwegs vernünftigen Rahmen zu geben.
Ich glaube ehrlich gesagt nicht, dass das "Verfahren" dabei einem Paper genügt... mein damaliger Professor hat mich aber auch immer dazu gedrängelt, doch mal Paper zu veröffentlichen. Vielleicht werde ich dies auch eines Tages tun. ;)
Aramis hat geschrieben:Sieht toll aus, das einzige was stoert sind die Wiederholungen im Schnee. Wenn du die noch in den Griff bekommst ist es der beste Schnee-Shader den ich bislang Realtime gesehen hab - inklusive diesem … Resourcentyranosaurus von Schnee den Crysis nutzt.
Danke für deine konstruktive Kritik. Ich habe versucht, mich diesem Punkt auch anzunehmen und hier das Ergebnis... :D
Dabei dachte ich mir, wäre es besser, wenn ich keine zusätzliche Textur binden müsste. Also die Schneetextur ist immernoch über die bereits verwendete 512x512 Textur gemacht. Aber hoffentlich sind nun die Wiederholungen nicht mehr so auffällig.
Jetzt ärgert es mich doch etwas, dass das Gefunkel nur im Vordergrund ist... aber ich werde mich wohl noch gedulden müssen. :roll:
Re: [Projekt] Eisschnee Shader
Verfasst: 10.08.2010, 21:59
von Schrompf
Auf die Entfernung sieht's wirklich nicht mehr so reizvoll aus wie aus unmittelbarer Nähe... trotzdem noch ein schicker Effekt. Umso betrüblicher finde ich, dass Du Deine Kenntnisse nicht teilen willst. Aber die Diskussion hatten wir ja schon, von daher: mach, wie Du magst.
Re: [Projekt] Eisschnee Shader
Verfasst: 11.08.2010, 10:55
von kimmi
Vielleicht wäre eine erneute zfxCon in der Tat eine gute Idee. Ich will das Paper nämlich auch lesen!
Gruß Kimmi
Re: [Projekt] Eisschnee Shader
Verfasst: 11.08.2010, 11:49
von Chromanoid
Zudomon hat geschrieben:Jetzt ärgert es mich doch etwas, dass das Gefunkel nur im Vordergrund ist... aber ich werde mich wohl noch gedulden müssen. :roll:
Hau doch einfach noch den Glitter-Shader aus Rendermonkey drüber - hast du das mal probiert? Die Logik lässt sich bestimmt gut in deinen Shader einbauen...
Hier ein screen von dem Teil:
Re: [Projekt] Eisschnee Shader
Verfasst: 11.08.2010, 12:47
von Alexander Kornrumpf
Ich denke was am meisten stört ist dass der funkelnde Bereich im Schatten liegt. Wie soll das gehen?
Re: [Projekt] Eisschnee Shader
Verfasst: 11.08.2010, 13:58
von Zudomon
Chromanoid hat geschrieben:
Zudomon hat geschrieben:Jetzt ärgert es mich doch etwas, dass das Gefunkel nur im Vordergrund ist... aber ich werde mich wohl noch gedulden müssen. :roll:
Hau doch einfach noch den Glitter-Shader aus Rendermonkey drüber - hast du das mal probiert? Die Logik lässt sich bestimmt gut in deinen Shader einbauen...
Hier ein screen von dem Teil:
glitter.png
Vorerst wollte ich keine Zeit mehr investieren... aber vom Prinzip her bräuchte ich nur das MipMapLODBias für bestimmte Texturen ändern... das könnte ich sogar im Effekt... aber da ich hier nur ein Pixelshader und keinen habe, muss ich abwarten.
Alexander Kornrumpf hat geschrieben:Ich denke was am meisten stört ist dass der funkelnde Bereich im Schatten liegt. Wie soll das gehen?
Hmmmm... garnicht leicht zu beantworten... möglich wäre es nämlich schon. Man muss sich erstmal überlegen, um was für einen Effekt es sich handelt. Ohne zu weit auszuholen und auch nur soweit, wie es mein halbwissen über Physik zulässt, es handelt sich ja um Eiskristalle. Da diese das Licht in verschiedene Richtung brechen könnte man das ganze am ehesten mit einer Specularreflektion vergleichen. Und wenn mich nun nicht alles täuscht, dann kann man Specularreflektionen auch im Schatten haben, da es sich ja um eine Reflektion handelt. Sicher bin ich mir aber irgendwie nicht. Hat man dafür nicht dann auch einen "Reflektionsschatten" an anderer Stelle?
Wie auch immer, also bei wird das Licht, was im Shader ist noch einfach dazu multipliziert. Also glitzert es in dunklen ecken schwächer.
Re: [Projekt] Eisschnee Shader
Verfasst: 11.08.2010, 14:09
von Krishty
Selbstverständlich glitzert Schnee auch im Schatten – wenn nicht die Sonne drauf strahlt, dann strahlt Himmelslicht drauf oder der Glanz umliegender Schneekristalle, die noch in der Sonne liegen. Schneeglanz könnte anisotroper nicht sein (selbst, wenn man ihn von allen Seiten gleichmäßig beleuchtet, glitzert er); darum ist es auch schwer, zu sagen, wo der Glanz herkommt. Glanzlos ist Schnee nur in völliger Dunkelheit. Gerade dadurch, dass er im Schatten nicht schlagartig so dunkel wird wie andere Oberflächen, sehen wir ihn als besonders weiß und besonders rein an.
Spekuläres Licht (jedenfalls die Phänomene, die mit dem Modell des spekulären Lichts erklärt werden) gibt es im Schatten auch, aber bei weitem schwächer – weil Objekte, denen wir spekuläres Licht zuschreiben, oft viel gleichmäßigere Oberflächen und viel geringere Albedo haben, als dass seitlich eingestreutes Licht merklich stark in unser Auge reflektiert würde.
Re: [Projekt] Eisschnee Shader
Verfasst: 11.08.2010, 14:12
von Zudomon
Ich Trottel!! :lol:
Man konnte in dem Editor damals doch das MipMapLODBias pro Textur umstellen, naja, damit hab ich jetzt auch geglitzer in beliebiger Entfernung. Aber ich muss sagen, dass gefällt mir so nicht mehr. Das erinnert dann doch eher an gewollt und nicht gekonnt.
Falls ihr anderer Meinung seit, und euch das so doch realistischer vorkommt, dann lasst es mich wissen. Wenn euch sonst noch was einfällt, wie man das ganze ansprechender machen könnte, lasst es mich auch wissen. ;)
Re: [Projekt] Eisschnee Shader
Verfasst: 11.08.2010, 14:41
von Zudomon
So... und nochmal... nun wird der Effekt einfach nochmal ein wenig ausgeblendet. Nun bin ich zufrieden mit dem Ergebnis. :D
Re: [Projekt] Eisschnee Shader
Verfasst: 11.08.2010, 14:43
von Chromanoid
video pls :) evt. könntest du die glanzstärke ja noch abhängig von der belichtung machen...
Re: [Projekt] Eisschnee Shader
Verfasst: 11.08.2010, 14:46
von Alexander Kornrumpf
Es stört mich immer noch dass das Glitzern Im am stärksten ausgeleuchteten Bereich (oben rechts) am wenigsten zu sehen ist. Schnee unter voller Sonneneinstrahlung reflektiert extrem viel Licht, wie jeder weiß der seine Skibrille mal im Hotel vergessen hat. Und das kommt hier irgendwie nicht rüber.
Das zweite Bild sieht vielleicht auch vor allem deshalb besser aus weil es keine helle Fläche gibt.
Re: [Projekt] Eisschnee Shader
Verfasst: 11.08.2010, 15:20
von Zudomon
Chromanoid hat geschrieben:video pls :) evt. könntest du die glanzstärke ja noch abhängig von der belichtung machen...
Mach ich hinterher nochmal. Die Belichtung beeinflust ja schon die Glanzstärke. Allerdings sieht das auf hellem Schnee eh alles nicht so gut aus, deswegen mache ich auch die Screens immer im dunkleren Bereich. :D
Alexander Kornrumpf hat geschrieben:Es stört mich immer noch dass das Glitzern Im am stärksten ausgeleuchteten Bereich (oben rechts) am wenigsten zu sehen ist. Schnee unter voller Sonneneinstrahlung reflektiert extrem viel Licht, wie jeder weiß der seine Skibrille mal im Hotel vergessen hat. Und das kommt hier irgendwie nicht rüber.
Das zweite Bild sieht vielleicht auch vor allem deshalb besser aus weil es keine helle Fläche gibt.
Am besten wäre, wenn du entsprechende Beispielfotos findest, die explizit zeigen, was du meinst bzw. wie es dann aussehen muss. Dann könnte ich mich daran orientieren.
Re: [Projekt] Eisschnee Shader
Verfasst: 11.08.2010, 15:30
von Alexander Kornrumpf
jetzt nach weniger als einer minute google, ich bin sicher es gibt bessere Bilder davon
Es ist in der mitte so hell, dass die Textur (in der ursprünglichen Bedeutung des Wortes) des Schnees völlig verschwindet und nur noch eine weiße Fläche zu sehen ist. Rechts und links davon sieht es am ehesten so aus wie in deinem Shader, aber davor im Schatten seh ich keinerlei Glitzern. (Wobei ich nicht bestreiten will dass dort eins sein könnte, ihr seid die Experten.)
Re: [Projekt] Eisschnee Shader
Verfasst: 11.08.2010, 15:59
von Krishty
Im dunkeln glitzert er tatsächlich nicht … hmmm. Dann hatte ich wohl irgendwas total falsch in Erinnerung, sry.
Eigentlich ein perfektes Einsatzgebiet für HDR-Rendering :)
Re: [Projekt] Eisschnee Shader
Verfasst: 11.08.2010, 16:09
von Alexander Kornrumpf
Ja dein Bild zeigt alles was wir wissen wollten auf einmal, super.
Es zeigt auch dass er auf "mittelhellen" Flächen echt nah dran ist (was ein Lob sein soll). Aber auf dunklen und sehr hellen könnte noch etwas Schliff angelegt werden.
Re: [Projekt] Eisschnee Shader
Verfasst: 11.08.2010, 16:28
von eXile
Krishty hat geschrieben:Im dunkeln glitzert er tatsächlich nicht … hmmm. Dann hatte ich wohl irgendwas total falsch in Erinnerung, sry.
Er glitzert schon noch, nur überhaupt nicht mehr so stark, als wenn er direkt durch eine Lichtquelle (Sonne) beleuchtet wird. Der Glitzereffekt kommt ja nur dadurch zu stande, dass die Hemisphäre um den betrachteten Punkt hochfrequente Änderungen der Strahldichte aufweist, und darum ein kleiner Wechsel des View-Vektors eine große Änderung der vom Schneepartikel reflektierten Strahlleistung in Richtung des View-Vektors bewirken kann.
Liegt der betrachtete Punkt im Schnee im Schatten, so weist die den Punkt umgebene Hemisphere nur relativ niedrigfrequente Änderungen der Strahldichte auf, und die gesamte Bestrahlungsstärke auf diesen Punkt ist natürlich wesentlich geringer. Damit ist einerseits die relektierte Strahldichte auch geringer (der Punkt im Schnee ist also dunkler, wenn er im Schatten liegt - Überraschung!). Andererseits bewirkt eine Änderung des View-Vektors zwar durchaus eine Änderung der reflektierten Strahlleistung in Richtung des View-Vektors, aber die reflektierte Strahlleistung bleibt in jedem Fall geringer als im direkt beleuchteten Falle, und die Änderung der Strahlleistung ist kaum bemerkbar.
Kurz: Natürlich glitzern Schneepartikel auch, wenn es etwas dunkler ist, aber der Effekt ist nicht sichtbar. Würden die Schneepartikel plötzlich nicht mehr glitzern, nur weil es etwas dunkler ist, hätten sich ja die physikalischen Eigenschaften des Partikels wie von Zauberhand verändern müssen, was nicht sein kann :lol:
Re: [Projekt] Eisschnee Shader
Verfasst: 11.08.2010, 16:44
von Krishty
Ganz genau. Ich hatte fälschlicherweise in Erinnerung, dass sich nicht die Hemisphäre hochfrequent ändern muss, sondern die Reflexionsfläche des Partikels.
Re: [Projekt] Eisschnee Shader
Verfasst: 11.08.2010, 21:16
von Unknown GER
Schnee besteht aus Eiskristallen von denen nicht wenige kleine Plättchen sind. Die Plättchen, bei denen der Einfallwinkel des Lichts gleich dem Ausfallwinkel zum Beobachter ist, sind genau die Glanzpunkte. Diese sind in der Wahrnehmung (fast) so hell wie die Lichtquelle. Diese darf aber erst am Schneepartikel das erste mal gestreut/reflektiert werden, nur das direkte Licht ist i.A. stark genug, so dass sich der Partikel von anderen in seiner Umgebung abheben kann, die nur ein/mehrfach gestreutes Licht abbekommen. Hier mal ne Langzeitaufnahme von Schnee bei Nacht:
edit: Und hier sehr schön zu sehen für den Menschen kaum ein Unterschied von links zu rechts in der Helligkeit. Links kommt aber keine direkte Sonneneinstrahlung an.
edit2: Wie entscheidest du wo der Schnee als erstes taut? Steigung, lokale Umgebung oder sogar eine kleine Hitzetransfersimulation? Gibt ein schönes Paper dazu: Heat Transfer Simulation for Modeling Realistic Winter Sceneries.
Re: [Projekt] Eisschnee Shader
Verfasst: 11.08.2010, 21:53
von Zudomon
Sehr coole Bilder... die geben eine menge Inspiration! Danke dafür!
Und euren Worten zu lauschen und neue physikalische Erkenntnisse sammeln finde ich auch sehr interessant. :)
Mein Problem ist bei allem immer, ich kann mit Formeln usw. kaum was anfangen. Für mich ist es besser, wenn es mit verständlichen Worten erklärt wird, oder noch besser, wenn es dafür Animationsfilme oder sowas gibt, die den Vorgang visuel darstellen.
Fasst all meine Effekte basieren auf Try'n'Error...
Das Tauen ist über die Steigung geregelt. Mir ist bei sowas eigentlich immer wichtig, dass es mit den einfachsten Mitteln den größten Effekt hat. Eine Hitzesimulation wäre in der Tat sehr interessant, aber vorerst nicht wichtig. Wenn man irgendwann mal einbaut, dass bei genügend Hitze Materialien auch Feuer fangen können, dann wäre das natürlich extrem geil. :D