SlideShare a Scribd company logo
GPU最適化入門
株式会社ソニー・インタラクティブエンタテインメント
LSI開発部2課 小口貴弘
takahiro.koguchi@sony.com
http://cedec.cesa.or.jp/2016/session/ENG/6483.html
1時間:本編 50分、Q&A 5分、バッファ5分
質問:
2
グラフィックス性能の悩みは
ありませんか?
たとえば、、、
・敵が多くなるとフレーム落ち
・エフェクトを入れたら重すぎる
解決のヒントを!
概要
• 目的:GPU最適化入門の紹介
– グラフィックスプログラムがどんなものか、少し知っている方向け
– 現在発売中の“Computer Graphics Gems JP 2015,株式会社ボーンデジタル”に
詳細有
– →今日はわかりやすく紹介します!Cedilにこの資料をすぐ登録します。
• 説明者自己紹介
– 2002年SIE(旧SCE)入社以来、プレイステーションを中心にGPU周りの業務
を担当
• GPU、SDK、サンプル、ドキュメント、量産テスト、デモなど
• 複数種のGPUを扱ってきました
– 理解を深めていく中で気が付いたことをまとめました
3
説明の流れ
1.概要・前置き
2.GPUの特性
3.GPU構成・進化
4.最適化と性能
5.まとめ
最適化の流れ
Step A) 最適化対象フレームの特定
Step B) CPU/GPU負荷測定
Step C) GPUボトルネック解析
Step D) 最適化
Step E )目標性能に達するまで繰り返す
4
前置き
用語定義
• GPU: グラフィックス処理を高速に行うハードウェア
(今回はHW T&L以前のGPUの呼び名が付くまえも含む)
• ほか、CG-ARTS協会の”コンピュータグラフィックス”に準拠
レンダリング手法の参考
• 和歌山大学 床井研究室ウェブページ
• ”ゲームエンジンアーキテクチャ、SBクリエイティブ”
ジェイソングレゴリー (和訳監修:今給黎 隆)
5
始めに:リアルタイムレンダリング処理
映画、CMなど
フレーム描画時間が短い必要がなく、
質優先
ゲーム、シミュレータなど
フレーム描画時間が短い必要があり、
速度優先
→短い決まった時間でレンダリングした画像を連続して表示する処理。
たとえば、30、60、120フレーム毎秒( fps, frame per second )など
描画処理1 描画処理2 描画処理3
1/60秒 1/60秒 1/60秒
大別して2種のグラフィックス
アルゴリズムがある
時間
グラフィックス
アルゴリズム
リアルタイム
グラフィックス
非リアルタイム
グラフィックス
60fps
6
動機:最近のグラフィックスで求められること
1) エンジンや高レベルのライブラリで、実際のGPU動作が見えにくくなった
→ GPUの振る舞いを知ると、抽象度の高い処理でも効率よくGPUを使える
2) DirectX12やMetal, Vulkan など低レベル制御ができる手段が増えた
→ 詳しいGPU制御が求められることになる
ということは、いずれにしても効率の良い処理をするため、
GPU内部を知っておくといいことがある!
さっそく、最適化手法を知るために、まずはGPUの中を覗いてみましょう
7
GPUの基本
• GPU動作はシンプル
1. アセットデータと命令群を用意したうえで、
2. CPUから起動すると、
3. メモリにフレームバッファが生成される
– アセットデータはジオメトリ・テクスチャ・アニメーション・シェー
ダプログラムなど。命令群はコマンドバッファとしてまとめてGPUを
制御
• GPUは進化を続けている
– パイプライン構成、機能、性能の改善が継続している
– 半導体は1.5年で倍性能というムーアの法則は徐々に陰りが
心配されるが、GPUはどんどん進化
・・・と、いうことは特定のGPUだけ理解しても、
すぐに役にたたなくなる!?
→そうならないように、今後もなるべく共通して
使える、基本的な振る舞いを理解しましょう
8
GPUアーキテクチャの特性
1.レンダリング理論
2.長いパイプライン処理
3.並列性
GPUを知るうえで欠かせない3つの特徴
それぞれ説明します
9
1) レンダリング理論
[1986 Kajiya] レンダリング方程式
すべての位置と向きで使え、乗算と加算で構成可能なエネルギー保存式
引用元:Realistic Image Synthesis Using Photon Mapping
10
積分範囲は半球
入射光反射光
減衰
Ω
x
1) レンダリング理論
出射光 発光 反射光
BRDF:反射近似関数 入射光 減衰
概念的にGPUはこの式を近似して実装している
※近似は主に複数回反射光の省略によるもの
[1986 Kajiya] レンダリング方程式
11
2) 長いパイプライン処理
パイプライン実装は1回反射(直接光表現)が主だが、
近年は2回以降反射の間接光表現がシェーダプログラム・マルチパスで採用
・ジオメトリ
・テクスチャ
・アニメーション
などアセットデータは
MAYAなどのDCCツール
やアルゴリズム等で生成
され、入力される
前頁理論の実装
GPUの基本処理
12
2) 長いパイプライン処理(各部位特徴)
フォーマット変換付
メモリ書き出し
※別名:CBDB/Merger
各処理を加速するラスタライザ・テクスチャユニット・シェーダ・ROPはGPU特有の機能
ハードウェアで最適な精度で処理しつつ、高速処理をしている
頂点をピクセル化
フォーマット変換付
メモリ読み書き・
演算
GPU特有の機構
13
3)並列性
描画実行単位が独立性の高いデータ構成
→GPU描画パイプラインは各部位で並列化された実装
そのためCPUに比べて格段に高速な処理
※たとえば、シェーダパイプが1000本あれば、同時に1000頂点、または1000ピクセルを処理できること
になる。並列実行単位は各種GPUの設計に依存
並列処理を行うと、実行時間を短縮できる
その分ハードウェア資源が必要
width
height
頂点単位
並列処理
ピクセル単位
並列処理
GPUは各所で並列処理を行う
14
GPUアーキテクチャの特性 まとめ
1.レンダリング理論
2.長いパイプライン処理
3.並列性
以上がGPUの3つの特徴です。
レンダリング理論をもとにした長いパイプライン処理があるGPUは、
各所で並列化されて高速に処理されます。
このGPU特性を踏まえ、GPUの構造を見てみましょう
15
GPU構成・進化の時系列表
2000.3.4 2006.11.11 2013.11.151994.12.3
構成の進化とともにプログラム自由度が上昇
同時期に半導体資源が増加し、計算能力も上昇
固定パイプライン 固定シェーダ ユニファイドシェーダ
半導体資源
構造
参考:PS
時間
プログラム自由度
16
最適化と性能
GPU概要を抑えたところで、具体例を交えた最適化手法へ。
要約:GPUの最適化はGPUパイプラインを円滑に流すことに集約できる
ポイント1) GPUの基本構造は長大なパイプライン
各所の処理を滞りなく進め、無駄を省き、GPU全体のスループットを良くする
ポイント2) グラフィックス特別機能と、並列動作箇所を活かす
PS4ではラスタライザ2並列、シェーダ1152並列 など、ユニットが複数
ポイント3) キャッシュ・バスなどの資源を無駄なく使う
容量が限られているが、高速に動作する
※GPUは構造、ファームウェア・ライブラリ・プログラムとさまざまな要因が性能に影響します。環境
により制御可能な範囲が異なることがあります。ここでは、なるべく広範囲で適用可能な基本的な部分
を見ていますが、環境によって隠ぺいされている場合があります。
17
具体的な最適化の流れ
GPUの処理を停滞させないため、ここでは以下の要領で進めます。
最適化の流れ
Step A) 最適化対象フレームの特定
Step B) CPU/GPU負荷測定
Step C) GPUボトルネック解析
Step D) 最適化
Step E) 目標性能に達するまで繰り返す
ここで、時折フレーム落ちが発生しているシーンを例に最適化を考えます
。
18
レンダリング処理の例
19
レンダリング処理の例
スキニング
アニメーション
物理衝突判定
テクスチャ
マッピング
法線マッピングインスタンシング
マルチサンプル
・
テンポラルフィルタ
SSAO
ポストエフェクト
グロウ
ポストエフェクト
フォンライティング
シーン描画は、
さまざまな処理の集合
この処理で一部動作がフレーム落ちしている場合を考えます
20
レンダリング処理の例
21
Step A) 最適化対象フレームの特定
時間
描画
フレーム
番号1 2 3
状況により負荷が変わる
たとえば、
・大量計算のタイミング
・視野に多数オブジェクト
など
処理時間の総和が
1/60秒(≅16.7ms)であれば60fpsで動作
1/60秒
状況により1/60秒を超えるとフレーム落ち
このフレームは画面更新されず、次のフレーム切り替えタイミングへ
まずはフレーム時間を測ることで最適化する対象フレームを特定
4 5 6 7 8
22
Step B) CPU/GPU負荷測定
問題のあるフレームを見つけたら、
ボトルネックがCPUかGPUか、を切り分ける。
というのも、計測した負荷には、CPU実行時間とGPU実行
時間が混在しているためで、これを切り分ける。
判定基準としては、GPU処理をすべて切ってみて、それで
も処理時間が縮まなければ、CPUボトルネック。
そうでなければ、GPUボトルネック。
C
P
U
G
P
U
1)CPUネックのケース
マルチスレッド等、
CPUを最適化する。
この資料では解説しない
C
P
U
G
P
U
2)GPUネックのケース
この時は
GPUバッチの解析に進む
負荷 負荷
次はバッチの解析へ
G
P
U
23
Step C) GPUボトルネック解析(バッチ説明)
時間
基本的に各処理はバッチと呼ばれるGPU起動単位で逐次実行される。バッチ実行時間の総和がフレーム時間
ク
リ
ア
ア
ニ
メ
ー
シ
ョ
ン
G
バ
ッ
フ
ァ
作
成
ポ
ス
ト
エ
フ
ェ
ク
ト
GUI
後
処
理
ポ
ス
ト
エ
フ
ェ
ク
ト
G
バ
ッ
フ
ァ
合
成
フレームの処理で最も問題のあるバッチを見つける
24
Step C) GPUボトルネック解析(バッチ計測)
main()
{
initialize(); //初期化処理関数
for(flag!=1){ //描画ループ
update(); //更新処理関数
//バッチ1:クリア処理
BeginEvent(“clear”);
clear();
EndEvent();
//バッチ2:アニメ処理
BeginEvent(“animation”);
animation();
EndEvent();
//バッチ3:描画処理
BeginEvent(“draw”);
draw();
EndEvent();
//バッチ4:ポストエフェクト処理
BeginEvent(“post effect”);
postEffect();
EndEvent();
}
finalize(); //終了処理関数
};
各処理の前後に
タイマ計測を入れる
計測後、一番重いバッチを最適化対象にする
前述のとおり、目的の時間に達するまで
遅い処理を速くしていく
次はいよいよ
当該バッチの最適化へ
ポイント
1. この時できればGPUタイマを使う。CPUタイマでは
、呼び出しと終了の同期の時間にずれ
2. 固定の条件で計測することが難しい場合、複数回計
測を繰り返すことで負荷計測の揺らぎの影響を緩和
25
Step D) 最適化:実測ベース最適化
・バッチの実測データをもとにボトルネック部位を解析します。
・GPUはパイプラインが長いため、どこかが詰まると、すべてが滞留してしまう。
再掲:GPU 処理フロー
26
どこがボトルネックか?
まずはつまっている箇所
を調べる
Step D) 最適化:実測ベース最適化
・バッチの実測データをもとにボトルネック部位を解析します。
・GPUはパイプラインが長いため、どこかが詰まると、すべてが滞留してしまう。
再掲:GPU 処理フロー
27
どこがボトルネックか?
まずはつまっている箇所
を調べる
問題なくうまく流れている箇所の
負荷を軽減しても何の意味もない!
では、次にどうやってバッチ中の負荷の大きな
部位を切り分けるか?
→次ページ
ボトルネック解析フローチャート
解析の目安フローチャート。
プログラムの一部を変更して
負荷の部位を特定します。
赤はシェーダ変更、緑はテクスチ
ャ変更、青はそれ以外のブロック
の操作です。
この表での"テクスチャ"は"バッフ
ァ"形式の指定も含みます。
また、すべての組み合わせが網羅
されているわけではありません。
GPU 処理フロー
28
PS/CS以外のシェーダ
ボトルネック解析フローチャート
A)シェーダを単純にして速くなる?
光学計算のシェーダを何もせずに定数
出力だけをするように書き換え
29
ボトルネック解析フローチャート
B)テクスチャ・バッファサイズを1x1に
して速くなる?
負荷が軽くなればテクスチャ読み込みの
ボトルネック。そうでなければ、使って
いるシェーダによって分岐を変化
※詳細を実例を交えて後程紹介
シェーダがボトルネックであればシェーダ
コード効率を改善。または計算量を軽減
テクスチャがボトルネックであれば、
フォーマットを軽量化したり、圧縮した
りして負荷軽減。キャッシュアクセス効
率を改善。
30
ボトルネック解析フローチャート
D)ROPのカラーマスクをして速くなる?
ピクセル出力を止めることによって、速くなら
なければ、ピクセルシェーダがボトルネック
シェーダがボトルネックであれば、
シェーダコードを軽減
31
ボトルネック解析フローチャート
E)メモリとROPどちらが高い負荷?
デプステストをやめてみて、速くなったら
ROPのボトルネック。
そうでなければメモリがボトルネック
メモリがボトルネックであれば、フォー
マット軽減やアクセスパタン改善でメモ
リアクセスを軽減(多いボトルネック)
ROPがボトルネックであればROP使用量を
軽減(あまりボトルネックにならない)
32
ボトルネック解析フローチャート
C)ビューポートを小さくして速くなる?
1920x1080の解像度を、640x480に
33
ボトルネック解析フローチャート
頂点アトリビュートがボトルネックであれば
頂点アトリビュートを圧縮、フォーマット軽減等で軽量化
F)頂点アトリビュートを削減して速くなる?
頂点シェーダ入出力のテクスチャ座標などを切
って、位置だけの出力にしてみる
34
ボトルネック解析フローチャート
テッセレータがボトルネックであれば
頂点分割数を減らす等の負荷軽減対策
他、ここでは述べられていな
いそれ以外のボトルネック。
同期関係や頂点数削減等の
対策など。G)テッセレーション分割数を下げて速くなる?
テッセレータが分割上限を1に設定して分割数を抑
えて評価
35
Step D) 理論ベース最適化 #1
• ここまででバッチ中のGPU負荷部を大まかに特定できた!
– 次に、問題部分の性能を改善しよう
• どのように問題部分の負荷を減らす改善をすればいいのか?
– 単純にはプログラムの無駄をなくしたり、リソースを軽くする
→GPUには効率的に負荷を減らす加速機能がある!
これを活用する
※すべては述べきれず、また詳細になるほど各GPU実装に依存してきますので、
ここではよくある機能・手法の紹介にとどめます。
36
GPUの特殊な加速機能:頂点キャッシュ
有限数内で頂点シェーダ処理の結果を使いまわす加速機構
これがなければ頂点数分頂点シェーダが起動するところ、
共有している頂点でキャッシュ上にあるものはシェーダ処理を省略可能!
37
具体的に三角形単位で見てみると、、、
頂点処理
GPUの特殊な加速機能:頂点キャッシュ
38
A B
C E F
D
A B
C D
triStripツールなどで、アセットの頂点順を調整可能
頂点インデックスに
GPUに都合のいい並び
1と2の三角形で6頂点
あるところ、2つ共有
した頂点処理を一度に
でき、本来6回のとこ
ろ、4回の頂点演算で
済む
Step D) 最適化:理論ベース最適化 #2
加速機能のほか、効率的に負荷を減らすもう一つの戦略
→アクセスパタンの工夫等のGPU特性を活かす改善
局所性をなるべく保つ工夫をすることで並列動作・キャッシュ動作効率を改善する
39被写界深度(DOF)処理をする具体例でみてみましょう→
シェーダは実行単位が決まっている。これに合わせてアクセスパタンを設計
→データ要求がキャッシュにあてやすくなり、高速化につながる
8x8がさらにZ字のように、階層的に
並んでいる。(スィウズル構造)
0 1
2 3
4 5
6 7
8 9
10 11
12 13
14 15
マスごとが8x8等の
実行単位の集まり
実装依存で単位は
異なる
問題:ぼかし画像処理でコンピュートシェーダが遅い
40
DOF
9x9texelのフィルターサイズの画像処理で10.0ms以上かかってしまう問題に遭遇
(60fpsのためには16.7ms内に納めなくてはならないのに!)
※DOFで焦点の合っていない箇所のボケ表現に使う
ぼかし画像処理
この魚だけぼけていない
他の部分はぼけている
どんな処理をしているのか?:ぼかし処理概要(1/2)
1)水平方向ぼかし処理:各スレッドが横長のサンプルをして平均色を計算
まずは水平方向9pixelでぼかし処理。横ににじんだ結果にする
各点で同じ処理。
1080
pixel
1920pixel
ス
レ
ッ
ド
0
ス
レ
ッ
ド
1
ス
レ
ッ
ド
2
ス
レ
ッ
ド
1
9
1
9
41
1080
pixel
1920pixel
スレッド0
スレッド1
スレッド2
スレッド1079
ブラー処理概要(2/2)
2)垂直方向ぼかし処理:各スレッドが縦長のサンプルをして平均色を計算
次に、水平方向ぼかし結果で処理。
これで本来9x9texelのサンプルを、縦一列9texelと横一列9texelに削減できる効率的
そうなぼかしアルゴリズム。しかし、実際には14.3msと遅い。
さっそくボトルネックを見てみる
1080
pixel
1920pixel
42
1080
pixel
1920pixel
水平方向ブラー結果
この場合のボトルネック解析
ボトルネック解析を行うと、
テクスチャ読み込みのボトルネック
フレームバッファを参照した画像処理なので、
圧縮テクスチャにしたり、フォーマット変更は
なるべくしたくない。
→キャッシュアクセスを改善してみる
43
スレッド
0
スレッド
1
スレッド
2
スレッド
“改善”ブラー手法
2段階に分けず、9x9 texel を一度に読み込みするようにしてみる
各ピクセルで一気に9x9texelのサンプルを行うと0.9msに高速化。
論理的には、先ほどよりも81/(9*2-1)=4.8倍サンプル数が多いアルゴリズム。
しかし、実際は改善前の14.3msと比べて、こちらのほうが0.9msと15.9倍も速い。
どうしてだろうか?
1080
pixel
1920pixel
44
1080
pixel
1920pixel
シェーダ実行単位に合わせたアクセスパタン
メモリからGPUのキャッシュにデータを乗せる際、矩形で参照。
たとえば、キャッシュラインサイズが64BでR8G8B8A8(4Byte/texel)のテクスチャを参照する場合には4x4の領域を参照する
→読み込み領域の多くが、メモリよりもはるかに高速なキャッシュに乗っているため、
参照テクセルが多くても、後者の局所性を活かしたアルゴリズムが有利
キャッシュミス多発で低速
各ピクセルで読み込み範囲が縦横入れ替わる
ため、キャッシュが入れ替わり効率が悪くな
っていた
キャッシュヒット率が高く高速
テクスチャアクセスをまとめてキャッシュヒ
ット率が高い
45
Step D) 理論ベース最適化 まとめ
#1 ) GPU負荷軽減加速機能の利用
• 頂点キャッシュなど
• 複雑だが、GPU最適化の妙がつまっていて面白い
#2 ) GPU特性を活かす工夫
– GPU実行単位をキャッシュに当てやすくし、局所性が活かせるアクセスパタン
– レジスタ・共有メモリ・キャッシュ・メモリと、使用頻度により配置を設計
46
参考
・(対象GPUがある程度絞れる場合)各メーカが公開しているGPU情報を入手
シェーダパイプ数、L2キャッシュ容量、メモリバンド幅、特殊なGPU負荷軽減策など
・高度な最適化事例 Optimizing the Graphics Pipeline with Compute
/ GDC 2016, Graham Wihlidal, frostbite
参考1:GPU仕様から最大性能の見積もり
※60fpsの場合の例
頂点処理ユニット(フロントエンド・セットアップ・ラスタライザ)
• 頂点処理ユニット4つでGPUクロックが1GHzなら、
頂点能力は4*1GHz = 4G 頂点生成毎秒
• フレームあたり、4G / 60 = 67M頂点まで使える。
シェーダ演算器
• 1GHz動作でshader pipeが512本で1シェーダパイプで実行可能な演算が2muladdだと→
2 * 512 pipe * 10^9 Hz = 1024 G Flops(浮動小数点演算毎秒)
• フレームあたり1024/60 = 17 G 回の浮動小数点の演算が可能
というように, 各所のハードウェア性能上限が仕様表から計算で求められる。メモリバンド
幅なども記載してある。
この性能上限が最適化しても到達できる最大値であり、最適化はここまで。
リソースとアルゴリズムの見積もりに使える。
47
参考2:プログラムのリソースから演算量(負荷)見積もり
※60fpsの場合の例
レンダーターゲットメモリバンド幅
• 1920x1080 R8G8B8A8のカラーバッファ、法線バッファ、AOバッファ、拡散反射光バ
ッファ、鏡面反射光バッファ、アルベドバッファ、 1920x1080 Float32のデプスバッフ
ァを読み込みかつ書き込みしていれば、
1920x1080x4bytePerTexel * 7renderTarget*2readAndWrite = 110.7MiB
を1フレームあたり消費
• 秒間では、110.7MiB * 60フレーム =毎秒6644.5MiB使っている。つまりメモリバンド幅
を6.5GiB/s使っている。
テクスチャメモリバンド幅も同様にリソースから算出可能
このように, プログラムで使っているリソースを把握しておけば、どれだけの性能を使うこと
になるか、計算で求められる。
この見積もり総和が、前頁で出した性能上限に達する場合、
理論上最適化してもリアルタイム処理にすることはできない。
48
Step E) 目標性能に達するまで繰り返す
最適化の流れ
Step A) 最適化対象フレームの特定
Step B) CPU/GPU負荷測定
Step C) GPUボトルネック解析
Step D) 最適化
Step E) 目標性能に達するまで繰り返す
目標に達成するまでStep A~ Step Dを繰り返します。
アルゴリズムの変更、アセット削減
このときも今回の手順でボトルネックがGPUのどこにあるかを把握すれば、
影響を局所的にとどめることができ、最小限の変更にとどめられます。
これらのステップを経て、
どうしても目標速度の達成が難しければ、
49
参考:計測ツール
各バッチ処理のシェーダパイプの使用頻度、実行効率がわかる
他、バッチ中の詳細なブロックごとの負荷信号を表示可能
プログラムを変更せずとも、どこで処理が滞っているのかがわかる
このシーンをキャプチャ
DirectXならPIX
AMD Perfstudioなど
さまざまなツールがある
ツールによっては手順を自動化
参考:PlayStation®4でRazorツールを使って波形を計測した例
ツールがあれば計測を補佐してくれます。各環境に応じたツールを探してみましょう
50
まとめ
51
GPU最適化まとめ
【性能上昇のために積極的にする事】
大量の演算器で並列計算
• 頂点・ピクセル処理のデータ独立性
• 大規模な演算を高速にできる
専用演算機器・加速機能の利用と、特性に合
わせた最適化
• 重複する頂点処理を省略可能な頂点キャッ
シュなどの特殊機能
• 局所性を保ちキャッシュヒット率を上げる
• 他にも多種機能有
【性能低下しない為に気を付ける事】
特定ボトルネック箇所で止まることを避ける
• パイプラインが長く、ボトルネック箇所で
全体が止まる
• 個々の対策の前に、ボトルネック解析で時
間の削減
• GPU構造を知り、ボトルネックを緩和・解
消する
ボトルネックは演算よりバンド幅になりがち
• キャッシュになるべく当てる
• 同期の無駄を無くす
• データ読み込みのレイテンシを演算で隠す
52
最後に
今後もGPUは進化と変化が予想される
しかし、最適化の基本の考え方は共通
・完全な解決ではなく、有限時間内で大きな問題から対処するトリアージ
・GPU最適化を行うことで、描画に余裕が生まれる
・結果、リアルタイムで表現できることの幅が広がる
53
GPU最適化でグラフィックス性能が改善して
面白いゲーム・アプリの一助となることを
願っています!
ご清聴ありがとうございました
54
Q&A
• ご質問ありますか?
• 補足
– プレイステーションは抽象化層が薄く、最適化がたくさんできますよ!
55

