Jump to content
Unity Insider Forum

Mehrdimensionales NativeArray?


GaRv3

Recommended Posts

Hallo zusammen,

ich arbeite mich gerade in das neue C# Jobsystem der aktuellen Beta ein und möchte es u.a. für Performanceoptimierungen von Voxelsystemen nutzen.

Naturgemäß nutze ich ein dreidimensionales Array, welches die Informationen der einzelnen Voxel enthält. Das Jobsystem erlaubt aber nicht die nutzung von Arrays, da das Array ein Referenztyp ist und im Jobsystem nur Werttypen erlaubt sind. Macht ja auch irgendwie Sinn, da man sonst wieder in Race Conditions laufen könnte.

Meine Frage ist, wie ich ein dreidimensionales Array (Block[,,]) in ein dreidimensionales NativeArray<Block> umwandeln kann. Irgendwie fällt mir dazu nichts ein.

Vielen Dank und beste Grüße
garv3

Link zu diesem Kommentar
Auf anderen Seiten teilen

Warum muss das denn ein dreidimensionales NativeArray sein?
Du könntest dein Array auch linearisieren also du läufst über dein komplettes dreidimensionales Array Block[,,] drüber und schreibst das in dein NativeArray

   Multidimensionales Array
   { 0 , 1 , 2 }
   { 3 , 4 , 5 } 

   Linearisiert
   { 0 , 1 , 2 , 3 , 4 , 5 }

Da gibts viele verschiedene Möglichkeiten, die vielleicht am performantesten wäre Z-curve bzw. Morton Order aber simple for-schleifen sollten auch nach Rom führen.

Ich frage mich allerdings warum du überhaupt in Race Conditions laufen könntest? Du würdest doch dein Block Array nicht von mehreren Jobs bearbeiten lassen oder? Falls ja würde ich das vielleicht ein bisschen anders designen und zum Beispiel jedem Chunk/Block Array einen Job zur Verfügung stellen, der das bearbeitet, dann sind das abgetrennte Bereiche und es kann per Design her schon zu keinen Race Conditions kommen. 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...