Quake 4 Mein Quake 1 Texture Pack

Eltrollo

Mancubus
so hier maln paar kleine screenshots
aus GLKAOS (einfallsreich was :))

bisher fertig:

fear ähnliche Particleeffekte
doom 3 ähnliche decals
verbesserte Lightmaps und dynamische Lichter.
highres Texturen.
glsl support.


quake28.jpg

quake03.jpg
 

Eltrollo

Mancubus
nein glsl funktioniert es wird aber noch nicht genutzt
weil ichs für partikel haben will (wie in fear)
ich will für bumpmapping usw (wenn ichs einbaue)
eine normalization cubemap nutzen da es
auch auf alten grafikarten funktioniert :)
 

DeZomB

Orbb
Hi,

hab seit längerem auch darkplace druf, meld mich aber nun ma weils langsam nervt.
Ich muss die ganzen grafik einstellungen jedes ma neu machen...
Starte -> Stelle alles um -> Beende irgendwann, und beim nächsten ma
mussisch wieder alles umstellen.

Die dateien sind nicht schreibgeschützt.

PS:

Derbe arbeit was ihr da macht X-D
 

Eltrollo

Mancubus
ja das ist auch schon in der todo liste von DP-Ultra ^^

weiß net rygel ob dus schon weißt aber hier isn kleines
tool das se in einen gewissen forum gepostet ham :)
link klick mich


[edit]

hab noch ne idee für horizonmapping bekommen
mal sehen ob sichs einbauen lässt
 

WzCTycWq

B.J. Blazkowicz
weiß net rygel ob dus schon weißt aber hier isn kleines
tool das se in einen gewissen forum gepostet ham
link klick mich

Wobei sich mir da sofort die Frage stellt, warum man Heightmaps und Normalmaps brauchen soll. Da ja die Heightmap das Integral der Normalmap ist bzw. die Normalmap das Differential der Heightmap ist, ist diese Art der "Datenhaltung" doch redundant.
Der einzige Unterschied läge wohl in den unterschiedlichen Repräsentationen der Daten: In der Normalmap brauche man 3 Farbkanäle für die x-, y- und z-Komponente der normalisierten Normalenvektors (als 127 * n + 128), in der Heightmap nur 1 Farbkanal für die Höhe. Dementsprechend wäre eine Normalmap genauer als eine Heightmap.

Irgendwie stinkt mir das grade ^^
 
boa rygel, des is ja ma der hammer, schaut gut aus :)

aber so langsam wird mir des alles zu bunt, ich blick bald nimmer durch :D normal-mapping, parallax-mapping, relief-mapping... usw. ich blick da nimmer durch ^^

was is das jetzt was du da fabriziert hast rygel? relief mapping? ich komm mir grad irgendwie blöd vor :hammer:

klärt mich mal auf damit ich da wieder durchblicke :hmm:

sorry für ot post :)
 

Rygel

Arch-Vile
Normalmaps und Bumpmaps sehen zusammen besser aus.

Darkplaces unterstützt Offsetmapping(Parallaxmapping) und Reliefmapping.

Ich date das Texturepack neu ab,damit die features besser unterstützt werden.
 

Skulltaker

Knight
@Eltrollo HorizonMapping ist doch das wo eine leichte Schattenabfrage ermöglicht wird?! Also ist es besser als DisplacementMapping, ansonsten das gleiche Prinzip oder? Ach momentmal es gibt ja noch View dependent Displacement Mapping und Displacement Mapping with distance functions. Warum nimmst du das nicht? Sowie ich weiß kann HorizonMapping kein Occlusion & Silhouette-Effekt, dafür hat VDM Shadow. Dann gibt es ja noch BTF ( Bidirectional Texture Functions), das hat kein Silhouette-Effekt, dafür aber Interreflection. Sehr interessant ist auch Perlin Noise und Tile-Based Texturing. Tile-Based Texturing ist aber glaube ich noch nicht in Realtime realisierbar.Oder?

@steven_joe_123

Bumpmapping
Normalmapping
Parallaxmapping
Reliefmapping
Displacement Mapping
HorizonMapping
View dependent Displacement Mapping
Displacement Mapping with distance functions
Bidirectional Texture Functions
Perlin Noise