More Related Content

What's hot

そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
エピック・ゲームズ・ジャパン Epic Games Japan
 
猫でも分かるUMG
猫でも分かるUMG猫でも分かるUMG
UE4におけるレベル制作事例
UE4におけるレベル制作事例  UE4におけるレベル制作事例
なぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリングなぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリング
Satoshi Kodaira
 
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
エピック・ゲームズ・ジャパン Epic Games Japan
 
UE4におけるエフェクトの為のエンジン改造事例
UE4におけるエフェクトの為のエンジン改造事例UE4におけるエフェクトの為のエンジン改造事例
UE4におけるエフェクトの為のエンジン改造事例
エピック・ゲームズ・ジャパン Epic Games Japan
 
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DDマテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
エピック・ゲームズ・ジャパン Epic Games Japan
 
UE4における大規模背景制作事例(コリジョン編)
UE4における大規模背景制作事例(コリジョン編) UE4における大規模背景制作事例(コリジョン編)
UE4における大規模背景制作事例(コリジョン編)
エピック・ゲームズ・ジャパン Epic Games Japan
 
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
エピック・ゲームズ・ジャパン Epic Games Japan
 
Unreal Engine 4.27 ノンゲーム向け新機能まとめ
Unreal Engine 4.27 ノンゲーム向け新機能まとめUnreal Engine 4.27 ノンゲーム向け新機能まとめ
Unreal Engine 4.27 ノンゲーム向け新機能まとめ
エピック・ゲームズ・ジャパン Epic Games Japan
 
CEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライド
CEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライドCEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライド
CEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライド
Toshiyasu Miyabe
 
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築するピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
Takahito Tejima
 
Mask Material only in Early Z-passの効果と仕組み
Mask Material only in Early Z-passの効果と仕組みMask Material only in Early Z-passの効果と仕組み
Mask Material only in Early Z-passの効果と仕組み
エピック・ゲームズ・ジャパン Epic Games Japan
 
メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
エピック・ゲームズ・ジャパン Epic Games Japan
 
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動についてUE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
com044
 
UE4における大規模レベル実装ワークフローとブループリント活用事例
UE4における大規模レベル実装ワークフローとブループリント活用事例UE4における大規模レベル実装ワークフローとブループリント活用事例
UE4における大規模レベル実装ワークフローとブループリント活用事例
エピック・ゲームズ・ジャパン Epic Games Japan
 
アーティストの為のプロファイル入門!~楽しいRenderDocの使い方~
アーティストの為のプロファイル入門!~楽しいRenderDocの使い方~アーティストの為のプロファイル入門!~楽しいRenderDocの使い方~
アーティストの為のプロファイル入門!~楽しいRenderDocの使い方~
エピック・ゲームズ・ジャパン Epic Games Japan
 
[UE4]自動テストでもっと楽したい!
[UE4]自動テストでもっと楽したい![UE4]自動テストでもっと楽したい!
[UE4]自動テストでもっと楽したい!
com044
 
