[CG Shader] Neutraler Shader, der nix ändert?
Verfasst: 08.01.2011, 14:50
Hi,
Ich bastel gerade mit CG Shadern rum. Jetzt bin ich leider der totale n00b. Ich lese zwar ein Tutorial durch, aber dennoch habe ich noch eine ziemlich grundsätzliche Frage: Wie kann ich einen Shader bauen, der mein Modell ganz normal ohne Änderung mit Textur darstellt?
Folgendes ist mein Versuch:
Simpler geht es also kaum. Seltsam ist, dass das Modell flackert wie sonst was. D.h. die Textur flackert, als würden sich die Koordinaten permanent ändern. Dabei sieht das Modell kurz immer ganz korrekt aus, dann flackert es sich aber zu irgendeinem Käse. Genauer habe ich keine Ahnung. :(
Liegt das am Shader oder an was anderem? Wenn ich den Shader ausstelle, wird das Modell ganz normal dargestellt.
Edit:
Und jetzt habe ich einen Fragmentshader, der auch einfach nur die reinkommende Farbe durchreicht und dann ist das Modell komplett weiß. :<
Edit2:
Hä und jetzt geht's einfach. -_-
Edit3:
Ok, nicht einfach. Ich hab mal nachgeschaut, was der Compiler ausspuckt und im ASM-Code (oder was das ist) schiebt der meine Texturkoordinaten gar nich rum? Wenn ich aber einen weiteren Parameter einführe und den random irgendwo draufrechne, macht er das... Der kompiliert auch mein anderes Programm in derselben Datei dann andesr? Ich raff hier gar nix mehr. ^^
Edit4:
Ok, wenn ich einen Fragment-Shader danach einfüge, der das Texturemapping übernimmt, ist alles in Ordnung. Das muss ich dann also auch immer machen? Ich dachte immer, Shader sind nur ein zusätzlicher Zwischenschritt und der Einsatz davon ersetzt keine anderen Dinge, sondern bietet einem nur Zusatzmöglichkeiten. Aber das muss ich vll. auch nochmal nachlesen.
Danke schon Mal im Voraus!
Ich bastel gerade mit CG Shadern rum. Jetzt bin ich leider der totale n00b. Ich lese zwar ein Tutorial durch, aber dennoch habe ich noch eine ziemlich grundsätzliche Frage: Wie kann ich einen Shader bauen, der mein Modell ganz normal ohne Änderung mit Textur darstellt?
Folgendes ist mein Versuch:
Code: Alles auswählen
struct appdata
{
float4 position : POSITION;
float3 tex : TEXCOORD0;
};
struct vfconn
{
float4 HPos : POSITION;
float3 tex : TEXCOORD0;
float4 color : COLOR0;
};
vfconn main(appdata IN, uniform float4x4 ModelViewProj)
{
vfconn OUT;
OUT.HPos = mul(ModelViewProj, IN.position);
OUT.tex = IN.tex;
OUT.color = float4(1, 1, 1, 1);
return OUT;
}
Liegt das am Shader oder an was anderem? Wenn ich den Shader ausstelle, wird das Modell ganz normal dargestellt.
Edit:
Und jetzt habe ich einen Fragmentshader, der auch einfach nur die reinkommende Farbe durchreicht und dann ist das Modell komplett weiß. :<
Edit2:
Hä und jetzt geht's einfach. -_-
Edit3:
Ok, nicht einfach. Ich hab mal nachgeschaut, was der Compiler ausspuckt und im ASM-Code (oder was das ist) schiebt der meine Texturkoordinaten gar nich rum? Wenn ich aber einen weiteren Parameter einführe und den random irgendwo draufrechne, macht er das... Der kompiliert auch mein anderes Programm in derselben Datei dann andesr? Ich raff hier gar nix mehr. ^^
Edit4:
Ok, wenn ich einen Fragment-Shader danach einfüge, der das Texturemapping übernimmt, ist alles in Ordnung. Das muss ich dann also auch immer machen? Ich dachte immer, Shader sind nur ein zusätzlicher Zwischenschritt und der Einsatz davon ersetzt keine anderen Dinge, sondern bietet einem nur Zusatzmöglichkeiten. Aber das muss ich vll. auch nochmal nachlesen.
Danke schon Mal im Voraus!