Ich glaub das waren alle!? Wenn was fehlt oder falsch ist könnt ihr mich natürlich korrigieren.
 

Eltrollo

Mancubus
HorizonMapping generiert einfach nur schatten auf einer
oberfläche und hat nichts mit displacement mapping zu tun
ist im prinzip nurne erweiterung für bumpmapping & co


so sieht das ganze aus oben normalmapping und unten horizon mapping
horizon2.jpg



@steven_joe_123

verfahren die das Lichtbeeinflussen

embossmapping -> einfach nurn textur filter wie er z.B. in photoshop vertreten ist
Bumpmapping -> genauer da hier schattendeteils hinzugefügt werden in abhängigkeit von den Richtungsverktoren des Lichts
Normalmapping -> im Prinzip das gleiche nur eben genauer
HorizonMapping -> fügt schatten hinzu ähnlich wie man sie bei modellen sieht

verfahren für höhe

Parallaxmapping -> mittels einer Heightmap werden die Texturcoordinaten in abhängigkeit von den Richtungsverktoren des Auges verschoben
offsetmapping -> genau das gleiche nur eben viel genauer
Reliefmapping -> genau das gleiche nur eben noch genauer dank gpu Raytracing (seit shadermodel 3.0)
Displacement Mapping -> die Oberflächencoordinaten einer Textur (x.y.z) werden verschoben
das model :-) -> alles modeln ist das einzige was genauer ist (wird noch bestritten :P)

verfahren für Licht


Lightmap -> Textur die die Lichtfarbe speichert und auf die normale Textur raufgeklatscht wird aus ihr kann in der Regel kein Bumpmapping entstehen
Dlights -> dynamische Lichter sind quasi nur Punkte die angeben wo Licht sein soll (kann für Bumpmapping usw genutzt werden) man kann aber auch Lichtfarbe und Radius an sie "binden" wenn diese nicht statisch sein sollen
Deluxemapping -> eine Lightmap die keine Farbe sondern Lichtrichtungen speichert ( kann für Bumpmapping usw genutzt werden)
Trollmapping -> Lightmap die die Koordinaten der Lichtpunkte speichert (kann ebenfalls für Bumpmapping genutzt werden)


verfahren für Schatten

model -> ja das model kann für Schatten genutzt werden in dem man es spiegelt und dann mit einer Farbe füllt.
Stencil shadows -> eine Schablone die genommen wird um Die Textur "auszustechen" wie Plätzchen.
Shadow mapping -> eine Generierte Texture die mit Filtern und Shadern beklatscht werden kann.
Raytracing -> 100% genau und einzige variante richtige Softshadows zu machen.
 

WzCTycWq

B.J. Blazkowicz
Hi,

Verfahren für Lichtbeeinflussungen:
  • Bump- und Normalmapping sind dasselbe und werden synonym benutzt. Mittels der in einer Textur gespeicherten Normalenvektoren der Geometrie im Tangentenraum wird durch einen Pixelshader (min. Shadermodel 1.2) der Winkel des Lichteinfalls berechnet. Dieses Verfahren wird so gut wie immer mit Per-Pixel-Lightning mit Pointlights kombiniert.
  • Beim Heightmapping wird das Differential der Heightmap gebildet um eine Normalmap zu erhalten. Das restliche Verhalten ist dasselbe wie im Punkt zuvor. Man sollte dieses Verfahren nicht mit dem Heightmapping zur Terraingenerierung verwechseln.
  • Das Deluxemapping ist dasselbe wie Bump- und Normalmapping, nur dass hierbei die Normalen nicht im Tangentenraum, sondern im Weltraum abgespeichert sind. Erfordert pro Geometrieinstanz eine eigene Textur. Das Deluxemapping ist ein dynamisches Verfahren.
  • Das Trollmapping ist dasselbe wie Deluxemapping, nur dass hierbei die relative Entfernung von Geometrie zu Lichtquelle als statisch angesehen wird und daher eine Lightmap errechnet werden kann. Das Trollmapping ist somit ein statisches Verfahren.
  • Beim Horizonmapping wird das Bump- und Normalmapping in so fern erweitert, dass nun auch eine Selbstschattierung auftreten kann.