UE4におけるキャラクタークラス設計
UE4におけるキャラクタークラス設計UE4におけるキャラクタークラス設計
UE4におけるキャラクタークラス設計
Masahiko Nakamura
 
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
historia_Inc
 

What's hot (20)

そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
 
猫でも分かるUMG
猫でも分かるUMG猫でも分かるUMG
猫でも分かるUMG
 
UE4におけるレベル制作事例
UE4におけるレベル制作事例  UE4におけるレベル制作事例
UE4におけるレベル制作事例
 
なぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリングなぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリング
 
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
 
UE4におけるエフェクトの為のエンジン改造事例
UE4におけるエフェクトの為のエンジン改造事例UE4におけるエフェクトの為のエンジン改造事例
UE4におけるエフェクトの為のエンジン改造事例
 
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DDマテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
 
UE4における大規模背景制作事例(コリジョン編)
UE4における大規模背景制作事例(コリジョン編) UE4における大規模背景制作事例(コリジョン編)
UE4における大規模背景制作事例(コリジョン編)
 
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
 
Unreal Engine 4.27 ノンゲーム向け新機能まとめ
Unreal Engine 4.27 ノンゲーム向け新機能まとめUnreal Engine 4.27 ノンゲーム向け新機能まとめ
Unreal Engine 4.27 ノンゲーム向け新機能まとめ
 
CEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライド
CEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライドCEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライド
CEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライド
 
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築するピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
 
Mask Material only in Early Z-passの効果と仕組み
Mask Material only in Early Z-passの効果と仕組みMask Material only in Early Z-passの効果と仕組み
Mask Material only in Early Z-passの効果と仕組み
 
メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
 
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動についてUE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
 
UE4における大規模レベル実装ワークフローとブループリント活用事例
UE4における大規模レベル実装ワークフローとブループリント活用事例UE4における大規模レベル実装ワークフローとブループリント活用事例
UE4における大規模レベル実装ワークフローとブループリント活用事例
 
アーティストの為のプロファイル入門!~楽しいRenderDocの使い方~
アーティストの為のプロファイル入門!~楽しいRenderDocの使い方~アーティストの為のプロファイル入門!~楽しいRenderDocの使い方~
アーティストの為のプロファイル入門!~楽しいRenderDocの使い方~
 
[UE4]自動テストでもっと楽したい!
[UE4]自動テストでもっと楽したい![UE4]自動テストでもっと楽したい!
[UE4]自動テストでもっと楽したい!
 
UE4におけるキャラクタークラス設計
UE4におけるキャラクタークラス設計UE4におけるキャラクタークラス設計
UE4におけるキャラクタークラス設計
 
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
 

