しがないエンジニアのブログ

技術的な内容をメモ代わりにつらつら

[Unite2018] パーティクル・マニアクス

公式サイト

http://events.unity3d.jp/unitetokyo2018/session-lineup.html#session28

講演者

Karl Jones (Unity Technologies Software Developer)

SlideShare

資料なし(ライブデモのみ)

概要

  • legacy particlesは2018.3でオワコン
  • particleの新機能紹介

内容

  • Ring Buffer Mode

    • 一番上のタブの下の方に追加
    • パーティクルの最大数
    • 最大以上になると、古いものから消えていく
    • pause until replace
      • フェードアウトして消えていく
    • loop until replace
      • 最大数以上に作れる
      • ゆっくり消えていく
  • Shape Module

    • Shapeモジュール
      • type module -> ping-pong
      • speedを下げていく
    • meshのvertex, edgeから順番に発生させる
  • External Forces Module

    • External Forceモジュール
      • Shape
      • Inner Radius
        • particleが放出されず、途中から発生点に戻る方向に動く
      • Gravity
        • 軌跡の変化を与える
  • Texture Sheet Animation Module

    • 固定FPS
    • minmax勾配なども
    • bake mash機能
      • collisionで利用するなど
  • Line Renderer Editor

    • エディタ上でマウスをクリック&ドラッグで軌跡描画
      • 点のクリックをつなげることも可能
      • 一度作成した点の編集も可能
    • Simple Rendererの設定によって粗さの設定も可能
    • bake meshにより、作成したものをmeshにして再利用することも可能
  • UI Particles

    • textureのマスクを掛けることが可能
  • automatic Culling Enabled

    • cullingによって自動updateがかかる?
    • 見えるparticleのみをupdateさせる
  • Particle System C# Jobs

    • ジョブシステムの統合
    • スクリプト内で直接変数を変更できる

[Unite2018] 実践的なパフォーマンス分析と最適化

公式サイト

http://events.unity3d.jp/unitetokyo2018/session-lineup.html#session24

講演者

Kerry Turner (Unity Technologies Developer Relations Engineer)

SlideShare

https://www.slideshare.net/UnityTechnologiesJapan/unite-2018-tokyo-96352657/UnityTechnologiesJapan/unite-2018-tokyo-96352657

概要

  • プロファイリングのベストプラクティス
  • メモリ消費を抑えるための設定事例
  • tips

内容

  • プロファイリング改善
    • Unity上で特定しない
      • プレイヤが体験するゲームを体験できない
      • メモリの最適化は実機上で変わる
    • 実際のHWでプロファイリングする
    • ゲーム全体でプロファイリングする
      • 全体のリソースの影響を考慮する
    • どの変更がどんな影響が与えたか、変更前と後で確認
    • Unity Profile Windowの利用 CPU資源管理
      • Deep Profiling
      • Profiler.BeginThreadProfiling()
    • Unity Frame Debugger
      • グラフィックAPIに送られたコマンドを調べる
    • Unity Memory Profiler
    • Platform-specific tools
      • OSレベルのプロファイリング
      • Unityツールに対して補完的なもの
        • GPU確認、コアな処理


  • 問題解決
    • ランタイムメモリ利用
      • Asset(texture, oudio)など
      • アセット利用のルールを作る
        • Ex) 特定の解像度以上にしてはいけない
        • AssetPostProcessor
        • 過剰に複雑なassetを使う
          • 完璧な陰影をつけた1セント硬貨的なやつ
          • 利用対効果を考える
        • Read/write enambed texture
          • 2個のテクスチャ
            • GPU
            • CPU用(余分)
              • CPU用のメモリを解除してメモリ効率を半減
          • Texture 2D
            • デフォルトでenable
            • Readonlyにする
              • Texture2D.Apply(updateMipmaps, true)
        • Mip map
          • 33%のテクスチャサイズの増加
          • デフォルトでtrue
          • カメラの距離が変わらないならdisable
            • Ex) UIなど
        • Read/write enabled mashes
          • GPU
          • CPU用
            • メッシュサイズを倍以上にしてしまう
            • Enableにするとき
              • コード上でメッシュにアクセスする場合
                • mesh colliderでマイナスのscale
                • mesh colliderでmeshをななめに利用
          • mesh.UploadMeshData(true);
            • readonlyにする
        • Vertex Compression
          • player settingで指定
            • 頂点チャネル数を指定
            • ただし精度は多少落ちる
            • 静的バッチ含め全てに適用される
            • 上書きされている場合は無効
              • 上書きされる条件
                • import設定
                  • mesh compressionで設定されている
                  • meshのread/writeがenableのとき
        • animation compression
          • 出来る限り設定する
          • animation compression errorの調整により精度の調整も可能
          • デフォルトはoff
            • legacy clipのとき
              • keyframe reduction
            • generic and humanoid clipのとき
              • optimal
        • audio load type
          • 推奨設定
            • streaming if > 1 MB
            • compressed in memory if > 200KB and < 1MB
            • decompress on Load if < 200KB
              • 解答されるバッファサイズが上回ってしまう
      • audio compression format
        • 短いaudio clip、圧縮率がそこまで必要ない
        • 長いaudio clip
        • 100%クオリティでやりたい
          • MP3
      • load times
        • GetScriptingClass()
          • MonoManager::GetScriptingClass()がクソ重い
            • 名前をたよりにクラスをアセンブリレベルで探す
            • Unity 2017以降は改善
        • ETC Crunch Texture
          • 非可逆圧縮
            • Unity 2017.3で新しいライブラリで、ETCでも利用可能
            • CrunchテクスチャGPUにアップロードする前にCPUでdecrunch
              • かなり時間がかかる
                • ETC
                  • サイズが大きいが早い
                • ETC Crunch
                  • サイズが小さいが思い
      • animation CPU optimization
        • Unity Animation System for clips if > 300 curves
        • Legacy for clips if < 300 curves
          • ex) UI、チェストを開くなど
          • ただし、ローエンドなコアの場合の結果であることに注意
        • Humanoid or Generic?
          • Humanoid
            • retargeting, IKを使う場合
          • Generic
            • そのた
        • Culling Mode
          • Always Animate(default)
            • すべてのanimationを実行する
          • Cull Completely
            • 何も実行しない
          • Cull Update Transforms
            • transform, retarget IKをスキップ
        • Animator bindings


  • Tips. more talk like this
    • Unite Europe 2017
    • Unity 2016
    • Unite Europe 2016