Verfahren für Höhe:
  • Offset- und Parallaxmapping sind dasselbe und werden synonym benutzt. Mittels einer Heightmap werden die Texturkoordinaten in einem Pixelshader (min. Shadermodel 2.0) verschoben und interpoliert.
  • Bei Reliefmapping wird in einem Pixelshader (min. Shadermodel 3.0) ein Raytracing durchgeführt.
  • Bei Displacementmapping werden in einem Geometryshader (min. Shadermodel 4.0) der Geometrie weitere Vertices hinzugefügt.
Verfahren für Licht:
  • Beim Lightmapping wird eine Lightmap über die restlichen Texturen als letzte Textureinheit additiv geblendet.
  • Bei Per-Vertex-Lighting mit Pointlights wird (bei jeder Fixed-Function-Pipeline) ein Vertex anhand der Entfernung und dem Winkel des Lichtes beleuchtet.
  • Bei Per-Pixel-Lighting mit Pointlights wird in einem Pixelshader (min. Shadermodel 1.4) ein Pixel anhand der Entfernung und dem Winkel des Lichtes beleuchtet.
  • Beim Projective Texturemapping wird eine Textur auf die Szenerie projiziert. Mittels Pixelshader (min. Shadermodel 2.0) lassen sich so einfach komplexere Lichtmodelle (z.B. eine Lampe in einem sehr kleinen Käfig) im Raum rendern.
Verfahren für Schatten:
  • Projected Planar Shadows basieren auf einer Projizierung der Modellgeometrie entgegen der Richtung der Lichtquelle. Dabei wird jedoch die Geometrie auf eine Ebene projiziert und dort gerendert, ohne dass eine Selbstschattierung auftritt. Aus diesem Grunde ist es für Echtzeitanwendungen eigentlich ungeeignet.
  • Stencil Shadows basieren auf einer Extruierung der Modellgeometrie entgegen der Richtung der Lichtquelle. Die Szene wird dann in den Stencilbuffer gerendert und via Tiefenvergleich zwischen schattierten und unschattierten Regionen unterschieden. Das geschieht durch einen Z-Fail (Carmack's Reverse) bzw. Z-Fail+ (mit einem kleinen Bias). Dies ließe sich auch mit Geometrieshadern (min. Shadermodel 4.0) bewerkstelligen.
  • Stencil Shadows mit Blur werden erzeigt, in dem aus dem Stencilbuffer eine Shadowmap erstellt wird, welche dann weichgezeichnet wird.
  • Beim Shadow Mapping mit Pointslights wird die Szenerie aus der Sicht des Lichtes in eine Dual-Paraboloid-Map als Z-Buffer mittels einem Pixelshader (min. Shadermodel 2.0) gerendet. Danach wird ein Tiefenvergleich aus der ursprünglichen Kameraposition durchgeführt und so die Szene schattiert.
  • Das Shadow Mapping mit Pointlights und Blur funktioniert wie im vorherigen Punkt angedeutet. Zusätzlich wird die resultierende Shadowmap aber noch weichgezeichnet.
  • Das Shadow Mapping mit Pointlights und PCF (Percentage Close Filtering) funktioniert wie Shadow Mapping. Im Pixelshader (min. Shadermodel 3.0) wird jedoch je nach Position des Pixels zwischen mehreren Texeln der Shadowmap interpoliert. Es ist hierbei auch eine realistische Penumbraerzeugung möglich.
Allgemeine Verfahren:
  • Bei Radiosity werden über alle Geometrien eine Lightmap gelegt. Alle Lightquellen leuchten diese im ersten, direkten Pass aus. In den weiteren N indirekten Passen werden die Patches der Lightmap untereinander mittels Gathering ausgeleuchtet.
  • Beim Raytracing wird für jeden Pixel am Bildschirm ein Strahl in die Geometrie geschossen. Sie wird reflektiert und absorbiert, so lange, bis die endgültige Farbe für den Pixel feststeht.
  • Diese beiden Verfahren vereinen durchaus alle oben genannten Methoden, sind aber echtzeituntauglich.
  • Die obenstehenden Verfahren können beliebig kombiniert werden.
Nun können wir uns mal schlagen wer von uns beiden Recht hat :D :P Ich hab Grafikprogrammierung schließlich auch nicht mit dem Löffel gegessen! ;)

