Registriert: Fr Jan 04, 2008 21:29 Beiträge: 419 Wohnort: Lübeck
Ich habe zwei fragen bezüglich Cubemaps, die dynamisch zur laufzeit erstellt werden:
1. Kann man auch Cubemaps erstellen, die nur aus der Depth-Component bestehen
2. wie kann ich errechnen, wo in der Cubemap ein Vektor hinzeigt?
letzteres ist wichtig für nen shader, bei dem ich Schadowmapping durch ne Cubemap realisieren will. Hab bisher
leider nur tutorials gefunden, wo das mit spotlighs gemacht wird. Deshalb wollte ich nebenher mal fragen, ob jemand
da einen nützlichen Link zu kennt, bzw. evtl. kurz erklären kann, wie er das bei sich umgesetzt hat.
Meine Idee sieht momentan so aus, dass ich die Entfernung des Fragments vom Licht im Eyespace und im Lightspace
berechne, abhängig von dem Depthbuffer der Cubemap um das Pointlight. Die Entfernung im Eyespace hab ich bereits,
und den Vektor kenn ich dadurch natürlich auch, aber wie rechne ich jetzt aus diesem Vektor die Textur koordinaten
in der Cubemap aus? Weil an der Stelle müsste ich dann ja den Depthwert auslesen und mit dem Entfernungswert
ausm Eyespace vergleichen. Und we spreche ich in glsl eine Cubemap an? Hat die dann drei Parameter?
im Cubemap tutorial steht, dass man nen Texgen normal modus nehmen kann... bekomm ich da dann die Koordinaten?
Ich weiß zwar nicht wieso du berechnet willst wo vektor hinzeigt, da das der texturaufruf im shader von selbst macht, aber berechne den Betrag des Vektors in der Maximumsnorm und dividiere durch diese Länge. Dann hast du die 3D koordinate an denen der vektor den Würfel schneidet.
Registriert: Di Dez 27, 2005 12:44 Beiträge: 393 Wohnort: Berlin
Programmiersprache: Java, C++, Groovy
Hallo,
ich glaub du musst folgendermaßen vorgehen :
Wenn du im Light-Space bist, hast du ja für jede Seite des Würfels eine (MVP-)Matrix ( L_1 bis L_6 ), die dir jeden Vertex im Bereich von -1 bis 1 mappt ( falls dieser auf der entsprechenden Seite zu sehen ist ).
Um in den Light-Texture-Space zu kommen, multiplizierst du jeweils vorne noch eine Matrix T, die dir die Texturkoordinaten von 0 bis 1 liefert, mit
Code:
T =
0.5000.5
00.500.5
000.50.5
0001
Du musst dann nur noch prüfen, bei welcher Multiplikation Koordinatenwerte zwischen 0 und 1 herauskommen, und dann in der entsprechenden Textur ein Lookup machen.
Die Matrizen T*L_1 bis T*L_6 berechnest du am besten schon im voraus.
Mitglieder in diesem Forum: 0 Mitglieder und 5 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.