CORETECH ENGINEER BLOG

https://blog.sge-coretech.com/

株式会社サイバーエージェント SGEコア技術本部 技術ブログ

フィード

記事のアイキャッチ画像
Unity でテクスチャをハードウェアエンコーダーに直接渡して録画する (iOS/Android)
CORETECH ENGINEER BLOG
こんにちは、コア技術本部の瀬戸です。 私たちが OSS として公開している Instant Replay for Unity は、Unity で実行中のゲーム画面を常時録画し、任意のタイミングで直近 N 秒を動画として書き出すことができるライブラリです。 先日リリースした v1.4.0 では、iOS / macOS / Android でメモリ消費量が 20MiB 〜 30MiB 程度削減されています。今回はこのパフォーマンス改善の要である、テクスチャを直接ハードウェアエンコーダーに渡す仕組みについて解説します。 以前の実装 ディスクリート GPU 上のハードウェアエンコーダーを使用する場合 …
12日前
記事のアイキャッチ画像
人が増えても遅くならないゲーム開発をするためにUnityエンジニアが実践したことまとめ
CORETECH ENGINEER BLOG
はじめに プロジェクトの前提 プロジェクト初期に負債を産まないということ 情報へのアクセス経路を最適化する ブルックスの法則とアウトゲーム設計 ビジネスロジックのテストとシフトレフトの重要性 ビューのテストを諦めない インゲームは柔軟な初期設計に 作り直しを防ぐLookDev Unityエディタのパフォーマンスチューニングに向き合う 工数見積りに工数をかけすぎない エンジニア以外も使うツールだからこそ直感的に効率的に まとめと宣伝 はじめに こんにちは、株式会社サイバーエージェント SGEコア技術本部(コアテク)のエンジニアの矢野です。 私はこの一年ほど、あるモバイルゲームの新規開発に携わって…
22日前
記事のアイキャッチ画像
3DとUIのハイブリッド解像度を実現する「Reso Dynamix」を公開しました
CORETECH ENGINEER BLOG
こんにちは、SGEコア技術本部(コアテク)のグラフィックスチームの清原です。 今回はUnity上で3DとUIのハイブリッド解像度を実現する「Reso Dynamix」をOSSとして公開したので、それについてご紹介します。 github.com 3DとUIの解像度を変えたい Unityでゲームを開発しているときに、GPUのパフォーマンス的な問題で描画解像度を落としたい場合があります。しかし、全体の描画解像度を下げてしまうと、テキストの視認性が落ちてしまい、文字がつぶれて読めないといった問題が起きることがあります。 そこで、3Dの描画解像度のみを下げたいというケースがよくあります。 このような場合…
1ヶ月前
記事のアイキャッチ画像
ゲーム開発における3Dアニメーション作り方 - 接地感のある歩き編 -
CORETECH ENGINEER BLOG
はじめに こんにちは、サイバーエージェントゲームエンターテイメント事業部 SGEコアクリエイティブ本部所属の3Dアーティスト 畠 と申します。 今回はゲーム開発における3Dアニメーションの作り方 「接地感のある歩き」についてお話しさせていただきます。 3Dゲームにおけるキャラクターの移動は、ゲームバランスや企画内容によって移動スピードが指定されます。 アニメーターはキャラクターの性格を踏まえつつ その指定されたスピードで移動するアニメーションを作成しなくてはなりません。 このブログは移動スピードが設定された条件で 「足を滑らせない、接地感のあるアニメーション」の作り方に重点をおいて説明します。…
2ヶ月前
記事のアイキャッチ画像
Addressables のアドレスを定数として出力できるライブラリを公開しました
CORETECH ENGINEER BLOG
こんにちは、SGE コア技術本部(コアテク)基盤チーム所属の袴田です。 Unity の Addressables を使ったプロジェクトで、こんな経験はありませんか? アドレスが character_icon_001 なのか character_icon_0001 なのか分からなくなる タイポに気づかず実機確認時にロード失敗でエラーになる キャラクター ID からアドレスを構築する関数が複数箇所に散在している パスやファイル名に依存しないアドレスを定義して扱えるのは便利な反面、文字列を直に扱うと問題も起きがちです。 そんな問題を解決するために、Addressables のアドレスを定数として自動…
2ヶ月前
記事のアイキャッチ画像
【Addressables】Addressablesをもっと便利にする②
CORETECH ENGINEER BLOG
こんにちは、SGEコア技術本部(コアテク)基盤チーム所属の袴田です。 基盤チームでは各子会社で利用される基盤開発をメイン業務としています。 開発した基盤のいくつかはOSSとして公開もしています。 github.com 前回から半年以上間が空いてしまいましたが、引き続きAddressablesに施した改修について紹介していきます。今回はカタログのファイルサイズやメモリ使用量に関わる改善です。 本記事の改修に関わる機能 改修内容 総括 本記事の改修に関わる機能 Addressablesでは管理するアセットを参照できる型として AssetReference があります。 MonoBehaviour …
3ヶ月前
記事のアイキャッチ画像
Instant Replay for Unity v1.0.0 正式版をリリースしました
CORETECH ENGINEER BLOG
こんにちは、コア技術本部の瀬戸です。Instant Replay for Unity を v1.0.0 正式版としてリリースしたので、変更内容等についてご紹介します。 Instant Replay for Unity について Instant Replay for Unity は Unity で実行中のゲーム画面を常時録画し、任意のタイミングで動画として書き出すことができるライブラリです。Instant Replay for Unity の概要については以前の記事をご覧ください。 導入方法等はREADMEを参照してください。 Instant Replay for Unity について リアルタ…
3ヶ月前
記事のアイキャッチ画像
Unity6 RenderGraphでcameraColorを差し替えて戻しBlitを回避する手法
CORETECH ENGINEER BLOG
皆さんこんにちは、コアテクグラフィクスチーム所属のチャンユービンです。 RenderGraph応用紹介記事の連載が終了してからしばらく経ちましたが、今回からはRenderGraph開発に関する小さなTipsを順次ご紹介していきます。 今回は、自作RenderPassの中からcameraColorを差し替えることで、戻しBlitを省く手法について紹介します。 サンプルプロジェクト あらすじ 前提と用語 なぜ差し替えるとBlitを減らせるのか サンプルコード この手法がうまくいかないケース うまくいかない原因 フォールバック処理 サンプルコード まとめ サンプルプロジェクト https://git…
4ヶ月前
記事のアイキャッチ画像
Instant Replay for Unity でリアルタイムに動画をエンコードできるようになりました
CORETECH ENGINEER BLOG
こんにちは、コア技術本部の瀬戸です。この記事では、先日リリースした Instant Replay for Unity の新機能 リアルタイムモード についてご紹介します。 Instant Replay for Unity について リアルタイムモード 従来の仕組み リアルタイムモードの仕組み 使い方 内部実装 バッファ ネイティブ API の呼び出し プラットフォーム抽象化 Rust から各プラットフォームの API を呼ぶ方法 iOS / macOS (VideoToolbox, AudioToolbox, AVFoundation) Android (MediaCodec, MediaMu…
4ヶ月前
記事のアイキャッチ画像
SmartAddresserで「アドレス」や「Addressableのグループ」を基にラベルやバージョンを付与できるようになりました
CORETECH ENGINEER BLOG
こんにちは、SGEコア技術本部(コアテク)の矢野です。 今回はコアテクで出しているOSSである Smart Addresser の新機能についてご紹介します。 SmartAddresserとは アップデートの背景 Asset Filter Label Provider / Version Provider 既存コードへの影響・マイグレーション
6ヶ月前
記事のアイキャッチ画像
SmartAddresserアップデート:複数のルールセットを透過的に扱える新機能「CompositeLayoutRuleData」を追加しました
CORETECH ENGINEER BLOG
はじめに SmartAddresserとは 複数のレイアウトルールが必要になるケース 新機能「CompositeLayoutRuleData」の概要 使ってみる 注意点 LayoutRuleData間の依存関係 依存アセットの重複 まとめ はじめに UnityのAddressable Assets Systemにおけるアドレス設定を自動化する「SmartAddresser」に、新機能としてCompositeLayoutRuleDataを追加しました。 この機能により、複数のLayoutRuleDataを透過的に扱い、ビルド構成をより柔軟に管理できるようになります。 SmartAddresser…
7ヶ月前
記事のアイキャッチ画像
「NVIDIA FLIP」をUnityのTest Runnerで利用する
CORETECH ENGINEER BLOG
はじめに こんにちは、サイバーエージェントゲームエンターテイメント事業部、SGEコア技術本部(コアテク)のグラフィックスチームに所属している清原です。 今回は、コアテクのグラフィックスチームで取り組んだ「UnityのTest Runner上でNVIDIA製の画像比較ツールFLIPを用いたビジュアルリグレッションテストを実施できるようにするための検証・組み込み」についてご紹介します。 ビジュアルリグレッションテストとは ビジュアルリグレッションテストとは、グラフィックスの品質を自動的に検証するためのテスト手法です。主に以下のような目的で使用されます。 シェーダーの変更による見た目の変化の検出 レ…
7ヶ月前
記事のアイキャッチ画像
マテリアルから不要なパラメータを削除する【Nova Shader】
CORETECH ENGINEER BLOG
はじめに こんにちは。 サイバーエージェントゲームエンターテイメント事業部・SGEコア技術本部(以下、コアテク)のグラフィックスチーム所属の畳です。 コアテクでは、多機能なパーティクルシェーダーであるNova ShaderをOSSとして公開しています。 前回はエディタバージョンの互換性を保ちつつRenderGraphに対応する方法についてご紹介しました。 今回は、バージョン 2.6.0にて新たに追加した「不要なマテリアルパラメーターの削除ツール」についてご紹介します。 マテリアルに不要なパラメーターがあることによる弊害 Unity で使用されるマテリアルファイル(.mat)は、シェーダーに関す…
7ヶ月前
記事のアイキャッチ画像
Unity で直近 N 秒のプレイ動画をいつでも保存できるライブラリを公開しました
CORETECH ENGINEER BLOG
こんにちは、コア技術本部の瀬戸です。新しいライブラリ「Instant Replay for Unity」を OSS として公開しました。 Instant Replay は Unity で実行中のゲーム画面を常時録画し、任意のタイミングで動画として書き出すことができるライブラリです。事前に指定したフレーム数を上限として画面のキャプチャを行い、上限を超えたフレームは古いものから破棄します。常に直近 N フレーム分を動画として書き出せるような仕組みです。 必要なタイミングで直近のゲーム映像を遡って保存することができるため、記録したい出来事を逃さずに録画できます。 具体的には以下のような用途で利用でき…
8ヶ月前
記事のアイキャッチ画像
エディタバージョンの互換性を保ちつつRenderGraphに対応する【NOVA Shader】
CORETECH ENGINEER BLOG
はじめに こんにちは。 サイバーエージェントゲームエンターテイメント事業部・SGEコア技術本部(以下、コアテク)のグラフィックスチーム所属の畳です。 コアテクでは、多機能なパーティクルシェーダーであるNOVA ShaderをOSSとして公開しています。 前回はAdaptive Probe Volumesを自作シェーダーに対応させる方法についてご紹介しました。 今回は、NOVA Shader バージョン 2.7 にて実施した RenderGraph 対応に関する知見をもとに、Unity バージョンの互換性を保ちながら RenderGraph に対応する方法をご紹介します。 本記事は Unity …
8ヶ月前
記事のアイキャッチ画像
Adaptive Probe Volumesを自作シェーダーに対応させる【NOVA Shader】
CORETECH ENGINEER BLOG
はじめに こんにちは。 サイバーエージェントゲームエンターテイメント事業部・SGEコア技術本部(以下、コアテク)のグラフィックスチーム所属の畳です。 コアテクでは、多機能なパーティクルシェーダーであるNova ShaderをOSSとして公開しています。 前回はuGUI対応についてご紹介しました。 今回は、バージョン 2.8 にて実施した Adaptive Probe Volumes (以下、APV)対応に関する知見をもとに、自作シェーダーでの APV 対応方法を解説します。 本記事は Unity エディター バージョン 6000.0.35f1 を使用して執筆しています。 Adaptive Pr…
8ヶ月前
記事のアイキャッチ画像
Unity6からRenderGraphを使いこなそう!応用実装編4「SubPass/NativeRenderPassの仕組み」
CORETECH ENGINEER BLOG
Unity6のRenderGraphに関する技術記事の第4回目で、SubPassとNativeRenderPassの仕組みについて解説しています
8ヶ月前
記事のアイキャッチ画像
シェーダー最適化入門 第3回目 「レンダリングターゲットの解像度~縮小バッファエフェクト~」
CORETECH ENGINEER BLOG
はじめに こんにちは、サイバーエージェントゲームエンターテイメント事業部、SGEコア技術本部(コアテク)のグラフィックスチームに所属している清原です。 前回の記事でタイルベースGPUの話を通してメモリの速度についてみていきました。 今回はそれに関連して、GPU負荷とレンダリングターゲットの解像度の関係について解説します。 レンダリングターゲットの解像度 レンダリングターゲットとは、描画結果を出力するフレームバッファ(出力先)のことを指します。前回の記事でレンダリングターゲットに対する描き込みのメモリ負荷を減らすためにタイルベースGPUではタイルメモリが使われているという話をしました。 今回はレ…
8ヶ月前
記事のアイキャッチ画像
Unity6からRenderGraphを使いこなそう!応用実装編3「FrameBufferFetch」
CORETECH ENGINEER BLOG
Unity6 RenderGraphのFrameBufferFetchの使い方、メリットなどを解説する
1年前
記事のアイキャッチ画像
【Addressables】Addressablesをもっと便利にする①
CORETECH ENGINEER BLOG
こんにちは、SGEコア技術本部(コアテク)基盤チーム所属の袴田です。 基盤チームでは各子会社で利用される基盤開発をメイン業務としています。 開発した基盤のいくつかはOSSとして公開もしています。 github.com 基盤はフルスクラッチで開発することもあれば、Unityパッケージなど既存のものを改修することもあります。 このシリーズではAddressablesに対して施した改修について紹介していきます。 Addressablesとは 本記事の改修に関わる機能 改修内容 動作モードを追加するには アセット解決を両対応にする Addressablesとは AddressablesはUnityが提…
1年前
記事のアイキャッチ画像
シェーダー最適化入門 第2回目 「タイルベースレンダリングのGPUとは?」
CORETECH ENGINEER BLOG
はじめに こんにちは、サイバーエージェントゲームエンターテイメント事業部、SGEコア技術本部(コアテク)のグラフィックスチームに所属している清原です。 前回の記事からだいぶ時間が空いてしまいましたが、今回はスマートフォンのGPUで主流となっているタイルベースレンダリングのGPUの最適化についてお話していきます。 タイルベースレンダリング 現代のGPUは演算速度とメモリの読み書きの速度の差はどんどん大きくなってきていて、メモリアクセスが大きなボトルネックになってきています。 この問題をPCのディスクリートGPUなどではメモリ帯域の広いグラフィックス専用のメモリを搭載することで軽減することができて…
1年前
記事のアイキャッチ画像
【資料公開】コアテクLT会 - 忙しい人のためのUnity6重要機能紹介
CORETECH ENGINEER BLOG
はじめに スライド ブログ記事 ブログ記事にない内容 はじめに こんにちは、SGEコア技術本部(コアテク)の矢野です。 コアテクでは、社内向けに「コアテクLT会」という勉強会を開催しています。 社内の誰でも参加可能なオープンなLT会で、先日第20回目を迎えました。 誰でも参加できるので、版権に関する情報など、プロジェクト外に公開できない情報は扱いません。 それゆえ社外に出せる内容もあるので、それらについてはできる限り公開して、多少なり業界貢献に繋げられればと考えています。 今回はその取り組みの第一弾として、前日私が発表したUnity6に関するLTのスライドを公開します。 スライド 本LTは、日…
1年前
記事のアイキャッチ画像
ILPostProcessor 入門 第5回目「様々なテクニック」
CORETECH ENGINEER BLOG
この記事は ILPostProcessor 入門シリーズの第5回です。 第1回 はじめに + 最小実装 第2回 ILPostProcessor の基本構造 第3回 IL編集の基本 第4回 メタデータ 第5回 様々なテクニック (ここ) デバッガのアタッチ デバッガの構成 プロセスにアタッチ 便利なツール SharpLab ILSpy JetBrains Rider ildasm ILVerify トラブルシューティング Member '~~~' is declared in another module and needs to be imported TypeLoadException In…
1年前
記事のアイキャッチ画像
ILPostProcessor 入門 第4回目「メタデータ」
CORETECH ENGINEER BLOG
この記事は ILPostProcessor 入門シリーズの第4回です。 第1回 はじめに + 最小実装 第2回 ILPostProcessor の基本構造 第3回 IL編集の基本 第4回 メタデータ (ここ) 第5回 様々なテクニック アセンブリとモジュール TypeDefinition と TypeReference TypeSystem からビルトイン型の TypeReference を取得する TypeReference から TypeDefinition を取得する TypeDefinition から TypeReference を取得する 無から TypeReference を作成す…
1年前
記事のアイキャッチ画像
【Nova Shader 2.4.0】 uGUIでの再生に対応
CORETECH ENGINEER BLOG
はじめに こんにちは、SGEコア技術本部の清原です。 SGEコア技術本部では多機能なパーティクルシェーダーのNova ShaderをOSSとして公開しています。 今回はUnityのuGUI上でのエフェクトの再生に対応したバージョン2.4.0のNova Shaderが公開されたので、それについての紹介をさせていただきます。 uGUIでの再生とは? UIの演出を作っていると次のようにUIの上でエフェクトを再生したい場合があります。 UIの上にエフェクトを再生 また、UIとUIの間でエフェクトを再生したいなど、表示優先を設定したい場合もあります。 描画順番の設定 この様な要望を叶えるためにはエフェク…
1年前
記事のアイキャッチ画像
Unity6からRenderGraphを使いこなそう!応用実装編2「データの受け渡し」
CORETECH ENGINEER BLOG
Unity6 RenderGraphでPass間のデータ受け渡し手法解説
1年前
記事のアイキャッチ画像
ILPostProcessor 入門 第3回目「IL編集の基本」
CORETECH ENGINEER BLOG
この記事は ILPostProcessor 入門シリーズの第3回です。 第1回 はじめに + 最小実装 第2回 ILPostProcessor の基本構造 第3回 IL編集の基本 (ここ) 第4回 メタデータ 第5回 様々なテクニック 第1回、第2回と前置きが長くなりましたが、今回からいよいよILについて説明していきます。 概要 スタックマシン オペランドと命令の短縮形 スタック上の値の型 数値型 (int32, int64, F) native int O (オブジェクト参照) & (マネージドポインタ) ポインタと GC について Mono.CecilでIL命令を編集する いろいろなIL命…
1年前
記事のアイキャッチ画像
Unity6からRenderGraphを使いこなそう!応用実装編1「RenderPassの構築」
CORETECH ENGINEER BLOG
Unity6のRenderGraphで描画パイプラインをカスタマイズする方法解説
1年前
記事のアイキャッチ画像
【Xcode GPUプロファイリング入門 第1回 】シェーダーの負荷を計測してみよう
CORETECH ENGINEER BLOG
はじめに Metal System Traceでできること 開発環境 用語 Chapter1. 単色を出力するシェーダーの負荷を調べてみよう Schemeの編集 キャプチャの実行 キャプチャの確認 Pipeline Stateによるグルーピング Shader editorの起動 Vertex Function の負荷 Vertex Function の実行フロー Fragment Function の負荷 Frament Function の実行フロー Frament Function の負荷の内訳 Chapter2. テクスチャサンプリングの負荷を調べてみよう Vertex負荷 Vertex…
1年前
記事のアイキャッチ画像
ILPostProcessor 入門 第2回目「ILPostProcessorの基本構造」
CORETECH ENGINEER BLOG
この記事は ILPostProcessor 入門シリーズの第2回です。 第1回 はじめに + 最小実装 第2回 ILPostProcessor の基本構造 (ここ) 第3回 IL編集の基本 第4回 メタデータ 第5回 様々なテクニック ILについて説明していく前に、今回はILPostProcessorを実装するための下地を整えます。 実行モデル ログ出力の整備 アセンブリ解決 アセンブリ定義のキャッシュ 実行モデル 本格的に ILPostProcessor を実装していくにあたって注意が必要なのは、ILPostProcessor が Unity とは独立したプロセスで実行されるという点です。こ…
1年前