|
|
SlimDX
-
GlossLightshader
|
|
|
|
Kategorie: |
SlimDX
|
Autor: |
Sascha Bajus |
IDE: |
VB.Net 2008 |
Framework: |
2.0 |
Anspruch: |
70% |
Sprache: |
Deutsch |
Sonstiges: |
Code ist entsprechend kommentiert |
|
|
|
Dieses Beispiel beinhaltet die Einbindung verschiedener Techniken. Die Szene zeigt einen Plasmastrahl der mit der Partikel-Engine erzeugt wird. Im Strahl rotiert ein Torus der mit Hilfe eines einfachen Lightshaders der einen Glosseffect erzeugt.
|
Die Szene wird auf einer begrenzten Fläche mit der Stenciltechnik gespiegelt
gerendert.
|
Der Shader wird als Effectfile geladen. Alle Parameter werden über EffectHandle eingebunden und angesprochen.
|
Der GlossLightshader
|
Festlegen der Variablen, WorldviewProjection, die Lichtrichtung und die Lichtfarbe
Die Lichtfarbe ist fix im Shader angegeben.
|
|
|
//Declarations float4x4 worldViewProj: WorldViewProjection;
float4 lightDirection : LightDirection;
float4 color=float4( 1, 0.88, 0.88, 1.00 );
|
|
|
Festlegen der Ausgangsstruktur des VertexShaders – Position,Normal,viewVec
|
|
|
//Vertex Output Structure struct VS_OUTPUT {float4: POSITION;
float3 normal: TEXCOORD0; float3 viewVec: TEXCOORD1; };
|
|
|
Die Positionsdaten werden mit der WorldViewProjektion multipliziert um vom Objekt in den Worldspace zu wechseln.
Die Normalen werden unverändert durchgereicht.
|
|
|
//VertexShader Section VS_OUTPUT vsout(float4 pos :POSITION,
float3 normal :NORMAL) { VS_OUTPUT Out;
Out.pos = mul(pos,worldViewProj); Out.normal = normal;
Out.viewVec = pos-lightDirection; return Out; }
|
|
|
Durch das Dot.Produkt wird ein Faktor für die Helligkeit des Pixels berechnet
|
|
|
//PixelShader Section float4 psout(float3 normal: TEXCOORD0,
float3 viewVec: TEXCOORD1) :
COLOR { float v = 1 * (0.1 + dot(normalize(viewVec), normal));
return v * color ; }
|
|
|
Es sind 2 Techniken vorhanden, einmal für die normale und reflektierte Zeichnung. Es wird dementsprechend der cullmode geändert.
|
|
|
//Technique Section technique gloss { pass pass0 { cullmode=ccw;
VertexShader = compile vs_1_1 vsout();
PixelShader = compile ps_2_0 psout(); } }
technique glossreflect { pass pass0 { cullmode=cw;
VertexShader = compile vs_1_1 vsout();
PixelShader = compile ps_2_0 psout(); } }
|
|
|
|
Um dieses Projekt ausführen zu können, muss
VB.Net 2008, die sdxBaseEngine und
die SlimDX-Runtime installiert sein. Haben Sie Fragen zu einem Projekt, wenden Sie sich bitte immer
zuerst an den entsprechenden Autor. Für weitere Fragen zu Visual Basic
SlimDX nutzen Sie bitte unser DirectX-Forum.
|
|
Betriebssystem |
Win 98 |
|
|
Win ME |
|
|
Win NT |
|
|
Win 2000 |
|
|
Win XP |
|
|
Win
Vista |
|
|
|
|
Download (664
KB)
|
Downloads bisher: [ 775
]
|
|
|