simplestarの技術ブログ

目的を書いて、思想と試行、結果と考察、そして具体的な手段を記録します。

Unity

Unity:ECSとJobSystemsでFractal Brownian Motion(fBm)ノイズを生成

記事制作は途中ですが、近いうちに完成させます。■前提知識ECS は 2018年8月に自分が書いた記事を読み直して、再度頭に叩き込みます。(うむ、全然わからないな、自分の記事なのに) Unity:CEDEC2018のECSの発表から学ぶ - simplestarの技術ブログ2018年9月…

Unity2017~2018の追加機能の習熟作業を振り返る

前回の目標を達成しました。以下が前回の目標に掲げたこと Unity に頂点カラーのマテリアルは用意されていません。 そこで、シェーダを多少はいじれるようにしておきたいと考えました。 そのほかUnityのシェーダーを編集できる UI の確認 タイムラインもそろ…

Unity:Timelineでスクリプトの関数を呼ぶ具体的な手順

昨今のゲームはアイドルが歌って踊るシーンを眺めたりするものが多く、そういったシーンを作るときにタイムラインを制作することになります。各社が内製ツールで頑張っていたため、Unity 2017 で公式に導入されました。 docs.unity3d.com私たちが知りたいの…

Unity:ShaderGraph to ShaderCode

