Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
07.10.2002, 19:56
Diablo_bth



also ich bräuchte ein Verfahren, mit dem man praktische einen "Ausfallvektor" einer Ebene errechnen kann.
Gegeben ist eine Ebene (mit normalisiertem Normalenvektor und d-Komponente) und ein Richtungsvektor, welcher in eine andere Richtung Zeigt .
Wie berechne ich jetzt am besten den Vektor, welcher praktische einem Lichtausfallwinkel des gegebenen Vektors im Verhältnis zur Ebene entpsricht?
is a bissl kpmpliziert aber ich hoffe ihr versteht wqas ich meine :P

--

zum Seitenanfang zum Seitenende Profil || Suche
001
07.10.2002, 20:28
Tron



zufaellig hab ich sowas letztens mal durchgerechnet (fuer nen raytracer)

du hast also einen vektor v und einen normalenvektor n

asciiart...
Quellcode:v  n  w
\  ^  >
\ | /
  >|/
_______

n, v, w sind vektoren
t ein skalar (zunaechst unbekannt)
. ist das punktprodukt
* ist die normale multiplikation (bei skalar * skalar) bzw. die s-multiplikation (skalar * vektor)

es gilt folgendes:
I v.n = - w . n (|v| = |w|)
II w = v + t * n (das ist der eigentliche trick)

daraus folgt:
III = II in I:
v . n = -(v + t * n).n
v . n = -v . n - t * (n²)
<wurstelwurstel>
t = -2 * v . n / (n²)

und schlussendlich:
III in II:
w = v - 2 * v . n / (n²) * n

w ist nun die richtung der spiegelung, wie man noch den punkt der reflektion berechnet sollte ja hoffentlich kein problem sein.

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
002
08.10.2002, 07:39
Tron



morgaehn!
ich hab's grade nochmal durcgelesen und bemerkt, dass du nen normalisierten normalenvektor hast, dann kannst du dir das n² natuerlich sparen. (und wenn ich jetzt darueber nochmal nachdenke... das haettest sich selbst gemerkt)

<neugier>
wofuer brauchst du den spas?

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
003
08.10.2002, 08:52
Kriz



Zitat:
(fuer nen raytracer)

Schlaf weiter, Tron >;)

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
004
08.10.2002, 09:35
WareWolf



Guten Morgen Kriz, (fuer nen raytracer) war Tron´s Beispiel =))

--

Sig as a brick ┴┬┴┬┴┬┴┬┴┬┴┬┴
WW

zum Seitenanfang zum Seitenende Profil || Suche
005
08.10.2002, 11:57
Kriz



Ähhhhhhhh?!?

Peinlich, peinlich =)

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
006
08.10.2002, 18:34
Tron



@Kriz: gute nacht (:

Zitat:
WareWolf postete
Tron´s

TOBSUCHTSANFALL!
kein ' im deutschen! das ist ein anglismus uebelster sorte! ('s gibt's nur bei der kontraktion von 'es' an das vorhergehende wort, siehe anfang dieses satzes)

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
007
08.10.2002, 18:44
WareWolf



*duck*

--

Sig as a brick ┴┬┴┬┴┬┴┬┴┬┴┬┴
WW

zum Seitenanfang zum Seitenende Profil || Suche
008
08.10.2002, 19:38
Diablo_bth



@Tron:
1. danke das hat mir geholfen [edit] das mit dem / (n²) hat mich erst sehr irritiert - bin aber auch darauf gekommen, dass Du das verrafft haben könntest und dass man sich das schenken kann.

2. ich brauche das für ein von mir erdachtes software-basierendes Vertex-Shader-System. Von jedem Vertex wird nun - entsprechend der Sichtposition - eine Linie in die BSP-Welt getraced und die Farbe beim "Aufschlagspunkt" ermittelt. Die wird dann als Vertex-Color benutzt. Da wirft sich aber sogleich ein weiteres Problem auf: die Textur-Pixel-Daten existiren während des renderns nur in der Graka ( wäre ja vollidiotisch die im ram zu lassen ).
Kennt jemand zufällig eine Methode wieder an die Texture-Pixels ( o. Texels wie man will) heranzukommen? vielleicht sogar an einer bestimmten x/y Position oder gar ein bestimmtes mip-level? (unter OGL natürlich :P) *bittebittehaoffdasdasjemandweiß*
nochwas: der Color-Buffer kommt dabei nicht wirklich in Frage, da die raytracer auch Textur/Polygon-Bereiche treffen können die gerade nicht gezeichnet werden!

[nochmal edit]
ich habe jetzt auch Stencil-Shadow-Volumes in meiner Engine integriert ( mit einem _einzigen_ shadow-rendering-pass für die BSP-Welt!) - die sind bestimmt 3x so schnell wie die aus Tenebrae ( oder sogar doom3 ?? )...

hier mal ein kleines Beweisphoto (damit ihr mir das auch glaubt)

--


Dieser Beitrag wurde am 08.10.2002 um 19:51 von Diablo_bth bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
009
08.10.2002, 20:07
Sccar



kriz:

auch die engländer haben scheinbar mittlerweile apostrophprobleme

http://www.heise.de/tp/deutsch/inhalt/glosse/13370/1.html

sccar

--

...das is zwar der uebelst gehackteste kleine bastard, den ich je gesehen habe, aber dafuer sauschnell. {Tron}

zum Seitenanfang zum Seitenende Profil || Suche
010
08.10.2002, 21:19
theDon



Zitat:
Tron postete
@Kriz: gute nacht (:

Zitat:
WareWolf postete
[i]Tron´s

TOBSUCHTSANFALL!
kein ' im deutschen! das ist ein anglismus uebelster sorte! ('s gibt's nur bei der kontraktion von 'es' an das vorhergehende wort, siehe anfang dieses satzes)[/i]


nunja, es heisst immernoch anglizismus ^^

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche
011
09.10.2002, 09:00
Kriz



Geht doch alle kacken =)

Hauptsache, Diablos RT-Shadowsystem überzeugt. Junge, du mußt mal wieder ein neues Techdemo machen, das Teil rockt!!! Sind die Schatten überlappbar und wenn ja, subtrahieren sich die Lichtwerte in der Schnittmenge der Schatten (je mehr Schatteneinflüsse in der Schnittmenge, desto dunkler der Schatten)? Das wäre auch cool =)

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
012
09.10.2002, 09:06
Tron



