タグ

ブックマーク / akinow.livedoor.blog (10)

  • うにばな 講座みたいなもの番外編(高速化(最適化)について3 モバイル系-翻訳) : Yaminabe

    こんばんわです 季節がらまたも台風が 西日方面からちかづいているとか 今年は大きめの 『大自然のおしおき』 が押しよせているようですが 被害が出ないよう気を引き締めないといけませんね そんな業務連絡 さて ようやくお仕事のほう一段落しましたが まだ膝に受けた傷が癒えておりません 長いこと記事も更新していないため かるく翻訳ネタでリハビリをしようと思います。 今回はUnite2013のUnityのモバイルゲームの最適化に関するペーパーを PDFのリンクだけだとさみしいので簡単に訳してみました 情報としてはちょっと古めかもしれませんが、これからUnityゲーム制作を初める方は参考にどうぞ。 |||||||||||||||||||||||||||||||||||||||||||||||||| □Optimizing Unity Games for Mobile Platforms | Ang

    うにばな 講座みたいなもの番外編(高速化(最適化)について3 モバイル系-翻訳) : Yaminabe
  • うにばな(シェーダへ配列データの転送 マルチUVなど) その2 : Yaminabe

    <shader > shaderに値を設定: myarray0 myarray1 myarray2.. <script > 配列名+数字 を文字列変換してシェーダにセットします: for (i=0; i<?; i++) { Shader.SetFloat("myarray"+i.ToString(), mycodearray[]); } ”配列名+数字”を文字列に変換して シェーダに転送する方法ですが 配列の要素が少なければこのようなやり方でも良いと思います。 シェーダ側では switch() ステートメントで切り分ければいいのかな? <Example> switch(i) { case 0: return myarray0; case 1: return myarray1; case 2: return myarray2; default: } ■方法2. GL命令を使用した描画はDLL

    うにばな(シェーダへ配列データの転送 マルチUVなど) その2 : Yaminabe
  • うにばな(シェーダへ配列データの転送 マルチUVなど) その1 : Yaminabe

    マルチUVの検索ワードが多めだったので 今回は予定を変更してUnityのマルチUVと配列の転送についてのおはなしをします。 コード全体を書いている時間がなかったので解説だけなのですが、記事の作成におもいのほか時間がかかってしまいまして コード書いたほうが楽だったじゃないの という企画倒れな面もありましたがなんとかまとめてみました。 頂点データにデータを付加する方法 データをテクスチャに変換する方法 ストラクチャーバッファなどを使用する方法(DX11)※ DX11を使用する方法は以前記事にしましたので参照して下さい その他 現在のところUnityはテクスチャUV0,UV1 2つまでメッシュデータに含むことができますがUV2がライトマップ用に予約されていてそれ以上のマルチUVの値を 通常では送ることが出来ません。シェーダ配列のサポートは未定ということらしいです フォーラムで最初の要望から数年た

    うにばな(シェーダへ配列データの転送 マルチUVなど) その1 : Yaminabe
  • うにばな (エフェクト用のシェーダに関するアイデア1+) : Yaminabe

    ※170607 補足記事をアップしました うにばな スクリーンスペース系のシェーダに関するTips 今回は”エフェクト用のシェーダに関するアイデア”の補足でGrabTextureを使用する場合のパーティクルのカラー合成をしてみます。 GrabTextureは背景からテクスチャにキャプチャした画像をカラー合成の対象にできる命令で スクリーンサイズのスナップショットをテクスチャに展開します。 GrabTexture命令で 取り込んだテクスチャにシェーダでモデルのカラーを合成をしてやれば ”エフェクト用のシェーダに関するアイデア”で使用したシェーダと同じような効果がねらえます。カラーを合成する式は これも以前掲載した フォトショップの合成式を使用することが出来るため フォトショップ上の見た目と同等の表現が期待出来て デザイナーにとっては非常にありがたい機能です。 ただしGrabTexture命令

    うにばな (エフェクト用のシェーダに関するアイデア1+) : Yaminabe
  • うにばな(ノーマル(法線)基本 と ノーマルマップ合成) : Yaminabe

    こんばんは 予告通り 「三つ目時 」=テレビ東京標準時の木曜夜7時半の更新です。 だれもわからないだろうけどw 今回はノーマル法線とノーマルマップの合成に関してのはなしです。 ●たっきゅんのガ☆チンコ開発日記 http://takkun.nyamuuuu.net/blog2/archives/1627 ● ISO-IEC 18026 - Clause 8, Spatial reference frames のほうから画像だけお借りしました 不都合があればお申し出ください -------------------------------------------------------------------------------------------------------------------------------------------------------- ノーマルマップはオ

    うにばな(ノーマル(法線)基本 と ノーマルマップ合成) : Yaminabe
  • うにばな( 暗号化・encrypt ) : Yaminabe

    暗号化についての検索がありましたので いくつかサンプルを掲載しました。 暗号化の基的なやり方ですが適当な文字列テーブルを作成して 独自のやり方で文字列操作をすることで暗号化をおこないます。 というのではイメージが湧かないと思いますので サンプルコードをいくつか抽出してみました。 セーブデータなどをPlayerPrefsなどに保存したい場合 簡単に中が見れてしまうので難読化する必要が出て来るかと思います。 PlayerPrefs 暗号化のサンプルは簡単なテーブル作成による暗号化です。 MD5暗号化はネット上で広く使用されている暗号化です (簡単ではないですが解析できなくはない) AES暗号化は最近よく名前の挙がるTORにも使用されている暗号化技術です。 ■PlayerPrefs 暗号化のサンプル http://forum.unity3d.com/threads/26437-PlayerPr

    うにばな( 暗号化・encrypt ) : Yaminabe
  • うにばな : Yaminabe

    うにばな です。 はじめての方は『うにばな』とはなんぞ と思われるかもですが Unityのはなし でうにばなです。 少し変わった名前をつけたほうが検索エンジンで上位に来やすいのでひっかかりやすい のと だれかに教えるときに うにばなっていうのがあってね っていうサイトを見てもらうきっかけになり易い それと 一番大きいのが、Unityの話に興味のないフォロワーさんが うにばな だから今日の更新は見なくていいや という判断をしてもらうためにつけました。 まあたいした理由じゃないです。 今週サーチエンジンの検索が多かった順でスクリプト関連のお話しをします ■一回だけ実行 時々こういう操作を行う場面があります 例えばStart()関数のあとに初期化を行いたい場合などですが 例えばUpdate()関数内などで一度だけ初期化の処理を実行したい場合は 何かフラグを作ることで一度だけ処理を行うようにします

    うにばな : Yaminabe
  • うにばな (講座みたいなもの 第四回) : Yaminabe

    だいぶ前回から間が開いてしまいました 今回はオブジェクトの移動と ゲームプレイモデルに適用するのに必要なものの解説をします。 今回は解説の図がはいってないので少々読みにくいのと 基しか書いてないので上達してしまった人には 物足りないかと思います 徐々に複雑な工程記事を入れていきますので がまんしてください。 Start()内で初期設定を行います Awake()との違いはAwake()がStart()より早く呼ばれることです。 例えばゲームオブジェクト全体に関わる設定などはAwake()の中で行ってStart()ではゲームオブジェクト内のローカルな設定を行うようにします。 たとえばゲームの開始で初期化したデータをゲームオブジェクトに引き継ぎたい時などAwake()で設定しStart()に引き継ぐようにするとうまくいきます。 各ゲームオブジェクトの実行のメインルーチンとなるUpdate()文

    うにばな (講座みたいなもの 第四回) : Yaminabe
  • うにばな 講座みたいなもの番外編(高速化について) : Yaminabe

    講座みたいなもの番外編です。 今回は "Unity3D 高速化" という検索ワードが非常に多かったため 公式サイトなどで確認した手法を まとめてみます。 ■『使用頻度の低いファンクションは削る』 ■『FindObjectsOfType, FindGameObjectWithTag, GameObject.Find といったFind系は処理が重い』 出来る限りAwake()、Start()文中などの初期化段階で行いましょう ■『static型を使用してください』静的な変数であるStaticタイプを使用することでメモリは固定され処理効率があがります。 これちょっと訳が正確かわかりません 単純に静的な値の割付け(つまりキャストしなさい)ということかもしれません。 最近のハードウェアでのフレームあたりのドローコールは500回程度ですが あまり多いポリゴン数とライトの数は処理を低下させます 対策とし

    うにばな 講座みたいなもの番外編(高速化について) : Yaminabe
  • うにばな(どた) : Yaminabe

    ちょっと更新の間があいてしまってすいません 仕事もつまっていたのですが 合間を縫って 何をしていたかといえば こんなんつくってましたよ 先週の月曜あたりからつくり始めたのですが いわゆるRTS(RealTimeStrategy)の中でもDota系と呼ばれるものだそうです。 最近だと『League Of Legend』なんていうゲームが人気のようですがRTSのように全てのユニットを動かすのではなく 何体かの能力をもつレジェンドと呼ばれるプレイヤーキャラクタを操作して ミニオンと呼ばれるオートで動作する手下と共に 相手の陣地を破壊するというゲーム内容らしいです。らしいというのは わたし自信 この手のゲームをまだプレイをしたことがなく youtubeの動画だけをたよりに製作している段階だからで、調整方法すらわかりません。 経緯から話せばゲーム制作配信をされているデザイナーの方がDota系の大ファ

    うにばな(どた) : Yaminabe
  • 1