Similar to GPU最適化入門

CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」
CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」
CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」
Web Technology Corp.
 
「らしく」ハタラコウ。 ChatWork x クラウドソーシング
「らしく」ハタラコウ。 ChatWork x クラウドソーシング「らしく」ハタラコウ。 ChatWork x クラウドソーシング
「らしく」ハタラコウ。 ChatWork x クラウドソーシング
Hiroshi KURABAYASHI
 
機械学習システム開発案件の事例紹介
機械学習システム開発案件の事例紹介機械学習システム開発案件の事例紹介
機械学習システム開発案件の事例紹介
BrainPad Inc.
 
属人化して詰まってた作業を自動化で楽しようとした話
属人化して詰まってた作業を自動化で楽しようとした話属人化して詰まってた作業を自動化で楽しようとした話
属人化して詰まってた作業を自動化で楽しようとした話
KLab Inc. / Tech
 
JS Board で IoT は楽勝か?
JS Board で IoT は楽勝か?JS Board で IoT は楽勝か?
JS Board で IoT は楽勝か?
Shingo Fukui
 
ゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetupゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetup
gree_tech
 
ゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetupゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetup
Ryuichi Kubuki
 
Jetson TK1でSemi-Global Matching
Jetson TK1でSemi-Global MatchingJetson TK1でSemi-Global Matching
Jetson TK1でSemi-Global Matching
Ryo Sakamoto
 
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
Web Technology Corp.
 
