SlideShare una empresa de Scribd logo
1 de 158
Descargar para leer sin conexión
高品質かつ低負荷な3Dライブを実現するシェーダー開発
~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スクスタ)の開発事例~
©KLabGames©SUNRISE©bushiroad All Rights Reserved.
KLab株式会社 細田 翔
2
2015年にKLab株式会社へ入社。

『ラブライブ!スクールアイドルフェスティバル ALL STARS』の3Dグラフィックス開発を担当。

3Dライブの演出機能の実装、描画のパフォーマンス最適化を行う。

シェーダーやレイマーチングによる映像制作やデモシーン制作が趣味。

細田 翔

グラフィックスエンジニア / テクニカルアーティスト

KLabGames事業本部

KLab株式会社

画像

3
『ラブライブ!スクールアイドルフェスティバル ALL STARS』

(スクスタ)について

4
5
6
● Unity 2018.4 LTS

● Unity Timeline

○ プロジェクト専用のカスタムトラックが多数

● Post Processing Stack v1(軽量化して利用)

● Graphics API

○ Android: OpenGL ES 3.0

○ iOS: Metal

● Forward Rendering(built-in render pipeline)

開発情報

7
本日のアジェンダ

● 高品質を実現するシェーダー

○ メンバー(キャラクター)用シェーダー

○ ステージ用シェーダー

● 低負荷を実現するシェーダー

○ 負荷の計測

○ エフェクト汎用シェーダー

○ ドローコールとオーバードロー

○ エフェクト専用シェーダー

8
本日のアジェンダ

● 高品質を実現するシェーダー

○ メンバー(キャラクター)用シェーダー

○ ステージ用シェーダー

● 低負荷を実現するシェーダー

○ 負荷の計測

○ エフェクト汎用シェーダー

○ ドローコールとオーバードロー

○ エフェクト専用シェーダー

9
メンバー(キャラクター)シェーダー

リムライトアウトライン
10
アウトライン

背面ポリゴンを膨らませる「よくある」アウトラインの方式

こだわりポイント



● カメラ距離とFoVで

アウトライン幅を自動補正

● インライン線への対応

● 頂点カラーによる微調整が可能

11
「カメラ距離とFoV」でアウトライン幅を自動補正

通常のアウトライン(補正なし)

アウトライン幅は、近づけば太くなるし、遠ざかれば細くなる

● 背面ポリゴンは普通の3Dモデルと同様に遠近法でスケールが変わる

● カメラからの距離やカメラのFoVの影響を受ける
😔
12
「カメラ距離とFoV」でアウトライン幅を自動補正

通常のアウトライン(補正なし)

アウトライン幅は、近づけば太くなるし、遠ざかれば細くなる

● 背面ポリゴンは普通の3Dモデルと同様に遠近法でスケールが変わる

● カメラからの距離やカメラのFoVの影響を受ける
理想のアウトライン(補正あり)

どんなカメラの距離やFoVでも、

常にバランス良いアウトライン幅に補正される

😍
😔
13
補正なし😔 補正あり😍
近景
望遠レンズ
遠景
広角レンズ
「カメラ距離とFoV」でアウトライン幅を自動補正

14
補正なし😔 補正あり😍
近景
望遠レンズ
遠景
広角レンズ
「カメラ距離とFoV」でアウトライン幅を自動補正

バランス良い
😍
太すぎる
😔
細すぎる
😔
バランス良い
😍
15
「カメラ距離とFoV」でアウトライン幅を自動補正

アウトライン幅を常に一定に保つ方式

カメラからの距離とFoVの影響を打ち消す処理を実装

16
「カメラ距離とFoV」でアウトライン幅を自動補正

アウトライン幅を常に一定に保つ方式

遠景時のアウトライン幅が太すぎて

バランスが悪かった😭
カメラからの距離とFoVの影響を打ち消す処理を実装

17
「カメラ距離とFoV」でアウトライン幅を自動補正

アウトライン幅を常に一定に保つ方式

遠景時のアウトライン幅が太すぎて

バランスが悪かった😭
カメラからの距離とFoVの影響を打ち消す処理を実装

不採用🙅‍♂

18
「カメラ距離とFoV」でアウトライン幅を自動補正

近景と遠景で2段階の補正



近景の場合

● 常に一定の幅に補正



遠景の場合

● 補正率(0~1)で補正の強度を調整

○ 補正率0:補正なし(通常の遠近法と同じ)

○ 補正率1:常に一定の幅に補正
パラメータは制作と相談して決定 

● 近景と遠景の境界値

● 遠景時の補正率
19
「カメラ距離とFoV」でアウトライン幅を自動補正

近景と遠景で2段階の補正



近景の場合

● 常に一定の幅に補正



遠景の場合

● 補正率(0~1)で補正の強度を調整

○ 補正率0:補正なし(通常の遠近法と同じ)

○ 補正率1:常に一定の幅に補正
パラメータは制作と相談して決定 

● 近景と遠景の境界値

● 遠景時の補正率
理想のアウトラインが完成!

20
「カメラ距離とFoV」でアウトライン幅を自動補正

近景と遠景で2段階の補正



近景の場合

● 常に一定の幅に補正



遠景の場合

● 補正率(0~1)で補正の強度を調整

○ 補正率0:補正なし(通常の遠近法と同じ)

○ 補正率1:常に一定の幅に補正
パラメータは制作と相談して決定 

● 近景と遠景の境界値

● 遠景時の補正率
理想のアウトラインが完成!
 採用🙆‍♂

21
インライン線

 アウトライン線

インライン線

背面ポリゴンがないインラインにも線を出す機能



フラグメントシェーダーで実装(頂点カラーの B 成分を2値化)

テクスチャへの線の描き込みとの違い

● アウトラインと同じロジックで色を計算できる 👍

● テクスチャ解像度によるジャギーが発生しない👍

22
アウトラインの品質向上

頂点カラーで微調整が可能

R: アウトライン幅の重みづけ

0に近づくほど細くなる



G: アウトラインの押し込み距離の重みづけ

不要な線をカメラ奥に押し込んで見えなくする

0に近づくほど奥に行く



B: インライン線の幅の重み付け

0に近づくほど細くなる
線を出したくないときは
RGBをそれぞれ0に
23
アウトラインをMaya上で確認

Maya用のCgFxシェーダーにも移植

Mayaのビューポート上で確
認ができる!
24
アウトラインをMaya上で確認

Maya用のCgFxシェーダーにも移植

Mayaのビューポート上で確
認ができる!
Unityへエクスポート不要に
作業イテレーションを高速化
25
アウトラインをMaya上で確認

Maya用のCgFxシェーダーにも移植

Mayaのビューポート上で確
認ができる!
Unityへエクスポート不要に
作業イテレーションを高速化
品質向上😍
26
リムライト

カメラ空間での平行光源の方向をパラメータに

● 方向をZ軸(デフォルト)にすれば、逆光表現のリムライト

● 方向を設定すれば、平行光源のライティング

リムライトによる
平行光源の応用例
光の方向を調整できる
27
リムライトとアウトラインの組み合わせ

通常のアウトライン
リムライト部分にもアウトラインが表示されてしまう
アウトラインの部分キャンセル ON
リムライト部分のアウトラインを消す
ステンシルで実装
28
本日のアジェンダ

● 高品質を実現するシェーダー

○ メンバー(キャラクター)用シェーダー

○ ステージ用シェーダー

● 低負荷を実現するシェーダー

○ 負荷の計測

○ エフェクト汎用シェーダー

○ ドローコールとオーバードロー

○ エフェクト専用シェーダー

29
ステージシェーダー

ライトマップ
による静的GI
Parallax-corrected Cubemap
による静的な鏡面反射
リアリティのある質感 ツルツルとした質感
30
ステージシェーダー

ライトマップ
による静的GI
Parallax-corrected Cubemap
による静的な鏡面反射
静的 = 事前計算の結果をテクスチャにベイクして、ランタイム時の負荷を削減
31
Parallax-corrected Cubemapとは

通常のCubemap
カメラ位置が考慮されないため、
反射の位置が不自然 😔
カメラが移動すると反射の映り込みに違和感がある
Parallax-corrected Cubemap
カメラ位置を考慮するため、
自然な反射 😍
カメラが移動しても反射の映り込みが破綻しない
32
Parallax-corrected Cubemapとは

通常のCubemap
カメラ位置が考慮されないため、
反射の位置が不自然 😔
カメラが移動すると反射の映り込みに違和感がある
Parallax-corrected Cubemap
カメラ位置を考慮するため、
自然な反射 😍
カメラが移動しても反射の映り込みが破綻しない
33
Parallax-corrected Cubemapの実装

Cubemapサンプル用の反射ベクトルを補正する手法

Sébastien Lagarde (2012).
“Local Image-based Lighting With
Parallax-corrected Cubemap”,
SIGGRAPH 2012 Talk
https://seblagarde.wordpress.com/2012/11/28/siggraph-2012-talk/
視差補正なし: 反射ベクトル R の計算

● 視線ベクトル V と 法線 N だけで計算

34
Parallax-corrected Cubemapの実装

Cubemapサンプル用の反射ベクトルを補正する手法

Sébastien Lagarde (2012).
“Local Image-based Lighting With
Parallax-corrected Cubemap”,
SIGGRAPH 2012 Talk
https://seblagarde.wordpress.com/2012/11/28/siggraph-2012-talk/
視差補正なし: 反射ベクトル R の計算

● 視線ベクトル V と 法線 N だけで計算

視差補正あり: Parallax-corrected Cubemapの R’

● 追加のパラメーター 

○ 部屋の壁の バウンディングボックス 

○ Cubemap(Reflection Probe)座標 C

● バウンディングボックス と R の交差点 P を求める

