Ist es möglich Displacement Mapping ohne Pixel Shader zu machen ?
Ist ja im grunde nur ne Heightmap Rendering, welches man mit Diffuses Bumpmapping verbindet.
Erklärt mir ma einer Genau die Technik von Displacement Mapping ?
En gutes Tutorial wäre au fein.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Ich schätze mal du meinst virtual Displacement Mapping, aka Parallax Mapping. Dort wird im Gegensatz zu echtem Displacmentmapping die zusätzlich Geometrie nämlich nur simuliert, in dem die Texturkoordinaten entsprechend des Betrachterwinkels und einer Heightmap versetzt werden. Für normales Displacement braucht man keinen Shader, aber es ist eine nicht wirklich praktikable Technik. Virtual Displacement kann man ohne Shader allerdings nicht implementieren.
Kommt drauf an, was man als Shader ansieht. Parallax Mapping geht schon auf GF3 oder GF4 und wurde da in dem entsprechenden Beitrag im OpenGL Forum beschrieben. Allerdings sieht es nicht so toll aus und belegt ein oder zwei der ohnehin schon knappen Texturen. Daher am besten eine neue Karte kaufen und sich nicht mehr um die alten Sachen kümmern. Das Parallax Mapping sieht im Zusammenhang mit Horizon Mapping und Z Correct Bumpmapping sowieso viel schöner aus, als wenn man da richtige Polygone einsetzt. Wenn man will kann man über Shader auch noch die Silhouette anpassen, auch wenn das dann nicht mehr so viel ausmacht, und dann hat man faktisch PerPixel Displacement Mapping.
Beim "richtigen" DisplacementMapping muß man ja nur unterteilen und die Punkte dann verschieben und das ist ja dann nur vertexbasierend und nicht per Pixel. Für den Schatten sind dabei dann ja Stencil Schatten unmöglich, Shadowmaps machen bei so feiner Geometrie zu viele Fehler, so daß man dann auch wieder über HorizonMapping(2 Texturen auf GF3) machen muß.
Ohne Shader sehen auch viele Dreiecke nicht so besonders toll aus. Vergleich:UT2003/2004 - Doom3
Daher lieber weniger Polygone, das ist auch leichter zu verwalten und dann sind gute Schatten möglich, und den Schwerpunkt auf die Shader legen so wie bei Doom3.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Zitat:
Daher am besten eine neue Karte kaufen und sich nicht mehr um die alten Sachen kümmern.
Die Aussage halt ich im Moment für ziemlich gewagt. Nicht Jeder hat ne GraKa die Shader kann.
Mag ja sein, dass es mit Shadern besser, vielleicht sogar einfacher ginge. Aber was nützt der geilste Shader, wenn der User sagt "Das läuft bei mir eh net."
Ich schätze jetzt einfach mal ins blaue, dass nur jeder 3. potentielle User unserer Programme die möglichkeit hat Shader auszuführen. (für die Fortgeschrittenen unter uns, mag das jetzt undenkbar klingen, aber wieso habt ihr denn solche Top-Karten. Meist nur wegen der Shaderentwicklung. Wenn ihr nicht selber welche Schreiben wölltet, hättet ihr vermutlich auch darauf keinen besonderen Wert gelegt.)
Nur mal um die Fragestellung zu untermauern.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Stimme Flash prinzipiell zu - wenn es allerdings um spezielle Effekte geht, die auch auf älteren Karten nur über proprietäre Extensions erreicht werden können, halte ich es nicht für notwendig diese noch zu unterstützen (in diesem Fall NVidias Registercombiner oder auch ATIs "Fragmentprogramme"), dann kann man auch gleich mit GLSL loslegen (wobei ich fxPascal immer noch als echte Alternative für Delphianer sehe).
Aus meiner Erfahrung besteht der durchschnittliche Anwenderpc aus einem 1 Ghz Prozessor mit Standardgrafikkarte auf TNT2 oder ATI Rage 128 Niveau (meist von Intel oder SiS) - nicht mehr. Wenn Kompatibilität wirklich wichtig ist, ist mit OpenGL 1.21 (1.2 + Multitexturing Extension mit 2 Textureinheiten, allerdings noch keine Cubemaps) Schluss, und für sehr viele Anwendungen ist dies auch völlig austreichend.
Karten mit ARB_fragment_program Unterstützung sind keine Top Karten mehr. Die ersten GFFX waren es nie und schon für unter 100€ bekommt man DX9 Karten. Die Radeon 9700 gibt's bald 2 Jahre. GLSL oder nicht ist egal. Das ist ja nur eine Treibersache und wird ja trotzdem immer besser. Aber ARB_fragment_program dürfte man mittlerweile als gesicherten Standard annehmen.
Viele Spieler updaten doch häufiger ihren PC. Ich kenne Leute, die haben die Radeon 9800XT fast ausschließlich für CounterStrike.
Mal abgesehen davon kann man doch ohne PS2.0 kaum der heutigen Zeit angemessene Effekte rendern. Und immer nur das gleiche ist auf Dauer auch langweilig. OpenGL 1.21 erreicht ja mit Quake3 Technik bereits das Maximum.
Wer noch eine TNT2 oder ATI Rage 128 in seinem Rechner hat wird vermutlich sich eh nicht für so etwas interessieren, denn dann hätte er in den letzten 5(?) Jahren mal seine Grafikkarte aufgerüstet.
Es gibt da noch jede Menge interessante Dinge, die man machen kann und anstatt der Vergangenheit nachzuhängen sollte man lieber nach vorne blicken und froh darüber sein, was alles möglich ist und sich nicht selbst aus lauter Sorgen, um diesen Vorschritt bringen.
Es schon richtig das man heute auf ner PS 2.0 karte setzten sollte, und eine die DX9 tauglich ist kostet nicht mehr die welt.
Aber leider isses so, es gibt leute wie ich die keine lust haben irgendwelche noname karten zu kaufn das man halt das ARB_Fragment_Program in hardware hat. Eher warten bis was gescheites rauskommt, wie die GF 6800 GT/Ultra.
Bis dahin muss man halt noch was mit seiner GF4 machen und ichs finds immer wieder schön was ich so alles schon hingekriegt habe mir der. Grade wenn man nen Spiel machen will, egal ob Kommerziel oder nicht isses doch schon wichtig das es überall läuft und mehrere renderpfade hat, weil halt viele leute haben nun ma kein geld sich ne Shader 2 karte zu kaufen.
Selbst Doom3 läuft minimal mit der GF1 mit allen details, brauch halt mehrere passes, aber es geht.
Neue effekte bei so einer karte zu machen ist bestimmt auch möglich, nur isses halt etwas umständlicher als mit shader.
Ist sogar eigentlich besser für den Lerneffekt umständlich anzufangen, und dann später easy auf shader umzusteigen oder meint ihr nicht ?
Und selbst wenn ich ne PS 2 karte hätte, dann würde ich trotzdem renderpfade für ältere karten machen.
Natürlich muss man da nen strich ziehen und sagen, ab GF 1 oder 3 aufwärts.
Doom3 ist ja jetzt auch fertig und nutzt, obwohl die Grafik sensationell ist, PS2.0 nicht unbedingt aus. Aber als Doom3 programmiert wurde, bzw. die Entscheidungen getroffen wurden, da wurde die gerade aktuelle HW mehr als ausgenutzt.
Bei der GF3/4 sind großartig neue Effekte nicht unbedingt drin. Es gibt ca.30 feste aber wählbare Textureshader für jede der vier Texturen und dann die ziemlich eingeschränkten RegisterCombiner.
Irgendwo stand ja auch das Carmack gerade eine neue Engine macht, die dann die GFFX als Minimum hat.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Ich behaupte sowieso mal dass die meisten von uns an Sachen basteln die eher für einen selbst gedacht sind, also eher zum Lernen dienen. Da wärs dann in meinen Augen dumm, sich durch ne alte Grafikkarte zu beschränkten. Von daher finde ich das Argument "...aber muss auch auf alter HW laufen, deshalb mach ich kein PS2.0..." hier ziemlich fadenscheinig, es sei denn man macht wirklich etwas dass später mal eine große Userbasis ansprechen soll. Aber solange man an ner Engine o.ä. werkelt, die dann eh erst in sehr entfernter Zukunft fertig wird, ist es meiner Meinung nach totale Zeitverschwendung noch alte Features zu implementieren. Warum sollte man z.B. Bumpmapping kompliziert über Textureshader & Co. einarbeiten, wenns doch über glSlang so einfach und verständlich geht?
Entweder: Man macht das nur zum Spaß für sich wie wohl wir alle. Dann spielt es natürlich gar keine Rolle und man hat die größte Freiheit überhaupt und die Beschränkung hat gar keinen Sinn.
Oder: Man will wirklich ein richtiges Spiel machen. Dann ist mit Doom3 der Maßstab nocheinmal ein großes Stück nach oben geschoben worden. Doom3 läßt nur die Dinge aus, die wirklich absolut gar nicht mehr auf der GF gehen, und daher wird man genau dann diese Effekte programmieren müssen. Die Unreal Engine 3 und die nächste Engine von Carmack benötigen ja auch mindestens PS2.0 .
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Finalspaces Frage klang wie "Meine Karte kann keine Shader, ich will aber trotzdem XYZ machen. Wie geh ich vor?"
Als Antwort bekam er "Geht zwar auch ohne Shader, aber Shader sind da viel besser weil..., deshalb machs lieber mit Shadern."
Ich wollte nur darauf hinweisen, dass das gar net die Frage war...
Aber für die genannten Einsatzzwecke habt ihr natürlich recht. Da is es sinvoll für die Zukunft zu entwickeln. Aber nicht jeder hat das Geld für seine Bildung ne 350 EUR teure GraKa zu kaufen...
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Die billigste GFFX gibt's für 60€. Auch wenn sie natürlich langsamer als eine GF4 ist, man kann damit Shader bis zu 1000 Befehlen schreiben. Und daher ist's eigentlich eine faire Sache, das DX9 HW für jeden Preis angeboten wird. Ob es damit wirklich viel Spaß macht, ist natürlich dann noch was anderes.
Mit der ursprünglichen Frage hat das natürlich nichts mehr zu tun, aber da habe ich ja schon oben was zu geschrieben.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
@Flash :
Da liegst du falsch. Es geht NICHT ohne Shader. Auf OpenGL.org hat das jemand auf ner GF3/GF4 umgesetzt, aber der hat RegisterCombiner und TextureShader benutzt und das sind ja auch Shader. Also waren die hier getätigten Aussagen schon korrekt.
Wenn du noch eine Zeit lang mit der GF3 arbeiten mußt, dann kannst du ja dir ein Klasse machen, das die ARB_fp Shader in RegisterCombiner und TextureShader umsetzt. In vielen Fällen sollte das möglich sein. Dann brauchst du später ja nur noch die Klasse wieder entfernen.
Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.