Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

CBenni::O

1x Contest-Sieger

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

21

12.12.2010, 13:53

also die Zeile
VertexOut.DiffuseOut = diffuse * DiffuseLightColor;
in die
VertexOut.DiffuseOut = float4(diffuse,0,0,255);

Ja, so debugge ich immer meine shader :P

mfg CBenni::O
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

22

12.12.2010, 14:02

Also Pix sagt nichts falsches^^ und wenn ich die Zeile änder dann bleibt mein Teapot immernoch schwarz.
Metal ist keine Musik sondern eine Religion.

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

23

12.12.2010, 14:09

Ändere deinen VertexShader so ab:

Quellcode

1
2
3
4
5
6
7
8
9
10
VS_OUTPUT main(const VS_INPUT VertexIn)
{
    VS_OUTPUT VertexOut;
    float3 transformedNormal = normalize(mul(VertexIn.NormalIn,WorldMatrix));
    float dp = saturate(dot(transformedNormal, normalize(-LightDirection).xyz));
    VertexOut.DiffuseOut = DiffuseLightColor * VertexIn.DiffuseIn * dp;
    VertexOut.PositionOut = mul(VertexIn.PositionIn, ShaderMatrix);
    
    return VertexOut;
}


ansonten darf weder DiffuseLightColor noch VertexIn.DiffsueIn ein Nullvektor (0,0,0,0) sein!

24

12.12.2010, 14:14

macht keinen unterschied -.-
Metal ist keine Musik sondern eine Religion.

CBenni::O

1x Contest-Sieger

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

25

12.12.2010, 14:20

Hat der Teapot überhaupt normalen?

Musst einfach schauen, von welchen Faktoren die endgültige farbe abhängt, und dann rückwirkend testen, wieso alles 0 bleibt.

mfg CBenni::O
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

26

12.12.2010, 14:32

Eigentlich schon. In dem Buch "Direct 3D Realtime Rendering für Computerspiele" wird der selbe Shader und das selbe Mesh verwendet. deswegen verstehe ich ja eben nicht warum es nicht funktioniert.

Er müsste schon normalen haben. Möglicherweise liegt es auch an der Lichtklasse?
Light.h
http://nopaste.info/c2075418de.html
Light.cpp
http://nopaste.info/1fd47cb68e.html
Metal ist keine Musik sondern eine Religion.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

27

12.12.2010, 14:48

Prüf bitte mal nach ob dein Model Normalen hat, ohne Normalen funktioniert keine Beleuchtung...

28

12.12.2010, 14:50

Hat mir TrommlBomml grad auch schon gesagt. Aber der DXViewer zeigt mir Normalen an.
Metal ist keine Musik sondern eine Religion.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

29

12.12.2010, 15:03

Die Frage ist aber nicht wies im DXViewer aussieht sondern in deinem Programm... ;)

30

12.12.2010, 15:12

Das hier liefert mir den Wert true zurück

C-/C++-Quelltext

1
2
3
4
5
bool hasNormals = (Player->GetFVF() &  D3DFVF_NORMAL) == D3DFVF_NORMAL;
if(hasNormals == true)
{
    MessageBox(NULL,"","",MB_OK);
}
Das heißt ja das das mesh normalen hat.
Metal ist keine Musik sondern eine Religion.

Werbeanzeige