● C から P に向かうベクトルが R’ になる

35
Parallax-corrected Cubemapの実装

Cubemapサンプル用の反射ベクトルを補正する手法

Sébastien Lagarde (2012).
“Local Image-based Lighting With
Parallax-corrected Cubemap”,
SIGGRAPH 2012 Talk
https://seblagarde.wordpress.com/2012/11/28/siggraph-2012-talk/
視差補正なし: 反射ベクトル R の計算

● 視線ベクトル V と 法線 N だけで計算

視差補正あり: Parallax-corrected Cubemapの R’

● 追加のパラメーター 

○ 部屋の壁の バウンディングボックス 

○ Cubemap(Reflection Probe)座標 C

● バウンディングボックス と R の交差点 P を求める

● C から P に向かうベクトルが R’ になる

36
Parallax-corrected Cubemapの実装

Cubemapサンプル用の反射ベクトルを補正する手法

Sébastien Lagarde (2012).
“Local Image-based Lighting With
Parallax-corrected Cubemap”,
SIGGRAPH 2012 Talk
https://seblagarde.wordpress.com/2012/11/28/siggraph-2012-talk/
視差補正なし: 反射ベクトル R の計算

● 視線ベクトル V と 法線 N だけで計算

視差補正あり: Parallax-corrected Cubemapの R’

● 追加のパラメーター 

○ 部屋の壁の バウンディングボックス 

○ Cubemap(Reflection Probe)座標 C

● バウンディングボックス と R の交差点 P を求める

● C から P に向かうベクトルが R’ になる

37
Sébastien Lagarde (2012)
Unity用のHLSLによる実装例

Parallax-corrected Cubemapの実装例

half3 calcParallaxCorrectedCubemapReflect(float3 worldPos, half3 worldRefl)
{
float3 firstPlaneIntersect = (_BoxMax - worldPos) / worldRefl;
float3 secondPlaneIntersect = (_BoxMin - worldPos) / worldRefl;
float3 furthestPlane = max(firstPlaneIntersect, secondPlaneIntersect);
float dist = min(min(furthestPlane.x, furthestPlane.y), furthestPlane.z);
float3 worldIntersectPos = worldPos + worldRefl * dist;
return normalize(worldIntersectPos - _CubemapPos);
}
反射ベクトル R
38
Sébastien Lagarde (2012)
Unity用のHLSLによる実装例

Parallax-corrected Cubemapの実装例

half3 calcParallaxCorrectedCubemapReflect(float3 worldPos, half3 worldRefl)
{
float3 firstPlaneIntersect = (_BoxMax - worldPos) / worldRefl;
float3 secondPlaneIntersect = (_BoxMin - worldPos) / worldRefl;
float3 furthestPlane = max(firstPlaneIntersect, secondPlaneIntersect);
float dist = min(min(furthestPlane.x, furthestPlane.y), furthestPlane.z);
float3 worldIntersectPos = worldPos + worldRefl * dist;
return normalize(worldIntersectPos - _CubemapPos);
}
反射ベクトル R表面の座標
39
Sébastien Lagarde (2012)
Unity用のHLSLによる実装例

Parallax-corrected Cubemapの実装例

half3 calcParallaxCorrectedCubemapReflect(float3 worldPos, half3 worldRefl)
{
float3 firstPlaneIntersect = (_BoxMax - worldPos) / worldRefl;
float3 secondPlaneIntersect = (_BoxMin - worldPos) / worldRefl;
float3 furthestPlane = max(firstPlaneIntersect, secondPlaneIntersect);
float dist = min(min(furthestPlane.x, furthestPlane.y), furthestPlane.z);
float3 worldIntersectPos = worldPos + worldRefl * dist;
return normalize(worldIntersectPos - _CubemapPos);
}
表面の座標
Rとバウンディングボックス の
交差点 P を計算する処理
AABBに限定すれば簡単に計算可能
反射ベクトル R
40
Sébastien Lagarde (2012)
Unity用のHLSLによる実装例

Parallax-corrected Cubemapの実装例

half3 calcParallaxCorrectedCubemapReflect(float3 worldPos, half3 worldRefl)
{
float3 firstPlaneIntersect = (_BoxMax - worldPos) / worldRefl;
float3 secondPlaneIntersect = (_BoxMin - worldPos) / worldRefl;
float3 furthestPlane = max(firstPlaneIntersect, secondPlaneIntersect);
float dist = min(min(furthestPlane.x, furthestPlane.y), furthestPlane.z);
float3 worldIntersectPos = worldPos + worldRefl * dist;
return normalize(worldIntersectPos - _CubemapPos);
}
表面の座標
Rとバウンディングボックス の
交差点 P を計算する処理
AABBに限定すれば簡単に計算可能
最後に Cubemap C から交差点 P
に向かうベクトルを計算
これが補正された反射ベクトル R’
反射ベクトル R
41
本日のアジェンダ

● 高品質を実現するシェーダー

○ メンバー(キャラクター)用シェーダー

○ ステージ用シェーダー

● 低負荷を実現するシェーダー

○ 負荷の計測

○ エフェクト汎用シェーダー

○ ドローコールとオーバードロー

○ エフェクト専用シェーダー

42
最適化には負荷計測が最重要

● 憶測による最適化は厳禁🙅‍♂(逆効果もありえる)

● 実機上の負荷計測とボトルネックの特定が重要🙆‍♂

43
最適化には負荷計測が最重要

● 憶測による最適化は厳禁🙅‍♂(逆効果もありえる)

● 実機上の負荷計測とボトルネックの特定が重要🙆‍♂

それは知っているけど…

44
最適化には負荷計測が最重要

● 憶測による最適化は厳禁🙅‍♂(逆効果もありえる)

● 実機上の負荷計測とボトルネックの特定が重要🙆‍♂

忙しくて計測する

時間がない😭

それは知っているけど…

45
CI/CDと連携した負荷の自動計測

● アプリのビルドと連携し、完全放置で実機プロファイリング

○ 自動でアプリを実機インストール

○ 自動でアプリが起動

○ 自動でライブ周回

○ 自動でプロファイリング開始と終了

○ 自動でプロファイリング結果を集計
 😎
自動プロファイリングシステムで解決!
46
CI/CDと連携した負荷の自動計測

プロファイリング結果はダッシュボードに自動集計

計測サマリーの一覧
アプリバージョン×
端末×品質設定×楽曲で
検索結果を絞り込み
負荷の詳細
重たいメソッドTOP
負荷のカテゴリー分類
時系列の分析
フレーム単位の負荷
スパイクの検出に役立つ
47
CI/CDと連携した負荷の自動計測

● 利用技術

○ Unity Profiler Reader 

○ Google BigQuery

○ Google データポータル 



● CEDEC 2019 / GDC 2019で詳細を発表!資料公開あり

“Android向けUnity製ゲーム最適化のための
CI/CDと連携した自動プロファイリングシステム”, CEDEC 2019
https://www.slideshare.net/klab-tech/androidunitycicd
Unity Profilerで見れる全ての情報を取得
“Continuous Profiling for Android Game Performance Optimization”, GDC 2019
https://www.slideshare.net/klab-tech/continuous-profiling-for-android-game-performance-optimization-216466184
48
リリース9ヶ月前

49
リリース9ヶ月前

Xperia XZ, 『未来の僕らは知ってるよ』上級, 「3D高」設定





50
リリース9ヶ月前

Xperia XZ, 『未来の僕らは知ってるよ』上級, 「3D高」設定



1フレームあたりのCPUのメインスレッドの処理時間の平均: 103.11 ms



51
リリース9ヶ月前

Xperia XZ, 『未来の僕らは知ってるよ』上級, 「3D高」設定



1フレームあたりのCPUのメインスレッドの処理時間の平均: 103.11 ms



9.7 FPS!
ギャー

52
負荷の遷移

● Xperia XZ, 『未来の僕らは知ってるよ』上級, 「3D高」設定

● この端末では、30FPSを目標




 リリース9ヶ月前
 リリース5ヶ月前
 リリース時

1フレーム全体の

CPU処理の平均値

103.11 ms
 39.64 ms
 19.34 ms

レンダリングの

CPU処理の平均値

-
 12.24 ms
 4.84 ms

57 FPS!
25 FPS
9.7 FPS

自動計測の導入時期
53
負荷対策の背景

● 初期リリース向けのデータは既に完成していた

品質はそのままに
負荷を下げる必要があった
54
負荷対策の背景

● 初期リリース向けのデータは既に完成していた

品質はそのままに
負荷を下げる必要があった
演出用のエフェクトシェーダーの
創意工夫で解決!
55
本日のアジェンダ

● 高品質を実現するシェーダー

○ メンバー(キャラクター)用シェーダー

○ ステージ用シェーダー

● 低負荷を実現するシェーダー

○ 負荷の計測

○ エフェクト汎用シェーダー

○ ドローコールとオーバードロー

○ エフェクト専用シェーダー

56
色んなエフェクトに利用できる

シンプルな汎用シェーダー



エフェクト汎用シェーダー

床投影ライト スポットライト ディスプレイ
57
エフェクト汎用シェーダー

プロパティとして設定可能な項目



● ブレンドモード(アルファブレンド or 加算 or 乗算)

● カリングモード(両面描画 or 片面描画)

● 深度書き込みのON/OFF

● 深度テストのモード(通常の描画 or 常に最前面で描画)

● ステンシルの操作

● RenderQueue(描画順)


 レンダリングに関する様々な設定
58
ディスプレイは3層のレイヤー構造(3層とも汎用シェーダーを利用)

エフェクト汎用シェーダー