PS: Ab DirectX 10 gibt es keine Fixed-Function-Pipeline mehr.

Mit freundlichen Grüßen,
eXile.
 

Eltrollo

Mancubus
so das klingt jetzt gleich extrem großkotzig aber man mussja korrekt bleiben ^^



displacement mapping kann man auch ohne pixelshader machen bzw wenn
du nur pixelshader haben willst auch schon mit pixelshader 2.0 im vertex shader

Deluxemapping ist nicht das selbe wie bumpmapping deluxemapping
liefert nur die Lichtrichtungen für das Bumpmapping


Trollmapping hast du nicht ganz verstanden:
man sucht in der lightmapping die pixel ohne hellere Nachbarn und speichert diese in einer
Trollmap.Man speichert im rot kanal die helligkeit und in grün unb blau die 2D Coordinaten
danach geschieht alles weitere ähnlich wie ein mix aus Deluxemapping und normalen Pointlight

Offset- und Parallaxmapping:
sind nicht genau dasselbe hier ein Beispiel wenn du die pixelshader mal ausprobierst wirst du unterschiede feststellen
Offsetmapping
Code:
	vec2 OffsetVector = vec2(eyedir.xy) * OffsetMapping_Scale * vec2(-0.1, 0.1);
    TexCoord -= OffsetVector * texture2D(Texture_Normal, TexCoord).a;
    TexCoord -= OffsetVector * texture2D(Texture_Normal, TexCoord).a;
    TexCoord -= OffsetVector * texture2D(Texture_Normal, TexCoord).a;
    TexCoord -= OffsetVector * texture2D(Texture_Normal, TexCoord).a;
    TexCoord -= OffsetVector * texture2D(Texture_Normal, TexCoord).a;
    TexCoord -= OffsetVector * texture2D(Texture_Normal, TexCoord).a;
    TexCoord -= OffsetVector * texture2D(Texture_Normal, TexCoord).a;
    TexCoord -= OffsetVector * texture2D(Texture_Normal, TexCoord).a;
    TexCoord -= OffsetVector * texture2D(Texture_Normal, TexCoord).a;
    TexCoord -= OffsetVector * texture2D(Texture_Normal, TexCoord).a;

parallaxmapping
Code:
TexCoordOffset += vec2(eyedir.x, -1.0 * eyedir.y) * OffsetMapping_Scale * texture2D(Texture_Normal, TexCoord).a;

Heightmapping ist eigentlich eine art überdimmensionales Displacementmapping
das was du meinst ist normales Bumpmapping.

Stencil Shadows mit Blur werden anders hergestellt
man legt über den bereich des Stencilbuffers einen pixelshader nach dem Rendern
und verwischt an dieser stelle das Bild

außerdem denke ich das du dich versprochen hast denn raytracing ist nicht wirklich echtzeit tauglich

p.s. dx 10 wirdn flop da das neue opengl auch alles kann was dx10 kann nur eben auf allen Systemen die OGL unterstützen :)

p.p.s du hast emboss mapping vergessen :no:
 

WzCTycWq

B.J. Blazkowicz
Hi,

displacement mapping kann man auch ohne pixelshader machen bzw wenn du nur pixelshader haben willst auch schon mit pixelshader 2.0 im vertex shader
Das ist so falsch, weil Displacement Mapping per Definition die Geometrie eines Objektes erhöht - ich meine hierbei sehr wohl die Anzahl der Vertices. Natürlich meine ich wenn ich Pixel Shader sage auch Vertex Shader, nur der ist häufig ohne Belang, weil in den meisten Fällen eh nur alles zum Pixelshader durchgepasst wird. Echtes Displacement Mapping wird erst mit Geometry Shadern möglich sein.

Deluxemapping ist nicht das selbe wie bumpmapping deluxemapping liefert nur die Lichtrichtungen für das Bumpmapping

