OpenGL & Direct3D9: Texture-Darstellungs Einstellugnen
-
In d3d heisst das register bzw die shadersemantic VPOS, in opengl WPOS.
-
@rapso: Halt nicht POSITION sondern TEXCOORD, da du auf die Position im PS nicht mehr zugreifen kannst. Oder was meintest du jetzt?
-
kein texcoord sonder vpos bzw wpos. siehe d3d doku oder google.
-
@rapso: Ok, kannte ich noch gar nicht. Hab das immer über die Texcoords gelöst.
wird VPOS automatisch vom Rasterizer aus POSITION berechnet, oder muss ich den noch im Vertexshader berechnen? -In der DX Doku steht der nehmlich nur bei den PS_Inputs und nicht bei den VS_Outputs.MfG Wally
-
naja, da gibt es nichts zu berechnen, vpos ist die von lukas gewuenschte pixelposition auf dem screen.
-
Wird also vom Rasterizer bereitgestellt, ok.
Scheint auch mit SM 3.0 ganz heimlich eingeführt worden zu sein.MfG Wally
-
Danke schonmal für eure Antworten. Das mit dem EyePlane hat funktioniert, so habe ich das auch schonmal mit D3D9 gesehen.
Aber dummer weiße hat es nicht so gut funktioniert wie ich es gerne hätte.
Wo ihr schon von Shadern redet: ich will eigentlich einen Glass-verzerrungs-Effekt mit Shadern schreiben, doch ich weiß nicht wie ich die Pixel Farbe des Hintergrundes ermitteln kann.
Also hatte ich mir gedacht, ich fotographiere den Hintergrund, lege diesen auf mein Objekt und verzerre dann diese Texture. Damit aber der Hintergrund nicht auf dem Objekt gedreht, skaliert oder positioniert werden kann - es soll ja so aussehen als würde man durch die Scheibe sehen - dachte ich mir, es könnte über den EyePlane effect funktionieren. Das sieht dafür aber doch nicht sogut aus und im Shader müsste ich diese Eigenschafft dann sowieso wieder selber programmieren.Also hier meine neuen Frage: wie geht man vor, um einen schönen Glass-verzerrungs-Effekt (z.B. wie aus Half-Life 2) zu entwickeln?
Das kann mit Hilfe von Shadern doch nicht allzu schwer sein.
-
Also hatte ich mir gedacht, ich fotographiere den Hintergrund
Du renderst ihn in eine Textur! (ein bischen Fachsprache sollte schon sein
)
Damit aber der Hintergrund nicht auf dem Objekt gedreht, skaliert oder positioniert werden kann - es soll ja so aussehen als würde man durch die Scheibe sehen - dachte ich mir, es könnte über den EyePlane effect funktionieren. Das sieht dafür aber doch nicht sogut aus und im Shader müsste ich diese Eigenschafft dann sowieso wieder selber programmieren.
Du brauchst im Shader nur die Daten aus dem VPOS Register, keine EyePlane.
Ansonsten ist deine Denkweise schonmal richtig.
MfG Wally
-
Mh, anscheinend war meine bisherige Denkweise doch richtig.
Ich hatte nur eine Kleinigkeit geändert (meistens ^^) und jetzt sieht's doch schon deutlich besser aus.Also ich mache das jetzt doch nur über die Shader.
Wie man Shader in D3D9 schreibt, darum kümmere ich mich später.Danke
-
mit cg von nvidia kannst du fuer opengl und d3d die selben shader nutzen