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

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

71

14.02.2012, 21:28

Zitat

Und je nach dem wie ich atten(tuation) einstelle (0-1) Ist das Licht särler oder schwächer.

Spiel doch einfach mal verschiedene Szenarien im Kopf durch.

Wenn du einfach bloß normales Licht willst, stellst du Att0 auf 1 und alles andere auf Null.
L=1/(1+0*d+0*d)
L=1/1=1

Att1 stellst du dann ein wieviel das Licht in der Entfernung abgeschwächt werden soll.
Att2 ist dann eine noch stärkere Abschwächung.

http://de.wikipedia.org/wiki/Quadratische_Gleichung

In deinem Fall würdest du folgendes Coden müssen:

HLSL-Quelltext

1
2
3
4
float lightdistance = distance(pixelpos, light.pos); 
float4 color = (material.ambient * (globalAmbient + (light.ambient))) +
                   (IN.diffuse * nDotL) + (IN.specular * power); 
color /= light.Att0 +  light.Att1 * lightdistance + light.Att2 * lightdistance * lightdistance;

FSA

Community-Fossil

  • »FSA« ist der Autor dieses Themas
  • Private Nachricht senden

72

15.02.2012, 16:17

Danke :) Da werde ich mich nochmal durcharbeiten. Jetzt da ich mich für ein Multipass Verfahren entschieden habe, habe ich gleich gegoogelt. Mein ergebnis ist dies:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
//Shadersachen setzen
//enable blending operations
 D3D.SetRS(D3DRS_ALPHABLENDENABLE,TRUE);
  //standard blend factors
  D3D.SetRS(D3DRS_SRCBLEND,D3DBLEND_ONE);
  D3D.SetRS(D3DRS_DESTBLEND,D3DBLEND_ZERO);
Object->Render(effect);

D3D.SetRS(D3DRS_SRCBLEND,D3DBLEND_ZERO);
  D3D.SetRS(D3DRS_DESTBLEND,D3DBLEND_SRCCOLOR);
//Shadersachen setzten(Lichtfarbe verändern und licht ein wenig verschieben
Object->Render(effect);

Leider ohne Erfolg. Ich sehe nur das letzte Licht. ich sollte aber beide sehen :) Warscheinlich lieg tes an den Blendeinstellungen. Danke

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

73

15.02.2012, 19:24

DirectX rechnet mit deiner Eingabe folgendes:
PixelFarbe = PixelFarbeAlt * 0 + PixelFarbeNeu * 1

Es sollte so heißen:

C-/C++-Quelltext

1
2
D3D.SetRS(D3DRS_SRCBLEND,D3DBLEND_ONE);
D3D.SetRS(D3DRS_DESTBLEND,D3DBLEND_ONE);


EDIT:
Und beim zweiten Pass:

C-/C++-Quelltext

1
2
D3D.SetRS(D3DRS_SRCBLEND,D3DBLEND_SRCCOLOR);
D3D.SetRS(D3DRS_DESTBLEND,D3DBLEND_ONE);

FSA

Community-Fossil

  • »FSA« ist der Autor dieses Themas
  • Private Nachricht senden

74

15.02.2012, 20:57

Danke :) Allerdings sind meine Objekte jetzt auch Transparent ^^ Wie krieg ich das weg?

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

75

15.02.2012, 22:28

*edit*
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

76

16.02.2012, 12:30

Allerdings sind meine Objekte jetzt auch Transparent


Wie sieht denn das Ergebnis aus?
@D13_Dreinig

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

77

16.02.2012, 13:10

Mit AlphaBlending:

erster Pass: SRCCOLOR, INVSRCCOLOR
zweiter Pass: SRCCOLOR, ONE

Ohne AlphaBlending:
erster Pass: ONE, ZERO
zweiter Pass: ONE, ONE

jeweils in der Reihenfolge SourceBlendFaktor - TargetBlendFaktor
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

FSA

Community-Fossil

  • »FSA« ist der Autor dieses Themas
  • Private Nachricht senden

78

16.02.2012, 16:37

Danke :) Und nun endlich die letzte Frage vorerst: Wie siehts mit dem 3. Pass aus? wieder ONE, ONE?

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

79

16.02.2012, 16:48

Ja, alle weiteren sind ebenso additiv. Du musst Dir das ja mal physikalisch vorstellen: Licht fällt auf eine Oberfläche und wird in Dein Auge reflektiert, damit Du es sehen kannst. Wenn Du jetzt eine weitere Lichtquelle anschaltest, addiert sich deren Lichtenergie zu der, die Du eh schon von einem Oberflächenpunkt empfängst. Nur der erste Pass wird halt anders gemacht, weil der zusätzlich zum Licht auch noch die reine "Anwesenheit" markiert, also z.B. in den ZBuffer schreibt
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

FSA

Community-Fossil

  • »FSA« ist der Autor dieses Themas
  • Private Nachricht senden

80

16.02.2012, 18:22

Danke :) So jetzt habe ich alles fertig mit 3 Verschiedenen Lichtern ^^ Jetzt beantrage ich Urlaub(haha). Also großen Danke an alle für die Geduld und Mühe.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

Werbeanzeige

Ähnliche Themen