SlideShare une entreprise Scribd logo
1  sur  158
Télécharger pour lire hors ligne
誘導ミサイル完全マスター
ユニティ・テクノロジーズ・ジャパン
2018/05/08DAY2
安原 祐二
“ ”
問題
Frustum(視錐台)の外側の物体の描画を省略する
やりかたわかりますか?
通常はUnityがやってくれる
〜Frustum Culling〜
平面平面と点の関係
点 x, y, z
平面の式
例
a b cx + y + z+ = 0d
で平面が定まる, , ,a b c d
2x + y + z+ = 03 4 5
左辺は平面からの距離を意味する
「平面からの距離がゼロ」を満たす の集合x, y, z
平面の式とは
ただしこの距離は正規化されていない
2x + y + z+ = 03 4 5
は平面に垂直なベクトル
で両辺を割って正規化
a b cx + y + z+ = 0d
( , , )a b c
p
2 + 2 + 2a b c
例
は平面に垂直なベクトル
で両辺を割って正規化
p
22 + 32 + 42 =
p
29
a b cx + y + z+ = 0d
2x + y + z+ = 03 4 5
( , , )a b c
p
2 + 2 + 2a b c
x + y + z+ = 0
2
p
29
3
p
29
4
p
29
5
p
29
点と平面の距離 平面
距離
点
点と平面の距離
p(5, 6, 7)
平面 x + y + z+ = 0
2
p
29
3
p
29
4
p
29
5
p
29
距離
2
p
29
3
p
29
4
p
29
5
p
29
= ⇥5 + ⇥6 + ⇥7+
距離
点
距離には符号がある
+-
平面の表にあるか裏にあるかがわかる
p(5, 6, 7)
平面
距離
点
表裏
x + y + z+ = 0
2
p
29
3
p
29
4
p
29
5
p
29
球の場合
点と平面の距離が「-r以上」か
+- -r
表裏
視錐台(Frustum)の6つの平面を得るには
プロジェクション行列から取得
void GetPlanesFromFrustum(Vector4[] planes, ref Matrix4x4 p) {
planes[0] = new Vector4(p.m30+p.m00, p.m31+p.m01, p.m32+p.m02, p.m33+p.m03); // left
planes[1] = new Vector4(p.m30-p.m00, p.m31-p.m01, p.m32-p.m02, p.m33-p.m03); // right
planes[2] = new Vector4(p.m30+p.m10, p.m31+p.m11, p.m32+p.m12, p.m33+p.m13); // bottom
planes[3] = new Vector4(p.m30-p.m10, p.m31-p.m11, p.m32-p.m12, p.m33-p.m13); // top
planes[4] = new Vector4(p.m30+p.m20, p.m31+p.m21, p.m32+p.m22, p.m33+p.m23); // near
planes[5] = new Vector4(p.m30-p.m20, p.m31-p.m21, p.m32-p.m22, p.m33-p.m23); // far
}
参考:プロジェクション行列から6平面を取得(正規化は省略)
6平面のひとつでも裏側にあれば、描画の必要ナシ
Frustum Culling 完成
“ ”
誘導ミサイル完全マスター
神は○○○○に宿る
誘導ミサイル
追尾レーザー
追尾レーザー実装例
追尾レーザー実装例その2
誘導ミサイル実装例
https://github.com/Unity-Technologies/MissilesPerfectMaster
“ ”
追尾レーザーの実装
public class Missile : MonoBehaviour {
Vector3 velocity;
Vector3 position;
void Update() {
var acceleration = Vector3.zero;
velocity += acceleration * Time.deltaTime;
position += velocity * Time.deltaTime;
transform.position = position;
}
}
基本:運動方程式の実装例
public class Missile : MonoBehaviour {
Vector3 velocity;
Vector3 position;
void Update() {
var acceleration = Vector3.zero;
/* ここで与えたい外力を記述する(AddForce) */
velocity += acceleration * Time.deltaTime;
position += velocity * Time.deltaTime;
transform.position = position;
}
}
基本:運動方程式の実装例
public class Missile : MonoBehaviour {
Vector3 velocity;
Vector3 position;
void Update() {
var acceleration = Vector3.zero;
acceleration += new Vector3(0f, -9.8f, 0f);
velocity += acceleration * Time.deltaTime;
position += velocity * Time.deltaTime;
transform.position = position;
}
}
ttd v a= 2
+
1
2
加速度・速度・時間・距離の関係
tt
t
d v
v
a= 2
+
1
2
:距離
:速度
:時間
:加速度a
d
加速度・速度・時間・距離の関係
=
2( )d tv
a
t2
ttd v a= 2
+
1
2
速度 の物体が 秒後に 進むための加速度v t d a
public class Missile : MonoBehaviour {
Vector3 velocity;
Vector3 position;
Transform target;
float period;
void Update() {
var acceleration = Vector3.zero;
var diff = target.position - position;
acceleration += (diff - velocity*period)*2f
/(period*period);
period -= Time.deltaTime;
if (period < 0f) {
return;
}
velocity += acceleration * Time.deltaTime;
position += velocity * Time.deltaTime;
transform.position = position;
=
2( )d tv
a
t2
=
2( )d tv
a
t2
v
d
a
目標は動いているので・・
常に加速度を計算しなおす
public class Missile : MonoBehaviour {
Vector3 velocity;
Vector3 position;
Transform target;
float period;
void Update() {
var acceleration = Vector3.zero;
var diff = target.position - position;
acceleration += (diff - velocity*period)*2f
/(period*period);
period -= Time.deltaTime;
if (period < 0f) {
return;
}
velocity += acceleration * Time.deltaTime;
position += velocity * Time.deltaTime;
transform.position = position;
public class Missile : MonoBehaviour {
Vector3 velocity;
Vector3 position;
Transform target;
float period;
void Update() {
var acceleration = Vector3.zero;
var diff = target.position - position;
acceleration += (diff - velocity*period)*2f
/(period*period);
period -= Time.deltaTime;
if (period < 0f) {
return;
}
velocity += acceleration * Time.deltaTime;
position += velocity * Time.deltaTime;
transform.position = position;
必ず命中する
コリジョンはいらない
命中時刻が決まっている
public class Missile : MonoBehaviour {
Vector3 position;
Transform target;
float period;
float total_period;
void Update() {
position = Vector3.Lerp(
target_tfm_.position,
initial_position,
period/total_period);
period -= Time.deltaTime;
if (period < 0f) {
return;
}
非推奨:線形補間(Linear Interpolation)で実装
発射する方向
v
初速を与える
応用:初速を加える
応用2:スクロールを加える
応用3:発射直後に揺らぎを加える
応用4:着弾時刻をずらす
敵が発射する場合
回避不能!
回避可能
public class Missile : MonoBehaviour {
Vector3 velocity;
Vector3 position;
Transform target;
void Update() {
…
if (acceleration.magnitude > 100f) {
acceleration = acceleration.normalized * 100f;
}
…
加速度に上限を設ける
必中とゲーム
・敵が避けると・・
 →ではどうすればよかったのか(不満)
・ロックオンした時点で駆け引きは終わりにしよう
ロックオンは駆け引きになるが
命中でゲームを作るのは難しい
“ ”
誘導ミサイルの実装
角度制御がキモ
前進は等速でもよい
void FixedUpdate() {
var diff = target_position - transform.position;
var target_rot = Quaternion.LookRotation(diff);
transform.rotation = Quaternion.Lerp(transform.rotation,
target_rot, 0.1f);
}
非推奨:Quaternion.Lerp で対応
target_position:目標位置
ほぼ同じ動作を実現できる
が応用が狭い
void FixedUpdate() {
var diff = target_position - transform.position;
var target_rot = Quaternion.LookRotation(diff);
var q = target_rot * Quaternion.Inverse(transform.rotation);
var torque = new Vector3(q.x, q.y, q.z) * ratio;
GetComponent<Rigidbody>().AddTorque(torque);
}
バネトルク
target_position:目標位置
torque:角度差に比例したトルク
(厳密には比例ではない)
ratio:バネ係数
バネトルク
https://www.slideshare.net/UnityTechnologiesJapan/unite-2017-tokyo3d-76689196
https://www.youtube.com/watch?v=6EtTI5xC524&feature=youtu.be
講演資料
講演動画
詳しくは
 [Unite 2017 Tokyo]
 スマートフォンでどこまでできる?
 3Dゲームをぐりぐり動かすテクニック講座
バネトルク適用例
主要パラメータ
バネ係数
角度ドラッグ
速度
“ ”
トレイルの描画
〜便利なテクニック〜
アルファゼロ
アルファゼロ
テクスチャの縁の1ドットは完全透明にする
アルファゼロありアルファゼロなし
トレイルねじれ問題
トレイルねじれが起きやすい条件
根本的な解決はかなり難しい
ノード間の間隔が狭い
トレイルの幅が広い
実装時のメモ
スクリーンに
投影された
2D座標の内積を
折り返し度とみなし
透明度に反映する
スクリーン上の状態を調査
折り返しが発生する度合いで透明度を与える
スクリーン
z
x
射影行列の
理解が必要
トレイルねじれ問題
対策前
対策後
“ ”
昔々、あるところに・・・
厳しい制約のハードウェア
整数しか使えない!
割り算が重すぎる!
厳しい制約のハードウェア
整数しか使えない!
割り算が重すぎる!
4096を1.0として扱う
(固定小数点方式)
掛け算の度に4096で割る
(12bitシフトは高速)
厳しい制約のハードウェア
整数しか使えない!
割り算が重すぎる!
4096を1.0として扱う
(固定小数点方式)
掛け算の度に4096で割る
(12bitシフトは高速)
使わない
public class Missile : MonoBehaviour {
Vector3 velocity;
Vector3 position;
void Update() {
var acceleration = Vector3.zero;
velocity += acceleration * Time.deltaTime;
position += velocity * Time.deltaTime;
transform.position = position;
}
}
基本:運動方程式の実装例
再掲
第一の工夫
Δt は 1 でいい
そのかわり1秒を60とする
第一の工夫
Δt は 1 でいい
そのかわり1秒を60とする
「秒」は地球の自転が基準 どうでもいい!
velocity += acceleration * Time.deltaTime;
position += velocity * Time.deltaTime;
第一の工夫
Δt は 1 でいい
そのかわり1秒を60とする
「秒」は地球の自転が基準
velocity += acceleration;
position += velocity; 足し算のみで運動方程式
どうでもいい!
=
2( )d tv
a
t2
ttd v a= 2
+
1
2
速度 の物体が 秒後に 進むための加速度v t d a
再掲
=
2( )d tv
a
t2
diff = target_position - position;
acceleration += (diff - velocity*period)*2
/(period*period);
我々には知恵がある
割り算の絶望
=
2( )d tv
a
t2
v
d
a
常に加速度を計算しなおす
再掲
は到達までの時間t
時間は1フレームで1変化する
到達時刻現在時刻
32 0
常に加速度を計算しなおす
常に加速度を計算しなおす
第二の工夫
32
到達時刻
0
現在時刻
16 8 4 2 1
加速度を計算しなおすのは2のべき乗時刻のみ
常に加速度を計算しなおす
第二の工夫
32
到達時刻現在時刻
16 8 4 2 1
割り算をシフト演算で実行可能
0
加速度を計算しなおすのは2のべき乗時刻のみ
diff = target_position - position;
acceleration += (diff - velocity*period)*2
/(period*period);
diff = target_position - position;
acceleration += (diff - velocity<<shift)<<1
>>(shift+shift);
シフト演算子で置き換える
命中の直前は同等だが動作は変わっている
32 016 8 4 2 1
追尾性能低 追尾性能高
最適化とは呼べない
毎フレーム計算 間引き計算
神は二階微分に宿る
“ ”
iPhone6で動くデモを作ろう
〜コンピュートシェーダ応用〜
CPU GPU
コンピュートシェーダはGPUにある計算資源
CPU GPU
コンピュートシェーダを実行するふたつの関数
SetData
Dispatch
材料はこれです
実行よろしくです
基本はこれだけ
CPU GPU
よろしく りょうかい
できたよ
ども
まちがった理解
こういう仕組みも作れるが、普通はこうしない
CPU GPU
正しい理解(特にゲームエンジン)
発行 取得 計算命令を発行したら
CPUの仕事は完了
命令を取得して
GPUの仕事開始
CPUはGPUの結果を待たない
CPU GPU
通常のシェーダも同じ流れ
発行 取得
描画
計算
CPUはGPUの結果を待たない
命令を発行したら
CPUの仕事は完了
命令を取得して
GPUの仕事開始
CPU GPU
計算のタイミングはズレている
発行計算 計算
描画
取得
大丈夫なのか?
CPU
CPU
1フレーム
GPU
コンピュートシェーダの実行
SetData
Dispatch
CPUで登録した順番で実行
RenderThread
描画
実行
CPU
CPU
1フレーム
GPU
実行タイミングは通常シェーダの前
SetData
Dispatch
通常シェーダ
描画
実行
CPU
CPU
1フレーム
GPU
CPUで実行しても通常シェーダに渡されるデータは同じ
けっきょくCPUでもGPUでも同じ
描画
通常シェーダ
実行
[numthreads(8, 8, 8)]
void exec()
{
// 処理
}
コンピュートシェーダの記述
8x8x8=512並列で実行される
ややこしい!
for (int x = 0; x < 8; ++x) {
for (int y = 0; y < 8; ++y) {
for (int z = 0; z < 8; ++z) {
// 処理
}
}
}
そもそも、同じ処理の繰り返しを並列化したい
この処理中、x, y, zが使われる「だろう」
[numthreads(8, 8, 8)]
void exec(uint3 id : SV_DispatchThreadID)
{
// 処理
}
登録した関数は並列実行される
x, y, z に相当する情報を引数idから取得できる
[numthreads(512, 1, 1)]
void exec(uint3 id : SV_DispatchThreadID)
{
// id から実行中のスレッドがわかる
}
やりたいことが一重ループなら2番目3番目を1に
並列上限はデバイスによる(iPhoneは512が多い)
GPU
要するにコンピュートシェーダは
関数が512並列で動く
…
512
誘導ミサイルを実装しよう!
GPU
目標:ミサイルの情報をCPUに置かない
…
512
ミサイルバッファ
GPU
ミサイル
512
位置(x, y, z)
姿勢(Quaternion)
角速度(x, y, z)
並列で動作するぶんのデータ
ミサイルごとに
異なる値
ミサイルバッファ
GPU
ミサイル
512
位置(x, y, z)
姿勢(Quaternion)
角速度(x, y, z)
ミサイル(512)
位置(x, y, z)
姿勢(Quaternion)
角速度(x, y, z)
}
並列で動作するぶんのデータ
〜課題その1〜
ターゲットの位置情報が必要
それはCPUで毎フレーム更新される
ターゲットバッファ追加
GPU
ターゲット
256
位置(x, y, z)ミサイル(512)
位置(x, y, z)
姿勢(Quaternion)
角速度(x, y, z) +
NEW!
ターゲットバッファへのIDを追加
GPU
GPUでターゲットの位置がわかる
ミサイル(512)
位置(x, y, z)
姿勢(Quaternion)
角速度(x, y, z)
ターゲットID[0-255]
ターゲット
256
位置(x, y, z)
NEW!
CPU
ターゲットバッファをCPUで更新
SetDataで毎フレームGPUに送る
ターゲット
256 GPSetData
位置(x, y, z)
〜課題その2〜
ミサイルはひとつずつ発射される
が、GPUは常に512並列で計算する
生成処理をGPUで記述する
GPU
SetData
Dispatch
ミサイル生成
SetData
Dispatch
ミサイル運動
NEW!
別プログラムも同じバッファにアクセス可
1
2
ミサイル生成バッファ
GPU
未使用のミサイルIDを渡す
生成
32
初期位置(x, y, z)
初期角度(Quaternion)
ミサイルID[0-511]
CPU
ミサイル状態バッファをCPUで管理
生死はCPUで管理せざるを得ない
ミサイル状態
512
生死
CPU
発射命令が来た
1フレームの最大発射可能数が32
使用可能なIDを検索
512
ミサイル状態
生成
32
生成バッファに充填
生成バッファに無効フラグ
SetData して生成プログラムを Dispatch
生成
有効
有効
無効
無効
無効
無効
無効
無効
無効
32
CPU GPSetData
初期位置
初期角度
ミサイルID[0-511]
有効/無効
〜便利なテクニック〜
生成時に
乱数を格納しておく
さまざまな場面で活躍
生成
初期位置
初期角度
ミサイルID[0-511]
有効/無効
乱数
32
NEW!
〜課題その3〜
ミサイル(Mesh)の描画
情報はGPUにしかない
Graphics.DrawMeshInstancedIndirectで描画
CPU GPSetBuffer
512
ミサイル状態
512
生存ミサイル
15
210
5
33
45
ミサイルバッファをGPUで参照、IDリストのみ送る
Graphics.DrawMeshInstancedIndirectで描画
CPU GPSetData
512
ミサイル状態
512
生存ミサイル
15
210
5
33
45
ミサイルバッファがGPUから参照可能、IDリストのみ送る
注:ここの実装は最終的にソートで置き換えられます
GPU
ミサイルごとに軌跡バッファを保持
ミサイル(512)
位置(x, y, z)
姿勢(Quaternion)
角速度(x, y, z)
軌跡(512)
位置(x, y, z)×32
軌跡インデクス(512)
インデクス[0-31]
NEW!
NEW!
32
トレイルもGraphics.DrawMeshInstancedIndirect
トレイルが完全消滅するまで処理は続く
全期間で「ミサイル生存」とみなす
〜ここらで確認〜
ミサイル×512の運動(含む物理シミュ)を
計測してみた
〜ここらで確認〜
ミサイル×512の運動(含む物理シミュ)を
計測してみた
GPUヤバイ
iPhone6で約50マイクロ秒
コンピュートシェーダの難しさ
最初の動作確認までが長い
簡易シミュレータを作りましょう
〜課題その4〜
ターゲットの消滅
ミサイルよりも先に消滅する可能性
ターゲットバッファに死亡時刻を追加
GPU
(再)ターゲットバッファはCPUからSetDataされる
ターゲット
256
位置(x, y, z)
死亡時刻 NEW!
現在時刻を毎フレーム送る
現在時刻ー死亡時刻=死亡経過時間
ターゲットが死亡時の処理
GPU
死亡経過が正なら加速度を無効にする
ターゲット
256
位置(x, y, z)
死亡時刻 NEW!
〜便利なテクニック〜
絶対時刻で管理する
多くの場面でカウンタよりも便利
class Foo {
float time;
void Update() {
time += Time.deltaTime;
if (time > 10f) {
// 処理
}
}
}
class Foo {
float time;
void Update() {
if (Current - time > 10f) {
// 処理
}
}
}
〜通常の記述〜
〜並列処理向きの記述〜
・最初に現在時刻を入れておく
・現在時刻(Current)を参照する
・現在時刻は毎フレーム更新
 →ReadOnlyにできる
・最初にゼロを入れておく
・増加して処理
・それぞれ更新が必要
 →ReadOnlyにできない
〜課題その5〜
ターゲットに命中を通知
どうしてもCPUにデータを戻す必要がある
データを取得するのはこれ
データを取得するのはこれ
ちょっと待て
CPU
CPU
1フレーム
GPU
(再掲)コンピュートシェーダの実行タイミング
SetData
Dispatch
実行
GPUからデータを取得するGetDataは何をするのか
CPU
CPU
GPU
GPUは前のフレームのコマンドを実行中
CPU
CPU
GPU
GetDataを呼ぶ
GPUは実行中
GetData
CPU
CPU
GPU
GPUが完了するのを待って取得
その間CPUは停止!
GetData
CPU
CPU
GPU
GPUが完了するのを待って取得
GetData
絶望!
その間CPUは停止!
2018.1&Windowsにて(他のプラットフォームは順次)
CPUを止めずに非同期リクエストでバッファを取得
運動プログラムで結果バッファを作成
GPU
死因など必要な情報を格納
ミサイル(512)
位置(x, y, z)
姿勢(Quaternion)
角速度(x, y, z)
軌跡(512)
位置(x, y, z)×32
時刻×32
軌跡インデクス(512)
インデクス[0-31]
結果(512)
packed(4bytes)
NEW!
爆発距離 ターゲットID
ターゲット消失
命中
自然消滅
運動プログラムで結果バッファを作成
GPU
死因など必要な情報を格納
ミサイル(512)
位置(x, y, z)
姿勢(Quaternion)
角速度(x, y, z)
軌跡(512)
位置(x, y, z)×32
時刻×32
軌跡インデクス(512)
インデクス[0-31]
結果(512)
packed(4bytes)
NEW!
爆発距離 ターゲットID
ターゲット消失
命中
自然消滅
カメラからの距離を格納して効果音再生に使用
CPU
結果バッファを使用して状態バッファを更新
死んだミサイルを再利用可能に
ミサイル状態
512
生死
GP
結果
512
結果
NEW!
〜課題その6〜
描画バウンド
どうせ描画がボトルネックになる
ミサイルの総数を16倍の8192発にする
表示は1024発に限定
〜コンピュートシェーダの能力を活かす作戦〜
ミサイルの総数を16倍の8192発にする
表示は1024発に限定
優先度を計算
Frustumの外側の優先度を最低に
近くのミサイルの優先度を高く
〜コンピュートシェーダの能力を活かす作戦〜
優先度に従ってソートする
ミサイルの総数を16倍の8192発にする
表示は1024発に限定
優先度を計算
Frustumの外側の優先度を最低に
近くのミサイルの優先度を高く
〜コンピュートシェーダの能力を活かす作戦〜
GPU処理時間は16倍になる(と予想される)
GPUのnumthreadsは上げられない
ミサイルの総数を16倍にする
cshader.Dispatch(kernel, 16, 1, 1);
Dispatchの引数で16倍に
CPU
軌跡を含むすべての点で
Frustum6平面の内外判定する
GPU
平面 ax + by + cz + d = 0
すべての点が平面の裏側
平面 ax + by + cz + d = 0
すべての点で が負ax + by + cz + d
すべての点が平面の裏側
平面 ax + by + cz + d = 0
すべての点で が負ax + by + cz + d
ax + by + cz + d の最大値が負
すべての点が平面の裏側
平面 ax + by + cz + d = 0
すべての点で が負ax + by + cz + d
ax + by + cz + d の最大値が負
すべての点が平面の裏側
ax + by + cz + d の最大値を出せば良い
平面 ax + by + cz + d = 0
すべての点で が負ax + by + cz + d
ax + by + cz + d の最大値が負
すべての点が平面の裏側
ax + by + cz + d の最大値を出せば良い
ax, by, cz それぞれの最大値を足せば良い
ax + by + cz + d
axxa 0 のとき: の最大値で が最大
axxの最小値で が最大a < 0
axつまり の最大値は
xの最大値)a⇥ の大きい方
のとき:
(
xの最小値)a⇥(
by, czも同様
x
xの最大値xの最小値
内外判定のやりかた
1・点群のxyzの最大値・最小値を調査
xmax, xmin,
ymax, ymin,
zmax, zmin,
2・平面式と乗算して各項の最大値を得る
d = ax + by + cz + plane.w
3・平面との距離の最大値を得る
ax = max(xmax*plane.x, xmin*plane.x);
by = max(ymax*plane.y, ymin*plane.y);
cz = max(zmax*plane.z, zmin*plane.z);
(これが Bounding Box)
ソートバッファを新設
GPU
ミサイル(8192)
位置(x, y, z)
姿勢(Quaternion)
角速度(x, y, z)
軌跡(8192)
位置(x, y, z)×32
時刻×32
軌跡インデクス(8192)
インデクス[0-31]
結果(8192)
packed(4bytes)
NEW!
ソート
優先度
ミサイルID[0-8192]
8192
ソートをGPUで記述する
GPU
SetData
Dispatch
ミサイル生成
SetData
Dispatch
ミサイル運動
NEW!
bitonic sortを使用
Dispatch ソート
1
2
3
#pragma kernel missile_sort
RWStructuredBuffer<SortData> cbuffer_missile_sort_key_list;
#define MISSILE_NUM ( 512*16 ) // must be more than THREAD_X*2
[numthreads(512, 1, 1)]
void missile_sort(uint gidx : SV_GroupIndex) {
for (uint block = 2; block <= MISSILE_NUM; block <<= 1) { // major step
for (uint step = block >> 1; step > 0; step >>= 1) { // minor step
uint maskL = (uint)step - 1;
uint maskH = 0xFFFFFFFF ^ maskL;
for (uint i = gidx; i < MISSILE_NUM >> 1; i += 512) {
uint idx = ((i&maskH)<<1) | (i&maskL);
SortData v1 = cbuffer_missile_sort_key_list[idx];
SortData v2 = cbuffer_missile_sort_key_list[idx + step];
int isAscend = (idx&block) != 0 ? 1 : 0;
int isBigger = (v1.packed_>>16) > (v2.packed_>>16) ? 1 : 0;
if (isAscend ^ isBigger) {
cbuffer_missile_sort_key_list[idx] = v2;
cbuffer_missile_sort_key_list[idx+step] = v1;
}
}
DeviceMemoryBarrierWithGroupSync();
}
}
}
https://shobomaru.wordpress.com/2012/11/27/parallel-processing-of-bitonic-sort/参考:
参考
ソートの高速化
for (uint i = gidx; i < MISSILE_NUM >> 1; i += 512) {
uint idx = ((i&maskH)<<1) | (i&maskL);
SortData v1 = cbuffer_missile_sort_key_list[idx];
SortData v2 = cbuffer_missile_sort_key_list[idx + step];
int isAscend = (idx&block) != 0 ? 1 : 0;
int isBigger = (v1.packed_>>16) > (v2.packed_>>16) ? 1 : 0;
if (isAscend ^ isBigger) { // 条件一致で
cbuffer_missile_sort_key_list[idx] = v2; // 交換
cbuffer_missile_sort_key_list[idx+step] = v1; // 交換
}
メモリアクセスを可能な限り減らす
ソートされたシーン
〜最終課題〜
GetData
おまえiPhone6で動かすゆうたやろ
絶望!
CPU
CPU
GPU
(再掲)GetDataの絶望
我々には知恵がある
GetData
待ちが発生ピッタリ
GetData呼ばない GetData呼ぶ
Instrumentsで調査
ガクガク
CPU
CPU
GPU
GetData
CPU
CPU
GPU
呼び出すタイミングをずらせば・・・
待ちを最小限にできるはず
GetData
絶妙のタイミング!
CPU
CPU
GPU
可能は可能だが、安定させるのは難しい
デモでは2フレーム毎に2フレーム分のデータを取得
GetData
おしまい

Contenu connexe

Tendances

【Unity道場 2月】シェーダを書けるプログラマになろう
【Unity道場 2月】シェーダを書けるプログラマになろう【Unity道場 2月】シェーダを書けるプログラマになろう
【Unity道場 2月】シェーダを書けるプログラマになろうUnity Technologies Japan K.K.
 
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -historia_Inc
 
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnity Technologies Japan K.K.
 
UE4でTranslucencyやUnlitに影を落としたい!
UE4でTranslucencyやUnlitに影を落としたい!UE4でTranslucencyやUnlitに影を落としたい!
UE4でTranslucencyやUnlitに影を落としたい!com044
 
【CEDEC2018】Scriptable Render Pipelineを使ってみよう
【CEDEC2018】Scriptable Render Pipelineを使ってみよう【CEDEC2018】Scriptable Render Pipelineを使ってみよう
【CEDEC2018】Scriptable Render Pipelineを使ってみようUnity Technologies Japan K.K.
 
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~エピック・ゲームズ・ジャパン Epic Games Japan
 
UE4 アセットロード周り-アセット参照調査-
UE4 アセットロード周り-アセット参照調査-UE4 アセットロード周り-アセット参照調査-
UE4 アセットロード周り-アセット参照調査-com044
 
【Unite Tokyo 2019】〈七つの大罪〉をゲームで!高品質グラフィックを具現化するための技法と開発最適化のご紹介
【Unite Tokyo 2019】〈七つの大罪〉をゲームで!高品質グラフィックを具現化するための技法と開発最適化のご紹介【Unite Tokyo 2019】〈七つの大罪〉をゲームで!高品質グラフィックを具現化するための技法と開発最適化のご紹介
【Unite Tokyo 2019】〈七つの大罪〉をゲームで!高品質グラフィックを具現化するための技法と開発最適化のご紹介UnityTechnologiesJapan002
 
UniTask入門
UniTask入門UniTask入門
UniTask入門torisoup
 
【Unite Tokyo 2018】トゥーンシェーダートークセッション#1『リアルタイムトゥーンシェーダー徹底トーク』
【Unite Tokyo 2018】トゥーンシェーダートークセッション#1『リアルタイムトゥーンシェーダー徹底トーク』【Unite Tokyo 2018】トゥーンシェーダートークセッション#1『リアルタイムトゥーンシェーダー徹底トーク』
【Unite Tokyo 2018】トゥーンシェーダートークセッション#1『リアルタイムトゥーンシェーダー徹底トーク』Unity Technologies Japan K.K.
 
『バランワンダーワールド』でのマルチプラットフォーム対応について UNREAL FEST EXTREME 2021 SUMMER
『バランワンダーワールド』でのマルチプラットフォーム対応について  UNREAL FEST EXTREME 2021 SUMMER『バランワンダーワールド』でのマルチプラットフォーム対応について  UNREAL FEST EXTREME 2021 SUMMER
『バランワンダーワールド』でのマルチプラットフォーム対応について UNREAL FEST EXTREME 2021 SUMMERエピック・ゲームズ・ジャパン Epic Games Japan
 

Tendances (20)

UE4で作成するUIと最適化手法
UE4で作成するUIと最適化手法UE4で作成するUIと最適化手法
UE4で作成するUIと最適化手法
 
【Unity道場 2月】シェーダを書けるプログラマになろう
【Unity道場 2月】シェーダを書けるプログラマになろう【Unity道場 2月】シェーダを書けるプログラマになろう
【Unity道場 2月】シェーダを書けるプログラマになろう
 
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
 
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
 
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
 
メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
 
UE4でTranslucencyやUnlitに影を落としたい!
UE4でTranslucencyやUnlitに影を落としたい!UE4でTranslucencyやUnlitに影を落としたい!
UE4でTranslucencyやUnlitに影を落としたい!
 
【CEDEC2018】Scriptable Render Pipelineを使ってみよう
【CEDEC2018】Scriptable Render Pipelineを使ってみよう【CEDEC2018】Scriptable Render Pipelineを使ってみよう
【CEDEC2018】Scriptable Render Pipelineを使ってみよう
 
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
 
UE4をレンダラとした趣味的スピード背景ルックデブ(UE4 Environment Art Dive)
UE4をレンダラとした趣味的スピード背景ルックデブ(UE4 Environment Art Dive)UE4をレンダラとした趣味的スピード背景ルックデブ(UE4 Environment Art Dive)
UE4をレンダラとした趣味的スピード背景ルックデブ(UE4 Environment Art Dive)
 
UE4 アセットロード周り-アセット参照調査-
UE4 アセットロード周り-アセット参照調査-UE4 アセットロード周り-アセット参照調査-
UE4 アセットロード周り-アセット参照調査-
 
60fpsアクションを実現する秘訣を伝授 基礎編
60fpsアクションを実現する秘訣を伝授 基礎編60fpsアクションを実現する秘訣を伝授 基礎編
60fpsアクションを実現する秘訣を伝授 基礎編
 
【Unite Tokyo 2019】〈七つの大罪〉をゲームで!高品質グラフィックを具現化するための技法と開発最適化のご紹介
【Unite Tokyo 2019】〈七つの大罪〉をゲームで!高品質グラフィックを具現化するための技法と開発最適化のご紹介【Unite Tokyo 2019】〈七つの大罪〉をゲームで!高品質グラフィックを具現化するための技法と開発最適化のご紹介
【Unite Tokyo 2019】〈七つの大罪〉をゲームで!高品質グラフィックを具現化するための技法と開発最適化のご紹介
 
UniTask入門
UniTask入門UniTask入門
UniTask入門
 
【Unite Tokyo 2018】トゥーンシェーダートークセッション#1『リアルタイムトゥーンシェーダー徹底トーク』
【Unite Tokyo 2018】トゥーンシェーダートークセッション#1『リアルタイムトゥーンシェーダー徹底トーク』【Unite Tokyo 2018】トゥーンシェーダートークセッション#1『リアルタイムトゥーンシェーダー徹底トーク』
【Unite Tokyo 2018】トゥーンシェーダートークセッション#1『リアルタイムトゥーンシェーダー徹底トーク』
 
もっとNiagaraを楽しもう!~UE4.25での作例と解説~ (UE4 VFX Art Dive)
もっとNiagaraを楽しもう!~UE4.25での作例と解説~ (UE4 VFX Art Dive)もっとNiagaraを楽しもう!~UE4.25での作例と解説~ (UE4 VFX Art Dive)
もっとNiagaraを楽しもう!~UE4.25での作例と解説~ (UE4 VFX Art Dive)
 
MetaHumanサンプル解体新書 UNREAL FEST EXTREME 2021 SUMMER
MetaHumanサンプル解体新書  UNREAL FEST EXTREME 2021 SUMMERMetaHumanサンプル解体新書  UNREAL FEST EXTREME 2021 SUMMER
MetaHumanサンプル解体新書 UNREAL FEST EXTREME 2021 SUMMER
 
猫でも分かるUMG
猫でも分かるUMG猫でも分かるUMG
猫でも分かるUMG
 
猫でも分かるUE4のポストプロセスを使った演出・絵作り
猫でも分かるUE4のポストプロセスを使った演出・絵作り猫でも分かるUE4のポストプロセスを使った演出・絵作り
猫でも分かるUE4のポストプロセスを使った演出・絵作り
 
『バランワンダーワールド』でのマルチプラットフォーム対応について UNREAL FEST EXTREME 2021 SUMMER
『バランワンダーワールド』でのマルチプラットフォーム対応について  UNREAL FEST EXTREME 2021 SUMMER『バランワンダーワールド』でのマルチプラットフォーム対応について  UNREAL FEST EXTREME 2021 SUMMER
『バランワンダーワールド』でのマルチプラットフォーム対応について UNREAL FEST EXTREME 2021 SUMMER
 

Similaire à 【Unite Tokyo 2018】誘導ミサイル完全マスター

【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計UnityTechnologiesJapan002
 
【Unity道場スペシャル 2017大阪】クォータニオン完全マスター
【Unity道場スペシャル 2017大阪】クォータニオン完全マスター【Unity道場スペシャル 2017大阪】クォータニオン完全マスター
【Unity道場スペシャル 2017大阪】クォータニオン完全マスターUnity Technologies Japan K.K.
 
シェーダだけで世界を創る!three.jsによるレイマーチング
シェーダだけで世界を創る!three.jsによるレイマーチングシェーダだけで世界を創る!three.jsによるレイマーチング
シェーダだけで世界を創る!three.jsによるレイマーチングSho Hosoda
 
181107 06
181107 06181107 06
181107 06openrtm
 
RTミドルウェアによるロボットプログラミング技術 4.ロボットの運動学と制御の基礎(解答)
RTミドルウェアによるロボットプログラミング技術 4.ロボットの運動学と制御の基礎(解答)RTミドルウェアによるロボットプログラミング技術 4.ロボットの運動学と制御の基礎(解答)
RTミドルウェアによるロボットプログラミング技術 4.ロボットの運動学と制御の基礎(解答)Noriaki Ando
 
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGLMedia Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGLAtsushi Tadokoro
 
Real timeimageprocessing
Real timeimageprocessingReal timeimageprocessing
Real timeimageprocessingushiostarfish _
 
文献紹介:TSM: Temporal Shift Module for Efficient Video Understanding
文献紹介:TSM: Temporal Shift Module for Efficient Video Understanding文献紹介:TSM: Temporal Shift Module for Efficient Video Understanding
文献紹介:TSM: Temporal Shift Module for Efficient Video UnderstandingToru Tamaki
 
文献紹介:Token Shift Transformer for Video Classification
文献紹介:Token Shift Transformer for Video Classification文献紹介:Token Shift Transformer for Video Classification
文献紹介:Token Shift Transformer for Video ClassificationToru Tamaki
 
Media Art II 2013 第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズム
Media Art II 2013  第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズムMedia Art II 2013  第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズム
Media Art II 2013 第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズムAtsushi Tadokoro
 
Shadow gunのサンプルから学べるモバイル最適化
Shadow gunのサンプルから学べるモバイル最適化Shadow gunのサンプルから学べるモバイル最適化
Shadow gunのサンプルから学べるモバイル最適化Katsutoshi Makino
 
introductino to persistent homology and topological data analysis
introductino to persistent homology and topological data analysisintroductino to persistent homology and topological data analysis
introductino to persistent homology and topological data analysisTatsuki SHIMIZU
 
ももち浜TECHカフェ:OpenCVとKinectで作ろう壁面タッチパネル
ももち浜TECHカフェ:OpenCVとKinectで作ろう壁面タッチパネルももち浜TECHカフェ:OpenCVとKinectで作ろう壁面タッチパネル
ももち浜TECHカフェ:OpenCVとKinectで作ろう壁面タッチパネルTakashi Yoshinaga
 
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用 2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用 Kenta Oono
 
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門natrium11321
 
機械学習と深層学習の数理
機械学習と深層学習の数理機械学習と深層学習の数理
機械学習と深層学習の数理Ryo Nakamura
 

Similaire à 【Unite Tokyo 2018】誘導ミサイル完全マスター (20)

【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
 
【Unity道場スペシャル 2017大阪】クォータニオン完全マスター
【Unity道場スペシャル 2017大阪】クォータニオン完全マスター【Unity道場スペシャル 2017大阪】クォータニオン完全マスター
【Unity道場スペシャル 2017大阪】クォータニオン完全マスター
 
シェーダだけで世界を創る!three.jsによるレイマーチング
シェーダだけで世界を創る!three.jsによるレイマーチングシェーダだけで世界を創る!three.jsによるレイマーチング
シェーダだけで世界を創る!three.jsによるレイマーチング
 
181107 06
181107 06181107 06
181107 06
 
kasawaki b
kasawaki bkasawaki b
kasawaki b
 
RTミドルウェアによるロボットプログラミング技術 4.ロボットの運動学と制御の基礎(解答)
RTミドルウェアによるロボットプログラミング技術 4.ロボットの運動学と制御の基礎(解答)RTミドルウェアによるロボットプログラミング技術 4.ロボットの運動学と制御の基礎(解答)
RTミドルウェアによるロボットプログラミング技術 4.ロボットの運動学と制御の基礎(解答)
 
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGLMedia Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
 
Real timeimageprocessing
Real timeimageprocessingReal timeimageprocessing
Real timeimageprocessing
 
文献紹介:TSM: Temporal Shift Module for Efficient Video Understanding
文献紹介:TSM: Temporal Shift Module for Efficient Video Understanding文献紹介:TSM: Temporal Shift Module for Efficient Video Understanding
文献紹介:TSM: Temporal Shift Module for Efficient Video Understanding
 
minagawa m
minagawa mminagawa m
minagawa m
 
文献紹介:Token Shift Transformer for Video Classification
文献紹介:Token Shift Transformer for Video Classification文献紹介:Token Shift Transformer for Video Classification
文献紹介:Token Shift Transformer for Video Classification
 
Media Art II 2013 第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズム
Media Art II 2013  第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズムMedia Art II 2013  第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズム
Media Art II 2013 第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズム
 
Shadow gunのサンプルから学べるモバイル最適化
Shadow gunのサンプルから学べるモバイル最適化Shadow gunのサンプルから学べるモバイル最適化
Shadow gunのサンプルから学べるモバイル最適化
 
introductino to persistent homology and topological data analysis
introductino to persistent homology and topological data analysisintroductino to persistent homology and topological data analysis
introductino to persistent homology and topological data analysis
 
ももち浜TECHカフェ:OpenCVとKinectで作ろう壁面タッチパネル
ももち浜TECHカフェ:OpenCVとKinectで作ろう壁面タッチパネルももち浜TECHカフェ:OpenCVとKinectで作ろう壁面タッチパネル
ももち浜TECHカフェ:OpenCVとKinectで作ろう壁面タッチパネル
 
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用 2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
 
Ssaw08 1125
Ssaw08 1125Ssaw08 1125
Ssaw08 1125
 
Coqチュートリアル
CoqチュートリアルCoqチュートリアル
Coqチュートリアル
 
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
 
機械学習と深層学習の数理
機械学習と深層学習の数理機械学習と深層学習の数理
機械学習と深層学習の数理
 

Plus de Unity Technologies Japan K.K.

建築革命、更に更に進化!便利さ向上【Unity Reflect ver 3.0 】
建築革命、更に更に進化!便利さ向上【Unity Reflect ver 3.0 】建築革命、更に更に進化!便利さ向上【Unity Reflect ver 3.0 】
建築革命、更に更に進化!便利さ向上【Unity Reflect ver 3.0 】Unity Technologies Japan K.K.
 
UnityのクラッシュをBacktraceでデバッグしよう!
UnityのクラッシュをBacktraceでデバッグしよう!UnityのクラッシュをBacktraceでデバッグしよう!
UnityのクラッシュをBacktraceでデバッグしよう!Unity Technologies Japan K.K.
 
Unityで始めるバーチャルプロダクション
Unityで始めるバーチャルプロダクションUnityで始めるバーチャルプロダクション
Unityで始めるバーチャルプロダクションUnity Technologies Japan K.K.
 
ビジュアルスクリプティング (旧:Bolt) で始めるUnity入門3日目 ゲームをカスタマイズしよう
ビジュアルスクリプティング (旧:Bolt) で始めるUnity入門3日目 ゲームをカスタマイズしようビジュアルスクリプティング (旧:Bolt) で始めるUnity入門3日目 ゲームをカスタマイズしよう
ビジュアルスクリプティング (旧:Bolt) で始めるUnity入門3日目 ゲームをカスタマイズしようUnity Technologies Japan K.K.
 
ビジュアルスクリプティングで始めるUnity入門2日目 ゴールとスコアの仕組み - Unityステーション
ビジュアルスクリプティングで始めるUnity入門2日目 ゴールとスコアの仕組み - Unityステーションビジュアルスクリプティングで始めるUnity入門2日目 ゴールとスコアの仕組み - Unityステーション
ビジュアルスクリプティングで始めるUnity入門2日目 ゴールとスコアの仕組み - UnityステーションUnity Technologies Japan K.K.
 
ビジュアルスクリプティングで始めるUnity入門1日目 プレイヤーを動かそう
ビジュアルスクリプティングで始めるUnity入門1日目 プレイヤーを動かそうビジュアルスクリプティングで始めるUnity入門1日目 プレイヤーを動かそう
ビジュアルスクリプティングで始めるUnity入門1日目 プレイヤーを動かそうUnity Technologies Japan K.K.
 
PlasticSCMの活用テクニックをハンズオンで一緒に学ぼう!
PlasticSCMの活用テクニックをハンズオンで一緒に学ぼう!PlasticSCMの活用テクニックをハンズオンで一緒に学ぼう!
PlasticSCMの活用テクニックをハンズオンで一緒に学ぼう!Unity Technologies Japan K.K.
 
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】Unity Technologies Japan K.K.
 
Unity教える先生方注目!ティーチャートレーニングデイを体験しよう
Unity教える先生方注目!ティーチャートレーニングデイを体験しようUnity教える先生方注目!ティーチャートレーニングデイを体験しよう
Unity教える先生方注目!ティーチャートレーニングデイを体験しようUnity Technologies Japan K.K.
 
「原神」におけるコンソールプラットフォーム開発
「原神」におけるコンソールプラットフォーム開発「原神」におけるコンソールプラットフォーム開発
「原神」におけるコンソールプラットフォーム開発Unity Technologies Japan K.K.
 
FANTASIANの明日使えない特殊テクニック教えます
FANTASIANの明日使えない特殊テクニック教えますFANTASIANの明日使えない特殊テクニック教えます
FANTASIANの明日使えない特殊テクニック教えますUnity Technologies Japan K.K.
 
インディーゲーム開発の現状と未来 2021
インディーゲーム開発の現状と未来 2021インディーゲーム開発の現状と未来 2021
インディーゲーム開発の現状と未来 2021Unity Technologies Japan K.K.
 
建築革命、更に進化!デジタルツイン基盤の真打ち登場【概要編 Unity Reflect ver 2.1 】
建築革命、更に進化!デジタルツイン基盤の真打ち登場【概要編 Unity Reflect ver 2.1 】建築革命、更に進化!デジタルツイン基盤の真打ち登場【概要編 Unity Reflect ver 2.1 】
建築革命、更に進化!デジタルツイン基盤の真打ち登場【概要編 Unity Reflect ver 2.1 】Unity Technologies Japan K.K.
 
Burstを使ってSHA-256のハッシュ計算を高速に行う話
Burstを使ってSHA-256のハッシュ計算を高速に行う話Burstを使ってSHA-256のハッシュ計算を高速に行う話
Burstを使ってSHA-256のハッシュ計算を高速に行う話Unity Technologies Japan K.K.
 
Cinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作るCinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作るUnity Technologies Japan K.K.
 
Unityティーチャートレーニングデイ -認定プログラマー編-
Unityティーチャートレーニングデイ -認定プログラマー編-Unityティーチャートレーニングデイ -認定プログラマー編-
Unityティーチャートレーニングデイ -認定プログラマー編-Unity Technologies Japan K.K.
 
Unityティーチャートレーニングデイ -認定3Dアーティスト編-
Unityティーチャートレーニングデイ -認定3Dアーティスト編-Unityティーチャートレーニングデイ -認定3Dアーティスト編-
Unityティーチャートレーニングデイ -認定3Dアーティスト編-Unity Technologies Japan K.K.
 
Unityティーチャートレーニングデイ -認定アソシエイト編-
Unityティーチャートレーニングデイ -認定アソシエイト編-Unityティーチャートレーニングデイ -認定アソシエイト編-
Unityティーチャートレーニングデイ -認定アソシエイト編-Unity Technologies Japan K.K.
 

Plus de Unity Technologies Japan K.K. (20)

建築革命、更に更に進化!便利さ向上【Unity Reflect ver 3.0 】
建築革命、更に更に進化!便利さ向上【Unity Reflect ver 3.0 】建築革命、更に更に進化!便利さ向上【Unity Reflect ver 3.0 】
建築革命、更に更に進化!便利さ向上【Unity Reflect ver 3.0 】
 
UnityのクラッシュをBacktraceでデバッグしよう!
UnityのクラッシュをBacktraceでデバッグしよう!UnityのクラッシュをBacktraceでデバッグしよう!
UnityのクラッシュをBacktraceでデバッグしよう!
 
Unityで始めるバーチャルプロダクション
Unityで始めるバーチャルプロダクションUnityで始めるバーチャルプロダクション
Unityで始めるバーチャルプロダクション
 
ビジュアルスクリプティング (旧:Bolt) で始めるUnity入門3日目 ゲームをカスタマイズしよう
ビジュアルスクリプティング (旧:Bolt) で始めるUnity入門3日目 ゲームをカスタマイズしようビジュアルスクリプティング (旧:Bolt) で始めるUnity入門3日目 ゲームをカスタマイズしよう
ビジュアルスクリプティング (旧:Bolt) で始めるUnity入門3日目 ゲームをカスタマイズしよう
 
ビジュアルスクリプティングで始めるUnity入門2日目 ゴールとスコアの仕組み - Unityステーション
ビジュアルスクリプティングで始めるUnity入門2日目 ゴールとスコアの仕組み - Unityステーションビジュアルスクリプティングで始めるUnity入門2日目 ゴールとスコアの仕組み - Unityステーション
ビジュアルスクリプティングで始めるUnity入門2日目 ゴールとスコアの仕組み - Unityステーション
 
ビジュアルスクリプティングで始めるUnity入門1日目 プレイヤーを動かそう
ビジュアルスクリプティングで始めるUnity入門1日目 プレイヤーを動かそうビジュアルスクリプティングで始めるUnity入門1日目 プレイヤーを動かそう
ビジュアルスクリプティングで始めるUnity入門1日目 プレイヤーを動かそう
 
PlasticSCMの活用テクニックをハンズオンで一緒に学ぼう!
PlasticSCMの活用テクニックをハンズオンで一緒に学ぼう!PlasticSCMの活用テクニックをハンズオンで一緒に学ぼう!
PlasticSCMの活用テクニックをハンズオンで一緒に学ぼう!
 
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
 
Unity教える先生方注目!ティーチャートレーニングデイを体験しよう
Unity教える先生方注目!ティーチャートレーニングデイを体験しようUnity教える先生方注目!ティーチャートレーニングデイを体験しよう
Unity教える先生方注目!ティーチャートレーニングデイを体験しよう
 
「原神」におけるコンソールプラットフォーム開発
「原神」におけるコンソールプラットフォーム開発「原神」におけるコンソールプラットフォーム開発
「原神」におけるコンソールプラットフォーム開発
 
FANTASIANの明日使えない特殊テクニック教えます
FANTASIANの明日使えない特殊テクニック教えますFANTASIANの明日使えない特殊テクニック教えます
FANTASIANの明日使えない特殊テクニック教えます
 
インディーゲーム開発の現状と未来 2021
インディーゲーム開発の現状と未来 2021インディーゲーム開発の現状と未来 2021
インディーゲーム開発の現状と未来 2021
 
建築革命、更に進化!デジタルツイン基盤の真打ち登場【概要編 Unity Reflect ver 2.1 】
建築革命、更に進化!デジタルツイン基盤の真打ち登場【概要編 Unity Reflect ver 2.1 】建築革命、更に進化!デジタルツイン基盤の真打ち登場【概要編 Unity Reflect ver 2.1 】
建築革命、更に進化!デジタルツイン基盤の真打ち登場【概要編 Unity Reflect ver 2.1 】
 
Burstを使ってSHA-256のハッシュ計算を高速に行う話
Burstを使ってSHA-256のハッシュ計算を高速に行う話Burstを使ってSHA-256のハッシュ計算を高速に行う話
Burstを使ってSHA-256のハッシュ計算を高速に行う話
 
Cinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作るCinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作る
 
徹底解説 Unity Reflect【開発編 ver2.0】
徹底解説 Unity Reflect【開発編 ver2.0】徹底解説 Unity Reflect【開発編 ver2.0】
徹底解説 Unity Reflect【開発編 ver2.0】
 
徹底解説 Unity Reflect【概要編 ver2.0】
徹底解説 Unity Reflect【概要編 ver2.0】徹底解説 Unity Reflect【概要編 ver2.0】
徹底解説 Unity Reflect【概要編 ver2.0】
 
Unityティーチャートレーニングデイ -認定プログラマー編-
Unityティーチャートレーニングデイ -認定プログラマー編-Unityティーチャートレーニングデイ -認定プログラマー編-
Unityティーチャートレーニングデイ -認定プログラマー編-
 
Unityティーチャートレーニングデイ -認定3Dアーティスト編-
Unityティーチャートレーニングデイ -認定3Dアーティスト編-Unityティーチャートレーニングデイ -認定3Dアーティスト編-
Unityティーチャートレーニングデイ -認定3Dアーティスト編-
 
Unityティーチャートレーニングデイ -認定アソシエイト編-
Unityティーチャートレーニングデイ -認定アソシエイト編-Unityティーチャートレーニングデイ -認定アソシエイト編-
Unityティーチャートレーニングデイ -認定アソシエイト編-
 

Dernier

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 

Dernier (9)

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 

【Unite Tokyo 2018】誘導ミサイル完全マスター