Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mo Jul 21, 2025 18:23

Foren-Übersicht » Programmierung » Shader
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Matrix an Shader
BeitragVerfasst: Mi Nov 21, 2007 19:30 
Offline
DGL Member

Registriert: Fr Nov 18, 2005 00:44
Beiträge: 57
Hi, meld mich zurück.

Natürlich habe ich ein problem mitgebracht! Ich habe nähmlich vor eine Matrix an den Shader zu übergeben und wollte das per GlUniformMatrize3x3fv(); bla tun. Irgendwie so, dass ich die richtige Funktion erwischt hab bin ich mir sicher. Allerdings hab ich keine Ahnung, wie ich die 9floats da rein bekomme, so dass sie im Shader ankommen.

Der Aufbau meiner Matrix ist ein Array[0..2,0..2] of Real. so gehts nicht. Aber wie? pGlFloats will die Funktion haben und der Deklaration nach sind das Zeiger auf Singles... Hab schon einiges Ausprobiert, aber nicht das richtige.

_________________
ist Ihnen schon mal aufgefallen, dass wenn Sie beim Wort Schlagersängerinnen die ersten 6 Buchstaben streichen, das 'e' durch ein 'f' ersetzen, die nächsten 7 Buchstaben rückwärts lesen und dann ebenfalls elemenieren und zusätzlich die beiden nebeneinanderstehenden n's durch ck ersetzen, das Wort 'ficken' ergibt?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 21, 2007 19:43 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Also, du musst der Funktion einen Pointer auf das erste Element deines Single-Arrays übergeben (es muss Single sein).
Als Funktion würde ich allerdings glUniformMatrix3fv nehmen, ich weiss aber nicht, ob das besser oder richtiger ist.

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 21, 2007 20:37 
Offline
DGL Member

Registriert: Di Jun 06, 2006 09:59
Beiträge: 474
real=double=8bytes
float=single=4bytes

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 21, 2007 20:46 
Offline
DGL Member

Registriert: Fr Nov 18, 2005 00:44
Beiträge: 57
glUniformMatrix3fv(); meinte ich ja:)

herlich komisch... Ich habe die inverse TBN-Matrix berechnet und versuche diese dem Shader zuübergeben (bumpmapping) um die Normalen damit zu multiplizieren, um sie in den Worldspace zu konvertieren. Jetzt sehe ich nichts außer schwarz.
Mit der normalen TBN-Matrix den Lichtvektor zu multiplizieren um ihn in den Normalspace zu bringen war einfacher, aber ich hab gelesen, dass es weniger Sinn macht, außerdem machte mein Licht dann merkwürdige(anders als geplante) Bewegungen.

Wie machst du das, wenn du bumpmapping haben willst? Wie erstellst du die Matrix, oder konvertierst was nach was? Ich habe nähmlich die komische Erfahrung gemacht, dass kein einziges Shadertut bei mir funktioniert, außer simples Texturenzeichnen und einfärben.


nebenbei.. was heißt "stack underflow" als GluError?

_________________
ist Ihnen schon mal aufgefallen, dass wenn Sie beim Wort Schlagersängerinnen die ersten 6 Buchstaben streichen, das 'e' durch ein 'f' ersetzen, die nächsten 7 Buchstaben rückwärts lesen und dann ebenfalls elemenieren und zusätzlich die beiden nebeneinanderstehenden n's durch ck ersetzen, das Wort 'ficken' ergibt?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 21, 2007 22:24 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Der Zerhackte hat geschrieben:
nebenbei.. was heißt "stack underflow" als GluError?

Overflow ist ein Überlauf. Also zu viele Elemente auf dem Stack.
Underflow ist ein Unterlauf. Das Gegenteil. Also wenn du versuchst ein Element vom Stack zu nehmen obwohl keines drauf ist.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 21, 2007 22:37 
Offline
DGL Member

Registriert: Fr Nov 18, 2005 00:44
Beiträge: 57
Das klingt sehr logisch... Aber was kann der Grund sein für einen "underflow" und was kann er anrichten?
Denn diese Meldung habe ich eigentlich immer dann, wenn ich nen shader benutze, ohne nicht. Mit meinem shader hab ich ebenfalls Probleme,
bezüglich der Koordinaten und der World/Tangent/blaspace konvertierung... kann man das in Verbindung setzen?
Die einzigen uniforms, die ich im moment benutze sind 2 sampler2d für die texturen und die kommen beide richtig an.

_________________
ist Ihnen schon mal aufgefallen, dass wenn Sie beim Wort Schlagersängerinnen die ersten 6 Buchstaben streichen, das 'e' durch ein 'f' ersetzen, die nächsten 7 Buchstaben rückwärts lesen und dann ebenfalls elemenieren und zusätzlich die beiden nebeneinanderstehenden n's durch ck ersetzen, das Wort 'ficken' ergibt?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 21, 2007 23:01 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
So etwas kann sich durchaus auf die Weltkoordinaten von einigen Objekten auswirken. Je nachdem wie es verschachtelt ist.

Klassischer Fall für einen Underflow ist so etwas.
Code:
  1. glPushMatrix;
  2.  
  3. glPopMatrix;
  4. glPopMatrix;


Und wie gesagt je nachdem wie sie verschachtelt sind kann sich das durchaus auswirken. Es kann aber auch sein, dass es sich gar nicht auswirkt. Wenn du zum Beispiel nur eine Natrix auf den Stack packst und diese dann doppelt vom Stack nimmst. Wenn der Stack leer ist bekommst du keine mehr und die Aktuelle sollte nicht überschrieben werden. Dann sollte es anzeigetechnisch keine Probleme geben. Höchstens weil du ein zu früh vom Stack nimmst und sich so das wiederherstellen verschiebt. Wenn es stärker verschachtelt ist dann würde sich das Verschieben aber womöglich größer äußern.

PS: Overflow ist logischerweise genau andersrum und er äußerst sich erst (minimal) später, da der Stack erst mal volllaufen muss.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 21, 2007 23:18 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Das mit dem Stack passiert nur wenn der Shader aktiv ist?

Na das ist doch ein idealer anhaltspunkt für die Fehlersuche. Guck nach ob du im Renderpfad der beim Shader aufgerufen wird irgendwo Matrizen vom Stack nimmst die du sonst nicht entfernst.

Ums einfach zusammenzufassen: Hier im Forum kann man eigentlich nur dann sinnvoll helfen, wenn keine GLFehler auftauchen. Denn wenn die existieren kann auch richtig aussehender Code plötzlich seltsame Ergebnisse liefern.

NIEMALS GL-FEHLER IGNORIEREN!

Bevor du dich also um was anderes kümmerst muss der Fehler weg.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Foren-Übersicht » Programmierung » Shader


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 15 Queries | GZIP : On ]