②演出
ステンシルテスト で
①の内部の領域内だけ
描画する
③ドット模様
アルファブレンドで描画
①背景
不透明で描画
ステンシル値を書き込む
UVスクロール
ディスプレイ完成!
59
ディスプレイは3層のレイヤー構造(3層とも汎用シェーダーを利用)

エフェクト汎用シェーダー

②演出
ステンシルテスト で
①の内部の領域内だけ
描画する
③ドット模様
アルファブレンドで描画
①背景
不透明で描画
ステンシル値を書き込む
UVスクロール
ディスプレイ完成!
60
エフェクト汎用シェーダー

メリット😊



● 単一のシェーダーで幅広い用途に対応可能

● 開発側のシェーダー修正なしに

制作側で幅広い表現ができる

● 複数のシェーダーを1つに統合して管理コストの削減



61
エフェクト汎用シェーダー

課題

プロパティが多すぎて設定に手間がかかる😵
62
エフェクト汎用シェーダー

課題

プロパティが多すぎて設定に手間がかかる😵
解決策

マテリアルの命名規則からプロパティを自動設定😎

AssetGraphを利用
63
AssetGraphとは

● Unity公式ツール

○ https://github.com/Unity-Technologies/AssetGraph



● ノードベースでアセットの操作を定義

○ 複数の用途に利用できる(ノードの組み方次第)

○ スクスタではAssetPostprocessorとして利用

64
AssetGraphのマテリアル用ノード

標準では無かったので、マテリアル設定用のカスタムノードを実装

ノードベースで

マテリアル設定の

ルールを定義

非エンジニアでも
管理できた
65
カラーリングシェーダー

66
カラーリングシェーダー

67
カラーリングシェーダー

カラーパレット暖色系 カラーパレット寒色系
68
カラーリングシェーダー

カラーパレット暖色系 カラーパレット寒色系
カラーパレット(小さなテクスチャ)
で点滅パターンを制御
69
カラーリングシェーダー

LEDパネルのステージのカラーIDの例

①②③④
⑨⑩⑪⑫
⑤⑥⑦⑧
⑬⑭
⑮⑯
70
カラーリングシェーダー

LEDパネルのステージのカラーIDの例

①②③④
⑨⑩⑪⑫
⑤⑥⑦⑧
⑬⑭
⑮⑯
71
カラーリングシェーダー

LEDパネルのステージのカラーIDの例

①②③④
⑨⑩⑪⑫
⑤⑥⑦⑧
⑬⑭
⑮⑯UV2のテクスチャの
濃淡で256階調のIDを設定可能
72
カラーリングシェーダー

カラーID
カラーパレット
合成結果のアニメーション
シェーダーで合成

73
カラーパレットの詳細

カラーリングシェーダー

X方向はカラーID
0 1 2 3 4 5 ....

合成結果のアニメーション
Y方向は時間
74
カラーパレットの詳細

カラーリングシェーダー

X方向はカラーID
0 1 2 3 4 5 ....

合成結果のアニメーション
Y方向は時間
75
カラーパレットの詳細

カラーリングシェーダー

X方向はカラーID
Y方向は時間
0 1 2 3 4 5 ....

合成結果のアニメーション
76
カラーパレットの詳細

カラーリングシェーダー

X方向はカラーID
Y方向は時間
0 1 2 3 4 5 ....

● シェーダーの実装

○ カラーIDと時間に応じて

カラーパレットのサンプリング用UVを計算

合成結果のアニメーション
77
カラーパレットの詳細

カラーリングシェーダー

X方向はカラーID
Y方向は時間
0 1 2 3 4 5 ....

● 時間方向のループ

○ テクスチャ設定のRepeat

● 色のグラデーションによる滑らかな変化

○ テクスチャ設定のBilinearFilter

合成結果のアニメーション
シェーダーでは特殊な処理を実装せずに
テクスチャの設定だけで実現した
78
複数のカラーパレットを1枚のテクスチャにパッキング

カラーリングシェーダー

79
カラーリングシェーダー

演出パターンの切り替え = 何番目のカラーパレットを使うかの指定

左から5番目の
カラーパレット
左から12番目の
カラーパレット
1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14

80
カラーリングシェーダー

● マテリアルの数の合計は4

● 色分け可能なIDの数は合計58(12 + 12 + 16 + 18)

①②③④
⑨⑩⑪⑫
⑤⑥⑦⑧
⑬⑭
⑮⑯
12
 12
 16

18

81
カラーリングシェーダー

演出パターン制御用のタイムラインのトラックの数に注目すると

カラーリングシェーダーが無かったら

トラックの数は58個(色分け可能なIDの数) → 入力工数が膨大😵

82
カラーリングシェーダー

演出パターン制御用のタイムラインのトラックの数に注目すると

カラーリングシェーダーが無かったら

トラックの数は58個(色分け可能なIDの数) → 入力工数が膨大😵

カラーリングシェーダーを使うと

トラックの数は4個(マテリアルの数) → 入力工数を削減😉

83
カラーリングシェーダーまとめ

カラーパレットという小さなテクスチャで

演出パターンを制御する特殊な汎用シェーダー

メリット

● カラーパレットだけ変更すれば、演出パターンを量産可能

○ 同じステージ素材を複数楽曲で再利用できる

● タイムラインのトラック数を減らして、演出の入力工数を削減

● 描画負荷の削減(ドローコール数の削減)

○ このあと、詳しく説明!

古き良きパレットアニメーション
をソフトウェア的に再現
84
本日のアジェンダ

● 高品質を実現するシェーダー

○ メンバー(キャラクター)用シェーダー

○ ステージ用シェーダー

● 低負荷を実現するシェーダー

○ 負荷の計測

○ エフェクト汎用シェーダー

○ ドローコールとオーバードロー

○ エフェクト専用シェーダー

85
ドローコールとオーバードロー

● ドローコール数

○ Meshを描画した回数

○ 描画のCPU負荷の指標になる



● オーバードロー

○ 重ね塗りをした回数

■ 1ピクセルあたりの描画回数

○ 描画のGPU負荷の指標になる

○ 半透明描画で増加しやすい

StatsのBatchesがドローコール数

SceneViewのOverdraw表示 

自動計測で確認可能
86
オーバードロー確認用シェーダー

GameViewで使えるオーバードロー表示

● Replaced Shaderで実装

● 描画モードを考慮した正確な数値になる

○ Unity標準のSceneViewのオーバードロー表示では、 

不透明マテリアルでも深度テストがされず、オーバードローが実際より過剰になる 

通常表示
 オーバードロー表示

実際のカメラワークや
ゲームUIを反映できる
87
ドローコールバッチングとは?

● 複数のMeshをまとめて描画するUnityによる最適化

● ドローコールバッチングの条件

○ 同じマテリアルを共有

○ トータル頂点数が900以下(厳密には頂点情報の数やUnityバージョンによって変わる)

ドローコール数 3

ドローコールバッチング 

ドローコール数 1

88
ドローコールバッチングしたい

● 同じマテリアルを共有した状態で色分けする方法

○ 頂点カラー

○ テクスチャのUV配置

○ カラーリングシェーダー

カラー指定だけでなく、

個別に色のアニメーションも可能!

89
描画順の整理によるドローコール削減





同じマテリアルが連続で描画されたときだけ

ドローコールバッチングができる

描画順も大事!
90
描画順の整理によるドローコール削減

同じマテリアルが連続して描画される場合

合計ドローコール数 2

#2
 #3
 #4
描画順 #1
 #5

91
描画順の整理によるドローコール削減

間に別のマテリアルが挟まって描画された場合

合計ドローコール数 5

#2
 #5
#3
描画順 #1
 #4

92
描画順の整理によるドローコール削減

同じマテリアルを連続して描画したい!
93
描画順の整理によるドローコール削減

同じマテリアルを連続して描画したい!
RenderQueueのルールを決めて、

同じマテリアルを連続して描画すれば解決

94
描画順の整理によるドローコール削減

マテリアルの種類ごとにRenderQueueを細分化

不透明

● 1900 メンバー

● 2000 ステージ・ステージ小物・不透明パーティクル(不透明のデフォルト)

半透明

● 2450 草や木などの TransparentCutout のオブジェクト

● 2800 メンバーの影

● 2900 ディスプレイ用パーティクル

● 3000 LEDパネル・フラッシュライト・床投影ライト(半透明のデフォルト)

● 3010 半透明パーティクル

● 3020 ライトシャフト

大量のマテリアルをAssetGraphで一括で自動設定😎

95
本日のアジェンダ

● 高品質を実現するシェーダー

○ メンバー(キャラクター)用シェーダー

○ ステージ用シェーダー

● 低負荷を実現するシェーダー

○ 負荷の計測

○ エフェクト汎用シェーダー

○ ドローコールとオーバードロー

○ エフェクト専用シェーダー

96
ディスプレイ

専用シェーダー

97
ディスプレイ演出を専用シェーダーで最適化

最適化前: 汎用シェーダー



6枚の半透明Mesh の重ね合わせで 

三角波のスクロールを表現 

最適化後: 専用シェーダー



1枚の不透明Mesh だけで

シェーダーにより三角波のスクロールを表現 

最適化

98
ディスプレイ演出を専用シェーダーで最適化


 最適化前: 汎用シェーダー 
 最適化後: 専用シェーダー 

Mesh構成
 6枚の半透明Mesh
 1枚の不透明Mesh

ドローコール数

※バッチングを考慮しない

6
 1

オーバードロー

※不透明が最前面なら0とカウント

6
 0

ライブ全体のCPU負荷 

※楽曲専用シェーダー以外の最適化も

含まれた自動計測による結果



XperiaXZ『トリコリコPLEASE!!』3D高

30.14 ms
 20.57 ms(-9.57 ms)

専用シェーダーによって負荷削減が成功😉

99
ペンライト

専用シェーダー

