Probleme bei Vertex-Pixel Shadern
-
He was ist den überhaupt ein Vertex Sahder???
kenne ich nicht
Habt ihr den nicht vieleicht nur erfunden?
-
Hi,
Noch ne kleien Frage...Warum kann ich nicht mit zahlen in asm arbeiten ?
zb.
rcp r2, 2
funtzt nicht !
Bye
-
du kannst doch keine zahl im pixelshader angeben
, falls du sowas machen möchtest, dann nutze die constant register z.B. def c0,2,2,2,2
r1.x würde ne möglichkeit sein
rapso->greets();
-
Warum nicht `?
-
Warum nicht ?
-
limitierung der gpus
wohl weil die befehllänge zu gross wäre
du müßtest ja sonst 4 floats pro befehl angeben können, und da es risc rechner sind, wäre die codegröße immer gleich, man würde also vielleicht 20byte pro codezeile haben anstatt der jetzigen 4 (soweit ich weiß), und das würde unnütz sein, weil du einfach ein konstantenregitser verwenden kannst, resultiert in dem selben und die sparren vieeele transistoren. (bedenke, 8pipes, immer 128mit mehr, dazu biszu 1024 instructions und eventuell 4transistoren pro bit, wären 4m transistoren mehr bzw. 3% des jetzigen transistor counts.)rapso->greets();
-
Hi,
Naja, ok Schade.Also ich hab gerade versucht, je weiter ein Pixel weg ist, je mehr wird der Pixel mit seiner Farbe multipliziert.. Der Effekt sollte Dunkel-Hell herrauskommen wenn sich die Vertices bewegen(weg,her). Aber das funtzt nicht.
Vielleicht findet ihr ein Fehler..
// Vertex Shader for 1.1 // ************ Register Defines ************************** \\ #define VertexPosition v0 #define VertexNormal v1 #define VertexTexCoord v2 #define VertexColor v3 #define LightVertexDiff r0 #define LightVertexVec r1 #define ProjectionMatrix c0 #define LightPosition c6 #define LightDirection c5 #define AmbientLight c4 // ************ Output Register ************************** \\ #define out_2DVertexPosition oPos #define out_PixelColor0 oD0 #define out_PixelColor1 oD1 #define out_TextureColor0 oT0 #define out_TextureColor1 oT1 #define out_TextureColor2 oT2 #define out_TextureColor3 oT3 #define out_TextureColor4 oT4 #define out_TextureColor5 oT5 #define out_TextureColor6 oT6 #define out_TextureColor7 oT7 vs.1.1 dcl_position0 VertexPosition dcl_normal0 VertexNormal dcl_texcoord0 VertexTexCoord dcl_color0 VertexColor ; project 3d vertex to 2d coord m4x4 out_2DVertexPosition, VertexPosition, ProjectionMatrix sub r1,c6, v0 dp3 r1,r1,r1 ; quadratische laenge rsq r2,r1.x ;reciproxe wurzel mul r1,r1,r2 ;division durch die wurzel ... sqrt(x)=x/sqrt(x rcp r3, r1 mul out_PixelColor0, r3, VertexColor
Bye
-
" Aber das funtzt nicht. " undefined const
bitte definiere das
rapso->greets();
-
HM ?
-
was passiert stattdessen? bzw. welches ergäbniss hast du genau erwartet und wie genau unterscheidet sich das bzw. was siehst du was nicht so sein sollte?
rapso->greets();
-
Die Farbe ist von der Ausgangsfarbe verdunkelt und bleibt konstant.
-
wie gross ist das objekt dass die farbe haben soll? die range der farben geht von 0.f bis 1.f, falls dein objekt also viel größer ist als 1.f (in ausmassen) oder viel kleiner, dann siehst du nicht den 0 bis 1 bereich der den farbverlauf hat.
schau ma auf meine engine hp, da ist ein screenie wie's ausschaut wenn man die position reinschreibt.
dafür hab ich die inverse der objektgröße als const gespeichert (also 1.f/größe) und dann mit dem längenwert jedes punktes multipliziert. (das dann aber im pixelshader und nicht im vertexshader)
vielleicht ist dein objekt nicht hoch im zentrum und hat von vorherein schon werte die die ganze zeit über 1 oder unter 0 sindrapso->greets();
-
Ich hab ein ganz normales viereck ( 2 dreiecke ) :
VERTEX v[4] = { { -1.0f, -1.2f, 0.0f, /*0.0f, 0.0f, -1.0f, /*0.0f, 1.0f,*/ D3DCOLOR_ARGB( 255, 255, 0, 0 ) }, { -1.0f, 1.2f, 0.0f, /*0.0f, 0.0f, -1.0f, /*0.0f, 0.0f,*/ D3DCOLOR_ARGB( 255, 255, 255, 0 ) }, { 1.0f, 1.2f, 0.0f, /*0.0f, 0.0f, -1.0f, /*1.0f, 0.0f,*/ D3DCOLOR_ARGB( 255, 255, 0, 255 ) }, { 1.0f, -1.2f, 0.0f, /*0.0f, 0.0f, -1.0f, /*1.0f, 1.0f,*/ D3DCOLOR_ARGB( 255, 255, 255, 255 ) }, };
Bye
-
und die siehst du beide _ganz_ bloss in der falschen färbung?
rapso->greets();
-
Hi,
Jo, sind beide da. Also ich seh auch die Farben. Nur verdukelt und konstant.
-
Komisch, das müsste gehen
-
Komisch, das müsste gehen
-
das problem ist, dass du nur 4punkte hast und die sind recht weit von der mitte weg, das heißt, die sind schon relativ dunkel und da du nur pro vertex die farben berechnest, wird zwischen den 4 dunklen stellen interpoliert.
müßte also dunkel sein. weil du ja die farben durch die entfernung teils und nur 4 relativ weit entfernte punkte hast, also teilst du immer durch >1 und die farben werden dunkler.
set mal einen punkt noch in die mitte (oder generier dir ein höcher tesseliertes mesh)
rapso->greets();
-
Hi,
Die Vertices bewegen sich aber ständig ?
-
falls du sie _nur_ mit der viewmatrix bewegst:
sub r1,c6, v0
da nimmste die untransformierten werde
rapso->greets();