simplestarの技術ブログ

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

Programming

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:パフォーマンス表示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:OpenCVを直接使う4

今回は Android 端末で OpenCV を直接使う Unity 製アプリを作ってみます。先に Unity 側のコードを書くと次の通り 前回の WebCam 画像の取得の枠組みを用意して、そこの Update 関数にて次のようにカメラ画像の pixel 配列の先頭アドレスを固定して渡します…

Unity:OpenCVを直接使う3

Unity は WebCamTexture でカメラ画像テクスチャを管理します。 OpenCV は Mat (行列) でカメラ画像情報を管理します。目標は Unity の WebCamTexture を Mat に変換して、OpenCV の機能を存分に活用し たとえば次のような MarkerlessAR Example の実行を行…

TerraformでAWSのインスタンス管理

そういえばしばらく前にサーバー技術を学ぼうとしたんだっけ simplestar-tech.hatenablog.comAWS そういえば触ってたな(3か月前の作業だけど、もう忘れかけている) simplestar-tech.hatenablog.comAWS のコンソールページでポチポチクリックしてひな形(AMI…

Unity:OpenCVを直接使う2

他人の記事に惑わされずに、公式のドキュメントを読むべき その公式ドキュメントは、リリースされている OpenCV の Source をダウンロードして platforms フォルダにある。 フォルダにはテキストファイルが一つ入っており、次のリンク先のイントロを読むべし…

Distributed TensorFlow with Cloud ML Engine (Implementation Details)

■前置き 今現在、世界中の天才と呼ばれる人類層が、必死になって神秘のヴェールをはがしている領域で ごく最近使われるようになってきた単語を使って説明するので、かなり知的負荷が高いこと書きます。 筆者もいっぱいいっぱいで、わからなくても気にせず、…

TensorFlow GAN メモ

■前置き 今から半年ほど前の Google AI Blog の記事ai.googleblog.com TFGAN: A Lightweight Library for Generative Adversarial Networks 要約すると「GANってのは、コンテンツ生成という新しい研究領域を広げてます。 例を見てみ、すごいっしょ! すぐに…

Google Cloud Machine Learning Engine で分散ディープラーニング

■前置き TensorFlow をクラウド環境で分散実行したい公式のチュートリアルが分かりやすかったです。本記事はGoogle Cloud ML って何?て状態の人が そのチュートリアルにたどり着くまでの記録■手順 参考サイト www.topgate.co.jpGoogle アカウントを作成 コ…

TensorFlowの導入記録(エラー無かった)

■前置き 近頃はやりの Deep Learning を触ってみることにした。Deep Learning はホントに流行っていて、覚えきれないくらいツールが溢れている(+_+)未来があると思われる、Googleが開発したTensorflow(テンサーフロー) の Hello, World なる MNIST の学習…

goでjson文字列からオブジェクトを生成

■前置きGoで書いたWebAPIサーバが今 json 文字列を受け取っています。 json文字列に含まれる情報から必要な値をピックアップして、外部のグラフ表示ソフトが期待しているようなフォーマットでファイル出力しなければなりません。さて、つまり json 文字列か…

Webページからオブジェクトをjson文字列に変換してPOST

■前置き Webページから文字列をPOSTする際、クエリストリングのように連想配列を文字列で送信できることは確認済み さて、ユーザーアクティビティってのはそう単純なデータ構造じゃないんです。 ユーザ定義のデータ構造の配列の配列なんてこともあって、これ…

Goでローカルファイルにテキストファイルを書き出す

■前置き WebページをユーザのクライアントマシンからWebブラウザで見てもらい ユーザアクティビティを短い文字列情報でPOSTしてもらうことで、ユーザ端末で何が起きたのかを収集します。ログを出すだけじゃ意味がなく、受け取った情報をファイルに保存しなけ…

GoのAPIサーバの疎通確認

■前置き 何かしらのユーザアクティビティを収集するWebページをjavascriptで書いていて、セキュリティの関係でクライアントのローカルストレージに一切アクセスできないということに気づいたとき Webサーバ側にクライアントの情報を送信するしかないってこと…

Webサーバーがブラウザから情報を受け取るサンプル

メモ書き、あとで消します。■前置き Webサイトを閲覧する iPad で行われる操作ログをファイルとして保存しようにも、保存することができない仕様なので詰む 解決するにはブラウザで処理した内容をサーバーに送るしかない どうやって?■前提知識 HTTP という…

WindowsでWeb アプリ開発環境作る

■前置き とにかく今こうして作業しているマシンがローカルネットワーク環境でWebサーバーとして機能すればいい index.html を配置したフォルダがルートになって Web サーバーとなる仕組みがほしい■本題 IIS がキーワード、導入手順は以下のどれも同じ手順を…

Go言語の通信スケルトンコード例

■前置きGoってのはマルチコア処理で効率的に同時アクセスをさばく、現時点で最強?のネットワークプログラミング言語ですので その機能を最大限に発揮するスケルトンコードをチュートリアルで公開しているものと思っていました。 が、あまりにプリミティブな…

GoのIDE試し

■前置き1 Go言語学習を、ずっとテキストファイルで進めてきましたけど、そろそろ限界 C#のようにVisual Studio のインテリセンスがあるなら使いたいVisual Studio Code で、Go サポートがあるので、設定して試してみます。■本題Visual Studio CodeVSCode 入…

Goはローカルで通信確認できる?

■前置き1Go 環境整って Hello World 動きます。 言語の目的がマルチコアのネットワークブログラムなんだから、数行でサーバーとして機能するんだよね? どういう書式か確認させてもらおう■前置き2先に書式を学んで行け、馬鹿野郎 とドキュメントに怒られた…

Go の Hello World はどうやって確認?

■あGo 言語のトップページで Hello World を確認できる The Go Programming Languageコードをオンラインで解析して、結果を返してくれるみたいjava っぽく、package 名をファイル頭で定義して import で出力関数を利用できるようにし main 関数(プログラム…

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

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

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

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

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

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

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

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