100
開発当初のペンライトが抱えていた課題

ParticleSystemによるペンライトでは2つの課題が発生

● 課題① ParticleSystemのCPU負荷が高い

○ パーティクル数に比例してCPU計算が増える

■ 粒の動きのシミュレーション計算

■ ドローコールバッチングのMesh結合計算

○ すべて毎フレーム必要な計算となってしまう…



● 課題② ライブ編成と連動した動的なカラー指定が困難
101
専用シェーダーで課題を解決!

専用シェーダー

静的な1Mesh(ツールで生成)
 アニメーションと色を適用!

102
専用シェーダーで課題を解決!

専用シェーダー

静的な1Mesh(ツールで生成)
 アニメーションと色を適用!

課題① CPU負荷😱
課題② カラー指定😱
103
専用シェーダーで課題を解決!

専用シェーダー

静的な1Mesh(ツールで生成)
 アニメーションと色を適用!

課題① CPU負荷😱 頂点シェーダーでアニメーションをGPU計算に🥰
課題② カラー指定😱
104
専用シェーダーで課題を解決!

専用シェーダー

静的な1Mesh(ツールで生成)
 アニメーションと色を適用!

課題① CPU負荷😱 頂点シェーダーでアニメーションをGPU計算に🥰
カスタムシェーダーで動的なカラー指定を実装🥰課題② カラー指定😱
105
ペンライトの負荷

● iPhone 7 Plus, ペンライト10000本

○ GPU負荷 実質 0.476 ms(2.8ms, Device Utilization 17%, フレーム全体)
○ CPU負荷 1.55ms(Main Thread の Camera.Render の処理時間)

Xcode Unity Profiler
1ドローコール
106
大量のペンライトの動きはGPU計算が最適

GPUは並列計算が得意

大量のペンライトの

動きは並列計算が適切

性能改善の理由

107
ペンライトの動き(品質向上もできた)

「打ち」「伸び」「横振り」など

現実のライブで使われる動きを

完全再現!

打ち
 伸び
 横振り

108
ペンライトの動き

打ち

シンプルな縦振り

109
ペンライトの動き

伸び

ゆったりとした縦振り 

110
ペンライトの動き

横振り

111
ペンライトの動き

リアル感が出る
待機



ランダムな

ノイズによる動き



112
動作モードの指定

● Basic YZ: 打ち(普通の縦振り)

● Growth YZ: 伸び(ゆっくりした縦振り)

● Basic X: 横振り

● Stop: 待機(少しだけ動く)

Basic YZ
打ち
Growth YZ
伸び
Basic X
横振り
ペンライト用のTimelineのカスタムクリップ
113
楽曲のビートとタイミングを同期

CRIのビートシンクに連動した速度同期を実装
秒数ではなくビート数をシェーダーのプロパティに
● 制作側のペンライトの速度調整の工数削減
● 楽曲の途中でBPM(テンポ)や拍子が変わる曲に対応

○ Music S.T.A.R.T!!(サビ前のみ2/4拍子)

○ Wonder zone(テンポチェンジ)

○ One More Sunshine Story(テンポチェンジ、拍変更あり)

○ おやすみなさん!(introにテンポチェンジあり)

○ さかなかなんだか?(拍変更あり)
114
ライブ編成に応じたカラー指定

3種類のカラー指定モード



ペンライト用のTimelineのカスタムクリップ
● Direct

○ 色を直接指定



● Member

○ ライブ編成(ダンスしている)の

メンバーカラーを指定



● Original Member

○ オリジナル(楽曲を歌っている)の

メンバーカラーを指定
ライブ編成(推し)に
応じたカラー指定ができる
115
ライブ編成に応じたカラー指定

ペンライト用のTimelineのカスタムクリップ
複数指定が可能
カラフルに!
116
屋内会場としては
国内最大の収容人数を誇る
さいたまスーパーアリーナの
37000人より多い!
ペンライト 39000本



117
ズームすると…



118
Mesh生成ツール

● 入力

○ 単一のペンライトのMesh

○ ペンライトの本数

○ 観客席の形状を指定するMesh



● 出力

○ 複数のペンライトを結合したMesh



単一のペンライトMesh 観客席の形状を
指定するMesh
Unity Editor拡張として実装 

119
ペンライトのランダムな配置

観客席の形状を指定するMeshの表面上からランダムに1点をサンプリング



手順

1.Meshを構成するポリゴンを1つ選ぶ

2.ポリゴン上からランダムに1点を選ぶ









面積が同じなら一様乱数でOK🙆‍♂ 面積がバラバラだと密度が偏る🙅‍♂
120
ペンライトのランダムな配置

観客席の形状を指定するMeshの表面上からランダムに1点をサンプリング



手順

1.Meshを構成するポリゴンを1つ選ぶ

2.ポリゴン上からランダムに1点を選ぶ









面積が同じなら一様乱数でOK🙆‍♂ 面積がバラバラだと密度が偏る🙅‍♂
121
ペンライトのランダムな配置

観客席の形状を指定するMeshの表面上からランダムに1点をサンプリング



手順

1.Meshを構成するポリゴンを1つ選ぶ

2.ポリゴン上からランダムに1点を選ぶ









面積が同じなら一様乱数でOK🙆‍♂ 面積がバラバラだと密度が偏る🙅‍♂
122
ペンライトのランダムな配置

面積比率に比例した確率でポリゴンをランダムに選ぶ

重み付きランダム抽出が必要


 面積に応じて
ポリゴンを選びたい
123
累積分布関数(累積和)による重み付きランダム抽出

●事前準備

○ 面積の合計を1.0に正規化(確率になる)

○ 確率の箱を並べる

124
累積分布関数(累積和)による重み付きランダム抽出

●事前準備

○ 面積の合計を1.0に正規化(確率になる)

○ 確率の箱を並べる



●箱を選ぶ手順

125
累積分布関数(累積和)による重み付きランダム抽出

●事前準備

○ 面積の合計を1.0に正規化(確率になる)

○ 確率の箱を並べる



●箱を選ぶ手順

○ 0.0〜1.0の一様乱数を生成



0.0〜1.0の乱数を生成
126
累積分布関数(累積和)による重み付きランダム抽出

●事前準備

○ 面積の合計を1.0に正規化(確率になる)

○ 確率の箱を並べる



●箱を選ぶ手順

○ 0.0〜1.0の一様乱数を生成

○ 乱数がどの箱の範囲に属するかを調べる



0.0〜1.0の乱数を生成
どの箱に属するかを探索
127
累積分布関数(累積和)による重み付きランダム抽出

●事前準備

○ 面積の合計を1.0に正規化(確率になる)

○ 確率の箱を並べる



●箱を選ぶ手順

○ 0.0〜1.0の一様乱数を生成

○ 乱数がどの箱の範囲に属するかを調べる



●計算量

○ 線形探索すれば O(N)

○ 二分探索すれば O(log N)



0.0〜1.0の乱数を生成
どの箱に属するかを探索
128
Walker's Alias Method の簡単な解説

● 重み(面積)を保ったまま、Indexのペアを並べたデータ構造に置き換え





画像出典: @kaityo256. "Walker's Alias Methodの箱の作り方のわかりやすい説明"

129
Walker's Alias Method の簡単な解説

● 重み(面積)を保ったまま、Indexのペアを並べたデータ構造に置き換え





画像出典: @kaityo256. "Walker's Alias Methodの箱の作り方のわかりやすい説明"

一様乱数で参照できる

130
Walker's Alias Method の簡単な解説

● 重み(面積)を保ったまま、Indexのペアを並べたデータ構造に置き換え



画像出典: @kaityo256. "Walker's Alias Methodの箱の作り方のわかりやすい説明"

一様乱数で参照できる

一様乱数で参照できる

131
Walker's Alias Method の簡単な解説

● 重み(面積)を保ったまま、Indexのペアを並べたデータ構造に置き換え

○ 一様乱数から2回で参照できるので、 O(1)





画像出典: @kaityo256. "Walker's Alias Methodの箱の作り方のわかりやすい説明"

一様乱数で参照できる

一様乱数で参照できる

132
Walker's Alias Method の簡単な解説

● 重み(面積)を保ったまま、Indexのペアを並べたデータ構造に置き換え

○ 一様乱数から2回で参照できるので、 O(1)

○ 事前データの生成は O(N) だが、

今回はペンライトを何万本も生成するので、初期コストは相対的に無視できる





画像出典: @kaityo256. "Walker's Alias Methodの箱の作り方のわかりやすい説明"

一様乱数で参照できる

一様乱数で参照できる

133
1Meshでの回転

普通に回転させるとMesh全体が回転してしまう…



134
1Meshでの回転

● 頂点情報にペンライトのoffset(配置位置)を埋め込む



● offset座標を中心に回転を行うことで解決

○ offset を引く

○ 回転

○ offset を足す

135
回転行列を 3x3 から 2x2 にして演算回数を削減



X軸を中心に回転する処理を最適化する例



float2x2 Rotate2x2(float x)
{
float c = cos(x);
float s = sin(x);
return float2x2(c, s, -s, c);
}
up.yz = mul(Rotate2x2(rotateX), up.yz);
float3x3 RotateX3x3(float angle)
{
// X軸回転行列
return float3x3(
1,0,0,
0,cos(angle),-sin(angle),
0,sin(angle), cos(angle));
}
up = mul(RotateX3x3(rotateX), up);
最適化前: 3x3の回転行列でX軸回転 最適化後: 2x2の回転行列でX軸回転
cos/sin の結果を
変数にキャッシュ
yz成分だけ操作し
て2D回転に落とし
込む
136
アニメーションカーブをシェーダで実装したい

アニメーションカーブは関数

● 入力:時間

