渋谷ほととぎす通信

完全趣味でやってる技術メモ。※所属団体とは一切関係がありません。

Unity

これだけはやっておきたいRider設定ランキング

PCが新しくなり、諸々気持ちが一新し、普段Unity開発で使っていたRiderも初期化されました。 設定ファイルをそのままインポートすれば良いのですが、あえて最低限これだけはやっておきたい設定が何だったのかをランキング形式で確認したいと思います。 Rider…

Unity RenderTextureのメモリを解放するのはReleaseが良いの?Destroyが良いの?

RenderTextureのメモリ確保と解放タイミングを確認し、Release関数、Destroyどちらでも解放されることが分かりました。 2種類どちらを使った方が良いかという考察をしています。 普通に考えると、RenderTexture自体がクラスなのでGCを抑えるためにnewの回数…

Unity RenderTextureのメモリ確保と解放タイミングの落とし穴

RenderTextureを動的にスクリプトから生成して、Blitしてごにょにょするというフローの中で、どのタイミングでメモリが確保され、いつ解放されるのか確認したいと思います。 メモリのプロファイルということでUnity製MemoryProfilerを使います。 本環境はUni…

【WIP】Unityを使ってクリスマス的な何かを制作して季節を体感していきたい

僕は普段1日の大半を室内で過ごしています。外に出ている時間なんて計算すると4%位です。 気づけばそろそろクリスマス。娘がサンタさんに手紙を書いている姿を見かけました。 ということで、本ブログも季節感を取り入れていこうと思い、クリスマスをテーマに…

Unity2018.3.0からDynamicResolutionがiOSやAndroid端末で使えるようになっているので検証

先日リリースされたUnity2018.3の新機能をなめている最中です。本記事ではDynamicResolutionについて検証します。 DynamicResolutionとは? ランタイム中にレンダーターゲットの解像度を変更することができる機能です。 例 : 1920×1080で描画していたものを、…

Unity2018.3.0からGCを作動させないGarbageCollectorというAPIが追加されている

先日Unity2018.3.0が正式リリースされ、リリースノートを粛々読んだり、Unityブログを舐めている最中です。 気になった機能の一つとして、GCをコントロールするAPIが提供されたようなので検証しておきます。 GarbageCollectorクラスを使う UnityEngine.Scrip…

Unityでコンピュートシェーダを始めた時にトラブったこと3点

先日始めたコンピュートシェーダにおけるトラブル備忘録です。

Unityでコンピュートシェーダを始めてみた

マニュアルを見ながら、Mac環境でコンピュートシェーダを始めてみたいと思います。 前提としてコンピュートシェーダとは、頂点シェーダやフラグメントシェーダと違い、GPUを描画に使うのではなく、演算処理をさせるためのシェーダです。 ※GPGPUとも呼ばれて…

Unity 頂点シェーダ内でライト方向を取得する方法

Unityでシェーダを書く場合、とりあえず開発者が必要そうな変数やら関数はUnity側で用意されていることが多いので "UnityCG.cginc"、"AutoLight.cginc"、"Lighting.cginc"この辺りのファイルたちを眺めると良い感じです。 このようなライト方向とカラーを適…

Unity マウスに追随する形で動的にメッシュを生成する

動的にメッシュを生成するシリーズです。 今回はマウスに追随するブラシのようなメッシュを動的に生成したいと思います。

Unity動的にメッシュを生成するシリーズ

1.Unityで三角形を1つ描画、テクスチャまで貼る この辺りでやっているような三角形1つ描画するということをUnityでもやってみたというプリミティブな記事。 生のWebGLで三角形を描画するショートコード - 渋谷ほととぎす通信 C#でDirectX11 SlimDXで三角形を…

Unity 動的にカプセルメッシュを描画をしてみる

前回の球描画に引き続き、今回は以下のようなカプセルを描画します。 本記事は、動的にメッシュを生成するシリーズの一貫です。

Unity 動的に球のメッシュを描画をしてみる

3年前に執筆した↑記事の続きです。 先の記事シリーズでは、三角形を1個描画するところで終わっていますが、今回は↑のような球を動的に描画してみます。 パット見ハードルが一気に上がってそうですが、地道に1つずつ頂点の配置と順序を考えていけば大丈夫でし…

C#でDirectX11 UnityのTransform的な親子関係を実装してみる

Unity然り、FlashのActionScript3然り、表示オブジェクトの親子関係がデフォルト機能のように実装されていて、当たり前のように使ってきたのですが、一度理解してしまえば非常に簡単なのでしたが、自前で実装するとなると結構骨が折れました。 ということで…

UnityからArduinoへのシリアル通信

Arduiono HelloWorldしてみる - 渋谷ほととぎす通信の続きです。 今回はArduinoを使ったシリアル通信をやってみようと思います。