Ich beziehe mich hierbei auf den folgenden Link: http://www.quake2evolved.com/blurforum/sho...p?threadid=1611
Ich habe ja nicht gesagt, dass es genau dasselbe wie Bump- oder Normalmapping ist. Sondern, dass die Normalenvektoren vom Tangentenraum in den Objektraum transformiert wurden.

Trollmapping hast du nicht ganz verstanden
Stimmt, das gebe ich zu. Hab mir noch ein paar Informationen dazu angeguckt, und muss sagen, dass das eher ein "schlechter Hack" ist, als ein schöner Grafikalgorithmus. Deswegen würde ich dem Trollmapping die praktische Relevantheit wohl eher absprechen, vor allem weil jedes Punktlicht denselben Radius hat.

Offset- und Parallaxmapping sind nicht genau dasselbe hier ein Beispiel wenn du die pixelshader mal ausprobierst wirst du unterschiede feststellen

Der Code führt natürlich nicht zu demselben Verhalten, weil ja bei ersten durch die Heightmap hindurchgeschritten wird (hierbei mit 10 Samples). Jedoch ist das Parallax Occlusion Mapping. Parallax Mapping wurde von Terry Welsh entwickelt, wohingegen Parallax Occlusion Mapping von Natalya Tararchuk vorgestellt wurde.
Ich halte dennoch Parallax- und Offsetmapping für ein und dasselbe. Und habe dabei volle Zustimmung der englischen Wikipedia :)

Heightmapping ist eigentlich eine art überdimmensionales Displacementmapping das was du meinst ist normales Bumpmapping.

Könntest du mal das ein wenig mehr ausführen? Klingt bei dir irgendwie nach Astrologieshow. Displacementmapping ist - wie schon gesagt - das Hinzufügen von neuer Geometrie zu Objekten. Bitte bedenke, dass die Heightmap das Integral der Normalmap und umgekehrt die Normalmap das Differential der Heightmap ist.

Stencil Shadows mit Blur werden anders hergestellt man legt über den bereich des Stencilbuffers einen pixelshader nach dem Rendern und verwischt an dieser stelle das Bild

Mhhh habe ich dachte das hätte ich damit gesagt :)

außerdem denke ich das du dich versprochen hast denn raytracing ist nicht wirklich echtzeit tauglich

Habe ich auch oben nirgends erwähnt, sondern das Gegenteil gesagt. Zitat: "echtzeituntauglich". Ich habe Emboss Bumpmapping bewusst weggelassen, weil es eine veraltete, nun obsolet gewordene Technik ist.

PS: Ich hab ja damit Parallax Occlusion Mapping, Relief Mapping und Ambient Occlusion Mapping ganz vergessen :D

Mit freundlichen Grüßen,
eXile.
 

Eltrollo

Mancubus
du stützt dich also auf wikipedia?
wikipedia ist gerade bei erweiterten Wissenschaftsbereichen der letzte Müll
das ist eine tatsache!!!

Das ist so falsch, weil Displacement Mapping per Definition die Geometrie eines Objektes erhöht - ich meine hierbei sehr wohl die Anzahl der Vertices. Natürlich meine ich wenn ich Pixel Shader sage auch Vertex Shader, nur der ist häufig ohne Belang, weil in den meisten Fällen eh nur alles zum Pixelshader durchgepasst wird. Echtes Displacement Mapping wird erst mit Geometry Shadern möglich sein.

echtes displacement mapping ist die verfeinerung des Drahtgittermodels und dann die Verschiebung dieser
anhand der Farbwerte einer Textur (heightmap) dies hat man an verschiedenen Beispielen gesehen
wie z.B. Quake 3 raytraced



Ich beziehe mich hierbei auf den folgenden Link: http://www.quake2evolved.com/blurforum/sho...p?threadid=1611
Ich habe ja nicht gesagt, dass es genau dasselbe wie Bump- oder Normalmapping ist. Sondern, dass die Normalenvektoren vom Tangentenraum in den Objektraum transformiert wurden.

deluxemapping ist einfach nur
die deluxemap multipliziert mit der matrix aus (tangente,binormale und normale)
das ganze dann normalisiert ergibt die Lichtrichtung für den aktuellen Pixel
nicht mehr und nicht weniger.