● 出力:回転角 / 移動量
関数なので、シェーダーで実装可能
137
アニメーションカーブをシェーダで実装したい

脳内だけでアニメーションカーブの設計は難しい🤯
シェーダーでアニメーションカーブを設計する便利ツールを利用🥰



GLSL Grapher

○ GLSLの関数をグラフに表示するツール 



Desmos

○ 数式をグラフに表示するツール 

○ パラメータをスライダー制御できる 

desmos
138
ペンライトのビルボード処理

ペンライトは板ポリのMesh

横から見ると、板なのがバレてしまう😨
139
ペンライトのビルボード処理

ペンライトは板ポリのMesh

横から見ると、板なのがバレてしまう😨
ビルボード処理で解決🥰

ペンライトMeshを常にカメラ側を向くように回転

いい感じに回転して板ポリなのをバレないように🤫

140
ペンライトのビルボード処理

ビルボード処理 = いい感じの回転行列の生成
ペンライトは板ポリのMesh

横から見ると、板なのがバレてしまう😨
ビルボード処理で解決🥰

ペンライトMeshを常にカメラ側を向くように回転

いい感じに回転して板ポリなのをバレないように🤫

141
回転行列とは何だったのか

回転行列 = 回転後の空間の基底ベクトルを並べたもの

right
up
forward
Unityシェーダーの行列のメモリ配置は行優先
142
回転行列とは何だったのか

回転行列 = 回転後の空間の基底ベクトルを並べたもの

Unityシェーダーの行列のメモリ配置は行優先
right
up
forward
right
up
forward
right
up
forward
どれだけ回転して
基底ベクトルの値が変化しても
回転行列の定義は変わらない
143
回転行列とは何だったのか

回転行列 = 回転後の空間の基底ベクトルを並べたもの

right
up
forward
列優先の行列
144
回転行列とは何だったのか

回転行列 = 回転後の空間の基底ベクトルを並べたもの

right
up
forward
right
up
forward
right
up
forward
列優先の行列
どれだけ回転して
基底ベクトルの値が変化しても
回転行列の定義は変わらない
145
upベクトル = ペンライトの芯線

●upベクトル

○ ペンライトの芯線の向き

○ デフォルトはY軸(0, 1, 0)だが、ペンライトの動きにより変化

○ ビルボードの回転の中心軸

up
up
up
146
ビルボード用の回転行列の実装例

up = mul((float3x3)unity_ObjectToWorld, up);
float3 worldPos = mul(unity_ObjectToWorld,
        float4(v.offset + move, 1.0));
float3 toCamera = _WorldSpaceCameraPos - worldPos;
float3 right = normalize(cross(toCamera, up));
float3 forward = normalize(cross(up, right));
float4x4 mat = unity_ObjectToWorld;
mat._m00_m10_m20 = right;
mat._m01_m11_m21 = up;
mat._m02_m12_m22 = forward;
mat._m03_m13_m23 = worldPos;
147
ビルボード用の回転行列の実装例

up = mul((float3x3)unity_ObjectToWorld, up);
float3 worldPos = mul(unity_ObjectToWorld,
        float4(v.offset + move, 1.0));
float3 toCamera = _WorldSpaceCameraPos - worldPos;
float3 right = normalize(cross(toCamera, up));
float3 forward = normalize(cross(up, right));
float4x4 mat = unity_ObjectToWorld;
mat._m00_m10_m20 = right;
mat._m01_m11_m21 = up;
mat._m02_m12_m22 = forward;
mat._m03_m13_m23 = worldPos;
up(Y軸)はペンライトの動きで変化
148
ビルボード用の回転行列の実装例

up = mul((float3x3)unity_ObjectToWorld, up);
float3 worldPos = mul(unity_ObjectToWorld,
        float4(v.offset + move, 1.0));
float3 toCamera = _WorldSpaceCameraPos - worldPos;
float3 right = normalize(cross(toCamera, up));
float3 forward = normalize(cross(up, right));
float4x4 mat = unity_ObjectToWorld;
mat._m00_m10_m20 = right;
mat._m01_m11_m21 = up;
mat._m02_m12_m22 = forward;
mat._m03_m13_m23 = worldPos;
toCamera はペンライトから
カメラの方向ベクトル
up(Y軸)はペンライトの動きで変化
149
ビルボード用の回転行列の実装例

up = mul((float3x3)unity_ObjectToWorld, up);
float3 worldPos = mul(unity_ObjectToWorld,
        float4(v.offset + move, 1.0));
float3 toCamera = _WorldSpaceCameraPos - worldPos;
float3 right = normalize(cross(toCamera, up));
float3 forward = normalize(cross(up, right));
float4x4 mat = unity_ObjectToWorld;
mat._m00_m10_m20 = right;
mat._m01_m11_m21 = up;
mat._m02_m12_m22 = forward;
mat._m03_m13_m23 = worldPos;
toCamera はペンライトから
カメラの方向ベクトル
right(X軸) は toCamera と up の両方に
直交するベクトルなので外積で計算
up(Y軸)はペンライトの動きで変化
150
ビルボード用の回転行列の実装例

up = mul((float3x3)unity_ObjectToWorld, up);
float3 worldPos = mul(unity_ObjectToWorld,
        float4(v.offset + move, 1.0));
float3 toCamera = _WorldSpaceCameraPos - worldPos;
float3 right = normalize(cross(toCamera, up));
float3 forward = normalize(cross(up, right));
float4x4 mat = unity_ObjectToWorld;
mat._m00_m10_m20 = right;
mat._m01_m11_m21 = up;
mat._m02_m12_m22 = forward;
mat._m03_m13_m23 = worldPos;
toCamera はペンライトから
カメラの方向ベクトル
right(X軸) は toCamera と up の両方に
直交するベクトルなので外積で計算
forward(Z軸) は up と right の両方に直
交するベクトルなので外積で計算
up(Y軸)はペンライトの動きで変化
151
ビルボード用の回転行列の実装例

up = mul((float3x3)unity_ObjectToWorld, up);
float3 worldPos = mul(unity_ObjectToWorld,
        float4(v.offset + move, 1.0));
float3 toCamera = _WorldSpaceCameraPos - worldPos;
float3 right = normalize(cross(toCamera, up));
float3 forward = normalize(cross(up, right));
float4x4 mat = unity_ObjectToWorld;
mat._m00_m10_m20 = right;
mat._m01_m11_m21 = up;
mat._m02_m12_m22 = forward;
mat._m03_m13_m23 = worldPos;
toCamera はペンライトから
カメラの方向ベクトル
right(X軸) は toCamera と up の両方に
直交するベクトルなので外積で計算
forward(Z軸) は up と right の両方に直
交するベクトルなので外積で計算
up, right, forward を並べた行列を作る
up(Y軸)はペンライトの動きで変化
152
ビルボード用の回転行列の実装例

up = mul((float3x3)unity_ObjectToWorld, up);
float3 worldPos = mul(unity_ObjectToWorld,
        float4(v.offset + move, 1.0));
float3 toCamera = _WorldSpaceCameraPos - worldPos;
float3 right = normalize(cross(toCamera, up));
float3 forward = normalize(cross(up, right));
float4x4 mat = unity_ObjectToWorld;
mat._m00_m10_m20 = right;
mat._m01_m11_m21 = up;
mat._m02_m12_m22 = forward;
mat._m03_m13_m23 = worldPos;
up(Y軸)はペンライトの動きで変化
toCamera はペンライトから
カメラの方向ベクトル
right(X軸) は toCamera と up の両方に
直交するベクトルなので外積で計算
forward(Z軸) は up と right の両方に直
交するベクトルなので外積で計算
up, right, forward を並べた行列を作る
up ベクトルとカメラへの向きが決まれば、
right と forward は自動で決定するので、
ビルボード用の回転行列は計算可能
153
ペンライトまとめ

● 頂点シェーダーでアニメーションを実装

○ シェーダー芸を実用的に応用

○ 全楽曲で利用できるので、費用対効果も高い

品質向上と負荷削減を両立!
154
負荷対策まとめ

● カラーリングシェーダー

○ マテリアルを統合してドローコールを削減

● 描画順の整理

○ ドローコールバッチングを効率化

● ディスプレイ専用シェーダー

○ ドローコールとオーバードローを削減

● ペンライト専用シェーダー

○ 1Mesh化によりドローコール削減

○ アニメーションをGPU計算

155
負荷対策まとめ

● カラーリングシェーダー

○ マテリアルを統合してドローコールを削減

● 描画順の整理

○ ドローコールバッチングを効率化

● ディスプレイ専用シェーダー

○ ドローコールとオーバードローを削減

● ペンライト専用シェーダー

○ 1Mesh化によりドローコール削減

○ アニメーションをGPU計算
 負荷対策が大成功!

156
関連セッションの紹介

● Post Processing Stack v1の軽量化(GPUの負荷削減)

● Unity Timeline

○ プロジェクト専用のカスタムトラック(ペンライトの他にも多数あります)

○ 制作視点でのメリットや利用した感想

09月04日(金) 15:30 〜 16:30
『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スクスタ)
のライブ演出制作秘話
~超高品質な3Dライブ演出を表現するための制作概要とオリジナルTimelineツールについて
157
今後も 最強で最高のアイドルゲーム    

       の提供を目指して頑張ります!



158
質疑応答


Más contenido relacionado

La actualidad más candente

UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~エピック・ゲームズ・ジャパン Epic Games Japan
 
Unity dojo amplifyshadereditor101_jpn-jp
Unity dojo amplifyshadereditor101_jpn-jpUnity dojo amplifyshadereditor101_jpn-jp
Unity dojo amplifyshadereditor101_jpn-jp小林 信行
 
