テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

Thread

【Unity】JobSystemが使うワーカースレッドの数を制限する

たぶんUnity 2019.3から、ワーカースレッドの数を制限出来るようになったっぽいです。 ワーカースレッドの数を制限する ワーカースレッドの数 ワーカースレッドの数を制限する UnityのJobSystemは基本的に「使用できる全てのスレッドを使用」します。これは…

【Unity】IJobParallelForTransformでTransformを並列処理する際でも、スレッドをフル活用する為のポイント

今回はC# Job SystemでTransformAccessArrayを利用した際の、ジョブの分割数についてのお話です。 TransformAccessArrayが並列処理されない? 親が同じならば単一のジョブで実行される ジョブの分割数を制限 複数のIJobParallelForTransformを発行するとどう…

【Unity】C# Job Systemからでもランダムを使いたい

今回はC# Job Systemでランダムを使うアプローチについてです。 UnityEngine.Randomがメインスレッドでしか動作しない Unity.Mathematics.Random RandomをC# Job Systemで使ってみる とりあえずジョブにランダムを突っ込む。しかし 同じ結果が出ないようにす…

【Unity】ECSのEntityの作成やComponentDataの追加等の操作を別スレッドから実行する

今回はECSのEntityを非同期に作成する方法についてです。主に打規模なシーンのロード等に使用できそうです。 Entityの生成や破棄、削除はメインスレッド上で行う ExclusiveEntityTransaction ExclusiveEntityTransactionを使用しつつEntityManagerも使いたい…

【Unity】Profiler Native Plugin API

Unity 2018.2より、Profiler Native Plugin APIが実験機能として追加されました。何コレと思ったので少し探してみました。 Profiler Native Plugin API どうもコレは、Profilerの処理に追加でコールバックを設定してプロファイラーに乗せる情報をフックする…

【Unity】独自に作成したスレッドの処理時間をCPU Profiler(Timeline)で確認する

まんまタイトルの通りで、.NETで作成したスレッド上の処理時間をProfilerに乗せる方法についてです。 Profilerで負荷のかかっている場所を見つける 非同期処理とProfiler 複数フレームを跨げる 関連 Profilerで負荷のかかっている場所を見つける 処理負荷や…

【Unity】C# Job Systemを使う時によく見るエラー

今回はC# Job Systemを使ってるとよく見るエラーについてです。 A Native Collection has not been disposed, resulting in a memory leak. JobTempAlloc has allocations that are more than 4 frames old - this is not allowed and likely a leak nvalidO…

【Unity】C# Job Systemを自分なりに解説してみる

今回はUnity 2018.1の目玉機能であるC# Job Systemについて紹介します。 C# Job Systemは並列処理である 並列処理と非同期処理(バックグラウンド処理)の異なる立ち位置 要素を並列して処理する C# Job Systemの特徴 実際に使ってみた まずはRaycastCommand…