初心者向け事前知識なしの状態からUnityエンジニアがILを読んでみる

先日アセンブリを読むという記事を書き、C#から(コンパイラから)出力されたコードが最近の僕のブームでして、ILも一応読んで、Hello world ILくらいの勉強はしておこうと思います。

Unity Profilerによる計測時間をスクリプトから取得できた件

日曜日の夜って、日常の業務から開放されてUnityリファレンスをぼ〜っと眺めることがあると思うんですが、本記事はそういう時に起こる発見をメモするシリーズです。 ところで、CPU負荷をUnity上でサンプリングする時はProfiler.BeginSample()を使用していま…

TransformSceneHandleについて調べていたら、AnimationJobについて調べていた件

Unity2018.2.12f1時点ではまだExperimentalな機能であるTransformSceneHandleについて調査しました。 リファレンスはコチラ Position, rotation and scale of an object in the scene. A TransformSceneHandle is a safe handle on a TransformAccess. The A…

UnityのRootMotionへの理解がフワっとしていたので明らかにした

まさにタイトルの通りで、Animatorコンポーネントのルートモーションの使い方が実はよくわかっていなかったので確認しました。 サンプルとして、立方体のルート階層をX軸方向に動かすアニメーションで検証します。

過去バージョンのUnityをUnityHubでインストールできるようになっていた

開発バージョンがが少し古いUnityバージョンでマシンにインストールされていない場合、UnityHubに慣れてしまった僕の体は億劫になっていました。 (各マイナーバージョンの最新しかインストールできない仕様) というのは、Unityアーカイブページから、必要な…

初心者向け事前知識無しの状態から、Mac環境でUnityエンジニアがアセンブリに触れてみる

ECS完全に理解した勉強会で、@tnayukiさんのLTでアセンブリが話題になりました。良いプログラマーになるための近道はアセンブリを勉強することだとプログラマ初心者にアドバイスしたという発表が端を発したような気がしています。 #ECS完全に理解した pic.tw…

経路探索Astarアルゴリズムの勉強がてらUnityで実装してみた話

今日、正確には昨日、ECS完全に理解した勉強会に参加してきました。 個人的には制作モチベーションの刺激を頂いた感ある、実りある勉強会でした。 そして懇親会。お寿司がやたら美味しく感じ、おごってくれた & 場所を提供してくれたmixiさんには感謝です。 …

Unity製のアプリをXcodeでプロファイリングするとCPUフレームタイムが常にMAXになる件

Xcodeのバージョンと僕の所持するiPhone6SのOSバージョンの差異から、ここ最近手元PCでビルドしていませんでした。たまには、Xcodeでアプリのプロファイリングでもしようと思い、まずはMacをHigh Sierraにし、Xcode10をインストールしました。 Mojaveがリリ…

UnityEngine.Object.nameアクセスするとGC Allocされる件

UnityEngine.Object.nameするだけで、ヒープ領域を毎回確保するようです。 Unityのプロファイラを見てて気づきました。 以下僕の環境における実績。

UnityでPSDが認識されなくなったときにチェックすべきポイント

UnityはPSDを読み込めてとても便利です。 便利なのですが、突然僕の環境でPSDが読み込めなくなってしまいました。 テクスチャとしては読み込めているのですが、中身が真っ白という状況...

micro:bitの角度センサーを使ってUnityで遊ぶ

let dx = input.acceleration(Dimension.X) micro:bitは、上記のようなコードで傾きが取得できます。 それを使ってmicro:bitを傾けるとサメの進む方向を変えるというものを作ってみました。 ※この成果物は最近パソコンを触ることにハマっている4歳の娘とゲー…

シーンビューのAnimation Materialsチェックボックスの意味

いつのバージョンからかは忘れたのですが、シーンビューのプルダウンにAnimation Materialsという項目が追加されました。 コレなんだろう?って思ってて時が経ち、先程偶然知ることができました。 ↓↓コレです

IJobParallelForTransformでキューブを回転させる

Unity JobSystemをとりあえずやってみる序 IJobParallelForで並列処理させるジョブを作ってみる IJobParallelForTransformを使ってTransformを並列処理させる この辺りの記事の続きにあたりますが、絶賛JobSystemの使い方を探し中です。 今回はたくさんのキ…

IJobParallelForTransformを使ってTransformを並列処理させる

前回、前々回とIJob、IJobParallelForを使ったJobSystemについて触れてきました。 今回は僕的には

IJobParallelForで並列処理させるジョブを作ってみる

前回はIJobインターフェースでJobSystemを使ってみました。 IJobインターフェースで作ったジョブは1つのWorkerThreadに処理を分散することしかできませんでしたが、今回はもっと多くのWorkerThreadに処理を分散させてみようと思います。