VRM 標準シェーダ MToon の使い方
VRM 標準シェーダ MToon の使い方VRM 標準シェーダ MToon の使い方
VRM 標準シェーダ MToon の使い方VirtualCast, Inc.
 
GUILTY GEAR Xrd開発スタッフが送るアクションのためのボーン配置TIPS
GUILTY GEAR Xrd開発スタッフが送るアクションのためのボーン配置TIPSGUILTY GEAR Xrd開発スタッフが送るアクションのためのボーン配置TIPS
GUILTY GEAR Xrd開発スタッフが送るアクションのためのボーン配置TIPSARC SYSTEM WORKS
 
【Unite Tokyo 2018】トゥーンシェーダートークセッション#1『リアルタイムトゥーンシェーダー徹底トーク』
【Unite Tokyo 2018】トゥーンシェーダートークセッション#1『リアルタイムトゥーンシェーダー徹底トーク』【Unite Tokyo 2018】トゥーンシェーダートークセッション#1『リアルタイムトゥーンシェーダー徹底トーク』
【Unite Tokyo 2018】トゥーンシェーダートークセッション#1『リアルタイムトゥーンシェーダー徹底トーク』Unity Technologies Japan K.K.
 
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -historia_Inc
 
【Unity道場スペシャル 2017大阪】トゥーンシェーダー・マニアクス2 〜ユニティちゃんトゥーンシェーダー2.0徹底解説〜
【Unity道場スペシャル 2017大阪】トゥーンシェーダー・マニアクス2 〜ユニティちゃんトゥーンシェーダー2.0徹底解説〜【Unity道場スペシャル 2017大阪】トゥーンシェーダー・マニアクス2 〜ユニティちゃんトゥーンシェーダー2.0徹底解説〜
【Unity道場スペシャル 2017大阪】トゥーンシェーダー・マニアクス2 〜ユニティちゃんトゥーンシェーダー2.0徹底解説〜Unity Technologies Japan K.K.
 
【Unity道場】新しいPrefabワークフロー入門
【Unity道場】新しいPrefabワークフロー入門【Unity道場】新しいPrefabワークフロー入門
【Unity道場】新しいPrefabワークフロー入門Unity Technologies Japan K.K.
 
UE4でTranslucencyやUnlitに影を落としたい!
UE4でTranslucencyやUnlitに影を落としたい!UE4でTranslucencyやUnlitに影を落としたい!
UE4でTranslucencyやUnlitに影を落としたい!com044
 
ゲームデザイナーのためのキャラクター表現&コンセプトメイキング:抜粋版
ゲームデザイナーのためのキャラクター表現&コンセプトメイキング:抜粋版ゲームデザイナーのためのキャラクター表現&コンセプトメイキング:抜粋版
ゲームデザイナーのためのキャラクター表現&コンセプトメイキング:抜粋版小林 信行
 
モバイルアプリにおけるアーティストフレンドリーな水面表現戦略
モバイルアプリにおけるアーティストフレンドリーな水面表現戦略モバイルアプリにおけるアーティストフレンドリーな水面表現戦略
モバイルアプリにおけるアーティストフレンドリーな水面表現戦略Haruki Yano
 

La actualidad más candente (20)

UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
 
CEDEC2016: Unreal Engine 4 のレンダリングフロー総おさらい
CEDEC2016: Unreal Engine 4 のレンダリングフロー総おさらいCEDEC2016: Unreal Engine 4 のレンダリングフロー総おさらい
CEDEC2016: Unreal Engine 4 のレンダリングフロー総おさらい
 
60fpsアクションを実現する秘訣を伝授 解析編
60fpsアクションを実現する秘訣を伝授 解析編60fpsアクションを実現する秘訣を伝授 解析編
60fpsアクションを実現する秘訣を伝授 解析編
 
Unity dojo amplifyshadereditor101_jpn-jp
Unity dojo amplifyshadereditor101_jpn-jpUnity dojo amplifyshadereditor101_jpn-jp
Unity dojo amplifyshadereditor101_jpn-jp
 
VRM 標準シェーダ MToon の使い方
VRM 標準シェーダ MToon の使い方VRM 標準シェーダ MToon の使い方
VRM 標準シェーダ MToon の使い方
 
GUILTY GEAR Xrd開発スタッフが送るアクションのためのボーン配置TIPS
GUILTY GEAR Xrd開発スタッフが送るアクションのためのボーン配置TIPSGUILTY GEAR Xrd開発スタッフが送るアクションのためのボーン配置TIPS
GUILTY GEAR Xrd開発スタッフが送るアクションのためのボーン配置TIPS
 
【Unite Tokyo 2018】トゥーンシェーダートークセッション#1『リアルタイムトゥーンシェーダー徹底トーク』
【Unite Tokyo 2018】トゥーンシェーダートークセッション#1『リアルタイムトゥーンシェーダー徹底トーク』【Unite Tokyo 2018】トゥーンシェーダートークセッション#1『リアルタイムトゥーンシェーダー徹底トーク』
【Unite Tokyo 2018】トゥーンシェーダートークセッション#1『リアルタイムトゥーンシェーダー徹底トーク』
 
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
 
【Unity道場スペシャル 2017大阪】トゥーンシェーダー・マニアクス2 〜ユニティちゃんトゥーンシェーダー2.0徹底解説〜
【Unity道場スペシャル 2017大阪】トゥーンシェーダー・マニアクス2 〜ユニティちゃんトゥーンシェーダー2.0徹底解説〜【Unity道場スペシャル 2017大阪】トゥーンシェーダー・マニアクス2 〜ユニティちゃんトゥーンシェーダー2.0徹底解説〜
【Unity道場スペシャル 2017大阪】トゥーンシェーダー・マニアクス2 〜ユニティちゃんトゥーンシェーダー2.0徹底解説〜
 
【Unity道場】新しいPrefabワークフロー入門
【Unity道場】新しいPrefabワークフロー入門【Unity道場】新しいPrefabワークフロー入門
【Unity道場】新しいPrefabワークフロー入門
 
UE4でTranslucencyやUnlitに影を落としたい!
UE4でTranslucencyやUnlitに影を落としたい!UE4でTranslucencyやUnlitに影を落としたい!
UE4でTranslucencyやUnlitに影を落としたい!
 
猫でも分かるUMG
猫でも分かるUMG猫でも分かるUMG
猫でも分かるUMG
 
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
 
アーティストの為のプロファイル入門!~楽しいRenderDocの使い方~
アーティストの為のプロファイル入門!~楽しいRenderDocの使い方~アーティストの為のプロファイル入門!~楽しいRenderDocの使い方~
アーティストの為のプロファイル入門!~楽しいRenderDocの使い方~
 
初心者向け UE4 映像制作での シーケンサー と Movie Render Queue の使い方
初心者向け UE4 映像制作での シーケンサー と Movie Render Queue の使い方初心者向け UE4 映像制作での シーケンサー と Movie Render Queue の使い方
初心者向け UE4 映像制作での シーケンサー と Movie Render Queue の使い方
 
GPU最適化入門
GPU最適化入門GPU最適化入門
GPU最適化入門
 
ゲームデザイナーのためのキャラクター表現&コンセプトメイキング:抜粋版
ゲームデザイナーのためのキャラクター表現&コンセプトメイキング:抜粋版ゲームデザイナーのためのキャラクター表現&コンセプトメイキング:抜粋版
ゲームデザイナーのためのキャラクター表現&コンセプトメイキング:抜粋版
 
UE4とBlenderでランニングコストを抑えるモダンなワークフロー
UE4とBlenderでランニングコストを抑えるモダンなワークフローUE4とBlenderでランニングコストを抑えるモダンなワークフロー
UE4とBlenderでランニングコストを抑えるモダンなワークフロー
 
UE4におけるエフェクトの基本戦略事例 前半
UE4におけるエフェクトの基本戦略事例  前半UE4におけるエフェクトの基本戦略事例  前半
UE4におけるエフェクトの基本戦略事例 前半
 
モバイルアプリにおけるアーティストフレンドリーな水面表現戦略
モバイルアプリにおけるアーティストフレンドリーな水面表現戦略モバイルアプリにおけるアーティストフレンドリーな水面表現戦略
モバイルアプリにおけるアーティストフレンドリーな水面表現戦略
 

Similar a CEDEC 2020 - 高品質かつ低負荷な3Dライブを実現するシェーダー開発 ~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スクスタ)の開発事例~

シリコンスタジオの最新テクノロジーデモ技術解説
シリコンスタジオの最新テクノロジーデモ技術解説シリコンスタジオの最新テクノロジーデモ技術解説
シリコンスタジオの最新テクノロジーデモ技術解説Silicon Studio Corporation
 
3次元図形をSchemeで造ろう!
3次元図形をSchemeで造ろう!3次元図形をSchemeで造ろう!
3次元図形をSchemeで造ろう!vi-iv
 
物理ベース時代のライトマップベイク奮闘記
物理ベース時代のライトマップベイク奮闘記物理ベース時代のライトマップベイク奮闘記
物理ベース時代のライトマップベイク奮闘記Silicon Studio Corporation
 
文献紹介:Learning Video Stabilization Using Optical Flow
文献紹介:Learning Video Stabilization Using Optical Flow文献紹介:Learning Video Stabilization Using Optical Flow
文献紹介:Learning Video Stabilization Using Optical FlowToru Tamaki
 
第2回 JavaScriptから始めるプログラミング2016
第2回 JavaScriptから始めるプログラミング2016第2回 JavaScriptから始めるプログラミング2016
第2回 JavaScriptから始めるプログラミング2016kyoto university
 