There is a way to convert shader graph to shader code.You can open the graph, right click the master node and select "Copy shader".Paste the shader code to your shader file.Example: Vertex Color Shader Shader "Unlit Master" { Properties { …

Unity:頂点カラーマテリアルの作り方

先週の予告通り、Unity で頂点カラーマテリアルを作る方法を習得しましたので、私のメンタルモデルを記録・共有します。 Unity のマテリアルは元となるシェーダーのインスタンスと捉えることができ、特殊なマテリアルが欲しい場合はシェーダーをカスタマイズ…

Unity:頂点生成三角柱のインスタンスの統合による高速化

前回 15 x 15 x 15 の計3375個の三角柱を生成したとき、その時のインスタンス作成処理に 0.3秒ほど要していました。 ここから先、画面を埋め尽くすほどのブロックの数を表示しようというのに、もう既に諦めなければならないほど低速です。 この処理を高速化…

Unity:頂点法線の計算と事前設定の速度の違い

2週間前に、Unityのパフォーマンス測定の差先端について調べた記事を書きました。 simplestar-tech.hatenablog.comここで調べた手法で、頂点生成系のプログラムのいくつかの負荷試験を行ってみます。 タイトルの通り、頂点法線の計算をランタイムで行うのと…

Unity:頂点生成による三角柱

頂点カラーシェーダーのテスト用にメッシュオブジェクトを用意します。ちょうど1年前に六角柱を作りましたが、やはり最も頂点数の少ない三角柱から作ろうと思います。 simplestar-tech.hatenablog.comもう既に書式は習っているので、知っていることを利用し…

Unity:レールに沿ったカメラを表現するCinemachine

前回、初めて Cinemachine を触ってみましたが、サクッと三人称視点のフリーカメラの動きを実現できました。 simplestar-tech.hatenablog.comCinemachine の見どころは多く、まだまだその機能を紹介しきれていません。 カメラワークのイメージと、それを Cin…

Unity:CinemachineでTPSカメラ制御してみる

Chinemachine (シネマシーン)とは、映画のカメラワークを強力にサポートするツールセットの名称です。 映画監督ばりに、絵コンテ通りにカメラを動かしたい、そんなときに役立つ公式アセットです。(あるときから公式になった人気ツール?なのかな)とりあ…

Unity:2018.2以降のPrefabとAssetBundleの変化を追う

ココが変わる!Unityの新しいエディターワークフロー CEDEC2018いつもお世話になっている「テラシュールブログ」の中の人の発表です。 これだけ Slide Share にアップされていない様子なので、記憶を頼りに と思ったら Youtube に動画を発見した www.youtube…

Unity:パフォーマンス表示uGUIの作り方(2018版)

最近 ECS + Job Systems + Burst Compile と SRP の習熟度を上げましたが、今度は開発中にゲーム内のUIでパフォーマンスをチェックする機構について興味がわいたので 最新の Unity のパフォーマンス計測テクニックを参考に作ってみたいと思います。ちょっと…

Unity:ScriptableRenderPipeline(SRP)の書式確認

Unity の Scriptable Render Pipeline(SRP) とは端的に言うと、Unity がフレームをどのようにレンダーするかをデベロッパーが C# で制御できるようにするものです。(大事なことなので何度でも)前回の記事でSRPの導入方法はバッチリ simplestar-tech.hatena…

Unity:2018のScriptable Render Pipelineに慣れる

Scriptable Render Pipeline(SRP) とは端的に言うと、Unity がフレームをどのようにレンダーするかをデベロッパーが C# で制御できるようにするものです。ついに Unity のブラックボックスに手を入れられる時代が始まろうとしています。 これを活用できるか…

Unity:job-system-cookbookからC#JobSystemの実例を確認

ちょっと前の私の記事 simplestar-tech.hatenablog.com こちらでメッシュの変形やCubeの移動、画像処理などのサンプルをみつけたので、今回はそのサンプルの実装を確かめていきます。Unity 2108.2.5f1 PackageManager にて Burst 0.2.4-preview.26 Entities …

Unity:CEDEC2018のECSの発表から学ぶ

Unity にはコンポーネント指向という作法がここ10年間築かれてきましたが、他のゲームエンジンに並ぶような速度で計算するためには、そのコンポーネント指向をやめる必要があります。 ECSと呼ばれる新しいシステムを導入して、パフォーマンスを上げていくこ…

Unity:C# JobSystemとBurstCompilerそしてECSこと(EntityComponentSystem)の概要

この三つがそろった時、Unity は完全体となって、Unreal は死ぬという噂が流れるほど Unity のパフォーマンスを向上しつつ、競合状態などを起こさないように安全にコーディングできるようになるとのことさて、前回に続いて C# Job System の書式を学んでいま…

Unity:安全な並列処理をする C# Job System について学ぶ

Unity の GDC2018 の英語発表見てるけど、長いな まずは椿さんことUnityエヴァンジェリストの山村さんのブログ読んでどういう話なのか、知識を増やします。 tsubakit1.hateblo.jp確かに、過去に Task とスレッドセーフキューを使った実装で、大量のブロック…

Unity:ポストプロセスの公式例

docs.unity3d.com によれば、次のポストプロセシングスタック をインポートすれば、ポストプロセスを有効化する例を確認できます。 github.comversion requires Unity 5.6.1+ と、結構新しい状態にしないと確認できない

Unity:シーンとオブジェクト

しばらく Unity から離れると、Unity の書式を忘れるので、わかっている範囲で書き留める。 初めて Unity を理解する人には、その理解の一助になるといいですね。Unity はコンポーネント指向で作られていると公式ドキュメントに書かれていますが、それだけで…

Unity:UNETの基礎と実装

最近素晴らしい UNET の記事を見つけました。 nn-hokuson.hatenablog.comネットワークゲームには二種 Peer-to-Peer 型と Client-Server 型があります。数万人がアクセスするような商業成功タイプは Client-Server 型ですが、UNET は残念?ながら数人がリアル…

AIに身体性を与えるためのマイクロワールドの構築18:大気の循環

この世界で水が山頂の方から流れてくるのはなぜか考えたことはありますでしょうか? 大気は循環しており、その大気に水が含まれているため、その大気が雨を降らせ、山から水が流れてきます。はい、ということで今回は大気の循環をブロックのロジックを使って…

Task.Run:Unityマルチスレッド処理に引数を渡す方法

AIに身体性を持たせるためのマイクロワールド:ブロックロジックの可視化システムの実装メモです。 まずは結果動画をご覧いただきたい。www.youtube.com マルチスレッド処理にて空気に触れている土ブロックだけが確率的に消失(正しくは空気ブロックにマテリ…

Unity:MessagePackをオブジェクトのバイナリ圧縮として使う

MessagePackは、効率の良いバイナリ形式のオブジェクト・シリアライズ フォーマットです。JSONの置き換えとして使うことができ、様々なプログラミング言語をまたいでデータを交換することが可能です。 しかも、JSONよりも速くてコンパクトです。 例えば、小さ…

Unity:C#で共用体ちっくなビットフィールドの利用:SimpleHexWorld17.8:適切にマテリアルを切り替えたい

前回、パフォーマンスを落とさないために、テクスチャ座標で異なるブロックの種類を表現できる仕組みを作ったわけですテクスチャ座標でブロックの種類を表現が、それでもマテリアルを切り替えたいときだってあります。そもそも四大元素や陰陽五行はマテリア…

金ブロックだけでできたマイクロワールドの様子

AIに身体性を与えるためのマイクロワールドの構築の、ちょっとした描画遊びです。これぞ金の山…ゴージャスです! 動画はこちら www.youtube.comマテリアルを一つにして、ブロックの種類をテクスチャ座標で切り替える方法を作りましたが、 しかし、今後金属ブ…

AIに身体性を与えるためのマイクロワールドの構築17.7:Unityテクスチャ座標活用で描画負荷を削減

前置き Unity では一つのメッシュに対し、複数のマテリアルを面ごとに割り当てることができます。 利用するマテリアル数を増やしていくと、増やした分だけレンダリングパスが増えていき、描画時間が線形的に増加し、フレームレートが大きく落ちてしまいます…

AIに身体性を与えるためのマイクロワールドの構築17.6:Unityでのマルチスレッド処理の話

前置き AIに身体性をもたせるためのマイクロワールドの開発を進めていますが、マルチスレッドで処理しているため、期待と異なる結果になったり、パフォーマンスが極端に落ちたりすると、うまく原因を特定できません。 頼みのプロファイラーも抽象度の高い結…

Unity:シーンに一つだけしかアタッチできないSingletonMonoBehaviour+実装例

グローバルスコープに唯一のインスタンスを生成して、プロジェクトのどこからでも容易にアクセスできる仕組みがシングルトンの良いところです。 絶対に一つしかインスタンスを生成していないことをコードから保証できる点で、優れたデザインパターンだと思い…

AIに身体性を与えるためのマイクロワールドの構築16.5:水のロジック

Unity でマインクラフトライクなゲーム制作の記録です。前回用意したプラグイン機構を使って、水ブロックのロジックを考えてみました。 ゆっくり移動するのですが、早送りするとそれらしい振る舞いに見えなくもないかな…動画はこちら www.youtube.com今回は…