Dev(ice)love デバイス祭り
Dev(ice)love デバイス祭りDev(ice)love デバイス祭り
Dev(ice)love デバイス祭りKaoru NAKAMURA
 
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
Takeshi HASEGAWA
 
20101127 Android Usability Seminar
20101127 Android Usability Seminar20101127 Android Usability Seminar
20101127 Android Usability SeminarVisso株式会社
 
jubatusのECサイトへの適応 #jubatus_hackathon
jubatusのECサイトへの適応 #jubatus_hackathonjubatusのECサイトへの適応 #jubatus_hackathon
jubatusのECサイトへの適応 #jubatus_hackathon
Tokoroten Nakayama
 
日本におけるアジャイル開発の認知度の変遷を情報処理技術者試験の問題から考察してみた_公開用
日本におけるアジャイル開発の認知度の変遷を情報処理技術者試験の問題から考察してみた_公開用日本におけるアジャイル開発の認知度の変遷を情報処理技術者試験の問題から考察してみた_公開用
日本におけるアジャイル開発の認知度の変遷を情報処理技術者試験の問題から考察してみた_公開用
ESM SEC
 
人が注目する箇所を当てるSaliency Detectionの最新モデル UCNet(CVPR2020)
人が注目する箇所を当てるSaliency Detectionの最新モデル UCNet(CVPR2020)人が注目する箇所を当てるSaliency Detectionの最新モデル UCNet(CVPR2020)
人が注目する箇所を当てるSaliency Detectionの最新モデル UCNet(CVPR2020)
Shintaro Yoshida
 
【Unite Tokyo 2019】【あら簡単】インテルのGPAを使ってあなたのUnityタイトルを高速化
【Unite Tokyo 2019】【あら簡単】インテルのGPAを使ってあなたのUnityタイトルを高速化【Unite Tokyo 2019】【あら簡単】インテルのGPAを使ってあなたのUnityタイトルを高速化
【Unite Tokyo 2019】【あら簡単】インテルのGPAを使ってあなたのUnityタイトルを高速化
UnityTechnologiesJapan002
 
リクルートはいかにして、ディープラーニング(深層学習)の導入を成功させたか
リクルートはいかにして、ディープラーニング(深層学習)の導入を成功させたかリクルートはいかにして、ディープラーニング(深層学習)の導入を成功させたか
リクルートはいかにして、ディープラーニング(深層学習)の導入を成功させたか
Recruit Technologies
 
