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

BlackSnake

Community-Fossil

  • »BlackSnake« ist der Autor dieses Themas

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

111

12.07.2006, 21:00

also so funzt es:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
    mWorld = tbMatrixTranslation(m_vPaddlePos);
    tbDirect3D::Instance().SetTransform(D3DTS_WORLD, mWorld);

    tbMatrix All = mWorld*mCamera*mProjection;
    Effekt_WireFrame->GetEffect()->SetMatrix("WorldMatrix", (D3DXMATRIX *) &All);
    Effekt_WireFrame->Begin();
    Effekt_WireFrame->Pass(0);

    D3D.SetTransform(D3DTS_WORLD, mWorld);
    m_pPaddleModel->Render();

    Effekt_WireFrame->End();


jetzt ist das object nur noch nicht beleuchtet

CW_Kovok

Alter Hase

Beiträge: 836

Wohnort: nähe Bonn

Beruf: Schüler

  • Private Nachricht senden

112

12.07.2006, 21:09

naja erleuchten ist ja nich so schwer, hast du shader dafür oder brauchste noch?
Was es alles gibt, das ich nich brauche - Aristoteles

BlackSnake

Community-Fossil

  • »BlackSnake« ist der Autor dieses Themas

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

113

12.07.2006, 21:10

EDIT//ich brauche noch shader die beleuchten


gut es funktioniert jetzt alles.

wenn ich vor dem shader licht setzte, muss ich das dann nach dem shader auch noch mal??????????????




Schon mal im Vorraus:
Danke an die Leute die sich so viel zeit genommen haben mir das zu erklären.
Besonderer dank gilt CW_Kovok

8) 8)

Ich gehe jetzt erst mal off

haut rein

CW_Kovok

Alter Hase

Beiträge: 836

Wohnort: nähe Bonn

Beruf: Schüler

  • Private Nachricht senden

114

12.07.2006, 21:15

soweit ich weiß füllt das gesetzte Licht auch nur seine Farbregister und muss mit einberechnet werden, genau wie Material etc
Was es alles gibt, das ich nich brauche - Aristoteles

BlackSnake

Community-Fossil

  • »BlackSnake« ist der Autor dieses Themas

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

115

13.07.2006, 08:22

ok,
das weiß ich wie man das macht.
hatte nur probleme wegen den matrizen^^

BlackSnake

Community-Fossil

  • »BlackSnake« ist der Autor dieses Themas

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

116

13.07.2006, 11:06

frage:^^

wie setzte ich licht im shader, oder zumindest so das das object beleuchtet ist??

Steven77

Alter Hase

Beiträge: 515

Wohnort: Münster - Gievenbeach

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

117

13.07.2006, 11:11

Das musst du ja selbst programmieren. Wenn du mit Shadern hantierst, musst du ja quasi alles, was sonst in der "normalen" Pipeline geschieht, selbst implementieren, also auch die Beleuchtung.
Such mal im Internet nach "Phong", oder so...

BlackSnake

Community-Fossil

  • »BlackSnake« ist der Autor dieses Themas

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

118

13.07.2006, 11:23

ich habe hier so nen buch bei mir zu hause. das stehen die unterschiedlichen beleuchtungs modi drin. (hemiphäre, reflexions - beleuchtung)

das ist das ja?

wenn ja ist das recht viel was da rein muss

Steven77

Alter Hase

Beiträge: 515

Wohnort: Münster - Gievenbeach

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

119

13.07.2006, 13:21

Naja, geht, jedoch ist es gut, dass du das Buch hast. Ich empfehle dir nämlich auf jeden Fall, dir den Theorie-Stuff anzueignen und dann eigenen Code zu verwenden, anstelle vorgefertigten Code anderer zu verwenden. Deinen eigenen Code kannst du nämlich viel besser auf deine Bedürfnisse abstimmen.

Und so komplex ist das eigentlich gar nicht, zumindest nicht so komplex, wie es dir am Anfang vorkommt.
Hier mal ein Beispiel, wo Phong-Lighting mit Shadow-Mapping kombiniert wird:

Vertex-Shader: Phong-Lighting und Shadow-Mapping

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
VS_OUTPUT_PhongWithShadow VS_PhongWithShadow( float4 Position : POSITION0,
                                              float3 Normal   : NORMAL0,
                                              float2 Tex0     : TEXCOORD0 )
{
    VS_OUTPUT_PhongWithShadow Output = (VS_OUTPUT_PhongWithShadow) 0;

    Output.Position = mul( Position, mWorldViewProjection );
    Output.Normal = normalize( mul( Normal, mWorldView ) );
    Output.Tex0 = Tex0;

    Output.View = -normalize( mul( Position, mWorldView ) );
    Output.Light = -vLightDirectionRelative;

    float4 LightDepth = mul( Position, mWorldLightViewProjection );

    Output.ShadowTex.x = 0.5f + 0.5f * LightDepth.x;
    Output.ShadowTex.y = 0.5f - 0.5f * LightDepth.y;

    Output.LightDepth = LightDepth.z - fShadowOffset;

    return Output;
}

Pixel-Shader: Phong-Lighting und Shadow-Mapping (Textured-Shading)

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
float4 PS_PhongWithShadowTextured( float2 Tex0       : TEXCOORD0,
                                   float3 Normal     : TEXCOORD1,
                                   float3 View       : TEXCOORD2,
                                   float3 Light      : TEXCOORD3,
                                   float2 ShadowTex  : TEXCOORD4,
                                   float  LightDepth : TEXCOORD5 ) : COLOR0
{
    float3 Reflect = normalize( 2.0f * dot( Normal, Light ) * Normal - Light );

    float4 Ambient = cLightAmbient * cMaterialAmbient;
    float4 Diffuse = cLightDiffuse * cMaterialDiffuse * max( 0.0f, dot( Normal, Light ) );
    float4 Specular = cLightSpecular * cMaterialSpecular * pow( max( 0.0f, dot( Reflect, View ) ), fMaterialReflection );

    float Lighted = step( 0.0f, tex2D( LightDepthMapSampler, ShadowTex ).z - LightDepth );
    Lighted *= fShadowIntensity;

    return (Lighted * (Diffuse + Specular) + Ambient) * tex2D( SkinSampler, Tex0 );
}


Bitte jetzt keine Diskussion über den Code anfangen. Das sollte nur verdeutlichen, dass es (selbst bei kombinierten Techniken) nicht zu komplex sein muss.

Wie gesagt, du solltest eigenen Code entwickeln. Aber wenn du unbedingt willst, kannste diesen natürlich benutzen... rate ich aber von ab.

BlackSnake

Community-Fossil

  • »BlackSnake« ist der Autor dieses Themas

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

120

13.07.2006, 15:47

ich wollte ihn ja nicht benutzt,
war nur ne frage ob der der richtige war (code).
kalr probier ich das alleine, nur ich sehe mir das erst an um das überhaupt zu verstehen

Werbeanzeige