Zitat:
Kriz postete
Sind die Schatten überlappbar und wenn ja, subtrahieren sich die Lichtwerte in der Schnittmenge der Schatten (je mehr Schatteneinflüsse in der Schnittmenge, desto dunkler der Schatten)? Das wäre auch cool =)

nach meinem verstaendnis des stencil buffers ist ersteres moeglich (ergibt sich von allein) und letzteres nicht.

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
013
09.10.2002, 11:49
the_viking



@Diablolo: Da istn Clippingfehler hinten an der Säule :)

--

thx, cu, MfG the_viking

(( My =]=H=O=M=E=> Page! ))
Coder bei Brainshock-Interactive und bei Z-Software
My ICQ: #160959446

zum Seitenanfang zum Seitenende Profil || Suche
014
09.10.2002, 13:36
Prefect



Zitat:

Kennt jemand zufällig eine Methode wieder an die Texture-Pixels ( o. Texels wie man will) heranzukommen? vielleicht sogar an einer bestimmten x/y Position oder gar ein bestimmtes mip-level? (unter OGL natürlich :P) *bittebittehaoffdasdasjemandweiß*

Meines Wissens nicht. Wenn ich dich richtig verstehe, willst du die Texels wieder von der Grafikkarte herunterladen, richtig? Da wäre es wahrscheinlich besser, die Textur im RAM zu behalten. Vielleicht könntest du auch einfach erklären, _was_ du genau machen willst. Womöglich gibt es eine bessere Lösung.

Zitat:

ich habe jetzt auch Stencil-Shadow-Volumes in meiner Engine integriert ( mit einem _einzigen_ shadow-rendering-pass für die BSP-Welt!) - die sind bestimmt 3x so schnell wie die aus Tenebrae ( oder sogar doom3 ?? )...

Seit wann braucht man mehr als einen Pass pro Licht um die Shadowvolumes zu rendern?

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.

zum Seitenanfang zum Seitenende Profil || Suche
015
09.10.2002, 15:44
Tron



wenn ich es richtig verstanden habe, dann will er pro vertex raytracing maesig einen secondary ray in die welt schiesen, um reflektionslicht zu erhalten.
ich hab so meine zweifel, dass das was wird:
angenommen der zweitstrahl trifft auf das einzige gelbe texel in einer ansonsten schwarzen textur, dann wird der vertex (und somit ca. 1/3 des dreiecks) in gelbes licht getaucht.
angenommen zudem waere die einzige (signifikante) lichtquelle in der naehe dieses gelben textels gruen, dann erschiene dieses texel als pixel gruen, aber das reflektionslicht waere trotzdem gelb.

ueberlass komplexe lichtreflektionen besser mal echten raytracern, ausser ich hab die idee falsch verstanden und bth hat was ganz anderes damit vor.

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
016
09.10.2002, 18:23
Diablo_bth



@Tron: Das hast du schon richtig verstanden und ich habe tatsächlich mittlerweile ein wenig das Problem, dass die Texturfarben manchmal blöd liegen. Das wird aber bisher dadurch begrentzt, da ich im Ram nur eine stark verkleinerte Version der Textur lasse - die etwas ausgeglichener in den Farben ist. Aber ich hätte auch schon eine Lösung: nähmlich die Textur-Daten im Ram zu filtern - wie man dass bei Bildbearbeitung z.B. in Photoshop machen kann.