FPGA, AI, エッジコンピューティング
FPGA, AI, エッジコンピューティングFPGA, AI, エッジコンピューティング
FPGA, AI, エッジコンピューティング
Hideo Terada
 
なにわTech20161215
なにわTech20161215 なにわTech20161215
なにわTech20161215
Natsutani Minoru
 
Lチカからの高位合成
Lチカからの高位合成Lチカからの高位合成
Lチカからの高位合成
Kenichiro MITSUDA
 

Similar to GPU最適化入門 (20)

CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」
CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」
CEDEC2014 セッション資料「ヘキサドライブ流 OPTPiX SpriteStudio 最適化術!」
 
「らしく」ハタラコウ。 ChatWork x クラウドソーシング
「らしく」ハタラコウ。 ChatWork x クラウドソーシング「らしく」ハタラコウ。 ChatWork x クラウドソーシング
「らしく」ハタラコウ。 ChatWork x クラウドソーシング
 
機械学習システム開発案件の事例紹介
機械学習システム開発案件の事例紹介機械学習システム開発案件の事例紹介
機械学習システム開発案件の事例紹介
 
属人化して詰まってた作業を自動化で楽しようとした話
属人化して詰まってた作業を自動化で楽しようとした話属人化して詰まってた作業を自動化で楽しようとした話
属人化して詰まってた作業を自動化で楽しようとした話
 
JS Board で IoT は楽勝か?
JS Board で IoT は楽勝か?JS Board で IoT は楽勝か?
JS Board で IoT は楽勝か?
 
ゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetupゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetup
 
ゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetupゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetup
 
Jetson TK1でSemi-Global Matching
Jetson TK1でSemi-Global MatchingJetson TK1でSemi-Global Matching
Jetson TK1でSemi-Global Matching
 
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
 
Dev(ice)love デバイス祭り
Dev(ice)love デバイス祭りDev(ice)love デバイス祭り
Dev(ice)love デバイス祭り
 
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
 
20101127 Android Usability Seminar
20101127 Android Usability Seminar20101127 Android Usability Seminar
20101127 Android Usability Seminar
 
jubatusのECサイトへの適応 #jubatus_hackathon
jubatusのECサイトへの適応 #jubatus_hackathonjubatusのECサイトへの適応 #jubatus_hackathon
jubatusのECサイトへの適応 #jubatus_hackathon
 
日本におけるアジャイル開発の認知度の変遷を情報処理技術者試験の問題から考察してみた_公開用
日本におけるアジャイル開発の認知度の変遷を情報処理技術者試験の問題から考察してみた_公開用日本におけるアジャイル開発の認知度の変遷を情報処理技術者試験の問題から考察してみた_公開用
日本におけるアジャイル開発の認知度の変遷を情報処理技術者試験の問題から考察してみた_公開用
 
人が注目する箇所を当てるSaliency Detectionの最新モデル UCNet(CVPR2020)
人が注目する箇所を当てるSaliency Detectionの最新モデル UCNet(CVPR2020)人が注目する箇所を当てるSaliency Detectionの最新モデル UCNet(CVPR2020)
人が注目する箇所を当てるSaliency Detectionの最新モデル UCNet(CVPR2020)
 
【Unite Tokyo 2019】【あら簡単】インテルのGPAを使ってあなたのUnityタイトルを高速化
【Unite Tokyo 2019】【あら簡単】インテルのGPAを使ってあなたのUnityタイトルを高速化【Unite Tokyo 2019】【あら簡単】インテルのGPAを使ってあなたのUnityタイトルを高速化
【Unite Tokyo 2019】【あら簡単】インテルのGPAを使ってあなたのUnityタイトルを高速化
 
リクルートはいかにして、ディープラーニング(深層学習)の導入を成功させたか
リクルートはいかにして、ディープラーニング(深層学習)の導入を成功させたかリクルートはいかにして、ディープラーニング(深層学習)の導入を成功させたか
リクルートはいかにして、ディープラーニング(深層学習)の導入を成功させたか
 
FPGA, AI, エッジコンピューティング
FPGA, AI, エッジコンピューティングFPGA, AI, エッジコンピューティング
FPGA, AI, エッジコンピューティング
 
なにわTech20161215
なにわTech20161215 なにわTech20161215
なにわTech20161215
 
Lチカからの高位合成
Lチカからの高位合成Lチカからの高位合成
Lチカからの高位合成
 

GPU最適化入門

Editor's Notes

  1. ROP(CBDB/Merger)
  2. SIE WWS JAPAN Studioアセット協力 高橋美貴さん、高橋功さん
  3. この時、コンパイラがコードを変更する可能性があるため、シェーダコンパイルの結果を確認しておいたほうがいいです カラーマスクで全チャンネルをマスク
  4. ごめんなさい。公演時、右の図が横長の短冊状となり、間違っていました。 修正しています。