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

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

11

22.09.2013, 15:38

Modifizieren beide Threads den selben Effect? Wenn ja: wieso?

Das D3DX Effect System ist nicht Teil von Direct3D. D3DX ist selbst nur eine Library, die Direct3D verwendet. In den letzten Versionen des veralteten DirectX SDK findet sich sogar der Source Code des ganzen Effect Systems. Man könnte dort nachschauen, inwiefern das, was du vorhast, safe ist. D3DX gehört aber sowieso der Vergangenheit an, ich würde es möglicht schnell ablegen. "Shadervariablen" werden in D3D11 nicht direkt angesprochen, das lauft alles über Constant Buffer. Das Updaten der Constant Buffer lässt sich in einem Deferred Context erledigen, man muss nur aufpassen, dass man es richtig macht. Das Effect Framework kümmert sich intern selbst um das ganze Buffer Management und ich hab leider überhaupt keiner Erfahrung damit, sodass ich dir nicht wirklich sagen kann, inwiefern das mit Effekten funktionieren könnte.

FSA

Community-Fossil

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

12

22.09.2013, 15:41

Ich benutze einen Effekt, um ein Objekt zehn Mal an anderen Positionen zu rendern. Constant Buffer's zu benutzen, habe ich mir auch schon überlegt. Mit richtig machen meinst du das einhalten der Reihenfolge der Variablen?

Zitat

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

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

13

22.09.2013, 15:43

Ich benutze einen Effekt, um ein Objekt zehn Mal an anderen Positionen zu rendern.

Klingt nach einem klassischen Anwendungsfall für Instancing. Multithreading ist da imo nicht sinnvoll...

FSA

Community-Fossil

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

14

22.09.2013, 15:45

Richtig. Es ist nur zu Testzwecken, um das Multithreading mit DirectX11 zu erforschen.
Wie sieht das ganze dann mit Texturen aus? Wenn ich eine Textur an den Shader übergebe, benutze ich bisher ID3DX11EffectShaderResourceVariable. Man solle jetzt einen tBuffer benutzen?

Zitat

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

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »FSA« (22.09.2013, 15:53)


dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

15

22.09.2013, 15:54

In Direct3D würde man ein entsprechendes Shader Resource View verwenden. ID3DX11EffectShaderResourceVariable ist wohl einfach ein Wrapper dafür. Das Setzen von Resource Views ist kein Problem, das landet in der Command List.

Btw: Ein besseres Beispiel wäre wohl z.B. Command Lists für die Shadow Maps mehrerer Lichter parallel zu bauen. So lange jeder Thread nur ein paar einzelne Objekte bearbeitet, wirst du kaum was davon haben, eher im Gegenteil. Schau dir z.B. mal das entsprechende Sample an: http://code.msdn.microsoft.com/Direct3D-…readed-d02193c0

Werbeanzeige