Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ゲームアプリの数学@GREE GameDevelopers' Meetup

ゲームアプリの数学@GREE GameDevelopers' Meetup

2015年12月16日六本木ヒルズのグリー株式会社で開催された「GREE GameDevelopers' Meetup 02」 #greegdm02 での久富木隆一による講演の資料です。書籍『ゲームアプリの数学 Unityで学ぶ基礎からシェーダーまで』(久富木 隆一 著)(https://github.com/ryukbk/mobile_game_math_unity )の紹介、番外編(レイトレーシング/レイマーチングなど非ポリゴンベースの3Dグラフィックス)、ゲーム開発の未来展望から成ります。

Avatar for Ryuichi Kubuki

Ryuichi Kubuki

September 13, 2023
Tweet

More Decks by Ryuichi Kubuki

Other Decks in Programming

Transcript

  1. Who Am I? 久富木 隆一 (Ryuichi KUBUKI @ryukbk ) 『ゲームアプリの数学』著者

    グリーでゲームアプリ開発の仕事をして います
  2. 書籍『ゲームアプリの数学 Unityで学ぶ基礎からシェーダーまで』 左: 大型本 右: Kindle版 SBクリエイティブ 刊 第1章 三角関数

    第2章 座標系 第3章 ベクトル 第4章 行列 第5章 座標変換 第6章 クォータニオン 第7章 曲線 第8章 ゲームアプリの環境 第9章 シェーダー
  3. 『ゲームアプリの数学』概要  現代の2D/3Dゲーム開発に必要な数学要 素を簡潔に解説  1-4章: 前半の山である5章-座標変換(3D ジオメトリー処理)の構成要素  1-8章:

    後半の山である9章-シェーダー (GPUでのジオメトリー/フラグメント並 列処理)の構成要素  ベクトル、行列、クォータニオンの定義 と演算(API)  1章: 紀元前から17世紀、2-6章: 19世紀、 7-9章: 20世紀 第1章 三角関数 第2章 座標系 第3章 ベクトル 第4章 行列 第5章 座標変換 第6章 クォータニオン 第7章 曲線 第8章 ゲームアプリの環境 第9章 シェーダー
  4. 『ゲームアプリの数学』概要  7章 曲線: ジオメトリーの、アルゴ リズムによる手続き生成 (procedural generation)  8章:

    リアルタイム3Dグラフィック ストレンド、GPUアーキテク チャーの歴史、(モバイル)システム アーキテクチャー、グラフィック スパイプライン解説により、GPU 上の並列プログラミングの文脈と 前提知識を補充 第1章 三角関数 第2章 座標系 第3章 ベクトル 第4章 行列 第5章 座標変換 第6章 クォータニオン 第7章 曲線 第8章 ゲームアプリの環境 第9章 シェーダー
  5. 『ゲームアプリの数学』概要 // vertex shader void main() { gl_Position = gl_ModelViewProjectionMatrix

    * gl_Vertex; } // fragment shader void main() { gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); } この最も単純なシェーダープログラムが何を意味して いるかの解説に書籍の大部分は割かれている
  6. 『ゲームアプリの数学』番外編 float sdSphere( vec3 p, float s ) { return

    length(p) - s; } float sdBox( vec3 p, vec3 b ) { vec3 d = abs(p) - b; return min(max(d.x,max(d.y,d.z)),0.0) + length(max(d,0.0)); } float opS( float d1, float d2 ) { return max(-d2,d1); } vec2 opU( vec2 d1, vec2 d2 ) { return (d1.x<d2.x) ? d1 : d2; }  距離関数(distance function)と、 そのブーリアン演算で、ジオメ トリーのプリミティブを表現 Raymarching – Primitives by Íñgo Quílez http://iquilezles.org/www/articles/distfunct ions/distfunctions.htm https://www.shadertoy.com/view/Xds3zN
  7. 『ゲームアプリの数学』番外編 符号付距離場(signed distance field, SDF)  全ての点について最も近い物体表面への 距離を正の値(物体の外側)か負の値(内側) で記録 

    3D空間なら3Dテクスチャーに保存できる  レイマーチングにSDFを併用すると、一定 間隔ではなくSDFの値ずつ行進(=sphere tracing)できるので、効率が良い  ただしSDF自体はストレージ領域やメモ リー空間を占有する Per-Pixel Displacement Mapping with Distance Functions By William Donnelly, GPU Gems 2, 2005
  8. 『ゲームアプリの数学』番外編 SDFはフォントレンダリングにも応用 Improved Alpha-Tested Magnification for Vector Textures and Special

    Effects, Chris Green, Valve, SIGGRAPH 2007  SDFとGPUによる補間で高解像度の元 フォント画像並の縁の滑らかさを再現  解像度毎に複数枚のフォントテクス チャーを用意する必要がなく、1枚のSDF テクスチャーで済み、メモリーの節約  有名UnityアセットText Mesh ProもSDF対応  Google ChromeのレンダリングエンジンSkiaでもSDFによるフォン トレンダリングに対応 https://github.com/google/skia/blob/master/gm/dftext.cpp
  9. 『ゲームアプリの数学』番外編 さらにその先へ – SDFをも手続き生成  レイマーチングの第一人者Iñigo Quilezによる2008年の発表  数式とフラグメントシェーダー プログラムを絵筆のように使い、

    手続き生成によって複雑な3D シーンを4KBのデモに納める  古くに存在したヨーロッパのデ モシーンでは細い回線でドヤる ための手段として華やかなCGデ モをいかに小さなプログラムで 表現するかが競われた Rendering Worlds with Two Triangles with raytracing on the GPU in 4096 bytes by Iñigo Quilez, NVSCENE 2008
  10. 『ゲームアプリの数学』番外編 ハイブリッドレンダリング  デモシーン出身でSCEに在籍していた Matt Swobodaによる手続き生成や SDFについての2012年の発表での、将 来のレンダリングパイプライン予想  メインのキャラクター表示は依然とし

    てポリゴンをラスタライズ  照明や反射といった効果はレイトレー シングなどの手法を限定的に低精度で 採用へ Advanced Procedural Rendering in DirectX 11 by Matt Swoboda, SCEE, GDC 2012
  11. 『ゲームアプリの数学』番外編  Advances in Real-Time Rendering in Games @ SIGGRAPH

    2015 AAAゲームを開発する有名開発会社 の最高峰をなす面々による、現代の ゲームにおけるグラフィックスレン ダリングに関する10のセッション
  12. 『ゲームアプリの数学』番外編  Advances in Real-Time Rendering in Games @ SIGGRAPH

    2015 10のセッションのうち7つが レイマーチングまたはSDFに ついて言及
  13. 『ゲームアプリの数学』番外編  Learning from Failure: a Survey of Promising, Unconventional

    and Mostly Abandoned Renderers for ‘Dreams PS4’, a Geometrically Dense, Painterly UGC Game’, Alex Evans (MediaMolecule), SIGGRAPH 2015  VR空間でユーザーがキャラクターを彫刻して 作るPS4タイトル”Dreams”に向けた3年間の R&Dにおける試行錯誤の軌跡  ポリゴンメッシュのラスタライズは無く、 CSGのシーンからコンピュートシェーダーで 生成したSDFを点の集合(point cloud/splat) に変換した点描でオブジェクトを表現  ハイブリッドではない、真の次世代ゲームグ ラフィックスレンダリングを実現
  14. 2020年のゲーム開発者 生産性向上の鍵 – アルゴリズ ムによる手続き生成 PS4タイトル”No Man’s Sky” は、無数の惑星を全て自動生 成

    棲息する生物はSuperformula と呼ばれる曲線の数式を元に 生成する No Man’s Sky Hello Games, 2016 Wikipedia: Superformula
  15. 2020年のゲーム開発者  大域照明や流体物理といった重 い挙動を、限られたシーン内な がら機械学習でそれらしく真似 られるようになる  特徴ベクトルを既存の方程式を 使って最適にデザインしている のもそのうちディープラーニン

    グで不要になるかも Global Illumination with Radiance Regression Functions, 2013 Data-driven Fluid Simulations using Regression Forests, 2015 アルゴリズムなんて造れない? なら 機械にやらせればいいじゃない
  16. 2020年のゲーム開発者  そのころモバイルでは…  iPhone 1発売の翌年2008年に、Appleは iPhoneを挿して使うVR HMDを特許出願 し、2015年に特許取得している Apple

    wins patent for a head-mounted iPhone virtual reality display  2018年のiPhone 8ではVRに適したOLEDが採用されるらしい  2010年のiPhone 4から2015年のiPhone 6sは浮動小数点演算 性能(FLOPS)では30倍の開きがあり、2015-2020年でもそれく らい伸びるかも  モバイルでもコンピュートシェーダー活用の機運が高まる!