.
|
|
| Autor | Beitrag |
|---|---|
|
025 04.01.2005, 16:59 HammerBlade |
Die Settings für die Reflections gelten nur für das Wasser, denn in den Optionen steht da ja auch Water Detail. Wenn ich Reflect all an habe spiegeln sich auch dynamische Sachen im Wasser, z.B. Fässer oder das Boot. Bei Reflect World spiegelt sich nur die statische Levelgeometrie, das wird imo nicht durch eine Cubemap gemacht, sondern on Runtime. Bei Simple Reflections wird dann imo auf die Cubemaps zurückgegriffen, die dann auch nur die statische Levelgeometrie reflektieren. Kann sein das ich mich bei den Cubemaps irre, aber bei mir kann ich keinen Unterschied zwichen Reflect World und Simple Reflections feststellen. Fazit 1: - Die Bump- und Normal-Maps glatt machen. Damit hab ich schon angefangen, bin aber noch nicht weit gekommen. Mein bisheriges Resultat ist, das ich die Bump- und Normal-Maps des Wassers flach gemacht habe, aber jetzt das Wasser kaputt ist. Fazit 2: Fazit 3: "Mit C++ (noch besser mit C) kann man sich _sehr_ leicht in den Fuss schiessen." - theDon Dieser Beitrag wurde am 04.01.2005 um 17:06 von HammerBlade bearbeitet. |
|
Profil || Suche |
|
026 05.01.2005, 03:42 KhanRKerensky |
Bleibt nurnoch die Sache mit dem Faken... ich bin ja für die Herrangehensweise wie bei Duke Nukem. Level an der Stelle gespiegelt nachbauen und ein env_mirror sorgt für die Zusätzliche Renderung der Models, Ist zwar auch wieder nur ein Hack aber das funzt selbst bei den kleinsten Grakas. Sollte man natürlich nicht mitten in der City verwenden aber für nen Spiegel in ner Wohnung/Bad dürfte es mehr als genug sein. Ich schätze mal das da schon irgent ein Freak was für codet. --"[...] you're going to burn in a very special level of Hell. A level they reserve for child molesters and people who talk at the theater." - Book |
|
Profil || Suche |
|
027 05.01.2005, 04:04 HammerBlade |
Das mit dem Faken missfällt mir sehr, das muss besser gehen. Also mit meine Wasser-Shader-Umbau bin ich weiter gekommen. Der Shader ist jetzt flach und funktioniert auch, aber soweit ich das sehe kann man die Winkel, ab denen der Shader spiegelt bzw. man durch sehen kann nicht im .vmt einstellen. Es sieht aus, als wäre das hardcodet. Ich hab mir das im Code aber noch nicht angesehen, wenn das überhaupt durch eine Mod veränderbar ist. --"Mit C++ (noch besser mit C) kann man sich _sehr_ leicht in den Fuss schiessen." - theDon |
|
Profil || Suche |
|
028 06.01.2005, 14:43 G.I.Joe |
===KLUGSCHEIßERALARM=== "Einfallswinkel = Ausfallswinkel" hat nichts mit physik, sondern was mit billiard zu tun physikalisch korrekt: Einfallswinkel = Reflektionswinkel ach ja und wenn mans mit na kammera macht, wirds ja nicht spiegelverkehrt
|
|
Profil || Suche |
|
029 06.01.2005, 15:30 KhanRKerensky |
Bei uns hieß das damals in der 7 (?) ganz einfach Ausfallswinkel. --"[...] you're going to burn in a very special level of Hell. A level they reserve for child molesters and people who talk at the theater." - Book |
|
Profil || Suche |
|
030 06.01.2005, 15:46 G.I.Joe |
SKANDAL!!! --
|
|
Profil || Suche |
|
031 06.01.2005, 21:29 HammerBlade |
@G.I.Joe: Wer sagt denn, dass wenn man es mit einer Kamera macht, nicht auch das Problem mit der Spiegelverkehrtheit lösen kann. Lösung: Das wirkliche Problem ist, das die Kamera das Bild punktbasiert aufnimmt... Aber das hab ich schon erklärt (Post #019). P.S.: @<Topic>: "Mit C++ (noch besser mit C) kann man sich _sehr_ leicht in den Fuss schiessen." - theDon Dieser Beitrag wurde am 06.01.2005 um 21:36 von HammerBlade bearbeitet. |
|
Profil || Suche |
|
032 06.01.2005, 22:49 Speedmaster |
Jungs ich weiss nicht ob ihr es wisst, aber: Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen. Möge Star Trek in Frieden Ruhen, den am 06.02.2005 bekam ich mit das die Serie Enterprise abgesetzt wird! |
|
Profil || Suche |
|
033 06.01.2005, 23:14 KhanRKerensky |
Wenn du dev/reflectivity_90(b) meinst... lüfft bei mir nicht. Ich hab nur ne graue Wand. In der vmt steht auch nur basetexture und surfaceprop definiert... --"[...] you're going to burn in a very special level of Hell. A level they reserve for child molesters and people who talk at the theater." - Book Dieser Beitrag wurde am 06.01.2005 um 23:16 von KhanRKerensky bearbeitet. |
|
Profil || Suche |
|
034 06.01.2005, 23:16 HammerBlade |
@Speedmaster: Ich habs mir gerade nochmal angesehen, aber dev/reflectivity_90 ist nur eine plumpe Textur ohne jeglichen Effekt: Inhalt von dev/reflectivity_90.vmt:
"Mit C++ (noch besser mit C) kann man sich _sehr_ leicht in den Fuss schiessen." - theDon Dieser Beitrag wurde am 06.01.2005 um 23:17 von HammerBlade bearbeitet. |
|
Profil || Suche |
|
035 07.01.2005, 01:00 Speedmaster |
Das heisst allerdings, das es möglich sein muss genau dies zu machen? --Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen. Möge Star Trek in Frieden Ruhen, den am 06.02.2005 bekam ich mit das die Serie Enterprise abgesetzt wird! |
|
Profil || Suche |
|
036 07.01.2005, 01:21 Thrillhouse |
dieses reflectivity_90 heisst allerdings glaub ich cu Thrill -- |
|
Profil || Suche |
|
037 07.01.2005, 01:47 HammerBlade |
@Thrillhouse{AKB} dev/reflectivity_10 Und wenn du dir das mal in Hammer angesehen hättest (und nicht ins Blaue hinausgeraten hättest), dann wüsstes du auch, dass das Prozent sind, denn auf der Textur steht z.B. fett drauf: Reflectivity 90% @Speedmaster: Warum z.B. kann man (wenn man nicht daranherum codet) nicht auf 2 verschieden Monitoren zur selben Zeit 2 verschieden Bilder anzeigen. Weil Valve es für HL2SP nicht gebraucht hat. Oder warum gibt es nicht von jedem Lampenmodel eine An- und eine Aus-Version, die über 2 Skins im selben Model realisiert werden? Weil Valve es für HL2SP nicht gebraucht hat. So könnte ich weitere Beispiele von unfertigen Sachen in HL2 aufzählen. Und diese Texturen gehören einfach zu diesen unfertigen Sachen. Natürlich kannst du mir gern das Gegenteil beweisen. --"Mit C++ (noch besser mit C) kann man sich _sehr_ leicht in den Fuss schiessen." - theDon Dieser Beitrag wurde am 07.01.2005 um 01:59 von HammerBlade bearbeitet. |
|
Profil || Suche |
|
038 07.01.2005, 13:01 Speedmaster |
Warum sollten sie etwas rausnehmen, was bei über 50% aller Shader gebraucht wird, d. hieße, dass sie das Manuell berechnen müssten, und die Grafikkarte ihnen die Arbeit nicht abnimmt! Um es anderst zu sagen, ich kann selber Programmieren und habe mich mit dem Thema zu genüge beschäftigt, deshalb sollte es normalerweise drin sein, ob es allerdings ohne Mod ansprechbar ist ist eine andere Frage! --Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen. Möge Star Trek in Frieden Ruhen, den am 06.02.2005 bekam ich mit das die Serie Enterprise abgesetzt wird! |
|
Profil || Suche |
|
039 07.01.2005, 17:11 HammerBlade |
So wie ich das aber sehe sind 95% aller Refektionen Cubemap-basiert und nur die Wasserreflektionen werden onruntime berechnet. Deswegen denke ich das man dort ansetzten muss. Ich bin da aber noch nicht sehr weit gekommen. --"Mit C++ (noch besser mit C) kann man sich _sehr_ leicht in den Fuss schiessen." - theDon |
|
Profil || Suche |
|
040 07.01.2005, 17:18 David Armstrong |
@Hammerblade: Ich bin zwar nicht der Spezialist, aber um nochmal auf deine Kamera-Lösung zurückzugreifen. Du hast ja gesagt, dass die Auflösung nicht sehr hoch, wie wir ja auch alle wissen. |
|
Profil || Suche |
|
041 07.01.2005, 17:36 HammerBlade |
Die etwas pixelige Bildqualität der Kamera-Monitor-Lösung ist nur eine nebensächliches Problem, das wirkliche Problem dieser Lösung, ist die Punktbasiertheit der Kamera. In Dome3 werden Spiegelungen mit Sicherheit durch Shader realisiert. --"Mit C++ (noch besser mit C) kann man sich _sehr_ leicht in den Fuss schiessen." - theDon |
|
Profil || Suche |
|
042 08.01.2005, 00:25 oxff |
Jungs, ich hab mir den ganzen Schrott hier nicht durchgelesen, aber man kann eine Reflektion nicht durch einen Shader alleine schaffen, da man entweder direkten Zugriff auf den Screenbuffer braucht, man benutzt Render to Texture Code oder man macht 2 Passes, wobei der zweite verkehrt herum ist (+ Stencil Buffer, damit nicht reflektierende Flächen nicht auch überpinselt werden). Also vergesst das mal ganz schnell wieder, da nen Shader für zu schreiben. --mwcollect - mein Projekt | oxlog - mein blog | happyhardcore.com Stream - gute Musik |
|
Profil || Suche |
|
043 08.01.2005, 01:37 KhanRKerensky |
Ich glaube das Valve genau das verwendet hat. Um mal die Docu zum Mappen von Wasser zu quoten: Man beschränkt Wasser also darauf parallel zum Horizont zu sein und dabei kann nur eine Wasserhöhe gerendert werden. Ich schätze auch mal, das das alles Hardcoded ist und man als Modder keine Chance hat was daran zu verändern. Damit sind Spiegelungen wohl leider auf den Boden beschränkt. Wobei man dann immernoch nicht Blickwinkelunabhängig ist, wobei wir bei Post 25/27 wären. --"[...] you're going to burn in a very special level of Hell. A level they reserve for child molesters and people who talk at the theater." - Book |
|
Profil || Suche |
|
044 08.01.2005, 02:17 HammerBlade |
@0xFF: Mit dem Wort Shader bezog ich mich auf die Realisierung der Wasserreflektion in HL2, wenn ein DK9-Graka vorhanden ist und Water Detail auf Reflect all eingestellt ist (wobei ich annahm, dass die Spiegel in Doom3 ähnlich funktionieren müssten). Denn dann werden afaik die Reflektionen des aufwendigen Wassers nicht durch Cubemaps erzeugt, sondern on runtime berechnet. So etwas bräuchte man auch, um einen qualitätiv "guten" Spiegel zu machen. Einen "schlechten" Spiegel, mit Einschränkungen, kann man auch mit einer Kamera-Monitor-Kombination erstellen. Dazu muss man nur die Logik der Kamera etwas abwandeln, damit sie ein passendes (Spiegel-)Bild erzeugt. Aufgrund der bereits vorhanden "guten" Wasserreflektion in HL2 (wenn man die passende Hardware hat), ging ich naiv davon aus mit etwas Herumspielerrei das Wasser-Reflektions-System (ich sage nicht mehr Shader) soweit abwandeln kann, dass man es als "guten" Spiegel nutzen könnte. Nach kurzer Suche im SDK-Source-Code bin ich aber davon überzeugt, dass dies mehr Arbeit bedarf als ich zuvor angenommen hatte, wenn es überhaupt so einfach möglich ist. Derzeit habe ich aber kein Interesse daran mehr Zeit in diese Richtung zu investieren, ausserdem ist mein Wissen im Bereich GFX-Coding beschränkt. @KhanRKerensky: Diese scheint etwas mit der visuellen Darstellung des Wassers zu tun zu haben, was genau, darauf kann ich mir derzeit keinen Reim machen, Diese Einschrängungen an die Verwendung von Wasser hat imo nichts mit der visuellen Darstellung des Wassers zu tun, sondern mit der physikalischen "Darstellung" des Wassers. Denn die visuelle Wasseroberfläche definiert für die Engine auch die physikalische Wasseroberfläche, aufgrund derer Auftrieb usw. von Physikobjekten simuliert wird. Wenn die Wasseroberfläche nicht parallel zum Horizont wäre, dann kann die Engine nicht feststellen wo Physikobjekten "schwimmen". Fazit: "Mit C++ (noch besser mit C) kann man sich _sehr_ leicht in den Fuss schiessen." - theDon Dieser Beitrag wurde am 08.01.2005 um 02:27 von HammerBlade bearbeitet. |
|
Profil || Suche |
|
045 08.01.2005, 08:08 KhanRKerensky |
Das hat doch 0xFF oben gesagt. Eine Spiegelung wird nicht viel anders gemacht als ich es Faken würde, allerdings etwas schonender da man wirklich nur die Grafik spiegelt und nicht die mit einer Map verwendeten Logic: Im ersten Renderdurchlauf rendert man was man sehen soll. Im 2 Pass wird das ganze Level an der Spiegelebene gespiegelt und dann an den Stellen an denen es gespiegelt sein soll nochmal gerendert. Durch die beschränkung auf ein Wasserlevel reicht dieser 2. Zusätzliche Pass. Bei einer zusätzlichen Wasserfläche müsste man das Level an noch einer Ebene Spiegeln was zu einem 3 Pass (wenn das überhaupt geht, man müsste der Graka auch noch Bereiche für die beiden Passes geben) führt. Die Kamera scheint allerdings auf einem Render to Texture zu basieren. Dehalb wird man das Kamerabild über ein negatives Scaling drehen können. --"[...] you're going to burn in a very special level of Hell. A level they reserve for child molesters and people who talk at the theater." - Book |
|
Profil || Suche |
|
046 08.01.2005, 22:08 Prefect |
Die Wasserspiegelungen werden unter Garantie per Render-to-Texture gemacht. Dabei wird die Texturauflösung aber wohl so hingedreht, dass man nichts pixeliges sieht (und damit ist die Lösung einer Kamera-Lösung überlegen). Warum ich das denke? Ganz einfach: Die einzige andere sinnvolle Methode ist, wie OxFF gesagt hat, Stencilmirrors zu verwenden. Aber bei Mirror per Stencil kann man die Spiegelung nicht durch Wellen manipulieren - das geht nur mit Render-to-Texture. Und so wie es aussieht, ist dieser Render-to-Texture-Effekt wohl hardcoded. Evtl. könnte man an dem Problem mit der Blickwinkelabhängigkeit noch was machen, aber da könnte ich auch nur raten. cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
047 08.01.2005, 22:31 KhanRKerensky |
Naja... da man in HL2 ja wohl Licht brechen kann (_rt_refraction hats auch im Wasser) müsste man doch eigentlich nur das gespiegelte bei Stencilmirror genauso brechen können. Es sei denn die refraction wäre auch ein Render to Texture (was man auch mit _rt_ abkürzen könnte). "[...] you're going to burn in a very special level of Hell. A level they reserve for child molesters and people who talk at the theater." - Book |
|
Profil || Suche |
|
048 08.01.2005, 23:36 HammerBlade |
Was willst bei einem Spiegel mit Lichtbrechung? du/dv- und normal-Map des Wassers: 1. Wenn man flach aufs Wasser schaut, speigelt es. Das ist der Effekt den man für den Speigel braucht. Für die bewegt Wasseroberfläche braucht man die normal-Map 2. Wenn man steil aufs Wasser schaut, spiegelt es nicht sondern das "Licht" wird gebrochen und ensprechend der gekräuselten Oberfläche wird das gebrochene "Bild" des Untergrunds mit der du/dv-Map verzerrt. Aber hier bei bin ich mir nicht so sicher, ist eher eine Vermutung. @KhanRKerensky: Für die Reflektion gibt es _rt_WaterReflection. --"Mit C++ (noch besser mit C) kann man sich _sehr_ leicht in den Fuss schiessen." - theDon Dieser Beitrag wurde am 08.01.2005 um 23:39 von HammerBlade bearbeitet. |
|
Profil || Suche |
|
049 09.01.2005, 14:01 Prefect |
KhanRKerensky: Du hast ganz offensichtlich nicht richtig zugelesen. Es geht nicht um die Brechung des Lichts, sondern um die *Wellen* im Wasser - diese haben nämlich einen Einfluss darauf, wie die Spiegelung aussieht. Das läuft über Normalmaps, und ist nur per Render-to-Texture (und *nicht* per Stencil-Mirror) möglich. Was mir allerdings gerade noch einfällt: Es gibt doch ein paar Stellen im Spiel, in dem andere Effekte bzgl. Brechung von Licht usw. verwendet werden, darunter die berühmte Lupe in Dr. Kleiners Labor, und, wenn ich mich richtig erinnere, auch ein paar Stellen mit so einem "Schimmern" über Feuer. All diese Dinge müssen auch Render-to-Texture verwenden. Die Engine muss also noch über ein paar mehr Freiheitsgrade bzgl. Render-to-Texture verfügen als nur hardcoded Wasser und Kamera. Ich habe keine Zeit (und momentan auch nicht das übermässige Interesse), um das groß auseinanderzunehmen, aber für diejenigen, die interessiert sind, könnte das eine nützliche Spur sein um weitere Enginefähigkeiten in der Richtung zu analysieren. cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|