CVPR2019 読み会「Understanding the Limitations of CNN-based Absolute Camera Pose ...
CVPR2019 読み会「Understanding the Limitations of CNN-based Absolute Camera Pose ...CVPR2019 読み会「Understanding the Limitations of CNN-based Absolute Camera Pose ...
CVPR2019 読み会「Understanding the Limitations of CNN-based Absolute Camera Pose ...Sho Kagami
 
GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS)
GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS) GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS)
GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS) 智啓 出川
 
シェーダー伝道師 第一回
シェーダー伝道師 第一回シェーダー伝道師 第一回
シェーダー伝道師 第一回hixi365
 
[DL輪読会]Toward Multimodal Image-to-Image Translation (NIPS'17)
[DL輪読会]Toward Multimodal Image-to-Image Translation (NIPS'17)[DL輪読会]Toward Multimodal Image-to-Image Translation (NIPS'17)
[DL輪読会]Toward Multimodal Image-to-Image Translation (NIPS'17)Deep Learning JP
 
Kashiwa.R#1 画像解析とパターン認識における R の利用
Kashiwa.R#1 画像解析とパターン認識における R の利用Kashiwa.R#1 画像解析とパターン認識における R の利用
Kashiwa.R#1 画像解析とパターン認識における R の利用nmaro
 
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法Hiroshi Yoshida
 
ReCap 製品紹介
ReCap 製品紹介ReCap 製品紹介
ReCap 製品紹介AutodeskCIM
 
ICCV2019読み会「Learning Meshes for Dense Visual SLAM」
ICCV2019読み会「Learning Meshes for Dense Visual SLAM」ICCV2019読み会「Learning Meshes for Dense Visual SLAM」
ICCV2019読み会「Learning Meshes for Dense Visual SLAM」Sho Kagami
 
Flashup 12 Basic Training of Away3D
Flashup 12 Basic Training of Away3DFlashup 12 Basic Training of Away3D
Flashup 12 Basic Training of Away3DKatsushi Suzuki
 
なぜリアクティブは重要か #ScalaMatsuri
なぜリアクティブは重要か #ScalaMatsuriなぜリアクティブは重要か #ScalaMatsuri
なぜリアクティブは重要か #ScalaMatsuriYuta Okamoto
 
Pythonで画像処理をやってみよう!第7回 - Scale-space 第6回 -
Pythonで画像処理をやってみよう!第7回 - Scale-space 第6回 -Pythonで画像処理をやってみよう!第7回 - Scale-space 第6回 -
Pythonで画像処理をやってみよう!第7回 - Scale-space 第6回 -Project Samurai
 
文献紹介:Extreme Low-Resolution Activity Recognition Using a Super-Resolution-Ori...
文献紹介:Extreme Low-Resolution Activity Recognition Using a Super-Resolution-Ori...文献紹介:Extreme Low-Resolution Activity Recognition Using a Super-Resolution-Ori...
文献紹介:Extreme Low-Resolution Activity Recognition Using a Super-Resolution-Ori...Toru Tamaki
 
Unity名古屋セミナー [Shadowgun]
Unity名古屋セミナー [Shadowgun]Unity名古屋セミナー [Shadowgun]
Unity名古屋セミナー [Shadowgun]MakotoItoh
 
jvmlang.daitokai 1: ScalaはEdisonの夢を見る
jvmlang.daitokai 1: ScalaはEdisonの夢を見るjvmlang.daitokai 1: ScalaはEdisonの夢を見る
jvmlang.daitokai 1: ScalaはEdisonの夢を見るNISHIMOTO Keisuke
 
[DL輪読会]Differentiable Mapping Networks: Learning Structured Map Representatio...
[DL輪読会]Differentiable Mapping Networks: Learning Structured Map Representatio...[DL輪読会]Differentiable Mapping Networks: Learning Structured Map Representatio...
[DL輪読会]Differentiable Mapping Networks: Learning Structured Map Representatio...Deep Learning JP
 

Similar a CEDEC 2020 - 高品質かつ低負荷な3Dライブを実現するシェーダー開発 ~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スクスタ)の開発事例~ (20)

シリコンスタジオの最新テクノロジーデモ技術解説
シリコンスタジオの最新テクノロジーデモ技術解説シリコンスタジオの最新テクノロジーデモ技術解説
シリコンスタジオの最新テクノロジーデモ技術解説
 
3次元図形をSchemeで造ろう!
3次元図形をSchemeで造ろう!3次元図形をSchemeで造ろう!
3次元図形をSchemeで造ろう!
 
物理ベース時代のライトマップベイク奮闘記
物理ベース時代のライトマップベイク奮闘記物理ベース時代のライトマップベイク奮闘記
物理ベース時代のライトマップベイク奮闘記
 
文献紹介:Learning Video Stabilization Using Optical Flow
文献紹介:Learning Video Stabilization Using Optical Flow文献紹介:Learning Video Stabilization Using Optical Flow
文献紹介:Learning Video Stabilization Using Optical Flow
 
第2回 JavaScriptから始めるプログラミング2016
第2回 JavaScriptから始めるプログラミング2016第2回 JavaScriptから始めるプログラミング2016
第2回 JavaScriptから始めるプログラミング2016
 
CVPR2019 読み会「Understanding the Limitations of CNN-based Absolute Camera Pose ...
CVPR2019 読み会「Understanding the Limitations of CNN-based Absolute Camera Pose ...CVPR2019 読み会「Understanding the Limitations of CNN-based Absolute Camera Pose ...
CVPR2019 読み会「Understanding the Limitations of CNN-based Absolute Camera Pose ...
 
GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS)
GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS) GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS)
GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS)
 
シェーダー伝道師 第一回
シェーダー伝道師 第一回シェーダー伝道師 第一回
シェーダー伝道師 第一回
 
