kurze Frage, ich hab grad irgendwie ein Blackout Ich will per Multi-Texturing zwischen 2 Texturen überblenden. D.h. ich habe ein Quad auf dem eine Textur liegen... nun soll ne Minute später ne andere Textur auf dem Quad liegen und, nicht einfach von der einen Sekunde auf die andere, sondern mit einem weichen Übergang, am besten mit einem Interpolations-Wert. Kann mir jemand helfen?
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Da normalerweise die Alphakanäle fest sind, fällt mir spontan (ich bin aber auch bisl müde ) nur Register Combiner ein. Keine Ahnung, ob das mit Atomraketen auf Spatzen schießen ist, aber alles andere kostet glaub ich viel mehr zeit. (dynamisch einen Alphakanal an die Textur hängen)
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Also via Multitexturing hat Flash recht. Die Alphakanäle stehen fest und die Farbe ist auch fest. Somit könntest du das nur mit Shadern oder einem dynamischen Alphakanal erledigen. Zu mindest kenne ich jetzt so spontan nichts anderes.
Ich würde da aber evtl. auch noch was anderes vorschlagen. Du könntest ja auch ein Multipassverfahren benutzen. Dabei wird die Fläche doppelt gezeichnet und mittels Blending wird entsprechend die Zweite ausgeblendet. Du kannst dann entsprechend direkt angeben wie sichtbar die andere Fläche sein soll. Also recht simpel alles.
Ach ja. Wenn du übergeblendet hast, dann brauchst du natürlich nur noch eine Fläche zeichen und eine Textur binden. Alles Andere wäre unnütz, da es ja eh nicht sichtbar wäre.
Das geht auch noch mit den glTextureEnv Funktionen. Da kann man fast so flexibele Modi wie bei den Register Combinern einstellen. Unter anderem auch eine konstante Farbe mit Alpha pro Texture.
Also ich denke mal, ihr denkt da an die GL_COMBINE_ARB Extension... Denke auch zur Zeit darüber nach, weil es sinnvoller ist, wenn man mehrere Texturen übereinander legen will, dass man jedesmal das Polygon darunter neu zeichnet.
Man kann wohl einem Vertex einen Alpha-Wert geben und dann über diverse Combine-Funktionen bestimmen, welche der TMUs auf den Alpha-Wert reagieren soll etc.
Mein Problem ist nämlich, dass mein Terrain-Renderer mehrere Detail-Texturen verwenden soll. Die meisten Verfahren weisen jedem Vertex, dann einen Alpha-Wert zu, jenachdem wie stark die entsprechende Detail-Textur genutzt werden soll. Dann wird das Feld für jede Detail-Textur mit Blending und/oder Multi-Texturing gezeichnet, mit den entsprechenden Alpha-Werten.
Ich denke aber, dass es problematisch wird, wenn man mehr als 3 - Detail-Texturen hat und dann nicht unter 4 TMUs bleiben kann oder jedes Feld erneut zeichnen muss.
Würde gerne eine Lösung finden, in der man alle Detail-Texturen mit den entsprechenden Alpha-Werten vielleicht in eine rendert und diese dann als "Gesamt"-Detail-Textur benutzt. Hoffe ihr versteht was ich meine
Jemand ne Idee oder ist das schlichtweg unmöglich/zu langsam etc.??
Du kannst pro Vertex bis zu 16 Attribute angeben. Position ist natürlich das erste und dann noch verschiedene weitere unter anderem 8 Texturekoordinaten mit jeweils 4 Komponenten. Das sollte auf jeden Fall ausreichen. Das geht dann aber nicht mehr über diese Combine Extension. Drei Texturen funktionieren damit aber noch: http://www.delphi3d.net/articles/viewar ... aintex.htm Für eine beliebige Anzahl kann man dann eine der Shader Extensions nutzen, weil man da auch die Texturekoordinaten ganz allgemein für Berechnungen verwenden kann.
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.