das ist im Prinzip das gleiche wie Pointlighting
nur das ich beim Pointlighting den Lichtverktor mit der matrix aus (tangente,binormale und normale) multiplziere
und dann den neuen Vektor (L2) durch die Wurzel des Punktproduktes aus L2 und L2 nehme um die Lichtrichtung für den Pixel zu erhalten

mit dieser Lichtrichtung kann man dann Bumpmapping usw machen.



Stimmt, das gebe ich zu. Hab mir noch ein paar Informationen dazu angeguckt, und muss sagen, dass das eher ein "schlechter Hack" ist, als ein schöner Grafikalgorithmus. Deswegen würde ich dem Trollmapping die praktische Relevantheit wohl eher absprechen, vor allem weil jedes Punktlicht denselben Radius hat.

der Radius ist im Pixelshader bestimmbar (z.b. über den Rotkanaldes Pixels der ja die Luminance ist)
das einzige was man mir vorwerfen könnte ist das es auf bestimmten oberflächen
nicht funktioniert (z.B. glas) aber es gibt keine andere bzw genauere möglichkeit die originalen Quake 2 maps mit
Per-pixel lighting auszurüsten!!!!

Könntest du mal das ein wenig mehr ausführen? Klingt bei dir irgendwie nach Astrologieshow. Displacementmapping ist - wie schon gesagt - das Hinzufügen von neuer Geometrie zu Objekten. Bitte bedenke, dass die Heightmap das Integral der Normalmap und umgekehrt die Normalmap das Differential der Heightmap ist.

"richtiges" Heightmapping wird häufig für Terrains genutzt.
das was du meinst ist das Bumpmapping wie Doom3 es nutzt um weitere Details hinzuzufügen
(grobes mit der Normalmap und feinheiten mit der Bumpmap)
 

WzCTycWq

B.J. Blazkowicz
Hi,

echtes displacement mapping ist die verfeinerung des Drahtgittermodels und dann die Verschiebung dieser
anhand der Farbwerte einer Textur (heightmap) dies hat man an verschiedenen Beispielen gesehen
wie z.B. Quake 3 raytraced

Ja, was hab ich denn anderes gesagt? Ich habe gesagt, dass Vertices anhand der Displacementmap hinzugefügt werden. Du sagst, dass das Drahtgittermodell anhand der Displacementmap verfeinert wird. Das ist dasselbe :)

deluxemapping ist einfach nur die deluxemap multipliziert mit der matrix aus (tangente,binormale und normale) das ganze dann normalisiert ergibt die Lichtrichtung für den aktuellen Pixel nicht mehr und nicht weniger. das ist im Prinzip das gleiche wie Pointlighting nur das ich beim Pointlighting den Lichtverktor mit der matrix aus (tangente,binormale und normale) multiplziere und dann den neuen Vektor (L2) durch die Wurzel des Punktproduktes aus L2 und L2 nehme um die Lichtrichtung für den Pixel zu erhalten mit dieser Lichtrichtung kann man dann Bumpmapping usw machen.

Mhh und warum steht neben der Deluxemap in der Quelle ganz dick "world-space normal vectors"? Stimmt, weil wenn sie im Weltraum bzw. Objektraum hält sich zwei bzw. eine Transformation spart. Für bewegte Modelle würde ich dementsprechend die Deluxemap im Objektraum halten und für statische Modelle im Weltraum.

es gibt keine andere bzw genauere möglichkeit die originalen Quake 2 maps mit Per-pixel lighting auszurüsten!!!!

Und das ist mir ziemlich egal, denn ich komme von der anderen Seite - spricht, ich hab alle Texturen vorliegen.

"richtiges" Heightmapping wird häufig für Terrains genutzt. das was du meinst ist das Bumpmapping wie Doom3 es nutzt um weitere Details hinzuzufügen (grobes mit der Normalmap und feinheiten mit der Bumpmap)

Nein, ich meine nicht das Heightmapping für Terrains! Ich meine nur, dass man eigentlich die Normal- und Heightmap doch zur einer Normalmap kombinieren sollte - was Doom 3 wohl auch intern macht.

Mit freundlichen Grüßen,
eXile.
 
Top