Registriert: Mo Mai 29, 2006 21:13 Beiträge: 142 Wohnort: Ballenstedt/Sachsen-Anhalt
Hallo!
Ihr kennt doch den Effekt: Wenn man im dunkeln mit einer Taschenlampe (oder noch lustiger: mit nem Laserpointer) 'rumfuchtelt', sehen die Augen Streifen.
Wie kann man sowas möglichst einfach (shaderfrei) realisieren?
Irgendwie müsste man doch dafür den FrontBuffer mit dem neu gerenderten vermischen, richtig? Ich hab schon etwas mit glAccum rumprobiert, aber es war entweder alles schwarz oder alles weiß...
Irgendwelche Ideen, die für mich als einer der Shader nur vom Hörensagen kennt brauchbar wären?
Registriert: Mo Mai 29, 2006 21:13 Beiträge: 142 Wohnort: Ballenstedt/Sachsen-Anhalt
Im Prinzip ja, aber....
Ich habe eine 'Projektionstafel' auf die ich mit einem 'Strahl' schieße. Dieser Algo ist zwar schön einfach, aber die Wand verdeckt alles was drunter passiert...
Ich hab mal ein Bild von oben gemacht, sonst hat man diese Perpektive nicht
Werde ich wohl doch die Endpunkte der letzten n Strahlen speichern und dort Punkte anzeigen....
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
"Render to Texture" und dann kannste viel einfacher, solche effekte machen.
Auch ohne shader, wobei du mit Shader definitiv die besseren Ergebnisse erzielst.
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Du solltest 2 renderpass nehmen, erster ist der laser und da nutzt du auch dem Buffer zum motion blur.
Der 2. Pass wird deine Wand mit dem geblendet mit dem ersten Pass.
So hast du deine Wand und die Lichtquellen Brennen sich halt ins Auge ein.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Mo Mai 29, 2006 21:13 Beiträge: 142 Wohnort: Ballenstedt/Sachsen-Anhalt
TAK2004 hat geschrieben:
Du solltest 2 renderpass nehmen, erster ist der laser und da nutzt du auch dem Buffer zum motion blur. Der 2. Pass wird deine Wand mit dem geblendet mit dem ersten Pass. So hast du deine Wand und die Lichtquellen Brennen sich halt ins Auge ein.
Stimmt. Sieht sogar ganz schick aus.
Dann hab ich aber festgestellt, dass sich doch gar nicht der Strahl einbrennt, sondern der Punkt am Ende. Also alles umgebaut, Ringpuffer für die letzten Punkte und los gehts Sieht so aus wie ich will, jetzt fehlt nur noch der Rest...
Registriert: Mo Mai 29, 2006 21:13 Beiträge: 142 Wohnort: Ballenstedt/Sachsen-Anhalt
Faszinierend. *Augenbraue hochzieht*
Warum kann OpenGL hier ein LineStipple machen, obwohl ich es explizit deaktiviert habe?
Falls einer den Code braucht:
(Es wird der Ringpuffer Lastrays[] gezeichnet. InvalidVector ist (NAN,NAN,NAN,NAN) und heißt 'Laser war aus'.Tritt aber im Beispiel nicht auf. )
Code:
procedure RenderOld;
var
i, rc:integer;
procedure RayEnd(v: TVector);
begin
inc(rc);
if VectorEquals(v,InvalidVector)thenbegin
glEnd;
glBegin(GL_LINES);
endelsebegin
glColor4f(1,0,0,1/ rc);
glVertex3fv(@v);
end;
end;
begin
rc :=0;
glPushMatrix;
Cam;
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
glEnable(GL_BLEND);
glDisable(GL_LINE_STIPPLE);//als Test, ändert aber nix
glEnable(GL_LINE_SMOOTH);
glLineWidth(5);
glBegin(GL_LINES);
for i := raypos -1downtolow(lastrays)do
RayEnd(lastRays[i]);
for i :=High(lastrays)downto raypos do
RayEnd(lastRays[i]);
glEnd;
glLineWidth(1);
glDisable(GL_LINE_SMOOTH);
glDisable(GL_BLEND);
glPopMatrix;
end;
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast
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.