[DL輪読会]Toward Multimodal Image-to-Image Translation (NIPS'17)
[DL輪読会]Toward Multimodal Image-to-Image Translation (NIPS'17)[DL輪読会]Toward Multimodal Image-to-Image Translation (NIPS'17)
[DL輪読会]Toward Multimodal Image-to-Image Translation (NIPS'17)
 
Kashiwa.R#1 画像解析とパターン認識における R の利用
Kashiwa.R#1 画像解析とパターン認識における R の利用Kashiwa.R#1 画像解析とパターン認識における R の利用
Kashiwa.R#1 画像解析とパターン認識における R の利用
 
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
 
ReCap 製品紹介
ReCap 製品紹介ReCap 製品紹介
ReCap 製品紹介
 
ICCV2019読み会「Learning Meshes for Dense Visual SLAM」
ICCV2019読み会「Learning Meshes for Dense Visual SLAM」ICCV2019読み会「Learning Meshes for Dense Visual SLAM」
ICCV2019読み会「Learning Meshes for Dense Visual SLAM」
 
Flashup 12 Basic Training of Away3D
Flashup 12 Basic Training of Away3DFlashup 12 Basic Training of Away3D
Flashup 12 Basic Training of Away3D
 
なぜリアクティブは重要か #ScalaMatsuri
なぜリアクティブは重要か #ScalaMatsuriなぜリアクティブは重要か #ScalaMatsuri
なぜリアクティブは重要か #ScalaMatsuri
 
Pythonで画像処理をやってみよう!第7回 - Scale-space 第6回 -
Pythonで画像処理をやってみよう!第7回 - Scale-space 第6回 -Pythonで画像処理をやってみよう!第7回 - Scale-space 第6回 -
Pythonで画像処理をやってみよう!第7回 - Scale-space 第6回 -
 
文献紹介:Extreme Low-Resolution Activity Recognition Using a Super-Resolution-Ori...
文献紹介:Extreme Low-Resolution Activity Recognition Using a Super-Resolution-Ori...文献紹介:Extreme Low-Resolution Activity Recognition Using a Super-Resolution-Ori...
文献紹介:Extreme Low-Resolution Activity Recognition Using a Super-Resolution-Ori...
 
Unity名古屋セミナー [Shadowgun]
Unity名古屋セミナー [Shadowgun]Unity名古屋セミナー [Shadowgun]
Unity名古屋セミナー [Shadowgun]
 
jvmlang.daitokai 1: ScalaはEdisonの夢を見る
jvmlang.daitokai 1: ScalaはEdisonの夢を見るjvmlang.daitokai 1: ScalaはEdisonの夢を見る
jvmlang.daitokai 1: ScalaはEdisonの夢を見る
 
[DL輪読会]Differentiable Mapping Networks: Learning Structured Map Representatio...
[DL輪読会]Differentiable Mapping Networks: Learning Structured Map Representatio...[DL輪読会]Differentiable Mapping Networks: Learning Structured Map Representatio...
[DL輪読会]Differentiable Mapping Networks: Learning Structured Map Representatio...
 

Más de KLab Inc. / Tech

大規模モバイルオンラインゲーム開発における チーム組成とワークフロー最適化
大規模モバイルオンラインゲーム開発における チーム組成とワークフロー最適化大規模モバイルオンラインゲーム開発における チーム組成とワークフロー最適化
大規模モバイルオンラインゲーム開発における チーム組成とワークフロー最適化KLab Inc. / Tech
 
運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話
 運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話 運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話
運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話KLab Inc. / Tech
 
AirLab導入でテストコストの大幅削減と品質向上! 数十台の端末を一斉に全自動テストできる社内DeviceFarmについてご紹介
AirLab導入でテストコストの大幅削減と品質向上! 数十台の端末を一斉に全自動テストできる社内DeviceFarmについてご紹介AirLab導入でテストコストの大幅削減と品質向上! 数十台の端末を一斉に全自動テストできる社内DeviceFarmについてご紹介
AirLab導入でテストコストの大幅削減と品質向上! 数十台の端末を一斉に全自動テストできる社内DeviceFarmについてご紹介KLab Inc. / Tech
 
生成AIが切り拓く新しいゲームの創り方・遊び方
生成AIが切り拓く新しいゲームの創り方・遊び方生成AIが切り拓く新しいゲームの創り方・遊び方
生成AIが切り拓く新しいゲームの創り方・遊び方KLab Inc. / Tech
 
表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービス
表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービス表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービス
表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービスKLab Inc. / Tech
 
モバイルオンラインゲームでの大規模観戦とチート対策 〜自社製リアルタイム通信システム「WSNet2」の事例〜
モバイルオンラインゲームでの大規模観戦とチート対策 〜自社製リアルタイム通信システム「WSNet2」の事例〜モバイルオンラインゲームでの大規模観戦とチート対策 〜自社製リアルタイム通信システム「WSNet2」の事例〜
モバイルオンラインゲームでの大規模観戦とチート対策 〜自社製リアルタイム通信システム「WSNet2」の事例〜KLab Inc. / Tech
 
他業界からゲーム業界へ転向したときの話
他業界からゲーム業界へ転向したときの話他業界からゲーム業界へ転向したときの話
他業界からゲーム業界へ転向したときの話KLab Inc. / Tech
 
KLabのゲーム開発を支える開発環境
KLabのゲーム開発を支える開発環境KLabのゲーム開発を支える開発環境
KLabのゲーム開発を支える開発環境KLab Inc. / Tech
 
ゲーム開発を知らない人にも分かるKLabのゲーム開発運営
ゲーム開発を知らない人にも分かるKLabのゲーム開発運営ゲーム開発を知らない人にも分かるKLabのゲーム開発運営
ゲーム開発を知らない人にも分かるKLabのゲーム開発運営KLab Inc. / Tech
 
「リアルISUCON」としてのモバイルオンラインゲーム開発
「リアルISUCON」としてのモバイルオンラインゲーム開発「リアルISUCON」としてのモバイルオンラインゲーム開発
「リアルISUCON」としてのモバイルオンラインゲーム開発KLab Inc. / Tech
 
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
ゴリラテスト  モバイルゲームのUIを自動的に検出・操作する モンキーテストゴリラテスト  モバイルゲームのUIを自動的に検出・操作する モンキーテスト
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテストKLab Inc. / Tech
 
モバイルアプリの高速で安定したビルドを支えるJenkins運用術
モバイルアプリの高速で安定したビルドを支えるJenkins運用術モバイルアプリの高速で安定したビルドを支えるJenkins運用術
モバイルアプリの高速で安定したビルドを支えるJenkins運用術KLab Inc. / Tech
 
『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜
『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜
『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜KLab Inc. / Tech
 
KLabのチャットシステム インフラ変遷
KLabのチャットシステム インフラ変遷KLabのチャットシステム インフラ変遷
KLabのチャットシステム インフラ変遷KLab Inc. / Tech
 
Ganglia のUIにGrafanaを追加する話
Ganglia のUIにGrafanaを追加する話Ganglia のUIにGrafanaを追加する話
Ganglia のUIにGrafanaを追加する話KLab Inc. / Tech
 
KLabのインフラエンジニア 〜 こんな感じで働いてます 〜
KLabのインフラエンジニア 〜 こんな感じで働いてます 〜KLabのインフラエンジニア 〜 こんな感じで働いてます 〜
KLabのインフラエンジニア 〜 こんな感じで働いてます 〜KLab Inc. / Tech
 
属人化して詰まってた作業を自動化で楽しようとした話
属人化して詰まってた作業を自動化で楽しようとした話属人化して詰まってた作業を自動化で楽しようとした話
属人化して詰まってた作業を自動化で楽しようとした話KLab Inc. / Tech
 
見よう見まねでやってみる2D流体シミュレーション
見よう見まねでやってみる2D流体シミュレーション見よう見まねでやってみる2D流体シミュレーション
見よう見まねでやってみる2D流体シミュレーションKLab Inc. / Tech
 
モバイルオンラインゲームにおけるUIエンジニアの業務紹介
モバイルオンラインゲームにおけるUIエンジニアの業務紹介モバイルオンラインゲームにおけるUIエンジニアの業務紹介
モバイルオンラインゲームにおけるUIエンジニアの業務紹介KLab Inc. / Tech
 
VyOSで作るIPv4 Router/IPv6 Bridge
VyOSで作るIPv4 Router/IPv6 BridgeVyOSで作るIPv4 Router/IPv6 Bridge
VyOSで作るIPv4 Router/IPv6 BridgeKLab Inc. / Tech
 

Más de KLab Inc. / Tech (20)

大規模モバイルオンラインゲーム開発における チーム組成とワークフロー最適化
大規模モバイルオンラインゲーム開発における チーム組成とワークフロー最適化大規模モバイルオンラインゲーム開発における チーム組成とワークフロー最適化
大規模モバイルオンラインゲーム開発における チーム組成とワークフロー最適化
 
運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話
 運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話 運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話
運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話
 
AirLab導入でテストコストの大幅削減と品質向上! 数十台の端末を一斉に全自動テストできる社内DeviceFarmについてご紹介
AirLab導入でテストコストの大幅削減と品質向上! 数十台の端末を一斉に全自動テストできる社内DeviceFarmについてご紹介AirLab導入でテストコストの大幅削減と品質向上! 数十台の端末を一斉に全自動テストできる社内DeviceFarmについてご紹介
AirLab導入でテストコストの大幅削減と品質向上! 数十台の端末を一斉に全自動テストできる社内DeviceFarmについてご紹介
 
生成AIが切り拓く新しいゲームの創り方・遊び方
生成AIが切り拓く新しいゲームの創り方・遊び方生成AIが切り拓く新しいゲームの創り方・遊び方
生成AIが切り拓く新しいゲームの創り方・遊び方
 
表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービス
表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービス表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービス
表も裏もすべて見せます! KLab謹製大規模オンラインゲームの リアルタイムチャットマイクロサービス
 
モバイルオンラインゲームでの大規模観戦とチート対策 〜自社製リアルタイム通信システム「WSNet2」の事例〜
モバイルオンラインゲームでの大規模観戦とチート対策 〜自社製リアルタイム通信システム「WSNet2」の事例〜モバイルオンラインゲームでの大規模観戦とチート対策 〜自社製リアルタイム通信システム「WSNet2」の事例〜
モバイルオンラインゲームでの大規模観戦とチート対策 〜自社製リアルタイム通信システム「WSNet2」の事例〜
 
他業界からゲーム業界へ転向したときの話
他業界からゲーム業界へ転向したときの話他業界からゲーム業界へ転向したときの話
他業界からゲーム業界へ転向したときの話
 
KLabのゲーム開発を支える開発環境
KLabのゲーム開発を支える開発環境KLabのゲーム開発を支える開発環境
KLabのゲーム開発を支える開発環境
 
ゲーム開発を知らない人にも分かるKLabのゲーム開発運営
ゲーム開発を知らない人にも分かるKLabのゲーム開発運営ゲーム開発を知らない人にも分かるKLabのゲーム開発運営
ゲーム開発を知らない人にも分かるKLabのゲーム開発運営
 
「リアルISUCON」としてのモバイルオンラインゲーム開発
「リアルISUCON」としてのモバイルオンラインゲーム開発「リアルISUCON」としてのモバイルオンラインゲーム開発
「リアルISUCON」としてのモバイルオンラインゲーム開発
 
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
ゴリラテスト  モバイルゲームのUIを自動的に検出・操作する モンキーテストゴリラテスト  モバイルゲームのUIを自動的に検出・操作する モンキーテスト
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
 
モバイルアプリの高速で安定したビルドを支えるJenkins運用術
モバイルアプリの高速で安定したビルドを支えるJenkins運用術モバイルアプリの高速で安定したビルドを支えるJenkins運用術
モバイルアプリの高速で安定したビルドを支えるJenkins運用術
 
『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜
『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜
『ラブライブ!スクールアイドルフェスティバル ALL STARS』を支えるビルドパイプライン 〜より安定したサービス提供を目指して〜
 
KLabのチャットシステム インフラ変遷
KLabのチャットシステム インフラ変遷KLabのチャットシステム インフラ変遷
KLabのチャットシステム インフラ変遷
 
Ganglia のUIにGrafanaを追加する話
Ganglia のUIにGrafanaを追加する話Ganglia のUIにGrafanaを追加する話
Ganglia のUIにGrafanaを追加する話
 
KLabのインフラエンジニア 〜 こんな感じで働いてます 〜
KLabのインフラエンジニア 〜 こんな感じで働いてます 〜KLabのインフラエンジニア 〜 こんな感じで働いてます 〜
KLabのインフラエンジニア 〜 こんな感じで働いてます 〜
 
属人化して詰まってた作業を自動化で楽しようとした話
属人化して詰まってた作業を自動化で楽しようとした話属人化して詰まってた作業を自動化で楽しようとした話
属人化して詰まってた作業を自動化で楽しようとした話
 
見よう見まねでやってみる2D流体シミュレーション
見よう見まねでやってみる2D流体シミュレーション見よう見まねでやってみる2D流体シミュレーション
見よう見まねでやってみる2D流体シミュレーション
 
モバイルオンラインゲームにおけるUIエンジニアの業務紹介
モバイルオンラインゲームにおけるUIエンジニアの業務紹介モバイルオンラインゲームにおけるUIエンジニアの業務紹介
モバイルオンラインゲームにおけるUIエンジニアの業務紹介
 
VyOSで作るIPv4 Router/IPv6 Bridge
VyOSで作るIPv4 Router/IPv6 BridgeVyOSで作るIPv4 Router/IPv6 Bridge
VyOSで作るIPv4 Router/IPv6 Bridge
 

CEDEC 2020 - 高品質かつ低負荷な3Dライブを実現するシェーダー開発 ~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スクスタ)の開発事例~