[Unite2018] ユニティちゃんトゥーンシェーダー2.0使いこなしスペシャル ~こだわりの活用法を紹介します!~

公式サイト

http://events.unity3d.jp/unitetokyo2018/session-lineup.html#session15

講演者

小林 信行 (ユニティ・テクノロジーズ・ジャパン合同会社)
京野 光平 a.k.a. ntny (ユニティ・テクノロジーズ・ジャパン合同会社)
暁 ゆ~き (フリーランス 3DCGキャラクターモデラー)
あいん つばい (フリーランス 3DCGキャラクターモデラー)

SlideShare

https://www.slideshare.net/UnityTechnologiesJapan/unite-2018-tokyo20

概要

  • ユニティちゃんトゥーンシェーダー(UTS) v2.0.4の新機能紹介
    • カラー設定
    • 光源を強調したカラー強調
    • 明色/暗色
    • 光源方向マスク
    • etc
  • モデラーのテクスチャワークフロー
    • 暁 ゆ~き
    • あいん つばい

内容

  • 暁 ゆ〜き
    f:id:turgure:20180611072528j:plain
    絵的な材質感にこだわった効率的なワークフロー
    • Unlit vs UTSv.2
    • High Color Mask
      • 金属部分以外の不要なスペキュラ(光沢)を抑える
    • Rim Light Mask
      • 材質によって光量を調整
      • 服の中に光を入れない
      • 服のシワの表現
    • Mat Cap
      • 金属の反射を環境に合わせる
    • Outline Sampler
      • ローポリモデル特有の髪の分かれ目の汚れを解決
    • UTS_Edge Detection
      • 輪郭・境界の表現


  • あいん つばい
    f:id:turgure:20180611072621j:plain
    Emissiveが印象的なモデル
    • マテリアルのEmissive設定と、Post Processing StackのBloom設定
    • Rimlight Feather Offの効果
      • リム部分のぼかし(feather)をカットしたリムライトを加算
    • Color Map + Emissive Texture
      • ブレードの刃文をEmissive Textureに書き込み
      • 明るい場所はEmissiveの効果が薄い
        • Color Mapで書き込んで表現


  • ntny流UTS2.0使いこなし講座
    f:id:turgure:20180611072804j:plain
    • 描画順トリックは古のテクニック
      • 「髪の上に眉毛」と同じ理屈
      • Light Wave、ステンシルの利用(max用語)
    • 横を向いたときに逆の目が透ける
      • 遮蔽用シールドを内部に配置して解決
    • 白目の陰影も三段強調
    • 口パク