Hier mal ein Screenie wie meine RGB-Trace-Vertex-Shader aussehen kann:

ich kann mir vorstellen, dass das auf einer wabernden Wasseroberfläche das ziemlich goil aussieht!

@Prefi:
1. ich hab mal in meinem OpenGl-Buch nachgeschaut - es gibt eine Funktion [ void glGetTexImage (GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); ] mit der man die Daten auslesen kann - da kann man aber auch gleich alles im Ram lassen. Ich hätte halt gerne eine Funktion gehabt, die mir z.B. einen Zeiger auf die Daten in der Graka gibt. Sowas wird aber sicher wegen DAU-Codern nicht gemacht :P

2. Schau mal auf developer.nvidia.com und sich nach Stencil-Shadows und-oder Carmack's reverse - da wird beschrieben, wie man _immer_ zwei Stancil-Rendering-Passes für Shadow-Volumes braucht! Aber wegen miener PortalTechnologie kann ich die Shadow-Volume-Polygone so berechnen, dass ein Pass reicht

[edit]
kennt jemand zufällig einen einfachen, schnellen und guten Algorithmus um Pixel ausgleichend zu filtern/interpolieren? Oder muss man einfach das Bild runter und wieder interpolierend raufrechen??

--


Dieser Beitrag wurde am 09.10.2002 um 18:29 von Diablo_bth bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
017
09.10.2002, 20:46
Tron



das sieht schon eher nach pixel- statt vertex-shader aus, oder besteht die spieglflaeche aus vielen kleinen 3ecken?

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
018
09.10.2002, 21:56
Diablo_bth



ja sie besteht aus _vielen_ kleinen Dreicken - ( ich weiß das is Effekthascherei aber was solls )

--

zum Seitenanfang zum Seitenende Profil || Suche
019
10.10.2002, 00:19
TheTinySteini



Hat zufälligerweise jemand ne Ahnung, wie ein praktisch sehr ähnlicher Effekt bei UT2k3 funktioniert? Das Wasser hat dort im Prinzip genau so einen Effekt, wie ihn Diablo beschreibt - die Umgebung spiegelt sich ein wenig. Allerdings sieht es teilweise etwas "hingedeichselt" aus, außerdem recht grob...

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
020
10.10.2002, 14:02
Prefect



Ah okay, das mit den Shadowvolumes war wohl ein Mißverständnis. Allerdings funktioniert sowas sicher nur bei statischer Geometrie, bzw. mit - wie du selbst gesagt hast - Portalberechnungen, die recht aufwendig sein dürften. Bei bewegten Models wird das also nichts, richtig?

Warum man keinen Pointer auf die Texturdaten erhalten kann: Das liegt an der OpenGL-Architektur, die ja auf einem Client-Server-Konzept aufbaut. Abgesehen davon: Datenzugriffe über AGP sind laaangsam, und Vertex-Programme sind sowieso viel zu grob für solche Dinge.

Warum läßt du die Berechnungen nicht einfach von der Grafikkarte machen und verwendest Cubemapping? Okay, du mußt dann natürlich die Cubemap rendern, aber dafür kannst du alle Berechnungen auf der Grafikkarte und auf Per-Pixel-Basis machen. Sprich, die Resultate sollten viel besser aussehen.
Ich hab mir Fragment-Programme noch nicht angeschaut (warum auch, meine Grafikkarte unterstützt es eh nicht), aber wenn es möglich ist, die TexCoords im Fragment-Programm zu beeinflußen, dann kannst du sogar Dot3-Bumpmapping in die Reflexion einbauen.

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.

zum Seitenanfang zum Seitenende Profil || Suche
021
10.10.2002, 15:43
dp
Administrator


@ttt
cubemapping ist übrigens auch das, was in ut verwendet wird

--

zum Seitenanfang zum Seitenende Profil || Suche
022
10.10.2002, 16:49
Gnomo



Cubemapping wird nur verwendet, wenn die Grafikkarte keinen Vertex Shader unterstützt. Wenn die Grafikkarte VS unterstützt wird das verwendet.

--

zum Seitenanfang zum Seitenende Profil || Suche
023
10.10.2002, 18:41
Prefect



Gnomo: Bezogen auf UT oder bezogen auf Diablos Engine? Um ehrlich zu sein finde ich die VS-Methode etwas kurzsichtig, weil man dafür die Polygonzahl unnötig hochschrauben muß...

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.

zum Seitenanfang zum Seitenende Profil || Suche
024
10.10.2002, 18:44
Gnomo



Prefect: Bezogen auf UT II.

--

zum Seitenanfang zum Seitenende Profil || Suche