Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
GDC2017に関する報告
Search
Fadis
April 18, 2017
Programming
11
3.8k
GDC2017に関する報告
2月末にサンフランシスコで行われたGame Developers Conferenceのセッションの様子を大雑把に解説します
Fadis
April 18, 2017
Tweet
Share
More Decks by Fadis
See All by Fadis
C++でシェーダを書く
fadis
6
4.4k
ライトたくさんReSTIRを実装しよう
fadis
2
1.1k
コンピュータグラフィクスの空
fadis
7
2.3k
NNEFを読めるようになろう
fadis
0
950
低レイヤーから始める GUI
fadis
18
12k
いまどきのVulkan
fadis
14
7.6k
L2 WireGuard
fadis
2
4.4k
Wasserstein逆FM音源
fadis
3
3.6k
HSEとは何か
fadis
15
3.3k
Other Decks in Programming
See All in Programming
良いユニットテストを書こう
mototakatsu
8
2.7k
暇に任せてProxmoxコンソール 作ってみました
karugamo
2
720
競技プログラミングへのお誘い@阪大BOOSTセミナー
kotamanegi
0
360
情報漏洩させないための設計
kubotak
3
310
StarlingMonkeyを触ってみた話 - 2024冬
syumai
3
270
毎日13時間もかかるバッチ処理をたった3日で60%短縮するためにやったこと
sho_ssk_
1
150
Stackless и stackful? Корутины и асинхронность в Go
lamodatech
0
820
テスト自動化失敗から再挑戦しチームにオーナーシップを委譲した話/STAC2024 macho
ma_cho29
1
1.3k
LLM Supervised Fine-tuningの理論と実践
datanalyticslabo
7
1.3k
これが俺の”自分戦略” プロセスを楽しんでいこう! - Developers CAREER Boost 2024
niftycorp
PRO
0
190
Amazon S3 NYJavaSIG 2024-12-12
sullis
0
100
Semantic Kernelのネイティブプラグインで知識拡張をしてみる
tomokusaba
0
180
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.4k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
How To Stay Up To Date on Web Technology
chriscoyier
789
250k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
810
Code Review Best Practice
trishagee
65
17k
The Cost Of JavaScript in 2023
addyosmani
45
7k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Optimizing for Happiness
mojombo
376
70k
YesSQL, Process and Tooling at Scale
rocio
169
14k
Transcript
GDC2017ʹؔ͢Δใࠂ NAOMASA MATSUBAYASHI
DirectX12 And (how to avoid) Death by a Thousand Cuts
͜ͷηογϣϯͷൃදऀ Jurjen Katsman (Nixxes) GDC VaultͷURL http://www.gdcvault.com/play/1024384/Advanced-Graphics- Tech-How-to
%JSFDU9͍͠
ΞʔϦʔΞμϓλʔͷ໋॓ Α͘(16͕ϋϯά͢Δ͕ϩΫͳσόοάखஈ͕ͳ͍ ॳ಄ͷঢ়گ υΩϡϝϯτ͕εΧεΧ υϥΠόͷ࣭ʜ Ͳͷ(16ϕϯμʔͱిΛ͢Δࣄʹͳͬͨ σόοάϨΠϠ͕࣌ʑӕΛͭ͘ ࠷ۙ͏গ͠Ϛγʹͳ͍ͬͯΔ͔͠Εͳ͍
ύΠϓϥΠϯࣄલʹ࡞Ζ͏ ೖྗετϦʔϜΛมߋ γΣʔμΛมߋ ঢ়ଶΛมߋ υϥΠό (16 ඳը ύΠϓϥΠϯΛੜ ࣮ߦ ύΠϓϥΠϯͷมߋେ͖ͳΦʔόʔϔου
ࠓ·Ͱ ύΠϓϥΠϯΓସ͑ ΦϑϥΠϯ ϨϯμϦϯά࣌
ύΠϓϥΠϯࣄલʹ࡞ͬͯอଘ͓ͯ͜͠͏ ύΠϓϥΠϯΛੜ ύΠϓϥΠϯΛอଘ υϥΠό (16 ύΠϓϥΠϯΛϩʔυ ࣮ߦ ͜Ε͔Β ඳը ύΠϓϥΠϯΓସ͑
ύΠϓϥΠϯΓସ͑ ύΠϓϥΠϯࣄલʹ࡞Ζ͏ ΦϑϥΠϯ ϨϯμϦϯά࣌
ίετ͕ϋʔυΣΞʹΑͬͯେ͖͘ҟͳΔ όϦΞͷίετ͕ߴ͍ϋʔυΣΞͰ ੑೳ͕ग़ΔΑ͏ʹ ࠷খͷόϦΞͰࡁΉΑ͏৺͕͚Δඞཁ͕͋Δ όϦΞ ͦͷ࣮ࠩʹഒ ಉ ࣌ؒ 4.$6 ظ
%JSFDU9Ͱ ϝϞϦΛͲͷΑ͏ʹ͏͔Λஅ͢ΔͷυϥΠό ϢʔβϦιʔεΛ࡞Γ͍ͨ࣌ ࡞Γ͍͚ͨͩυϥΠόʹཁٻ͢ΕΑ͔ͬͨ ϦιʔεΛ࡞ υϥΠό (16 ϦιʔεΛ࡞ ϦιʔεΛ࡞ ϝϞϦϒϩοΫΛ֬อ
ϝϞϦཧ
υϥΠό %JSFDU9Ͱ ϝϞϦΛͲͷΑ͏ʹ͏͔Λஅ͢ΔͷϢʔβ Ϧιʔε͝ͱʹ ΞϥΠϯ͞ΕͨϝϞϦϒϩοΫΛ֬อ͢Δͱ ͋ͬͱ͍͏ؒʹϝϞϦΛ͍Δ ϝϞϦϒϩοΫΛ֬อ ϝϞϦϒϩοΫΛ֬อ ϝϞϦϒϩοΫΛ֬อ ϝϞϦཧ
ͭ·Γ͜ΕTCSLͰ NBMMPDࣗͰ࡞Εͱݴ͍ͬͯΔ (16
(16 (16ϝϞϦʹϦιʔε͕ΓΒͳ͍࣌ ԿΛεϫοϓΞτͤ͞Δ͔ΛܾΊΔͷϢʔβ .BLF3FTJEFOU &WJDU ࠓඞཁͳϦιʔεΛ(16ϝϞϦʹ͢ ͙͢ʹඞཁͳ͍ϦιʔεΛγεςϜϝϞϦʹಀ͕͢ ϝϞϦཧ ͨͩ͠&WJDUϦιʔεΛ γεςϜϝϞϦʹಀ͕͢ࣄΛڐՄ͢Δ͚ͩͰ
ͪʹγεςϜϝϞϦʹҠಈͤ͞ΔΘ͚Ͱͳ͍ γεςϜ ϝϞϦ
ίϚϯυϦετ $PNNBOE-JTUͨ͘͞Μ࡞ΕΔ $PNNBOE"MMPDBUPSͨ͘͞Μ࡞͍͚ͬͯͳ͍ εϨουʹ͖ͭݸͷ$PNNBOE"MMPDBUPSΛ࡞ͬͯ ෳͷ$PNNBOE-JTUͰ͍·Θͦ͏
σΟεΫϦϓλώʔϓ %JSFDU9Ͱ σΟεΫϦϓλώʔϓෳ࡞ΕΔࣄʹͳ͍ͬͯΔ ϋʔυΣΞʹ σΟεΫϦϓλώʔϓ͔ͭ͠ͳ͍ ҟͳΔσΟεΫϦϓλώʔϓΛ͏λεΫ ಉ࣌ʹ࣮ߦͰ͖ͳ͍ /7*%*"".%σΟεΫϦϓλώʔϓ શͯͷίϚϯυΩϡʔͰͭʹ͢ΔࣄΛਪ͍ͯ͠Δ
ϚϧνίΞϨϯμϦϯά ෳͷεϨουͰίϚϯυϦετΛ࡞ͬͯ ίϚϯυΩϡʔʹੵΉ͜ͱ͕Ͱ͖Δ ͕ ࠓͷϨϯμϦϯάͰॏཁͳͷ ՄೳͳݶΓίϚϯυΛ·ͱΊͯ $16ͷࣄΛݮΒ͢ࣄͰ͋ΔΛΕ͍͚ͯͳ͍ ίϚϯυϦετͷ࡞͕ෳͷεϨουͰͰ͖ͯ ͦͷҝʹόον͕ࡉΕʹͳΔͱ ݁Ռͱͯ͠ύϑΥʔϚϯεͷԼΛট͘ࣄ͕͋Δ
"TZODDPNQVUF ".%ͷݹ͍ϋʔυΣΞͰ ࣮ߦͨ࣌͠ͷಈ͖͕ո͍͠ ίετͳϑΣϯε͕ͳ͍ ͍ॴͨ͘͞Μ͋Γͦ͏͕ͩ
4-Jͱ͔$SPTT'JSFͱ͔ݺΕ͍ͯͨ ෳͷ(16ͰϨϯμϦϯά͢Δख๏͕ ϕϯμඇґଘͰͰ͖ΔΑ͏ʹͳͬͨ .VMUJ(16 ֤(16ʹผʑͷॲཧΛͤ͞Δ͜ͱ ग़དྷΔࣄʹͳͬͯΔ͚Ͳ͗ͯ͢͠ఘΊͨ
ϚΠΫϩιϑτ%JSFDU9Λਪ͍ͨ͠ (16%JSFDU9Λਪ͍ͨ͠ ։ൃऀ%JSFDU9Λਪ͍ͨ͠ Ϣʔβ%JSFDU9ͷόʔδϣϯͱ͔Ͳ͏Ͱ͍͍ ϢʔβʹΘ͔ΔརΛࣔ͢ඞཁ͕͋Δ ࢢʹग़্͢Ͱͷ՝ ͔͠͠%JSFDU9͕ҖྗΛൃش͢Δͷ ͍͔ͭ͘ͷ͕݅ἧͬͨ߹ʹݶΒΕΔ
ͦ͏Ͱͳ͍ ҙਂ͘ઃܭ͞ΕͨΞϓϦέʔγϣϯ ͔֬ʹ%JSFDU9ΑΓߴ͍ੑೳΛൃشͨ͠ %JSFDU9ͰͲ͏ʹͳΒͳ͍ $16ϘτϧωοΫΛճආͰ͖Δ "TZOD$PNQVUF͕͑Δ ͨͩɺ͍͜ͳ͢ͷ͕͍͠ ͡Ό͋%JSFDU9μϝͳͷ͔͍
Advanced Graphics Tech: Moving to DirectX 12: Lessons Learned ͜ͷηογϣϯͷൃදऀ
Tiago Rodrigues (Ubisoft Montreal) GDC VaultͷURL http://www.gdcvault.com/play/1024386/Advanced-Graphics- Tech-Moving-to
"OWJM/FYU "TTBTTJOT$SFFEγϦʔζͰΘΕ͍ͯΔ ͷඳըΤϯδϯ ैདྷͷϥϯλΠϜΛલఏʹ࡞ΒΕͨ "OWJM/FYUΛ%JSFDU9ʹରԠͤ͞Δ ϝδϟʔόʔδϣϯΞοϓΛߦ͏ࣄʹͳͬͨ
࠷ॳʹߦͬͨࣄ ୯७ͳஔ͖͑ʹΑΔҠ২ ݁Ռ༧௨Γ$16(16ڞʹੑೳ͕མͪͨ ಛʹ(16ଆͷॲཧʹཁ͢Δ͕࣌ؒ %JSFDU9ͱൺֱͯ͠ഒʹͳͬͨ ͜ͷҠ২͔ΒಘΒΕΔใ %JSFDU9ΛͬͨଞͷνʔϜ͔Βͷใ %JSFDU9ʹؔ͢ΔηογϣϯͰฉ͍ͯདྷͨ ΛͱʹੑೳΛऔΓ͢
%JSFDU9͔ͦΕҎલ͔Ͱ ߴϨΠϠʔͷίʔυΛ͚ͨ͘ͳ͍ Ϧιʔε Ϧιʔε Ϧιʔε ύε ύε ύε ύε Ϧιʔε
ࠓ·Ͱ௨ΓඞཁͳύεͱϦιʔεΛྻڍͨ͠Β (16Ͱޮྑ͘ΔίϚϯυϦετ͕ग़དྷͯ΄͍͠ 1SPEVDFS4ZTUFN
શͯͷϨϯμϦϯάύε͕ શͯͷϦιʔεΛඞཁͱ͍ͯ͠ΔΘ͚Ͱͳ͍ Ϧιʔε Ϧιʔε Ϧιʔε ύε ύε ύε ύε Ϧιʔε
ݸʑͷύεʹԿΛಡΈॻ͖͢Δ͔Λ ໌ࣔతʹࢦఆͯ͠Β͏
શͯͷϨϯμϦϯάύε͕ શͯͷϦιʔεΛඞཁͱ͍ͯ͠ΔΘ͚Ͱͳ͍ Ϧιʔε Ϧιʔε Ϧιʔε ύε ύε ύε ύε Ϧιʔε
ύεͷೖग़ྗΛͱʹ Ϧιʔεʹཁٻ͞ΕΔੜଘظؒΛظؒΛٻΊΔ
ಉ࣌ʹΘΕΔࣄ͕ͳ͍ෳͷϦιʔε ಉ͡ϝϞϦʹஔͯ͠ͳ͍ Ϧιʔε Ϧιʔε Ϧιʔε ύε ύε ύε ύε Ϧιʔε
ϦιʔεͱϦιʔεͱϦιʔε ੜଘظ͕ؒॏͳ͍ͬͯͳ͍ͨΊ ಉ͡ϝϞϦΛ͍ճ͢ࣄ͕ग़དྷΔ ෳͷϦιʔεಉ͡ΞυϨεʹͳΔͨΊ ࣝผࢠΛΤϯδϯଆͰৼͬͯ۠ผ͢Δ
$PNQVUF (SBQIJDT ҟͳΔΩϡʔͱͷؒͰσʔλΛड͚Θͨ͢ʹ ಉظΛߦ͏ඞཁ͕͋Δ Ϧιʔε Ϧιʔε ύε ύε ύεͷೖग़ྗͷґଘؔΛͱʹ ඞཁͳՕॴʹࣗಈͰಉظΛڬΉ
ύε ϑ Σ ϯ ε ػ ϑ Σ ϯ ε ػ
$PNQVUF (SBQIJDT ҟͳΔΩϡʔͱͷؒͰσʔλΛड͚Θͨ͢ʹ ಉظΛߦ͏ඞཁ͕͋Δ Ϧιʔε Ϧιʔε ύε ύε ࣗಈͰڬ·ΔಉظͰྑ͍ϖΞϦϯάʹͳΔͱݶΒͳ͍ ύε
ύε ϑ Σ ϯ ε ػ ϑ Σ ϯ ε ػ Ϣʔβ͕ಉظλΠϛϯάΛ໌ࣔͰ͖ΔΑ͏ʹͨ͠ ͜Ε͕͋Δ߹ॏෳ͢Δࣗಈಉظআ͞ΕΔ
ෆඞཁͳόϦΞͷճආ ࣌ؒ 4.$6 ύε ύε ύε ύε Ϧιʔε ॻ͘લʹಡΜͰ͠·ͬͨ %JSFDU9ಛʹԿཁٻ͞Εͳ͍ͱ
લͷύεͷྃΛͨͣʹ ࣍ͷύεΛ࣮ߦͯ͠͠·͏ όϦΞͰ ϦιʔεͷಡΈॻ͖ॱংΛอূ ͰόϦΞػ ϋʔυΣΞʹΑͬͯੌ͍͘
ෆඞཁͳόϦΞͷճආ ύε ύε Ϧιʔε ύε Ϧιʔε ୯७ʹϦιʔε͝ͱʹόϦΞΛுΔͱ ՕॴͰόϦΞΛͨͳ͚ΕͳΒ͍͕ ό Ϧ
Ξ ػ ό Ϧ Ξ ػ
ෆඞཁͳόϦΞͷճආ ύε ύε Ϧιʔε ύε Ϧιʔε 3FTPVSDF#BSSJFSҰʹෳͷόϦΞΛͯΔ όϦΞػͷίετߴ͍͔͠Εͳ͍ͷͰ Ϧιʔεೖग़ྗ͔Β·ͱΊΒΕΔόϦΞΛݟ͚ͭͯ όϦΞػͷճΛ͑Δ
ό Ϧ Ξ ػ
%JSFDU9͔ͦΕҎલ͔Ͱ γΣʔμͷύϥϝʔλͷ͠ํΛม͑ͨ͘ͳ͍ %JSFDU9Ͱ3PPU4JHOBUVSFʹ ·ͱΊͯύϥϝʔλΛ͢ඞཁ͕͋Δ %JSFDU9ͰύϥϝʔλΛ ͭͮͭηοτ͢Δඞཁ͕͋Δ Ͱ͖Ε)-4-྆ํͰ͑ΔΑ͏ʹ͍ͨ͠
Shader Input Group Include Test2; ShaderInputGroup Test<BindTo=DefaultLayout::Frame> { static const
uint testValue = 3; float4 value; Texture2D<float4> tex0; <Default=Black2D> RWTexture2D<float4> uav0; SamplerState sampler; <StaticSampler=PointWrap> SamplerState dynamicSampler; Test2 subType; } ͜Μͳ%4-͔Β$ ͱ)-4-ͷίʔυΛੜ͢Δ %JSFDU9ͳΒ 3PPU4JHOBUVSFͷ࡞ͱΓସ͑ͷҝͷίʔυ %JSFDU9ͳΒ దͳεϩοτΛબΜͰΛηοτ͢Δίʔυ ఆ Ϧιʔε αϯϓϥ ଞͷॴͰఆٛ͞ΕͨSIGΛแͰ͖Δ
Shader Input Group #include “sig/test.h” void GfxTestProducer::CompileParams(GfxDevice& device) { sig::Test
test; test.SetValue(ubiVector4(1.0f,2.0f,3.0f,4.0f)); test.SetTex0(testTexture); test.SetUav0(testUAV); m_CompiledTestParams = test.Compile(device); // … cmdList.SetShaderInputGroup(m_CompiledPassParas); } ੜ͞ΕͨΫϥεͷΠϯελϯεʹରͯ͠ Ληοτ 3PPU4JHOBUVSFΛ࡞ %JSFDU9ͩͬͨΒԿ͠ͳ͍ 4FU(SBQIJDT3PPU4JHOBUVSF %JSFDU9ͩͬͨΒ͜͜ͰͷηοτͱϦιʔεͷόΠϯυ "1*͕ҧͬͯಉ͡Α͏ʹΛηοτͰ͖Δ
Shader Input Group #include “sig/test.hlsl” void main() { uint2 index
= (uint2)g_Test.GetValue().xy; float4 value = testFunc(index, testFunc.GetSubType); g_Test.GetUav0()[index] = value; } float4 testFunc(in int2 index, in Test2 test2) { return test2.GetTex0()[index]; } "1*͕ҧͬͯಉ͡Α͏ʹʹΞΫηεͰ͖Δ
Pipeline State Object "OWJM/FYUͰ ϚςϦΞϧάϥϑͷܨ͗ํ࣍ୈͰ ແͷύΠϓϥΠϯεςʔτ͕ ग़དྷΔՄೳੑ͕͋ͬͨ %JSFDU9ͷ140ͷϞσϧʹ߹ΘͤΔʹ ήʔϜͰΘΕΔ ύΠϓϥΠϯεςʔτͷΛߜΔඞཁ͕͋ͬͨ
࣮ࡍͷήʔϜதͰΘΕ͍ͯΔ ͦΕ΄Ͳଟ͘ͳ͔ͬͨҝ σβΠφʹΑ͘͏ϓϦηοτεςʔτ͔Β ͏ͷΛબͿํࣜʹม͑ͯΒͬͨ
݁Ռ ͜ΕΒͷʹΑΓ%JSFDU9ͱ%JSFDU9Ͱ ߴϨΠϠʔͷίʔυޓΛอͬͨ· %JSFDU9ͰΑΓߴ͍ੑೳΛൃشͰ͖Δ ඳըΤϯδϯ͕ग़དྷ্͕ͬͨ (16%JSFDU9ͱൺͯఔੑೳ্ $16%JSFDU9ͱൺ͔ͯΒఔੑೳ্
DirectX11ͭΑ͍! %JSFDU9ΛͬͯύϑΥʔϚϯε্ ͱ͍͏͚ͩʹண͢Δͱׂʹ߹Θͳ͍ "TZOD$PNQVUF͕͑ΔΑ͏ʹͳΔ Ոఉ༻ήʔϜػʹҠ২͘͢͠ͳΔ 7VMLBOʹରԠ͘͢͠ͳΔ ߟྀʹೖΕΔͱແବͳྗͰͳ͍ (16%JSFDU9ͱൺͯఔੑೳ্ $16%JSFDU9ͱൺ͔ͯΒఔੑೳ্
Async Compute: Deep Dive ͜ͷηογϣϯͷൃදऀ Alex Dunn(NVIDIA), Stephan Hodes(AMD) GDC
VaultͷURL http://www.gdcvault.com/play/1024385/Advanced-Graphics- Tech-Async-Compute
ݹయతͳάϥϑΟοΫϥϯλΠϜ λεΫ λεΫ λεΫ λεΫ λεΫ ࣌ؒ 4.$6 ۙతͳάϥϑΟοΫϥϯλΠϜ ࣌ؒ
4.$6 λεΫ λεΫ λεΫ λεΫ λεΫ 8PSL1BJSJOH
ಉ࣌ʹ࣮ߦ͞ΕΔλεΫಉ࢜Ͱ ܭࢉࢿݯΛୣ͍߹͏͖Ͱͳ͍ (16 4IBEPX3FOEFSJOH σόΠε ϝϞϦ -JHIU$VMMJOH ܭࢉ͕ଟ͍ ॻ͖ࠐΈ͕ଟ͍ ύϑΥʔϚϯεͷ্͕ظͰ͖Δ
Work Pairing
ಉ࣌ʹ࣮ߦ͞ΕΔλεΫಉ࢜Ͱ ܭࢉࢿݯΛୣ͍߹͏͖Ͱͳ͍ (16 (#V⒎FS σόΠε ϝϞϦ 44"0 ॻ͖ࠐΈ͕ଟ͍ ॻ͖ࠐΈ͕ଟ͍ ύϑΥʔϚϯεͷ্͕ظͰ͖ͳ͍
Work Pairing ϝϞϦଳҬ͕ෆ͢Δ
AMD GPUݻ༗ͷҙ 4ͭͷSIMDϓϩηοαʹରͯ͠1ͭͷΩϟογϡ 1ͭͷSIMDϓϩηοα࠷େ10ݸͷWavefrontΛ࣮ߦ WavefrontΛෳ࣮ߦ͢Δ͜ͱͰ ϝϞϦಡΈॻ͖ͷϨΠςϯγΛӅṭ $PNQVUF6OJU 4*.% 4*.% 4*.%
4*.% -Ωϟογϡ 8BWFGSPOU 8BWFGSPOU 8BWFGSPOU ʜ
WavefrontΛ૿͗͢͠Δͱ WavefrontΓସ͑࣌ʹ ඞཁͳσʔλ͕L1Ωϟογϡ͔ΒམͪΔ $PNQVUF6OJU 4*.% 4*.% 4*.% 4*.% -Ωϟογϡ 8BWFGSPOU
8BWFGSPOU 8BWFGSPOU ʜ AMD GPUݻ༗ͷҙ
ΘΕͳ͍ ࣌ؒ 4. άϥϑΟοΫ ܭࢉ Maxwell·Ͱ ࣌ؒ 4. άϥϑΟοΫ NVIDIA
GPUݻ༗ͷҙ ܭࢉ Pascall͔Β
NVIDIA GPUݻ༗ͷҙ (16 σΟεΫϦϓλ ώʔϓ σΟεΫϦϓλ ώʔϓ σΟεΫϦϓλ ώʔϓ σΟεΫϦϓλ
ώʔϓ GPU্ͷ σΟεΫϦϓλώʔϓ1ͭ ೖΕସ͑ʹ લͷλεΫͷྃΛͭඞཁ͕͋Δ API্زͭͰ࡞ΕΔ
NVIDIA GPUݻ༗ͷҙ (16 σΟεΫϦϓλ ϓʔϧ σΟεΫϦϓλ ώʔϓ σΟεΫϦϓλ ώʔϓ σΟεΫϦϓλ
ώʔϓ υϥΠόσΟεΫϦϓλώʔϓΛ ଋͶΔ͜ͱͰΓସ͑Λճආ͢Δ
σΟεΫϦϓλ ϓʔϧ ࡞ͨ͠σΟεΫϦϓλώʔϓͷαΠζ͕ GPU্ʹ༻ҙ͞ΕͨαΠζΛ͑Δͱ ಥવύϑΥʔϚϯε͕Լ͢Δ σΟεΫϦϓλ ώʔϓ (16্ͷ σΟεΫϦϓλώʔϓʹ ΓΒͳ͍
ೖΕସ͑Δ͔͠ͳ͍ ώʔϓ σΟεΫϦϓλ ώʔϓ
ಉظ Fire-and-Forget λεΫ ಉ ࣌ؒ 4.$6 λεΫ λεΫ ϖΞϦϯά͍ͨ͠λεΫͷ։࢝ͷΈಉظΛߦ͏ ظ
ར: ίετ͕͔͔ΔಉظΛ1ճͰࡁ·ͤΒΕΔ
ಉظ Fire-and-Forget ࣌ؒ 4.$6 λεΫ λεΫ2λεΫ1ͱ্ख͘ϖΞϦϯάग़དྷΔ λεΫ2ͱλεΫ3্ख͘ϖΞϦϯάग़དྷͳ͍ λεΫ1ͷ࣮ߦ࣌ؒେ͖͘มಈ͢Δ λεΫ λεΫ
ಉ ظ
ಉظ Fire-and-Forget λεΫ ࣌ؒ 4.$6 λεΫ λεΫ λεΫ1ͷ࣮ߦ࣌ؒʹΑͬͯ λεΫ2ͱλεΫ3͕ ҙਤͤͣಉ࣌ʹ࣮ߦ͞Εͯ͠·͏
ಉ ظ
ಉظ Fire-and-Forget ࣌ؒ 4.$6 λεΫ λεΫ1ͷ࣮ߦ͕࣌ؒظ௨ΓͰ CPUଆ͕ͯ͘͠λεΫ2ͷೖ͕ΕΔͱ ಉ͕͡ى͜Δ ಉ ظ
λεΫ λεΫ Ԇ ܽ: ϖΞϦϯά͕ෆ֬ఆ
ಉظ Handshake ࣌ؒ 4.$6 λεΫ ಉ ظ λεΫ λεΫ ಉ
ظ ϖΞϦϯά͍ͨ͠λεΫͷ ։࢝ͱऴྃͷ྆ํͰಉظΛߦ͏ ར: ϖΞϦϯά͕શʹ༧ଌՄೳ
ಉظ Handshake ࣌ؒ 4.$6 λεΫ ಉ ظ λεΫ λεΫ ಉ
ظ ܽ: ͍͘Β͔ͷඇಉظ࣮ߦͷػձͷࣦ جຊతʹHandshake͕ਪ͞ΕΔ͕ Fire-and-ForgetͰಉظͷݮΛૂ͑Δ߹͋Δ 2छྨͷಉظͷ͍͚͕ඞཁ
ඇಉظ੫ CPU λεΫͷεέδϡʔϦϯά ಉظɺՃͷࡍʹCPUଆͰඞཁʹͳΔॲཧ GPU దͳϖΞϦϯάͷҝͷಉظͷՃ ඇಉظΛ্ख͘ѻ͑ͳ͍ز͔ͭͷΞʔΩςΫνϟ ඇಉظ੫͕ߴ࣮ͭ͘͘Λߦ͏ͱ ඇಉظʹΑΔύϑΥʔϚϯεͷ্Λ ଧͪফͯ͠͠·͏ࣄ͕͋Δ
Conservative Rasterization and Raster Ordered View ͜ͷηογϣϯͷൃදऀ Rahul Sathe(NVIDIA), Evgeny
Makarov(NVIDIA) GDC VaultͷURL http://www.gdcvault.com/play/1024385/Advanced-Graphics- Tech-Async-Compute
ΤΠϦΞε ϐΫηϧͷத৺͕ ϓϦϛςΟϒͷଆʹ͋ͬͨΒ ͜ͷҐஔͰϐΫηϧγΣʔμΛ࣮ߦ
ΤΠϦΞε
Supersampling Anti-Aliasg
Supersampling Anti-Aliasg
Temporal Anti-Aliasg t=0
Temporal Anti-Aliasg t=1
Temporal Anti-Aliasg t=3
Temporal Anti-Aliasg
Conservative Rasterization গ͠ͰϐΫηϧͷதʹؚ·Ε͍ͯͨΒ ϐΫηϧγΣʔμͷରʹ͢Δ
Pull model interpolation ࠓ·Ͱ ͜Ε͔Β ϐΫηϧγΣʔμ͔Βࢦఆͨ͠Ґஔʹ͓͚Δ ଐੑͷิؒ݁ՌΛಘΔ
Temporal Anti-Aliasing δΦϝτϦγΣʔμ ϥελϥΠβ ϐΫηϧγΣʔμ ͜͜ͰʹลͷํఔࣜͷΛॻ͍͓ͯ͘ Conservative Rasterization ϐΫηϧͷϥϯμϜͳҐஔͰ ลͷํఔࣜΛධՁ
ଆͳΒPull model interpolation αϯϓϦϯάΛ ϑϨʔϜຖʹͧͧͤ͞Δ
Conservative Rasterizationͷམͱ݀͠ $MJQQFS ϓϦϛςΟϒ͕Viewportͷ֎ʹΈग़͍ͯ͠Δ߹ ϋʔυΣΞࣗಈతʹϓϦϛςΟϒΛׂ͢Δ ͔͜͜Βը໘֎ ͜͜Ͱׂ
Conservative Rasterizationͷམͱ݀͠ $MJQQFS ϐΫηϧγΣʔμʹ ݩͷԫ৭ͷࡾ֯ܗͷใ͕ૹΒΕͯ͘Δҝ ͷϐΫηϧޡͬͯൣғͱஅ͞ΕΔ
ϐΫηϧγΣʔμʹ ݩͷԫ৭ͷࡾ֯ܗͷใ͕ૹΒΕͯ͘Δҝ ͷϐΫηϧޡͬͯൣғͱஅ͞ΕΔ ׂ͞Εͨଞํͷࡾ֯ܗಉ༷Ͱ͋ΔͨΊ ͍͔ͭ͘ͷϐΫηϧ2ॲཧ͞ΕΔࣄʹͳΔ ࣍ʹઆ໌͢ΔRasterizer Order ViewsΛ Θͳ͍ͱͪΒ͖ͭͷݪҼʹͳΔ
ϐΫηϧγΣʔμ͔Β ϨϯμʔλʔήοτͷҙͷҐஔΛ ॻ͖ࠐΉ͜ͱ͕Ͱ͖Δ Unordered Access View (UAV)
Unordered Access View (UAV) ಉ͡ϐΫηϧʹରͯ͠ෳͷϐΫηϧγΣʔμ͕ ಉ࣌ʹಡΈॻ͖ͨ͠߹ ݁Ռະఆٛ ?
Rasterizer Order Views (ROV) ϓϦϛςΟϒ͕ϥελϥΠβʹૹΒΕͨॱͰ ϐΫηϧ͕ॻ͖ࠐ·ΕΔ͜ͱ͕อূ͞ΕΔ ಉ͡ϐΫηϧΛಡΈॻ͖ͨ͠߹ͷ݁Ռ͕ఆ·Δ ! 1 2
3 4 5
Temporal Super Sampling ग़ྗઌͷϐΫηϧͷҐஔʹԠͯ͡ ॏΈ͖ฏۉΛͱΔࣄͰ ࣮ࡍʹߴղ૾ͰϨϯμϦϯάΛߦΘͣʹ ߴղ૾ͷϨϯμϦϯά݁ՌΛಘΔ
Multi Sample Anti-Aliasg 1ϐΫηϧͷෳͷҐஔͰਂΛαϯϓϦϯά 1ͭͰϓϦϛςΟϒͷଆͳΒ ϐΫηϧγΣʔμΛ࣮ߦ ਂ ৭
Multi Sample Anti-Aliasg ϓϦϛςΟϒͷଆͷαϯϓϦϯάʹ ϐΫηϧγΣʔμͷ݁ՌΛॻ͖ࠐΈ શͯͷαϯϓϦϯάͷ৭ͷ ฏۉΛͦͷϐΫηϧͷ৭ͱ͢Δ
ಉ͡ใΛෳͷαϯϓϦϯάʹॻ͘ͷ ϝϞϦྖҬͱଳҬͷ࿘අ͔ͩΒආ͚͍ͨ ਂαϯϓϦϯάͷ͚ͩه ਂҎ֎ϐΫηϧʹ͖ͭ1ݸ͚ͩه ෳͷϓϦϛςΟϒ͕͜ͷϐΫηϧʹ ॻ͖ࠐΉՄೳੑ͕͋Δ͔ΒROVΛ͏
ෳͷϓϦϛςΟϒ͕ಉ͡ϐΫηϧʹ ใΛॻ͖ग़ͦ͏ͱ͍ͯ͠Δ ϐΫηϧͷத৺Ͱܭࢉͨ͠৭ ͲͪΒͷϓϦϛςΟϒͷ͔ ϐΫηϧͷத৺͕ ͷϓϦϛςΟϒʹؚ·ΕΔͷ͔ ͷϓϦϛςΟϒʹؚ·ΕΔͷ͔ΛΔͨΊʹ ϐΫηϧͷத৺ʹ͓͚Δਂ͕ཉ͍͠
Programmable Sample Location ϐΫηϧͰͷαϯϓϦϯάͷͱҐஔΛ ࣗ༝ʹࢦఆ͢Δࣄ͕Ͱ͖Δ ͜ΕΛͬͯαϯϓϦϯάͷ͏ͪ1͕ͭ ϐΫηϧͷத৺ʹདྷΔΑ͏ʹ͢Δ த৺ͷϐΫηϧͷਂΛͬͯ
ϐΫηϧͷத৺ͰγΣʔσΟϯάΛߦͳͬͯ ϐΫηϧͷத৺ʹ͓͚Δ৭Λܾఆ͢Δ
ϝϞϦྖҬͱଳҬͷઅ MSAAͱԆϨϯμϦϯάͷΈ߹Θͤͷ࣮ݱ ਂ͕͍ۙ৭͕طͷαϯϓϦϯάΛͬͯ ৭͕ະͷαϯϓϦϯάͷ৭Λܾఆ͢Δ
Vulkan Game development on Mobile ͜ͷηογϣϯͷൃදऀ Alen Ladavac(Croteam) GDC VaultͷURL
http://www.gdcvault.com/play/1024361/Vulkan-Game- Development-on-Mobile
Vulkanͷಛ ബ͍υϥΠό ύΠϓϥΠϯεςʔτΦϒδΣΫτ ίϚϯυόοϑΝ తͳϝϞϦͷཧ ϚϧνεϨουରԠ ཁ͢Δʹ%JSFDU9ͱಉछͷ"1*
OpenGL͔ΒVulkanͷҠ২ γΣʔμͷ։ൃʹ(-4-͕͑Δ 140ͱσΟεΫϦϓλͷΩϟογϡΛ࣮ͯ͠ CJOEΛΤϛϡϨʔτ ϝϞϦ֬อͱϦιʔεͷసૹΛॻ͖͢ ಉظʹόϦΞΛ͏ ͜ͷΑ͏ͳػցతͳมͰ ظؒͰҠ২Ͱ͖Δ
͖ͬ͞ DirectX12Ͱੑೳ͕ग़ΔΑ͏ʹҠߦ͢Δͷ ࢮ͵΄Ͳਏ͍ͱ͍͏͕ͩͬͨ
OpenGLͷੑೳ͕ͲͷڥͰ҆ఆͯ͠ࠅ͍ҝ ͦΕͱൺΔͱྑ͍ੑೳ͕ग़Δ ੑೳ͕ग़ΔΑ͏ʹࣗྗͰॻ͘ࣄ͕Ͱ͖Δ ಛʹGLES͔͠બࢶ͕ͳ͔ͬͨAndroidͰ ͜ΜͳࡶͳҠ২Ͱ େ͖ͳύϑΥʔϚϯεͷ্͕ظͰ͖Δ OpenGL VulkanDirectX શͯnvidiaυϥΠό 7VMLBO(BNF%FWFMPQNFOUPO
.PCJMF5BMPT ϖʔδͷάϥϑ IUUQTXXXLISPOPTPSH EFWFMPQFSTMJCSBSZHED
DirectX11GLESͱൺΔͱ υϥΠόʹόά͕ଟ͍ AndroidͰPCΑΓυϥΠόͷ ߋ৽͕͘͠ߋ৽ͷఏڙ͍ࣄ͕ ͜ͷΛΑΓհʹ͍ͯ͠Δ
Validation Layers͕࣌ʑ ਖ਼͍͠ͱ͜ΖͰจ۟Λݴ͖ͬͯͨΓ ਖ਼͘͠ͳ͍ͱ͜ΖͰԿݴΘͳ͔ͬͨΓ͢Δ ͦΕͰԿνΣοΫ͠ͳ͍ΑΓ ͣͬͱϚγ͔ͩΒValidation LayersΛ͓͏
Vulkanා͘ͳ͍ AndroidͰطʹGLESͱൺֱͯ͠ ΑΓศརͰੑೳͷྑ͍APIʹͳΓͭͭ͋Δ “ͨͩ”υϥΠόͷमਖ਼͕ඞཁͳ͚ͩͩ
ͲΜͳ࣌VulkanΛࢼ͖͔͢ Ͱ͖Δ͚ͩύϑΥʔϚϯε͕ඞཁͰ ϘτϧωοΫ͕CPUͰ ࣮͕ͬͱෳࡶʹͳͬͯେৎͳ࣌
Vulkan Multipass mobile deferred done right ͜ͷηογϣϯͷൃදऀ Hans-Kristian Arntzen(ARM) GDC
VaultͷURL http://www.gdcvault.com/play/1024361/Vulkan-Game- Development-on-Mobile
ԆϨϯμϦϯά ύε ϨϯμʔόοϑΝʹ ܗঢ়ʹؔ͢ΔใΛॻ͘ ύε ύεͷ݁ՌΛͬͯ γΣʔσΟϯά͢Δ (όοϑΝ
λΠϧϕʔεΞʔΩςΫνϟ ͭͷλΠϧΛܭࢉ͢ΔؒͷҰ࣌తͳͷಡΈॻ͖ (16ʹଂ͞Εͨ43".্Ͱߦ͏ άϩʔόϧϝϞϦͷΞΫηε͕͑ΒΕΔͨΊ ͳόεʹͭͳ͕ͬͨϝΠϯϝϞϦΛ73".ͱͯ͠͏ ϞόΠϧ(16ͰΑ͘༻͍ΒΕΔ ϑϨʔϜόοϑΝΛ λΠϧʹׂͯ͠ϨϯμϦϯάΛߦ͏
λΠϧϕʔεͱ ԆϨϯμϦϯάͷ૬ੑ͕ѱ͍ (όοϑΝશମ͕ ͳϝϞϦʹॻ͖ࠐ·ΕΔ ͙͢ʹ(όοϑΝશମ͕ ͳϝϞϦ͔ΒಡΈࠐ·ΕΔ (όοϑΝ OpenGL ESͰఘΊΔ͔͠ͳ͔ͬͨ
VulkanͰෳͷύεΛଋͶΔ͜ͱ͕Ͱ͖Δ (όοϑΝ ϥΠςΟϯά ϙετϓϩηε $16 %SBX %SBX %SBX OpenGL (όοϑΝ
ϥΠςΟϯά ϙετϓϩηε $16 %SBX Vulkan
(όοϑΝ ϥΠςΟϯά ϙετϓϩηε $16 %SBX Vulkan VulkanͰલͷύεͷใ͕Ͳ͜·ͰἧͬͨΒ ࣍ͷύεΛ࣮ߦͯ͠ྑ͍͔બͰ͖Δ 7,@%&1&/%&/$:@#:@3&(*0/@#*5 ͜Ε͕WL$NE1JQFMJOF#BSSJFSͷ
EFQFOEFODZ'MBHTʹઃఆ͞Ε͍ͯΔͱ લͷύεͷରԠ͢ΔϐΫηϧͷϨϯμϦϯά͕ྃͨ͠Β ࣍ͷύεΛ࣮ߦͯ͠ྑ͍͜ͱʹͳΔ
7,@%&1&/%&/$:@#:@3&(*0/@#*5 υϥΠόҎԼͷΑ͏ʹ࣮ߦͯ͠ྑ͍͜ͱΛ Δ͜ͱ͕Ͱ͖Δ (όοϑΝ ϥΠςΟϯά ϙετϓϩηε λΠϧͷ(όοϑΝ 43".ʹΔҝଳҬΛ࿘අ͠ͳ͍ (όοϑΝ ϥΠςΟϯά
ϙετϓϩηε (όοϑΝ ϥΠςΟϯά ϙετϓϩηε ʜ ॱ൪ʹ࣮ߦ λΠϧ λΠϧ λΠϧ
Samsung ExynosͰ 30%ͷϑϨʔϜϨʔτͷ্ͱ 80%ͷόϯυΣΠτͷվળ
Cinematic Depth of Field ͜ͷηογϣϯͷൃදऀ Karl Hillesland(AMD) GDC VaultͷURL http://www.gdcvault.com/play/1024387/Advanced-Graphics-
Tech-Cinematic-Depth
ඃࣸքਂ ίϯϐϡʔλάϥϑΟΫεͰ ΧϝϥϐϯϗʔϧΧϝϥͱ͢Δͷ͕Ұൠత͕ͩ
ඃࣸքਂ ଟ͘ͷΧϝϥͷϨϯζେ͖͞Λ͓࣋ͬͯΓ ݶΒΕͨਂͷൣғʹ͔͠ϑΥʔΧε͕߹Θͳ͍ Gযڑ "։ޱܘ $ϫʔϧυۭؒͰͷ ࡨཚԁ DεΫϦʔϯۭؒͰͷ ࡨཚԁ
ඃࣸքਂΛදݱ͢Δ2ͭͷํ๏ Gather Scatter
Gather ֤ϐΫηϧʹ͍ͭͯ ਂ͔ΒࡨཚԁΛٻΊͯ ͦͷൣғ͔ΒαϯϓϦϯάΛߦ͏ ར: ؆୯ʹ࣮Ͱ͖Δ Scatterͱൺͯॻ͖ग़͕͠গͳ͍
Gather ͜ͷ෦ͷ৭Λ ܾఆ͢Δҝʹ ͜ͷลΓͷ৭͕ ඞཁ͕ͩ ϐϯϗʔϧͰ खલͷମʹःΒΕͯݟ͑ͳ͍ҝ ϑϨʔϜόοϑΝʹใ͕͍ͬͯͳ͍ ܽ: ڥք෦ʹΞʔςΟϑΝΫτ͕ग़Δ
Scatter ϐΫηϧͷ৭͕ܾఆͨ࣌͠Ͱ ਂ͔ΒࡨཚԁΛٻΊͯ ࡨཚԁͷଆʹͳΔશͯͷϐΫηϧʹ ৭Λॻ͖ग़͢ ར: ϐϯϗʔϧͰϑϨʔϜόοϑΝʹඳ͘ͱ ӅΕͯ͠·͏Ґஔͷ৭ΛөͰ͖Δ
Scatter ܽ: ୯७ʹ࣮͢Δͱॻ͖ग़͕͠େมͳࣄʹͳΔ ҰൠʹGatherΑΓ࣮͕ෳࡶʹͳΔ ೖྗ ग़ྗ
Summed Area Table " ϑϨʔϜόοϑΝͷࠨ্͔Β ҙͷ"·ͰͷྖҬͷͷ૯Λ "ʹ͓͚Δ4VNNFE"SFB5BCMFͷͱ͢Δ
Summed Area Table " ཉ͍͠ൣғ "#$%Ͱғ·ΕۣͨܗྖҬͷ૯͕ཉ͍͠߹ # $ % ཉ͍͠ൣғͷ૯
4"5 " 4"5 # 4"5 % 4"5 $ ҙͷۣܗྖҬͷ૯Λͷ͔ΒಘΒΕΔ
Summed Area Table ಘΒΕΔͷۣܗྖҬͷੵ (BUIFSͰͳ͍ͱ͑ͳ͍ Πέͯͳ͍ Πέͯͳ͍
Β·͘ൣғ Fast Filter Spreading " # $ % "#$%Ͱғ·ΕͨൣғʹOΛΒࢃ͖͍ͨ "ͱ$ʹOΛॻ͖ࠐΜͰ#ͱ%ʹOΛॻ͖ࠐΉ
ੵ͢ΔͱO͕"#$%ͷൣғʹՃࢉ͞ΕΔ
Fast Filter Spreading ͜Μͳ෩ʹΛஔͯ͠֊ੵ͢Δͱ όʔτϨοτϑΟϧλΛ࡞ΕΔ ۣܗΑΓߴ࣭ͳ݁Ռ͕ಘΒΕΔ Β·͘ൣғ
Advanced Particle Simulation in Compute ͜ͷηογϣϯͷൃදऀ Richard Tonge(NVIDIA), Hammad Mazhar(NVIDIA)
GDC VaultͷURL http://www.gdcvault.com/play/1024387/Advanced-Graphics- Tech-Cinematic-Depth
ཻࢠ๏γϛϡϨʔγϣϯ ߶ମੑମɺ࿈ଓମΛ Ұఆͷ࣭ྔΛཻ࣋ͬͨࢠͷू·ΓʹࢄԽ ੑମͷԠྗྲྀମͷѹྗΛ ཻۙࢠͱͷ૬ޓ࡞༻ͱͯ͠දݱ
εΫϦʔϯۭؒڥք݅ GόοϑΝΛڥք݅ͱͯ͠ γϛϡϨʔγϣϯΛߦ͏ ར: GόοϑΝ1ϑϨʔϜຖʹੜ͞ΕΔҝ ಈతͳγʔϯʹै͢Δͷ͕༰қ ը໘ʹऩ·͍ͬͯͳ͍ͷ͕ܭࢉ͔Βআ֎͞ΕΔ
εΫϦʔϯۭؒڥք݅ ਂ ཻࢠͷ࠲ඪͱରԠ͢ΔҐஔͷZΛൺֱ͠ ޙऀ͕खલͩͬͨΒཻࢠΛԡ͠ग़͢
εΫϦʔϯۭؒڥք݅ ਂ ܽ: ӅΕ͍ͯΔ໘ͱͷিಥΛ ਖ਼͘͠ѻ͏ࣄ͕ग़དྷͳ͍ (όοϑΝʹ ͜ͷ෦ͷڥքͷใ͕ ͍ͬͯͳ͍ҝ ཻࢠͷҠಈΛਖ਼͘͠ःΔࣄ͕ग़དྷͳ͍
BVHʹΑΔڥք݅ ڥքΛߏ͢Δ໘ຖʹ όϯσΟϯάϘϦϡʔϜΛٻΊΔ
BVHʹΑΔڥք݅ όϯσΟϯάϘϦϡʔϜΛ֊Խͯ͠ ཻࢠ͕িಥ͍ͯ͠ΔՄೳੑ͕͋Δ໘Λ ߴʹ୳ͤΔΑ͏ʹ͓ͯ͘͠
BVHʹΑΔڥք݅ όϯσΟϯάϘϦϡʔϜΛ֊Խͯ͠ ཻࢠ͕িಥ͍ͯ͠ΔՄೳੑ͕͋Δ໘Λ ߴʹ୳ͤΔΑ͏ʹ͓ͯ͘͠
BVHʹΑΔڥք݅ ར: GόοϑΝ͔ΒӅΕͯ͠·͏໘ͱͷিಥѻ͑Δ ܽ: BVHΛߏங͢Δඞཁ͕͋Δ όϯσΟϯάϘϦϡʔϜΛ֊Խͯ͠ ཻࢠ͕িಥ͍ͯ͠ΔՄೳੑ͕͋Δ໘Λ ߴʹ୳ͤΔΑ͏ʹ͓ͯ͘͠
BVHʹΑΔڥք݅ ಈతͳγʔϯʹ͑Δ͘Β͍ߴͳ BVHͷߏஙํ๏ͱͯ͠ nvidiaͷHLBVH͕ڍ͛ΒΕΔ IUUQTSFTFBSDIOWJEJBDPNQVCMJDBUJPOIMCWI IJFSBSDIJDBMMCWIDPOTUSVDUJPOSFBMUJNFSBZUSBDJOH
BVHʹΑΔڥք݅ͷҙ ڥք͕ෳࡶͩͱಉ͡ྖҬ͕ ෳͷόϯσΟϯάϘϦϡʔϜʹ ؚ·ΕΔ͜ͱ͕͋Δ ॏෳ͢ΔόϯσΟϯάϘϦϡʔϜ͕͋Δ߹ 1ՕॴͰڥք݅Λຬ͍ͨͯͯ͠ ଞͷڥք݅Λຬͨ͞ͳ͍Մೳੑ͕͋Δ
Position Based Dynamics ཅղ๏ͷཻࢠ๏γϛϡϨʔγϣϯΛ ཧతʹਖ਼͘͠ͳ͍͔͠Εͳ͍͕ తʹ҆ఆʹߦ͑Δख๏ ཻࢠʹ͔͔ΔྗΛٻΊΔ ཻࢠͷΛߋ৽ ཻࢠͷҐஔΛߋ৽ িಥΛղܾͯ͠ҐஔΛमਖ਼
Ґஔʹ߹ΘͤͯΛमਖ਼ ߶ମಉ͕࢜িಥ͍ͯͨ͠Β িಥ͠ͳ͍ͱ͜Ζ·Ͱ͢ ྲྀମ͕ڥքΛ͍͑ͯͨΒ ڥք·Ͱ͢ ྫ ্هͷੑ࣭ͷҝ ίϯϐϡʔλάϥϑΟΫεʹਓؾ
ཻࢠʹ͔͔ΔྗΛٻΊΔʹ ͋Δཻࢠͷۙ͘ʹ͋ΔཻࢠΛ 1εςοϓຖʹ୳͢ඞཁ͕͋Δ Position Based Dynamics ཅղ๏ͷཻࢠ๏γϛϡϨʔγϣϯΛ ཧతʹਖ਼͘͠ͳ͍͔͠Εͳ͍͕ తʹ҆ఆʹߦ͑Δख๏ ཻࢠʹ͔͔ΔྗΛٻΊΔ
ཻࢠͷΛߋ৽ ཻࢠͷҐஔΛߋ৽ িಥΛղܾͯ͠ҐஔΛमਖ਼ Ґஔʹ߹ΘͤͯΛमਖ਼
ۙ୳ࡧ ܭࢉྖҬશମΛ֨ࢠঢ়ʹ۠ͬͯ ཻࢠ͕Ͳͷηϧʹؚ·ΕΔ͔ΛٻΊΔ ִؒrͷ֨ࢠͰݱࡏͷཻࢠΛؚΉηϧͱ ྡ͢ΔηϧΛௐΕ ܘrҎʹ͋Δཻࢠ͕શͯݟ͔ͭΔ S S
ཻۙࢠͱͷܭࢉʹؔ͢Δ2ͭͷઓུ Gather Scatter
Gather 1ͭͷཻࢠΛ1ͭͷεϨουͰܭࢉ ར: ෳͷεςοϓ͔ΒͳΔܭࢉΛ؆୯ʹॻ͚Δ ܽ: Scatterͱൺֱͯ͠γϯϓϧͳ࣮ʹͳΔ ಉ͡ܭࢉΛ2ճߦ͏ࣄʹͳΔ ྲྀମͰओʹ༻͍ΒΕΔ
Scatter 1ͭͷଓΛ1ͭͷεϨουͰܭࢉ ར: ଓ͞ΕཻͨࢠʹՃΘΔྗ͕ରশͳ߹ 1ճͷܭࢉͰ2ͭͷཻࢠʹॻ͖ࠐΈΛߦ͏ࣄ͕ग़དྷΔ ܽ: ݸʑͷଓͷܭࢉ݁Ռͷॻ͖ࠐΈ͕ಉ͡ॴʹ ରͯ͠ߦΘΕΔҝΞτϛοΫԋࢉͰͷॻ͖ࠐΈ͕ඞཁ Ͱओʹ༻͍ΒΕΔ
PBDʹ͓͚Δ߶ମͷѻ͍ ཻࢠͷҐஔΛߋ৽ ΊΓࠐΜͰ͍ΔཻࢠΛ ΊΓࠐΉલͷҐஔ·ͰҠಈ ཻࢠؒͷҐஔؔΛ ߆ଋ݅ͱͯ͠ ཻࢠͷҐஔΛमਖ਼
PBDʹ͓͚Δͷѻ͍ ཻࢠͷҐஔΛߋ৽ ΊΓࠐΜͰ͍ΔཻࢠΛ ΊΓࠐΉલͷҐஔ·ͰҠಈ ཻࢠؒͷڑΛ ߆ଋ݅ͱͯ͠ ཻࢠͷҐஔΛमਖ਼
PBDʹ͓͚Δྲྀମͷѻ͍ ཻࢠͷҐஔΛߋ৽ ΊΓࠐΜͰ͍ΔཻࢠΛ ΊΓࠐΉલͷҐஔ·ͰҠಈ ཻࢠؒͷີΛ ߆ଋ݅ͱͯ͠ ཻࢠͷҐஔΛमਖ਼
Game Physics on the GPU with PhysX 3.4 ͜ͷηογϣϯͷൃදऀ Kier
Storey(NVIDIA) GDC VaultͷURL http://www.gdcvault.com/play/1024345/
PhysX NVIDIAͷཧԋࢉSDK https://developer.nvidia.com/physx-sdk Ұ෦ͷΞϧΰϦζϜGPUΛͬͯ ߴʹܭࢉͰ͖Δ ߶ମ ੑମ ྲྀମ ͷ γϛϡϨʔγϣϯʹରԠ
PhysXͷ߶ମύΠϓϥΠϯ #SPBE1IBTF 1BJS'JMUFSJOH /BSSPX1IBTF *TMBOE(FO 4PMWFS $$% 'FUDI3FTVMU AABBͰߥ͘িಥͦ͠͏ͳϖΞΛ୳͢ িಥͤͨ͘͞ͳ͍ϖΞΛআ֎͢Δ
࣮ࡍʹিಥ͍ͯ͠Δ͔Ͳ͏͔ΛௐΔ Өڹ͠߹͏߶ମΛάϧʔϓԽ͢Δ ࣍ͷεςοϓͰͷঢ়ଶΛٻΊΔ ߴͰҠಈͨ͠߶ମͱিಥͨ͠߶ମΛ୳͢ ݁ՌΛऔΓग़͢
PhysX 3.4ͷ৽ػೳ GPU߶ମ #SPBE1IBTF 1BJS'JMUFSJOH /BSSPX1IBTF *TMBOE(FO 4PMWFS $$% 'FUDI3FTVMU
PhysX 3.4Ͱ Ͱࣔͨ͠෦͕ GPUͰ࣮ߦՄೳʹͳͬͨ
GPUͱCPUͷಛ (16 $16 େ͖ͳ'-014ͱ ϝϞϦόϯυ෯ খ͞ͳ'-014ͱ ϝϞϦόϯυ෯ ݸʑͷ໋ྩͷ࣮ߦ͕͍ গͷϓϩηοαίΞͰ ੑೳΛग़͢
ݸʑͷ໋ྩͷ࣮ߦ͍ ઍͷϓϩηοαίΞͰ ੑೳΛग़͢ ϝϞϦΞΫηεύλʔϯ࣍ୈͰ ࿐ࠎʹੑೳ͕མͪΔ ϝϞϦΞΫηεύλʔϯ͕ ੑೳʹӨڹΛ༩͑ʹ͍͘ ΞϧΰϦζϜઍεϨουͰ εέʔϧ͢Δඞཁ͕͋Δ γʔέϯγϟϧͰ ݁ߏͳΜͱ͔ͳΔ
GPUͰ࣮ߦ͢Δεςʔδ͕ߴʹ ࣮ߦͰ͖Δͱશମͱͯ͠Ͳͷ͘Β͍͘ͳΔ͔ CPU෦͕૬ରతʹϘτϧωοΫʹͳͬͯ 3.5ഒ͘Β͍Ͱ಄ଧͪʹͳΔ
CPUͰ࣮ߦ͢Δεςʔδվྑ 1BJS'JMUFSJOH ΛฒྻͰߦ͑ΔΑ͏ʹͳͬͨ *TMBOE(FO ͷΞϧΰϦζϜͷมߋ ϝϞϦϑοτϓϦϯτͷվળ $16ͷεςʔδͱ(16ͷεςʔδΛಉ࣌ʹ ࣮ߦͰ͖ΔΑ͏ʹύΠϓϥΠϯΛվྑ ΛฒྻͰߦ͏ͨΊͷ 'FUDI3FTVMU
৽͍͠"1*ΛՃ
GPU Narrow Phase ैདྷ͔ΒCPUͰͷ࣮Ͱ༻͍ΒΕ͍ͯͨ PCMʹΑΔিಥఆΛGPU্Ͱߦ͏ ͨͩ͠αϙʔτ͞Ε͍ͯΔͷ ۣܗ ತ໘ ߴ͞ ͷΈ߹Θ͔ͤΒͳΔিಥͷΈ
ͦͷଞͷϓϦϛςΟϒ͕িಥͨ͠߹ CPUଆʹඞཁͳใΛૹͬͯ CPUͰܭࢉΛߦ͏
Mass Splitting ߆ଋ݅ͷղܾʹ ௨ৗΨεβΠσϧ๏͕༻͍ΒΕΔ ΨεβΠσϧ๏ ͦͷ··ͰGPUͰεέʔϧ͠ͳ͍ ϠίϏ๏Λ͏ͱऩଋੑ͕ѱ͍ " # $
Mass Splitting # $ͷͷ࣭ྔ " $ͷͷ࣭ྔ Cͷͷ࣭ྔͷ߶ମ͕ ಉ͡ॴʹ2ͭॏͳ͍ͬͯΔࣄʹͯ͠ AͱͷিಥͱBͱͷিಥΛผͷʹ͢Δ ෮ͷ֤αΠΫϧͰ
શͯͷCͷΛCͷͷฏۉʹ͢Δ େ͖ͳߦྻ͕େྔͷখ͍͞ߦྻʹͳΔ GPUͰฒྻԽͰ͖Δ!
݁Ռ ॎ͕࣠ܭࢉ࣌ؒԣ͕࣠ϑϨʔϜ ੨͕1IZT9Ͱ$16Ͱܭࢉͨ͠߹ ͕1IZT9Ͱ$16Ͱܭࢉͨ͠߹ ΦϨϯδ͕1IZT9͕(16Ͱܭࢉͨ͠߹ (BNF1IZTJDTPOUIF(16XJUI/7*%*"1IZT9 ϖʔδͷਤͱάϥϑ IUUQTEFWFMPQFSOWJEJBDPNHED
glTF Update ͜ͷηογϣϯͷൃදऀ Neil Trevett(NVIDIA) GDC VaultͷURL http://www.gdcvault.com/play/1024346/
glTF JSONܗࣜͷ 3࣍ݩܗঢ়ͷ ϑΥʔϚοτ ϝογϡ ଐੑ ϚςϦΞϧ πϦʔ Ξχϝʔγϣϯ ͳͲΛؚΉ
\ BDDFTTPST\ BDDFTTPS@\ CV⒎FS7JFXCV⒎FS7JFX@ CZUF0⒎TFU CZUF4USJEF DPNQPOFOU5ZQF DPVOU NBY< > NJO< > UZQF4$"-"3 ^ BDDFTTPS@\ CV⒎FS7JFXCV⒎FS7JFX@ CZUF0⒎TFU CZUF4USJEF DPNQPOFOU5ZQF
glTF 2.0 2017य़ϦϦʔε༧ఆ https://github.com/KhronosGroup/glTF/tree/2.0/specification/2.0
όΠφϦglTF͕ඪ४ʹೖͬͨ IFBEFS DPOUFOU CPEZ NBHJDόʔδϣϯDPOUFOUͷ͞ +40/ܗࣜͷHM5' δΦϝτϦΩʔϑϨʔϜεΩϯը૾γΣʔμ ʹ͍ͭͯσʔλΛॻ͘ΘΓʹ CPEZͷதͷͲ͜ʹஔ͍ͯ͋Δ͔ΛࢦఆͰ͖Δ όΠφϦܗࣜͷσʔλ͕
ฒΜͰ͍ΔྖҬ ར: ྻΛখ͘͞هͯ͠ߴʹύʔε ςΫενϟΛglTFͷதʹอଘͰ͖Δ 1.0Ͱ֦ுͰͲͷڥͰ͑ΔͱݶΒͳ͔ͬͨ
ཧϕʔεϨϯμϦϯάʹඞཁͳ ύϥϝʔλͷॻ͖ํ͕ఆΊΒΕͨ baseColorFactor baseColorTexture metallicFactor roughnessFactor metallicRoughnessTexture ”materials”: { ”pbrMetallicRoughness”:
{ … } } ͜͜ʹઃఆͰ͖Δύϥϝʔλ Ξϧϕυ Ξϧϕυ͕ ه͞ΕͨςΫενϟ ࣹ ૈ͞ ࣹͱૈ͕͞ ه͞ΕͨςΫενϟ ར: ҟͳΔιϑτΣΞಉ࢜Ͱ ཧϕʔεϨϯμϦϯάͷใΛड͚͠ग़དྷΔ
WebGL 2.0 ͜ͷηογϣϯͷൃදऀ Brandon Jones (Google), Zhenyao Mo (Google), Kai
Ninomiya (Google) GDC VaultͷURL http://www.gdcvault.com/play/1024346/
WebGL HTML5ͷcanvas্Ͱ OpenGL ESϥΠΫͳAPIʹΑΔ ඳըΛՄೳʹ͢Δ JavaScriptͷAPI ࠓଟ͘ͷWebϒϥβ͕αϙʔτ͍ͯ͠Δ WebGL 1.0OpenGL ES
2.0Λ ϕʔεʹ͍ͯ͠Δ
WebGL 2.0 ·ͩυϥϑτ͚ͩͲ Ұ෦ͷϒϥβͰαϙʔτ͕࢝·͍ͬͯΔ ৽͍͠WebGL
WebGL 2.0ͷ৽ػೳ Float Texture Immutable Texture Instanced Drawing Multiple Render
Target Transform Feedback Multisampled Renderbuffers Uniform Buffers Sampler Object GLSL ES 3.00
Immutable Texture ࡞ޙʹ༰ͷॻ͖͕͑Ͱ͖ͳ͍ςΫενϟ DirectXςΫενϟ͕ޙ͔Βॻ͖͑ΒΕͳ͍ࣄ͕ อূ͞Ε͍ͯΔ߹ΑΓޮతʹ ςΫενϟΛอ࣋͢ΔΈ͕͋Δ WebGLΛDirectXͰ࣮͢Δͱ OpenGLͷϛοϓϚοϓͷࢦఆํ๏ʹରԠ͢Δҝʹ ͜ͷΈͷར༻ΛఘΊΔඞཁ͕͋Δ Immutable
TextureͳΒ͜ͷΈ͕ར༻Ͱ͖Δ
Float Texture 16bit·ͨ32bitͷුಈখͰ Λอ࣋͢ΔςΫενϟΛ࡞ΕΔ WebGLFBOʹରԠ͍ͯ͠ΔͨΊ 0.0͔Β1.0ʹऩ·Βͳ͍ϨϯμϦϯά݁ՌΛ ϑϨʔϜόοϑΝʹॻ͚ΔΑ͏ʹͳΔ
Instanced Drawing 1ճͷdrawίʔϧͰ େྔͷϝογϡΛҟͳΔύϥϝʔλͰඳ͘ ϕδςʔγϣϯͷύϑΥʔϚϯε্
Multiple Render Target gl_FragData[0] = position; gl_FragData[1] = normal; gl_FragData[2]
= albedo; 1ͷϨϯμϦϯάύεͰ ϑϥάϝϯτγΣʔμ͔Βෳͷग़ྗઌʹΛ ॻ͖ࠐΊΔΑ͏ʹͳΔ
Multiple Render Target (όοϑΝ ϥΠςΟϯά Float TextureͱMultiple Render Target͕͑Δ ·ͱͳԆϨϯμϦϯά͕ग़དྷΔ
๏ઢ ࠲ඪ ϚςϦΞϧ*%
Transform Feedback γΣʔμ͚ͩΛ࣮ߦͯ͠ ݁ՌΛόοϑΝΦϒδΣΫτʹॻ͖ग़͢ ύʔςΟΫϧγεςϜͰ ཻࢠͷ࠲ඪΛߋ৽ͨ͠Γ มܗͨ͠ମͷܗঢ়Λ อଘ͓ͯ͘͠ͷʹ͏ γΣʔμ ϥελϥΠβ
ϑϥάϝϯτ γΣʔμ VBO
Multisampled Renderbuffers 1ϐΫηϧʹ͖ͭ ෳͷαϯϓϦϯάΛ ࣋ͬͨϨϯμʔόοϑΝ Multi Sample Anti-Aliasingʹ͏ ॏ৺αϯϓϦϯά͑ΔΑ͏ʹͳͬͨ
Uniform Buffers GPUϝϞϦͷσʔλసૹ ҰൠʹେྔͷσʔλΛ·ͱΊͯૹͬͨํ͕ εϧʔϓοτ͕ग़Δ for( $i = 0; $i
!= 100; $i++ ) { gl.uniform1f( location[ i ], value[ i ] ); } // ͭΒ͍ େྔͷUniformΧλϚϦʹ͠Α͏
Uniform Buffers var index = gl.getUniformBlockIndex(program, 'data'); gl.uniformBlockBinding(prg, index, 0);
var ubo = gl.createBuffer(); gl.bindBuffer(gl.UNIFORM_BUFFER, ubo); gl.bufferData(gl.UNIFORM_BUFFER, data, gl.STATIC_DRAW); gl.bindBufferBase(gl.UNIFORM_BUFFER, 0, ubo); Uniform Buffer ObjectΛ࡞ͬͯ σʔλΛॻ͖ࠐΜͰ γΣʔμͷuniformͱରԠ͚ͮΔ
Sampler Object αϯϓϥʔΦϒδΣΫτ ςΫενϟΦϒδΣΫτ WebGL 1.0 WebGL 2.0 ςΫενϟʹؔ͢Δ ສΛؚΉ
Ͳͷσʔλ͔Β αϯϓϦϯά͢Δ͔ ͲΜͳ෩ʹ αϯϓϦϯά͢Δ͔ αϯϓϦϯάύϥϝʔλΛ ςΫενϟΦϒδΣΫτ͔Β ςΫενϟΦϒδΣΫτ
GLSL ES 3.0 in outΛॻ͚ΔΑ͏ʹͳͬͨ flat smooth centroidิؒͷબ͕Մೳʹ γΣʔμͰςΫενϟಡΊΔΑ͏ʹͳͬͨ ඇਖ਼ํߦྻܕͷՃ
ϑϥάϝϯτͷഁغΛࢦࣄͰ͖ΔΑ͏ʹͳͬͨ ͳͲͳͲ #version 300 es
Accelerating Your VR Games with VR Works ͜ͷηογϣϯͷൃදऀ Cem Cebenoyan(NVIDIA),
Edward Liu(NVIDIA) GDC VaultͷURL http://www.gdcvault.com/play/1024356/
NVIDIA VR Works VR։ൃͷͨΊͷ ༷ʑͳػೳΛఏڙ͢ΔSDK Ϩϯζʹ߹ΘͤͨϨϯμϦϯά ยʹ1ຊGPUΛׂΓͯΔVR SLi PhysXʹΑΔཧγϛϡϨʔγϣϯ OptiXΛԠ༻ͨ͠ԻڹγϛϡϨʔγϣϯ
ͳͲͳͲ
VRͷϨϯμϦϯάԿ͕ҧ͏͔ ϔουηοτͷಈ͖ʹैͯ͠ ߴ͍ϑϨʔϜϨʔτ͔͍ͭϨΠςϯγͰ ඳը͢Δඞཁ͕͋Δ ͜Ε͕ΕΔͱਲ͏ Ұൠʹ'14͘Β͍
VRͷϨϯμϦϯάԿ͕ҧ͏͔ εςϨΦϨϯμϦϯά ࠨӈͷʹӨߦྻ͚͕ͩҧ͏ ϨϯμϦϯά݁ՌΛݟͤΔඞཁ͕͋Δ
VRͷϨϯμϦϯάԿ͕ҧ͏͔ ϨϯζσΟετʔγϣϯ ϨϯζऩࠩΛଧͪফͨ͢Ίʹ ϨϯμϦϯά݁ՌΛ·ͤΔඞཁ͕͋Δ த৺෦ߴղ૾Ͱ पล෦ղ૾Ͱදࣔ͞ΕΔ
VR SLi ࠨ ࠨ ӈ ӈ
ϨΠςϯγ ී௨ͷSLiFPSͷ্ʹد༩͢Δ͕ ϨΠςϯγΛԼ͛Δͱ͍͏Ͱ༗ޮͰͳ͍
VR SLi ࠨ ࠨ ӈ ӈ
ϨΠςϯγ 2ຕͷGPUʹยํͷΛ୲ͤ͞Δ͜ͱͰ ϨΠςϯγΛ͑Δ
VR SLi NVIDIA֦ுͰSLiΛߏ͢ΔͲͷGPUʹ λεΫΛ͛Δ͔ΛબͰ͖Δ ӈࠨؔͳ͘ඞཁͳύε྆ํͰ࣮ߦ ӈࠨݻ༗ͷύεͦΕͧΕͰ࣮ߦ
Multi Resolution Shading ϨϯζऩࠩΛଧͪফͨ͢Ίʹը૾Λ·ͤΔ " # " # पล෦ॖখ͞ΕΔͨΊ 1ຕͷϨϯμϦϯά݁Ռ͔ΒΜͩը૾ΛಘΔͱ
पล෦ͷଟ͘ͷϐΫηϧ͕ແବʹͳΔ (·ͨத৺෦ͷղ૾͕Γͳ͘ͳΔ) #ͱൺͯ "ͷ໘ੵ͕খ͘͞ ͳ͍ͬͯΔ
Multi Resolution Shading ۙతͳάϥϑΟοΫAPIͰ 1ύεͷδΦϝτϦγΣʔμͷதͰ ෳͷϏϡʔϙʔτʹΛ͢͜ͱ͕Ͱ͖Δ " # " #
पล෦ͱத৺෦ͷϏϡʔϙʔτΛผʹͯ͠ ҟͳΔղ૾ͰϨϯμϦϯά
Lens Matched Shading " # " # ΫϦοϓۭؒͷwΛxyʹΑͬͯมԽͤ͞ΔࣄͰ ͷΑ͏ͳඇۣܗͷϏϡʔϙʔτΛಘΔ ͜ΕΛ4ຕܨ͗߹Θͤͯ
पล෦ʹۙͮ͘΄Ͳղ૾͕Լ͕ΔΑ͏ʹ͢Δ w’=Ax+By+w
Multi Resolution ShadingΑΓ Lens Matched Shadingͷํ͕ ΑΓదͳղ૾ͰϨϯμϦϯά͕ग़དྷΔ͕ ϫʔϧυ࠲ඪܥͱεΫϦʔϯ࠲ඪܥͷ͕ؔ ઢܗͰͳ͘ͳΔͨΊ εΫϦʔϯۭؒΞϧΰϦζϜʹ͕ඞཁ
Rendering Low LOD Cars at Lightning Speed in 'Forza Motorsport
6' ͜ͷηογϣϯͷൃදऀ Gustavo Nunes(Microsoft) GDC VaultͷURL http://www.gdcvault.com/play/1023973/Rendering-Low-LOD- Cars-at
Forza Motorsport 6ͷLoD6 ϋʔυForza Motorsports 5ͱಉ͡XBOX ONE ಉ࣌ʹΔंͷΛ16͔Β24ʹ૿͢ ͜ͷܾఆ͕ͳ͞Εͨͷ։ൃͷऴ൫Ͱ 100Ҏ্͔ΒͳΔंͷϞσϧΛ
࡞Γ͢ࣄͰ͖ͳ͔ͬͨ Forzaʹ0͔Β5ͷ6ஈ֊ͷLoD͕͋ͬͨ ߋʹߴʹඳ͚Δ7ஈ֊Λ৽ઃ ԕ͘ͷंΛߋʹࡶʹඳ͍ͯඳըΛؒʹ߹ΘͤΔ
Forzaʹ0͔Β5ͷ6ஈ֊ͷLoD͕͋ͬͨ ߋʹߴʹඳ͚Δ7ஈ֊Λ৽ઃ ԕ͘ͷंΛߋʹࡶʹඳ͍ͯඳըΛؒʹ߹ΘͤΔ LoD5ͰंΛ1ඳ͘ͷʹ300µs LoD5Ͱඳ͘ंΛ1ݮΒۭ͍ͯͨ͠300µsͰ 9ඳ͘ํ๏Λߟ͑Δ 1ʹ͑Δ࣌ؒ33µs 1ճͷDrawͰंΛඳ͖͖Δඞཁ͕͋Δ
Topology Mapping Buffer(T-buffer) 1ͷंΛߏ͢ΔશͯͷϝογϡΛશ෦݁߹ ͷ߹ܭΛ1000ҎԼ·ͰݮΒ͢ ͜ͷϝογϡશମΛ෴͏ςΫενϟ࠲ඪΛ࡞Γ ରԠ͢ΔςΫηϧʹҎԼͷใΛॻ͖ࠐΉ ੨
ΞϧϑΝ ϓϦϛςΟϒͷॏ৺࠲ඪ Ϟσϧ*% ϝογϡ*% ϓϦϛςΟϒͷ ΠϯσοΫε ͜ͷςΫενϟΛݟΕ ݁߹લͷϞσϧͷͲ͜Λඳ͍͍ͯΔ͔͕Θ͔Δ
Topology Mapping Buffer(T-buffer) ݁߹ͱͷݮͰͭʹͳͬͯ͠·ͬͨࡾ֯ܗ ͍෦ ϝογϡ༝དྷ ͷ෦ ϝογϡ༝དྷ ͜ͷΛ ςΫενϟʹඳ͘
Material Buffer(M-buffer) ଐੑ͕ݮޙʹͬͨͷ͚ͩͰ ิؒ͞ΕΔͷ·͍ͣ ଐੑςΫενϟʹ͢Δ ͜ͷςΫενϟΛ ͱͷϝογϡͷ * ଐੑͷ ͚ͩ༻ҙ͢Δ
ϨϯμϦϯάͷྲྀΕ ϞσϧΛϩʔυ 5CV⒎FSΛ࡞ .CV⒎FSΛ࡞ ΛؒҾ͘ γΣʔμ ϐΫηϧγΣʔμ ϩʔυ࣌ ϨϯμϦϯά࣌ ϐΫηϧγΣʔμͰ
T-bufferΛݟͯͲͷM-bufferΛಡΉ͖͔Λܾఆ M-bufferͷΛͬͯϨϯμϦϯά
-P% -P% dճͷ%SBX ճͷ%SBX ЖTલޙ ЖTҎԼ ݁Ռ 3FOEFSJOH-PX-0%$BSTBU-JHIUOJOH4QFFEJO'PS[B.PUPSTQPSU ۙͷσϞ IUUQXXXHEDWBVMUDPNQMBZ3FOEFSJOH-PX-0%$BSTBU
-P% -P% dճͷ%SBX ճͷ%SBX ЖTલޙ ЖTҎԼ ݁Ռ ԕ͔͘ΒݟͨΒόϨͳ͍࣭ 3FOEFSJOH-PX-0%$BSTBU-JHIUOJOH4QFFEJO'PS[B.PUPSTQPSU ۙͷσϞ
IUUQXXXHEDWBVMUDPNQMBZ3FOEFSJOH-PX-0%$BSTBU
Texture Streaming in Titanfall 2 ͜ͷηογϣϯͷൃදऀ Chad Barb(Respawn Entertainment) GDC
VaultͷURL http://www.gdcvault.com/play/1024105/Efficient-Texture- Streaming-in-Titanfall
Texture Streaming γʔϯʹ߹Θͤͯߴղ૾ͳςΫενϟΛ GPUϝϞϦʹ্͛Լ͛ͯ͠ ࣮ࡍͷGPUϝϞϦҎ্ͷςΫενϟ͕ ஔ͍͔ͯ͋ͬͨͷΑ͏ʹݟ͔͚ͤΔ
Titanfall 2ʹ͓͚ΔTexture Streaming 64KiBҎԼͷMIPGPUϝϞϦʹৗற ΑΓେ͖͍ςΫενϟඞཁʹԠ্ͯ͛͡Լ͛ ςΫενϟͷॏཁΛࣄલʹܭࢉ ඞཁͳςΫενϟͷϦετΛຖϑϨʔϜߋ৽
Histgram ͋ΔϚςϦΞϧͷ͋ΔMIPͷςΫενϟ͕ ݱࡏͷҐஔ͔ΒͲͷ͘Β͍ݟ͑Δ͔Λ ٻΊͨͷ ߴ த ݱࡏͷҐஔ
ࣄલܭࢉ ಈ͔ͳ͍Ϟσϧ(Ϩϕϧ)ͷ߹ ϓϨΠϠʔͷઢҎ্ͷߴ͞ʹϓϩʔϒΛࢃ͘ ֤ϓϩʔϒͷҐஔ͔ΒΩϡʔϒϚοϓʹ ϨϯμϦϯάΛߦ͍ ಡ͏ͱͨ͠MIPΛΧϯτ͢Δ Χϯτͷଟ͍MIPΛ ͦͷҐஔͰॏཁͳMIPͱ͢Δ
kฏۉ๏Ͱ݁Ռ͕͍ۙϓϩʔϒΛ·ͱΊͯ 16ft2ຖʹ۠ͬͨྖҬͷ ϓϩʔϒ͕8ݸҎԼʹͳΔΑ͏ʹ͢Δ ͜ͷϓϩʔϒΛࣄલʹϑΝΠϧʹॻ͍͓ͯ͘ ಡ͏ͱͨ͠MIPΛΧϯτ͢Δ Χϯτͷଟ͍MIPΛ ͦͷҐஔͰॏཁͳMIPͱ͢Δ
ࣄલܭࢉ ಈ͘Ϟσϧ(ΩϟϥΫλ)ͷ߹ Ϟσϧͷද໘Λߏ͢ΔϚςϦΞϧͷׂ߹Λ ࣄલʹٻΊͯ͘
֤ϑϨʔϜͰͷॲཧ ϓϩʔϒΛิؒͯ͠ ݱࡏͷҐஔʹ͓͚Δ੩తͳMIPͷॏཁΛಘΔ ۙ͘ʹ͍ΔΩϟϥΫλͷϚςϦΞϧͷׂ߹ͱ ͦͷΩϟϥΫλ·Ͱͷڑ͔Β ಈతͳMIPͷॏཁΛٻΊΔ ॏཁͱΈͳ͞Ε͍ͯΔͷʹϩʔυ͞Ε͍ͯͳ͍ MIPΛσΟεΫ͔ΒಡΈࠐΉ ϩʔυ͞Ε͍ͯΔ͚ͲॏཁͰͳ͍MIPΛࣺͯΔ
αΠωʔδ นͷ༷ͱͦͷ্ʹషΒΕͨDFACͷεςϯγϧ ը໘্Ͱಉ͡໘ੵΛ༗͢ΔͨΊ ಉ͡༏ઌʹͳ͍ͬͯΔ͕ εςϯγϧʹΑΓߴ͍ղ૾͕ඞཁͰ͋Δ ςΫενϟͷ༻్ͷҧ͍͕ߟྀ͞Εͳ͍ σΧʔϧͷղ૾े͕ͩ εςϯγϧδϟΪཱ͕ͭ &⒏DJFOU5FYUVSF4USFBNJOHJO5JUBOGBMM ϖʔδͷը૾
IUUQXXXHEDWBVMUDPNQMBZ&⒏DJFOU5FYUVSF4USFBNJOHJO 5JUBOGBMM
Replicating Chaos: Vehicle Replication in 'Watch Dogs 2' ͜ͷηογϣϯͷൃදऀ Matt
Delbosc(Ubisoft Toronto) GDC VaultͷURL http://www.gdcvault.com/play/1024010/Replicating-Chaos- Vehicle-Replication-in
Watch Dogs 2ʹ ϚϧνϓϨΠϠʔϞʔυ͕͋Δ ࠷େ4ਓͷpeer-to-peer େྔͷମͷঢ়ଶΛಉظ͢Δඞཁ͕͋Δ ମͷϚελʔෳͷϗετʹࢄ͍ͯ͠Δ ϓϨΠϠʔंʹͬͯߴʹҠಈ͢Δ
ϓϨΠϠʔंʹͬͯߴʹҠಈ͢Δ ΠϯλʔωοτΛհͯ͠ଓ͞Εͨ ϗετಉ࢜ͷ௨৴ͷԆ 100ϛϦඵΦʔμʔʹͳΔ͜ͱ͘͠ͳ͍ ঢ়ଶ͕ಉظ͞Εͳ͍100ϛϦඵͷؒʹ ंϝʔτϧҠಈͯ͠͠·͏ ͔͠Watch Dogs2Ͱ࿏্ʹ ଞͷं͕ͨ͘͞Μ͍ͬͯΔ ϝʔτϧͣΕ͍ͯͨΒͿ͔ͭͬͯ͠·͏!
Projective Velocity Blending લճͷಉظ࣌ͷ͕ˢͩͬͨͷͰ ͦͷํʹਐ͢Δͱ༧ͯ͠ ंΛҠಈ͍ͤͯͨ͞Β ˔ͷ࣌Ͱ৽͍͠ˡΛड͚औͬͨ ࣌ؒͱͱʹˡͷঢ়ଶʹ ͍͍ۙͮͯ͘Α͏ʹ ͱҐஔΛ؇͔ʹमਖ਼
Projective Velocity Blending ී௨ͷ1SPKFDUJWF7FMPDJUZ#MFOEJOHͰ ମݱࡏͷΛҡ࣋ͯ͠ Ҡಈ͢Δͱ༧͢Δ ΧʔϒΛۂ͕͍ͬͯΔ͚ͩͷं͕ ऄߦ͍ͯ͠ΔΑ͏ʹݟ͑Δ
͚ͩͰͳ֯͘ಉظ͠Α͏ ۂ͕͍ͬͯΔࣄ͕໌Β͔ͳ࣌ʹ ਐ͢Δͱ༧͢Δͷؒҧ͍ͬͯΔ ಉظ࣌ͷ֯Λҡ࣋ͯ͠ ϕΫτϧͷ͖͕มԽ͢Δͷͱͯ͠ ࣍ͷಉظ·Ͱͷؒͷಈ͖Λ༧͢Δ
֯ΛͬͨͷมԽͷ༧ͷ ं͕͍ͬͯΔͱޡͬͨ༧ʹͳΔ 8BUDI%PHT ΦϑϩʔυΛָͬͯ͠Ή ϥϦʔήʔϜͰͳ͍ͷͰ ͜ͷఘΊΔ͜ͱʹͨ͠
4OBQTIPU#V⒎FS Ϛελʔ ϨϓϦΧ εφοϓγϣοτΛ͓͍֮݅͑ͯͯ ิؒʹΑͬͯͦͷؒͷಈ͖Λ࡞Δ Ε རϨϓϦΧΛΑΓਖ਼֬ͳيಓͰಈ͔ͤΔ ܽϚελʔʹରͯ͠ϨϓϦΧ͕େ͖͘ΕΔ
4OBQTIPU#V⒎FS Ϛελʔ ϨϓϦΧ 5JNF0⒎TFU ࠷ॳͷεφοϓγϣοτ͕དྷͨΒগ͔ͬͯ͠Β ࣍ͷεφοϓγϣοτ͕དྷΔલʹ༧Ͱಈ͖࢝ΊΔ
4OBQTIPU#V⒎FS Ϛελʔ ϨϓϦΧ ࠷ॳͷεφοϓγϣοτ͕དྷͨΒগ͔ͬͯ͠Β ࣍ͷεφοϓγϣοτ͕དྷΔલʹ༧Ͱಈ͖࢝ΊΔ ࣍ͷεφοϓγϣοτ͕དྷͨΒ ͔ͦ͜ΒิؒͰಈ͘ ༧ͱิؒͷόϥϯε࣮ࡍʹಈ͔ͯ͠Έͯ ࠷దͳΛ୳Δ
7FIJDMF$PMMJTJPOT ϚϧνϓϨΠϠʔϞʔυͰ ϚελʔͱϨϓϦΧ͕িಥ͢Δͱ ͓ޓ͍͕ҟৗʹԕ͘ʹਧͬඈͿݱ͕ΈΒΕΔ
7FIJDMF$PMMJTJPOT εφοϓγϣοτ ϨϓϦΧ Ϛελʔ ࣍ͷεφοϓγϣοτͰিಥʹΑΔͷมԽ͕ ө͞ΕΔ·ͰɺϨϓϦΧ͕ϚελʔΛԡ͠ଓ͚Δ ࣌ࠁ
7FIJDMF$PMMJTJPOT ࣍ͷεφοϓγϣοτͰিಥʹΑΔͷมԽ͕ ө͞ΕΔ·ͰɺϨϓϦΧ͕ϚελʔΛԡ͠ଓ͚Δ Ϛελʔͱিಥͨ͠ϨϓϦΧʹ͍ͭͯ ϩʔΧϧͰ߶ମγϛϡϨʔγϣϯΛߦ͏ িಥ͔Β͠Β͘ͷؒ͋Δׂ߹Ͱ γϛϡϨʔγϣϯͷ݁ՌಘΒΕͨঢ়ଶͱ εφοϓγϣοτ͔Βͷঢ়ଶͷ༧ΛࠞͥΔ ͜ͷׂ߹ͱ͜ͷঢ়ଶΛҡ࣋͢Δ࣌ؒ ༷ʑͳিಥΛࢼͯ͠ྑ͍݁Ռ͕ಘΒΕΔΛ୳͢
িಥ༧ ϚελʔͱϨϓϦΧͷҐஔ͕ͣΕ͍ͯΔঢ়ଶ͔Β িಥ͕ى͜ΔͱϚελʔଆͱϨϓϦΧଆͰ ߶ମγϛϡϨʔγϣϯͷ݁Ռʹେ͖ͳ͕ࠩग़Δ ϓϨΠϠʔ ϓϨΠϠʔ ຊདྷͷҐஔ ͣΕͨϨϓϦΧ
িಥ༧ /1$ं྆༻ͷ"*ΛԠ༻ͯ͠ িಥͦ͠͏ͳϚελʔͱϨϓϦΧͷϖΞΛൃݟ ! 5JNF0⒎TFUΛݮΒͯ͠ ϚελʔͱϨϓϦΧͷͣΕΛ͑Δ
ະղܾͷ εφοϓγϣοτͷঢ়ଶͱͣΕ͍͔ͯͨΒ Ҡಈ͠Α͏ͱͨ͠Βؒʹো͕͋ͬͨ ϨϓϦΧͷಈ͖ ຊདྷͷಈ͖ ͨͩͪʹͣΕΛղফ͢ΔͷΛఘΊΔ োΛΘΒ͔͘͢Δ ਖ਼͍͠ҐஔʹॠؒҠಈͤ͞Δ ߟ͑ΒΕΔରॲํ๏ 8BUDIEPHTͰ
͜ΕΛ࠾༻
ະղܾͷ 5JNF0⒎TFU͕ҟͳΔΦϒδΣΫτಉ࢜ͷিಥ าߦऀߴͰҠಈ͠ͳ͍ͨΊ ิؒͷΈͰಈ͍͍ͯΔ ༧ଌͱิؒΛΈ߹Θͤͯಈ͍͍ͯΔ ंͱ5JNF0⒎TFU͕ͣΕ͍ͯΔͨΊ ຊདྷিಥ͍ͯ͠ͳ͍ंͱาߦऀ͕ িಥ͢Δࣄ͕͋Δ
ະղܾͷ ෆؾຯͷ୩ ײతԠ ຊͷྨࣅ ػցత ਓؒత ຊΒ͍͠ಈ͖Λ͢Δं͕ಥવԣΓ͢Δͱ ͦͷมҐࣗମ͕খ͔ͬͨ͞ͱͯ͠ حົʹݟ͑Δ
ࠓޙͷల 5JNF0⒎TFUͷ͞ ཧγϛϡϨʔγϣϯͱͷϒϨϯυͷׂ߹ͳͲ ਓ͕ؒࢼߦࡨޡͯ͠ྑ͍Λ୳͍ͯ͠Δ෦͕͋Δ ͜͏͍ͬͨ෦ʹػցֶशΛԠ༻Ͱ͖Ε ։ൃͷޮΛߴΊΔࣄ͕Ͱ͖ΔͷͰͳ͍͔
Networking Scripted Weapons and Abilities in 'Overwatch' ͜ͷηογϣϯͷൃදऀ Dan Reed(Blizzard
Entertainment) GDC VaultͷURL http://www.gdcvault.com/play/1024041/Networking-Scripted- Weapons-and-Abilities
4UBUFTDSJQU 0WFSXBUDIͰήʔϜͷߴϨΠϠʔͳڍಈΛ ϓϩάϥϚͰͳ͍ਓ͕σβΠϯ͢Δඞཁ͕͋ͬͨ Ճ͑ͯήʔϜͷػೳΛ ՄೳͳݶΓϞδϡʔϧԽ͔ͨͬͨ͠ αʔόͱΫϥΠΞϯτͰ؆୯ʹঢ়ଶΛಉظ͔ͨͬͨ͠
4UBUFTDSJQU (6*ͰΈཱͯՄೳͳεΫϦϓτݴޠ /FUXPSLJOH4DSJQUFE 8FBQPOTBOE"CJMJUJFTJO b0WFSXBUDI ϖʔδͷਤ IUUQXXXHEDWBVMUDPNQMBZ /FUXPSLJOH 4DSJQUFE8FBQPOTBOE
"CJMJUJFT
ϊʔυ &OUSZ ͔͜͜ΒεΫϦϓτ͕࣮ߦ͞ΕΔ͜ͱΛද͢ϊʔυ ແ݅ʹભҠ͢ΔઌΛͭઃఆͰ͖Δ $POEJUJPO ݅ࣜΛධՁ͢Δϊʔυ ࣜͷධՁ݁Ռ͕USVFͩͬͨ߹ͱGBMTFͩͬͨ߹ͷ ͭͷભҠઌΛઃఆͰ͖Δ "DUJPO ήʔϜଆʹ࣮͞Εͨ
ԿΒ͔ͷؔΛݺͼग़͢ϊʔυ ྃޙʹભҠ͢ΔઌΛͭઃఆͰ͖Δ 4UBUF ήʔϜଆͰΠϕϯτ͕ى͜Δ·Ͱ ॲཧΛఀࢭ͢Δϊʔυ ظ͢ΔΠϕϯτͷ͚ͩભҠઌΛઃఆͰ͖Δ
ม *OTUBODFมεΫϦϓτͷ࣮ߦ୯ҐͰಠཱͨ͠ 0XOFSม*OTUBODFͷॴ༗ऀ୯ҐͰಠཱͨ͠ ಈతܕ͚Ͱྻ͑Δ "DUJPOͷ4FU7BMVFͰΛมߋͰ͖Δ
ϊʔυͷଐੑ ϊʔυͷৼΔ͍ΛܾΊΔύϥϝʔλʹ Ϧςϥϧ ม ήʔϜଆ͔ΒΛҾͬுͬͯ͘Δؔ ͦΕΒΛΈ߹Θͤͨࣜ Λઃఆ͢Δ͜ͱ͕Ͱ͖Δ ͨͱ͑λΠϚʔεςʔτͷͪ࣌ؒʹ มBͷ ඵ
ͱ͍ͬͨࢦఆ͕Մೳ
ίϯςφ ෳͷϊʔυΛ·ͱΊͯͦͷڍಈΛมߋ͢Δ ྫ ੨͍ίϯςφͷதΫϥΠΞϯτͷΈͰ࣮ߦ͞ΕΔ ࢵͷίϯςφͷதαʔόͷΈͰ࣮ߦ͞ΕΔ /FUXPSLJOH4DSJQUFE8FBQPOTBOE "CJMJUJFTJOb0WFSXBUDI ϖʔδͷਤ IUUQXXXHEDWBVMUDPNQMBZ
/FUXPSLJOH4DSJQUFE8FBQPOTBOE"CJMJUJFT
ಉظΠϯελϯε ಉظΠϯελϯε্Ͱ࣮ߦ͞ΕΔεΫϦϓτ αʔόͱΫϥΠΞϯτͰಉ͡ঢ়ଶ͕อͨΕΔ ثΞϏϦςΟͳͲ શͯͷϓϨΠϠʔͰঢ়ଶ͕ἧ͍ͬͯΔ ඞཁ͕͋ΔͷಉظΠϯελϯεͰ࣮ߦ͢Δ ͜͜ͱ ͜͜Ͱ ಉ͡ঢ়ଶ ಉظ
ඇಉظΠϯελϯε ಉظΠϯελϯεͷΠϕϯτͷ͖ݟ Ͱ͖Δ͕Ұํ͚ͩͰ࣮ߦ͞ΕΔ ϝχϡʔը໘ͷঢ়ଶ ରઓޙͷ݁Ռը໘ͷભҠͳͲ ଞͷϓϨΠϠʔʹ͑Δඞཁ͕ͳ͍ ඇಉظΠϯελϯεͰ࣮ߦ͢Δ ͚ͩ͜͜
ಉظͷ͘͠Έ ಉظ͕ඞཁͳεΫϦϓτ جຊతʹαʔό্Ͱ࣮ߦ͞Ε αʔό͔ΒΫϥΠΞϯτʹঢ়ଶ͕ಉظ͞ΕΔ ྫ֎తʹϘλϯೖྗͱর४͚ͩ ΫϥΠΞϯτ͔Βαʔόʹঢ়ଶΛಉظͰ͖Δ ͜͜ͱ ͜͜Ͱ ಉ͡ঢ়ଶ
ಉظͷ͘͠Έ $'ͷΠϕϯτͷޙͷࠩ $'ͷΠϕϯτͷޙͷࠩ $'ͷΠϕϯτͷޙͷࠩ αʔόεΫϦϓτͷ࣮ߦʹΑͬͯ มԽͨ͠ঢ়ଶͷࠩΛมԽͨ࣌͠ࠁ͖Ͱ ͓֮͑ͯ͘
ಉظͷ͘͠Έ ࠩΛΫϥΠΞϯτʹૹ৴͠ શͯͷΫϥΠΞϯτ͔Βड͚औΓ௨͕དྷͨΒ ͦ͜·ͰͷࠩΛഁغ͢Δ $' $' $' ͜͜·Ͱഁغ ࠷৽ ࠷৽
࠷৽
ಉظͷ͘͠Έ ৽͍ࠩ͠ΛૹΖ͏ͱͨ࣌͠Ͱ લͷࠩͷड͚औΓྃΛ ௨͍ͯ͠ͳ͍ΫϥΠΞϯτ͕͍ͨ߹ $' $' $' ࠷৽ ࠷৽ ࠷৽
ΛૹΓ͍ͨ
ಉظͷ͘͠Έ ड͚औΓྃΛ֬ೝ͍ͯ͠ΔՕॴҎ߱ͷࠩΛ ·ͱΊͯΫϥΠΞϯτʹૹΔ $' $' $' ࠷৽ ࠷৽ ࠷৽ ͔Βͷࠩ
͔Βͷࠩ ͔Βͷࠩ ͱ͕ಉ͡ཁૉΛॻ͖͍͑ͯͨ߹ ͷޙͷ͚͕ͩૹΒΕΔ
ಉظͷ͘͠Έ ΫϥΠΞϯτ͕$'·Ͱड͚औͬͨͱ ݴͬͯདྷͨΒݱ࣌ͷঢ়ଶΛશͯૹΔ $' $' $' ࠷৽ ࣌ͷঢ়ଶΛ શͯૹ৴ ৽͍͠ϓϨΠϠʔͷࢀՃ࣌
ϩʔΧϧΠϯελϯε ϓϨΠϠʔࣗͷڍಈʹؔ͢ΔεΫϦϓτ αʔόʹ௨͢Δͱಉ࣌ʹ ΫϥΠΞϯτͰ࣮ߦ͢Δ Ϙλϯԡ͞Εͨ ঢ়ଶΛ ߋ৽ ঢ়ଶΛ ߋ৽ Ϙλϯೖྗʹରͯ͠ଈ࠲ʹԠ
ϩʔΧϧΠϯελϯε αʔόଆ͔Β݁ՌΛड͚औΔ·Ͱ ΫϥΠΞϯτଆͰঢ়ଶͷࠩΛอ࣋ Ϙλϯԡ͞Εͨ ঢ়ଶΛ ߋ৽ $' ͍ͭͰϩʔϧόοΫͰ͖Δঢ়ଶʹ͢Δ $' $'
αʔόͱΫϥΠΞϯτͰ৯͍ҧͬͨΒ Ϙλϯԡ͞Εͨ ঢ়ଶΛ ߋ৽ ঢ়ଶΛ ߋ৽ ඞࡴٕΛ͘Β͑ ͓લ͏ ࢮΜͰ͍ͨ ඞࡴٕࣦഊ
ඞࡴٕ ఢʹ໋த ͑ͬ
ඞࡴٕࣦഊ ඞࡴٕ ఢʹ໋த ͱ͍͏ͷ ເͩͬͨ ඞࡴٕࣦഊ ΫϥΠΞϯτଆͷ༧Λ ϩʔϧόοΫͯ͠αʔόͷ݁ՌΛ࠾༻
͜ΕΒͷಉظ 4UBUF4DSJQUͷΠϯλϓϦλ͕ߦ͍ εΫϦϓτ্ʹ໌ࣔతʹॻ͘ඞཁͳ͍ ϙΠϯτ
Stop Killing Our Servers! ͜ͷηογϣϯͷൃදऀ Sela Davis(VREAL), Jennie Lees(Riot Games)
GDC VaultͷURL http://www.gdcvault.com/play/1024584/Stop-Killing-Our- Servers
if( enemyKilled ) { server.UpdateProgress( 1000_ENEMIES, 1 ); } //
ແ͢ΔͱେྔͷΠϕϯτ͕ඈͿ while( enemiesAreBeingKilled ) { enemiesKilled++; } if( enemiesKilled > 0 && !achAwarded ) { server.UpdateProgress( 1000_ENEMIES, enemiesKilled ); } // ·ͱΊΑ͏ ΫϥΠΞϯτ͔Βͷࡉ͔͗͢ΔΠϕϯτͰ αʔόΛͯ͠͠·Θͳ͍Α͏ʹؾΛ͚ͭΑ͏
ΈΜͳͰॻ͖͑Δཁૉ ΩϡʔΛ࡞Δͱ͏·͘ࡹ͚Δ ॱ൪ͪ ࣗͷ൪͕དྷͨΒ ରΛૢ࡞ ΩϡʔΛ࡞Δͱཁٻ͕ॲཧ͞ΕΔ·Ͱʹ ͕͔͔࣌ؒΔ͔͠Εͳ͍ ཁٻ͕ͪঢ়ଶ͔Ͳ͏͔͕Ϣʔβ͔Βݟ͑ͳ͍ͱ ϢʔβཁٻΛ࿈ଧͯ͠ ΩϡʔʹେྔͷͪΛ࡞ͬͯ͠·͏͔͠Εͳ͍
ใΛ࠷৽ʹอͭͨΊʹϙʔϦϯά͗ͯ͢͠ αʔόΛͯ͠͠·Θͳ͍Α͏ʹؾΛ͚ͭΑ͏ ࠷৽ͷใΛऔಘ͢Δͷ ͦΕ͕ඞཁʹͳͬͨ࣌ʹ͠Α͏ ͦͷใ͕ৗʹ ࠷৽ͷใͰͳ͚ΕͳΒͳ͍͔Λߟ͑Α͏ (ΩϟογϡΛݕ౼͠Α͏) ৽ண͋Δ ৽ண͋Δ ৽ண͋Δ
αʔό͕ࢮΜͰ͍Δ࣌ɺਖ਼͘͠ԠͰ͖ͳ͍࣌ Կ͕ى͜Δ͔Λৗʹߟ͑Α͏ ϩάΠϯʹࣦഊ͠·ͨ͠ ϦτϥΠ ͜͏ݴΘΕΔͱϢʔβ ϦτϥΠΛ࿈ଧͯ͠͠·͏
αʔό͕ࢮΜͰ͍Δ࣌ɺਖ਼͘͠ԠͰ͖ͳ͍࣌ Կ͕ى͜Δ͔Λৗʹߟ͑Α͏ ϝϯςφϯεதͰ͢ ৄ͘͠ެࣜαΠτΛ ҎԼུ αʔϏεʹ͕ൃੜ͍ͯ͠Δ࣌Ͱ Կ͕ى͍ͬͯ͜Δͷ͔͘Β͍ ฦͤΔΑ͏ʹ͓ͯ͜͠͏
ෛՙςετΛߦ͓͏ ՄೳͳݶΓૣ͍ஈ֊͔Βසൟʹ ҟͳΔγφϦΦΛෳ༻ҙͯ͠ ຊΒ͍͠τϥϑΟοΫΛ࡞Ζ͏ ػೳ͝ͱʹγφϦΦΛ༻ҙ͠Α͏ ฏۉతͳέʔεͱϫʔετέʔεΛఆ͠Α͏ Ͳ͏͍͏࣌ʹࠞࡶ͢Δ͔ΛݟۃΊΑ͏
ϓϩϑΝΠϧΛऔΖ͏ ΫϥΠΞϯτͷৼΔ͍͕ αʔόʹͲΜͳӨڹΛ༩͑Δͷ͔ΛݟΑ͏ αʔόͷৼΔ͍͕ ΫϥΠΞϯτʹͲΜͳӨڹΛ༩͑Δͷ͔ΛݟΑ͏
ϦΫΤετ͔ΒϨεϙϯε·Ͱͷ࣌ؒΛଌΖ͏ RTT͕ҟৗʹ͍෦ʹ͢Δࣄ ଟ͘ͷ߹ͷௐࠪʹ༗༻Ͱ͋Δ ΫϥΠΞϯτ͕ෆ҆ఆͳωοτϫʔΫΛհͯ͠ ଓ͍ͯ͠ΔࣄΛݕ͠Α͏
ϩάΛͦ͏ ԿΛϦΫΤετͯ͠Կ͕ฦ͖ͬͯͨͷ͔Λه͠Α͏ ҟৗͳϨεϙϯεΛฦ͢αʔόͷͷௐࠪ ҟৗͳϦΫΤετΛ͢ΔΫϥΠΞϯτͷͷௐࠪ Ͱཱͭ ΫϥογϡϨϙʔτπʔϧΛ׆༻͠Α͏
ΫϥΠΞϯτͷઃఆΛ αʔό͔Βͬͯ͘ΔΑ͏ʹ͠Α͏ ΫϥΠΞϯτͷެ։ޙͰ ήʔϜͷόϥϯεΛௐͰ͖Δ ෆ۩߹͕ݟ͔ͭͬͨίϯςϯπΛ ͑ͳ͍Α͏ʹͰ͖Δ ΫϥΠΞϯτ͕ଓ͖͢αʔόΛมߋͰ͖Δ ςετ༻ͷΫϥΠΞϯτͱ ຊ൪༻ͷΫϥΠΞϯτΛಉҰʹͰ͖Δ ௨শνΩϯεΠον
࠷ॏཁͳࣄ αʔόΤϯδχΞͱ ΫϥΠΞϯτΤϯδχΞ ྑͤ͘Α
Give people the power to “play, share and watch” the
games they love with the people they care about. ͜ͷηογϣϯͷൃදऀ Leo Olebe(Facebook) GDC VaultͷURL (ͳ͠)
Facebook Instant Games Facebook Messenger্Ͱىಈͯ͠ ήʔϜϓϨΠͱ݁ՌΛͦͷͰڞ༗Ͱ͖Δ ϛχήʔϜΛ։ൃ͢ΔͨΊͷϓϥοτϑΥʔϜ HTML5+JavaScriptͰ։ൃ͢Δ https://developers.facebook.com/blog/post/2016/11/30/instant- games-closed-beta/
Facebook Gameroom FacebookͷPCήʔϜൢചϓϥοτϑΥʔϜ Flash·ͨHTML5Ͱॻ͔Εͨ ϒϥβ্Ͱಈ͘ήʔϜͱ UnityͰ։ൃ͞ΕͨωΠςΟϒͷήʔϜΛ Facebook͕ϗεςΟϯά https://developers.facebook.com/docs/games/gameroom
Facebook࿈ܞ FacebookΞϓϦέʔγϣϯͷ։ൃऀʹ Facebookͱ࿈ܞ͢ΔͨΊͷAPIΛఏڙ͍ͯ͠Δ XBOXPS4͔Β࿈ܞͰ͖Δ FacebookΞΧϯτͰϩάΠϯͰ͖ΔΑ͏ʹ͠Α͏ https://developers.facebook.com/docs/facebook-login https://developers.facebook.com/docs/graph-api FacebookͰήʔϜମݧΛߘͰ͖ΔΑ͏ʹ͠Α͏
Facebook Live API FacebookಈըͷϥΠϒετϦʔϛϯάͷͨΊͷ APIΛఏڙ͢Δ ήʔϜ͔Β͜ΕΒͷAPIΛར༻ͯ͠ Ϣʔβ͕ήʔϜମݧΛ ༑ୡͱڞ༗Ͱ͖ΔΑ͏ʹ͠Α͏ https://developers.facebook.com/docs/videos/live-video
Facebook Analytics https://developers.facebook.com/products/analytics ήʔϜ 'BDFCPPL Ϣʔβ ։ൃऀ Ϣʔβใ Πϕϯτ 'BDFCPPLͰ
ϩάΠϯ ౷ܭ FacebookʹήʔϜͰىͬͨ͜ΠϕϯτΛૹͬͯ ͲΜͳͷϢʔβ͕Ͳ͏༡ΜͰ͍Δ͔ΛΔ
Build Resilient Online Games with Amazon GameLift ͜ͷηογϣϯͷൃදऀ Chris Byskal(Amazon),
Geoff Pare(Amazon) GDC VaultͷURL http://www.gdcvault.com/play/1024274/
GameLift ΫϥΠΞϯτ (BNF-JGU"1* αʔό (BNF-JGU ཧίϯιʔϧ (BNF-JGU"1* αʔό (BNF-JGU"1* ΦϯϥΠϯϚϧνϓϨΠϠʔήʔϜͷ
αʔόͱηογϣϯͷཧΛߦ͏
ىಈ ఀࢭ ࢮ׆ࢹ ΫϥΠΞϯτ (BNF-JGU"1* αʔό (BNF-JGU ཧίϯιʔϧ (BNF-JGU"1* αʔό
(BNF-JGU"1* αʔόͷঢ়ଶݟͤͯ ੜ͖ͯΔ ݸʑͷήʔϜαʔόͷىಈɺఀࢭɺࢮ׆ࢹ ϩάͷ֬ೝͳͲཧίϯιʔϧ͔Β ࢮΜͰΔ
σϓϩΠ ΫϥΠΞϯτ (BNF-JGU"1* αʔό (BNF-JGU ཧίϯιʔϧ (BNF-JGU"1* αʔό (BNF-JGU"1* ήʔϜαʔόͷ
όΠφϦ αʔόͷόΠφϦΛGameLiftʹ͓͛ͯ͘ͱ ඞཁͳαʔόʹσϓϩΠ͞ΕΔ
αʔό (BNF-JGU"1* ࣗಈεέʔϧ αʔό F-JGU ཧίϯιʔϧ (BNF-JGU"1* ࣗಈεέʔϧΛ༗ޮʹ͓ͯ͘͠ͱ ϓϨΠϠʔʹԠͯ͡ αʔόͷΠϯελϯε͕ࣗಈͰ૿ݮ͢Δ
αʔό (BNF-JGU"1* ৽͍͠αʔόͷσϓϩΠࣗಈ ࠞࡶ ࠞࡶ
ΫϥΠΞϯτ (BNF-JGU"1* αʔό (BNF-JGU ཧίϯιʔϧ (BNF-JGU"1* αʔό (BNF-JGU"1* ଓ ͜ͷ෦ʹೖΓ͍ͨͳ
ΫϥΠΞϯτGameLiftαʔϏεʹ ଓΛཁٻ͢Δ
ΫϥΠΞϯτ (BNF-JGU"1* αʔό (BNF-JGU ཧίϯιʔϧ (BNF-JGU"1* αʔό (BNF-JGU"1* ଓ ͜ΜͳϠπདྷͯΔΜ͚ͩͲ
ೖΕͯྑ͍? αʔόGameLiftʹڐՄ͢Δ͔Ͳ͏͔Λฦ͢ ͓͚ͬɺͤΖ
ΫϥΠΞϯτ (BNF-JGU"1* αʔό (BNF-JGU ཧίϯιʔϧ (BNF-JGU"1* αʔό (BNF-JGU"1* ଓ GameLiftΫϥΠΞϯτʹ
ଓઌΛڭ͑Δ ͋ͷαʔόʹܨ͍Ͱ
ΫϥΠΞϯτ (BNF-JGU"1* αʔό (BNF-JGU ཧίϯιʔϧ (BNF-JGU"1* αʔό (BNF-JGU"1* ଓ ͓अຐ͠·͢
ͳΜ͔དྷ͚ͨͲ ͜ΕͬͯݴͬͯͨϠπ? ͤͰ ୭͔ଓͯ͠དྷͨΒ αʔόGameLiftʹϢʔβΛ֬ೝ
ΫϥΠΞϯτ (BNF-JGU"1* αʔό (BNF-JGU ཧίϯιʔϧ (BNF-JGU"1* αʔό (BNF-JGU"1* ଓ அ
ݴͬͯͨϠπ ؼͬͨͰ ΫϥΠΞϯτ͕அͨ͠Β αʔόGameLiftʹ௨
ΫϥΠΞϯτ (BNF-JGU"1* αʔό (BNF-JGU ཧίϯιʔϧ (BNF-JGU"1* αʔό (BNF-JGU"1* ෦ͷ࡞ ৽͍͠෦Λ
࡞Γ͍ͨͳ ৽͍͠෦୲ΑΖ͘͠ ΫϥΠΞϯτ͕৽͍͠෦Λ࡞Γ͍ͨ࣌ GameLiftʹཁٻ
ΫϥΠΞϯτ (BNF-JGU"1* αʔό (BNF-JGU ཧίϯιʔϧ (BNF-JGU"1* αʔό (BNF-JGU"1* ෦ͷݕࡧ ࠓ͋Δ෦
͍ͩ͘͞ ͪ͜Β͕ҰཡʹͳΓ·͢ GameLift࣮ߦதͷશͯͷ෦Λ͍ͬͯͯ ΫϥΠΞϯτ͔Βཁٻ͞ΕͨΒͦΕΛฦ͢
ΫϥΠΞϯτ (BNF-JGU"1* αʔό (BNF-JGU ཧίϯιʔϧ (BNF-JGU"1* αʔό (BNF-JGU"1* ෦ͷݕࡧ ͜Μͳ෦
ͳ͍? ͜ΕͳΜ͔ Ͳ͏Ͱ͠ΐ͏ ήʔϜαʔό͔Β෦ͷใΛ͢͜ͱͰ ݅ʹ͋ͬͨ෦ΛݕࡧͰ͖ΔΑ͏ʹͳΔ ࠓ͜ͷ෦ ͜Μͳ෩ʹͳͬͯΔ
ΫϥΠΞϯτ (BNF-JGU"1* αʔό (BNF-JGU ཧίϯιʔϧ (BNF-JGU"1* αʔό (BNF-JGU"1* ෦ͷݕࡧ ݱࡏͷ෦ͷঢ়گͱϓϨΠϠʔͷঢ়گ
ཧίϯιʔϧ͔Β֬ೝͰ͖Δ ϓϨΠϠʔདྷͯΔ? ͦͦ͜͜
ΫϥΠΞϯτ (BNF-JGU"1* αʔό (BNF-JGU ཧίϯιʔϧ (BNF-JGU"1* αʔό (BNF-JGU"1* ϚονϝΠΩϯά ରઓ૬खΛٻΊΔϓϨΠϠʔಉ࢜Λ
άϧʔϓԽͯ͠ ରઓ͍ͨ͠! ϝϯόʔ͕ἧ͏·Ͱ ͓͍ͪͩ͘͞
ΫϥΠΞϯτ (BNF-JGU"1* αʔό (BNF-JGU ཧίϯιʔ (BNF-JGU"1* α (BN ϚονϝΠΩϯά ਓ͕ἧͬͨΒ෦Λ࡞Δ
Զରઓ͍ͨ͠! ͍ͭ͜ͱ͍͕ͭ͜ ରઓ͕ͨͬͯ͠Δ͔Β ෦ΑΖ͘͠ ϥΠΞϯτ BNF-JGU"1*
ΫϥΠΞϯτ (BNF-JGU"1* αʔό (BNF-JGU ཧίϯιʔ (BNF-JGU"1* α (BN ϚονϝΠΩϯά ϥΠΞϯτ
BNF-JGU"1* ͜ͷαʔόʹ ଓ͍ͯͩ͘͠͞ ͜ͷαʔόʹ ଓ͍ͯͩ͘͠͞ ͜͏ͨ͠ϚονϝΠΩϯά GameLiftͰߦ͏ࣄ͕Ͱ͖Δ
ΫϥΠΞϯτ (BNF-JGU"1* (BNF-JGU ϚονϝΠΩϯά ରઓ͍ͨ͠! Ͳ͏͠Α͏ -BNCEB %ZOBNP ͬͯΔϓϨΠϠʔͷ ใͪΐ͏͍ͩ
͜ΜͳϠπ͕ ͓ΔͰ ͍ͭ͜ͱ͍ͭ͜Ͱ෦࡞ͬͯ Amazon Dynamoʹஔ͍ͨϓϨΠϠʔͷใΛͬͯ Amazon LambdaͰ͖ͳϧʔϧͰάϧʔϓΛ࡞ΕΔ
ϚϧνϦʔδϣϯ ੈքதͷϓϨΠϠʔʹ ͍ϨΠςϯγͰͷαʔϏεΛఏڙ͢Δʹ ෳͷҬʹαʔόΛஔ͍ͯ࠷͍ۙͷΛ͏ αʔό (BNF-JGU"1* αʔό (BNF-JGU"1* αʔό (BNF-JGU"1*
GameLift͕͑ΔAWSͷϦʔδϣϯ όʔδχΞ෦ ΦϨΰϯ ϑϥϯΫϑϧτ ΞΠϧϥϯυ ϜϯόΠ ιϧ ౦ژ γϯΨϙʔϧ αϯύϩ
ϚϧνϦʔδϣϯ αʔό (BNF-JGU"1* αʔό (BNF-JGU"1* αʔό (BNF-JGU"1* ڧ͍ ԶΑΓڧౕ͍ʹ ձ͍ʹߦ͚ͳ͍
ϓϨΠϠʔ͕அ͞ΕΔ ݅ʹΑͬͯదͳ૬खͱ ϚονϝΠΩϯά͕Ͱ͖ͳ͘ͳΔ
άϩʔόϧϚονϯά αʔό (BNF-JGU"1* αʔό (BNF-JGU"1* αʔό (BNF-JGU"1* ڧ͍ ڧ͍Ϡπืू Ϧʔδϣϯ୯ҐͷϚονϯάͰਓ͕ἧΘͳ͍࣌
ͦΕ·ͰʹἧͬͨϝϯόʔΛάϧʔϓʹͯ͠
άϩʔόϧϚονϯά αʔό (BNF-JGU"1* αʔό (BNF-JGU"1* αʔό (BNF-JGU"1* ڧ͍ ڧ͍ͭ ͓ΒΜ͔ʔ
ผͷϦʔδϣϯͷαʔόʹ ϚονϯάཁٻΛ͛Δ
άϩʔόϧϚονϯά αʔό (BNF-JGU"1* αʔό (BNF-JGU"1* αʔό (BNF-JGU"1* ͓ΔͰ ڧ͍ͭ ͓ΒΜ͔ʔ
GameLift ଞͷϦʔδϣϯ͔ΒདྷͨάϧʔϓͷΩϡʔΠϯάͱ ΫϥΠΞϯτʹର͢Δ௨ͷΈΛఏڙ͢Δ