GaRv3 Geschrieben 13. März 2018 Melden Share Geschrieben 13. März 2018 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 More sharing options...
Tiwaz Geschrieben 13. März 2018 Melden Share Geschrieben 13. März 2018 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 More sharing options...
GaRv3 Geschrieben 15. März 2018 Autor Melden Share Geschrieben 15. März 2018 Danke für deine Antwort. Habe es inzwischen genau so gelöst. Allerdings habe ich aktuell erst mal direkt selbst Threads implementiert. Mit dem Jobsystem werde ich mich in den kommenden Tagen beschäftigen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.