$30 off During Our Annual Pro Sale. View Details »

ダイナミックな変更を可能にするCyllista Game Engineのオープンワールド向けプロシージャル背景制作ツールと描画機能

Cygames
December 17, 2021

ダイナミックな変更を可能にするCyllista Game Engineのオープンワールド向けプロシージャル背景制作ツールと描画機能

2021/11/14 Cygames Tech Conference

Cygames

December 17, 2021
Tweet

More Decks by Cygames

Other Decks in Technology

Transcript

  1. View Slide

  2. 2/82

    View Slide

  3. 本発表の内容
    3/82
    • Cyllista Game Engine の機能紹介
    – オープンワールドに対応したゲームエンジンの事例として
    • テレイン関連のツールと描画機能
    • フォリッジ関連のツールと描画機能
    • アジェンダ
    1. Cyllista Game Engine
    2. オープンワールドゲーム制作における要求
    3. テレインシステム
    4. フォリッジシステム

    View Slide

  4. Cyllista Game Engine
    4/82

    View Slide

  5. Cyllista Game Engine
    5/82
    • Cygames 内製で開発しているゲームエンジン
    – PC, ハイエンドコンソール向けに開発中
    – Project Awakeningで利用
    • エンジン目標
    – 制作者が最大のパフォーマンスを発揮できる
    – ハードウェアが最大のパフォーマンスを発揮できる
    • 過去のCEDEC講演
    – Cygamesにおける次世代ハイエンドコンソール向けゲームエンジンの開発 [TAG17]
    – Python による大規模ゲーム開発環境 [OKI20]

    View Slide

  6. オープンワールドゲーム
    制作における要求
    6/82

    View Slide

  7. オープンワールドゲーム制作における要求
    7/82
    • 制作効率
    – 広大なレベルをカバーするテレインの効率的な編集
    • 昨今はタイトルにより 4km ~ 32km もの広さ
    – 一度に大量のフォリッジ配置
    • レベルのほとんどの地域で植生が必要
    – 高速イテレーション
    • レベル作成の試行錯誤
    • リアルタイム反映
    – 非破壊ワークフロー
    • 変更を要素ごとに元に戻すことができる
    • ある要素の更新が別の要素の自動更新を促す

    View Slide

  8. オープンワールドゲーム制作における要求
    8/82
    • 描画効率
    – 広大な地形を効率よく描画
    • 近景/遠景ともに
    – 大量のフォリッジを効率よく描画
    • 近景/遠景ともに
    • ゲーム中の高速な動的更新
    – インゲームでのテレイン形状の変更
    – インゲームでのフォリッジ配置や状態の変更

    View Slide

  9. Terrain System
    9/82

    View Slide

  10. テレインシステム
    10/82
    1. データ構成
    2. 基本編集ツール
    3. テレインレイヤー
    4. プロシージャルペイント
    5. テレイン描画

    View Slide

  11. テレインシステム
    11/82
    1. データ構成
    2. 基本編集ツール
    3. テレインレイヤー
    4. プロシージャルペイント
    5. テレイン描画

    View Slide

  12. セクター分割
    12/82
    • 編集とストリーミングの単位
    – セクター毎に地形等の情報を保持
    • ハイトマップ
    • マテリアルIDマップ
    • フォリッジ密度マップ etc.
    – ストリーミング
    • カメラ中心
    • 11x11の範囲 128m
    128m

    View Slide

  13. セクター選択ツール
    13/82
    他ユーザーが
    編集中
    自分が編集中
    • セクターを選択して編集を開始
    – 編集用メモリ確保
    – 編集状態マークを表示
    • 他のユーザーの編集状態を表示
    – ユーザー同士での競合を回避
    • その他様々な機能
    – 頻繁に編集するセクターのブックマーク
    – D&Dによるカメラ移動
    – 3Dビュー上のグリッド切り替え
    – LOD情報のクックをトリガー(後述)

    View Slide

  14. 14/82
    ハイトマップ
    • 解像度 257x257 ( 0.5m / pixel )
    • フォーマット
    – アセット: 32bit EXR
    – ランタイム: R16_UNORM
    ハイトマップ ハイトマップを用いたテレイン描画

    View Slide

  15. 15/82
    データ構成:マテリアルIDマップ
    • マテリアルの ID を格納
    • シェーダーで ID からマテリアル配列を参照
    • 解像度 257x257 ( 0.5m / pixel )
    • 8bit 無圧縮 ( 0 – 255 )
    マテリアル描画結果 マテリアルIDマップ マテリアル配列

    View Slide

  16. 16/82
    データ構成:その他
    • エコトープマップ
    – 最も粗いレベルのマテリアル分布分け
    – 例) 森林地帯、砂漠地帯、湿地帯、雪山
    – 解像度 129x129 ( 1.0m / pixel )
    – 8bit 無圧縮 ( 0 – 255 )
    • 色むらマップ
    – マテリアルの塗り分けとは別にでも色のムラを出すのに使用
    – 解像度 132x132 ( 約 1.0m / pixel )
    – BC1 フォーマット

    View Slide

  17. テレインLOD
    17/82
    • Terrain Quadtree [MOOR18][WEMA17][WID12]
    – テレインのLOD用
    • 各種マップの低解像度版を Quadtree 上位ノードが保持
    – 2km単位のラージセクター内を Quadtree 化
    – セクター選択ツールから、またはナイトリーのジョブで生成
    ラージセクター
    Quadtree
    2km
    2km

    View Slide

  18. テレインLOD
    18/82
    • Quadtreeは5段階
    – セクター (LOD0: 128m)
    • 近景用
    • 基本編集単位
    – 中間 (LOD1, 2, 3: 256m, 512m, 1km)
    • 中景用
    • クック時に生成
    – ラージセクター(LOD4: 2km)
    • 最遠景用
    • クック時に生成
    • 常駐

    View Slide

  19. テレインシステム
    19/82
    1. データ構成
    2. 基本編集ツール
    3. テレインレイヤー
    4. プロシージャルペイント
    5. テレイン描画

    View Slide

  20. 地形編集ツール
    20/82
    ツールボックス
    スカルプト
    マテリアルペイント
    フォリッジ配置
    編集を
    リアルタイム反映
    編集セクターを選択

    View Slide

  21. ハイトマップ編集
    21/82
    • スカルプト機能
    –上げ下げ
    –平坦化
    –スムージング
    –グレースケールマップによる任意形状のブラシ

    View Slide

  22. スカルプトのリアルタイム反映
    22/82
    • 編集中にコリジョン更新
    –テレイン、フォリッジ共に
    • 地面の上のフォリッジ配置にも即座に反映

    View Slide

  23. パスツール
    23/82
    • 道、川を引くツール
    • ハイト、テレインマテリアルの加工
    • デカール配置

    View Slide

  24. メッシュスタンプ
    24/82
    • 任意のメッシュの形状をテレインに転写
    • 山岳のスケールから小さな段差のスケールまで利用
    • 様々な形状のスタンプ用メッシュを用意

    View Slide

  25. テレインシステム
    25/82
    1. データ構成
    2. 基本編集ツール
    3. テレインレイヤー
    4. プロシージャルペイント
    5. テレイン描画

    View Slide

  26. テレインレイヤー
    26/82
    • テレインの任意の範囲(矩形)をレイヤー化
    –山岳等の広範囲からのコピーペースト
    –マテリアルまで含めた移動、複製
    –任意の数をスタック可能
    –マスクに従ってブレンド

    View Slide

  27. テレインレイヤーを移動する動画
    27/ xx

    View Slide

  28. 各種マップのランタイム合成
    28/82
    ② ベースハイトマップと合成
    ① 入力ハイトマップ生成 ③ 点群配置と描画
    ランタイム
    ハイトマップ
    入力テクスチャ
    + トランスフォーム
    + マスクテクスチャ
    テレインレイヤー
    メッシュスタンプ
    パスツール
    ベース
    ハイトマップ
    アセットを直接
    入力として使用
    必要なら
    ベイク
    パスをメッシュ化して
    ハイトマップに変換
    ハイトマップに変換
    必要に応じて
    フォリッジ点群
    再生成
    最終結果
    セクター

    View Slide

  29. テレインシステム
    29/82
    1. データ構成
    2. 基本編集ツール
    3. テレインレイヤー
    4. プロシージャルペイント
    5. テレイン描画

    View Slide

  30. マテリアルIDマップ編集
    30/82
    • ブラシツールで地道にペイント?
    –手動ペイントだけでは物量的に困難
    • 地形が変更されたらやり直し
    草マテリアルを塗る 崖マテリアルを塗る 広大なマップを全部手動で塗り分ける?
    ➡ テレインの形状等に応じて自動でペイント

    View Slide

  31. 分布
    31/82
    Cavity Flow Roughness
    Height
    Slope
    • 分布 : 形状をパラメータ化
    – 地面の傾き、高さ、凸凹具合、etc…
    – 2Dグレースケールマップ
    – Compute Shader で実装

    View Slide

  32. ルールとルールセット
    32/82
    • ルール
    – 分布 + マテリアル
    • ルールセット
    – ルールの集まり
    – ルールセットに基づいて
    自動ペイント

    View Slide

  33. ルールセット
    33/82
    ルールの組み合わせで複雑な結果を得ることが可能
    ペイント前 自動ペイント結果
    Cavity Slope

    View Slide

  34. ルールセット
    34/82
    • エコトープごとにルールセットを定義
    – エコトープマップは手動ペイント
    • ペイントされていない部分のみを更新
    – 手動ペイント部分や確定済みの場所を除外
    – 再ペイントしたい領域はブラシ等でクリア
    ルールセットA ルールセットB

    View Slide

  35. ※プロシージャルマテリアルの動画
    35/ xx

    View Slide

  36. テレイン編集フロー
    36/82
    ①大枠の地形作成
    ④地形の詳細作り込み
    ⑤区画の移動
    ②エコトープ作成
    利用ツール
    作業フロー
    ③大枠のマテリアル割当
    ハイトマップインポータ
    メッシュスタンプ
    テレインレイヤー
    ペイントツール
    プロシージャルペイント
    スカルプトツール
    ペイントツール
    メッシュスタンプ
    パスツール
    テレインレイヤー

    View Slide

  37. テレインシステム
    37/82
    1. データ構成
    2. 基本編集ツール
    3. テレインレイヤー
    4. プロシージャルペイント
    5. テレイン描画

    View Slide

  38. Terrain Quadtree 描画
    38/82
    • Terrain Quadtree 描画
    – Quadtree各段階に対応するサイズのメッシュを描画
    – ロード状態と距離に応じてLODレベルを決定
    – フラスタムカリングして描画

    View Slide

  39. ③カリング判定
    ①レベルNの
    ノードが対象
    Terrain Quadtree 描画
    39/82
    • 表示するノードレベルの判定
    – 子のロード状況に応じて自身のカリング状態を決定
    – 子ノードに対して再帰的に判定
    – スモールセクター(LOD=0)はそれ以上分割されない
    ②ロード状況チェック
    子ノードが
    すべてロード済み
    子ノードが
    一部ロード済み
    子ノードが未ロード
    レベルN全体をカリング
    4分割し、子がロードされて
    いる部分をカリング
    分割せずそのまま表示
    N
    ④N-1を
    同様に処理
    N-1

    View Slide

  40. マテリアルブレンディング
    40/82
    • 上下方向の投影のみでは斜面のテクスチャが伸びる
    – 傾斜が急になるほど顕著
    – 改善するには、横方向からの投影も必要

    View Slide

  41. マテリアルブレンディング
    41/82
    • Triplanar Mapping [GOL17]
    – 伸び防止のためXYZ軸の3方向から投影
    – 各軸の角度とサーフェス法線の角度を
    重みとしてブレンド

    View Slide

  42. マテリアルブレンディング
    42/82
    • ブレンド処理の処理負荷が高い
    – Albedo + NRO = 2テクスチャ
    • NRO = Normal/Roughness/Occlusion をパックしたテクスチャ
    – 4つの各頂点のリニア補間 = 4ブレンド
    • 頂点ごとに1マテリアル
    – Triplanar Mapping = 3ブレンド
    • 崖等のテクスチャ伸び防止
    – 近景と遠景でタイリング数が異なる = 2ブレンド
    • リピート感軽減のために遠景はUVリピート数を減らす
    ➡ ピクセル当たり合計 2 * 4 * 3 * 2 = 48 サンプル

    View Slide

  43. マテリアルブレンディング
    43/82
    • Triplanar Mapping
    – 伸び防止のためXYZ軸の3方向から投影
    – 各軸の角度とサーフェス法線の角度を
    重みとしてブレンド
    • Biplanar Mapping [QUI20]
    – 3軸のうち、ウェイトの高い2軸を
    採用してブレンド
    – ブレンド数を3→2に削減
    – Triplanar Mapping と遜色ない結果

    View Slide

  44. マテリアルブレンディング
    44/82
    • Biplanar Mapping

    View Slide

  45. マテリアルブレンディング
    45/82
    • Stochastic Sampling [MOOR18][WYMC17]
    – 1ピクセルにつき最大4マテリアルのブレンド
    ➡ ウェイトに従って確率的に1マテリアル選択
    – Biplanar Mapping
    ➡ ウェイトに従って確率的に投影方向を選択

    View Slide

  46. マテリアルブレンディング
    46/82
    • Biplanar + Stochastic + α
    – 近景(30mまで)
    • Biplanar Mapping
    – 2 * 4 * 2 * 2 = 32サンプル
    • XYZいずれかに垂直に近い面は
    その軸方向からのマッピングのみ
    – 2 * 4 * 1 * 2 = 16サンプル
    • 同一マテリアルの削減
    – 2 * n * 1 * 2 = 4*nサンプル
    » n は 1 から 4
    – 遠景
    • 確率的に1つのマテリアルを選択
    • 確率的に1つの投影方向を選択(Uniplanar)
    • 2 * 1 * 1 * 2 = 4サンプル

    View Slide

  47. Foliage System
    47/82

    View Slide

  48. フォリッジシステム
    48/82
    1. プロシージャルフォリッジ配置
    2. 点群生成とカリング
    3. 頂点吸着
    4. フォリッジレイヤの依存関係
    5. 遠景フォリッジ
    6. 他システムへの情報提供

    View Slide

  49. フォリッジシステム
    49/82
    1. プロシージャルフォリッジ配置
    2. 点群生成とカリング
    3. 頂点吸着
    4. フォリッジレイヤの依存関係
    5. 遠景フォリッジ
    6. 他システムへの情報提供

    View Slide

  50. フォリッジ配置:要件
    50/82
    • 広大なワールドに効率的にフォリッジを配置したい
    • 大半のエリアでは自動配置したい
    • 作り込みたいエリアは手動配置したい
    • テレインの編集をフォリッジ配置に反映したい
    • ゲームプレイ中の動的変更を可能としたい
    画像差し替え予定

    View Slide

  51. プロシージャルフォリッジ配置
    51/82
    • 特徴
    – GPUで配置
    – ゲーム実行時にリアルタイム配置
    – ルールで自動配置
    • 配置のためのデータ
    – フォリッジマップ:密度、エコトープ
    – 地形マップ:ハイト、ノーマル、マテリアル
    – モデル:植生や石など任意のモデル
    – 配置ルールとパラメーター
    • フォリッジレイヤー
    – モデルと配置パラメーターのセット
    • フォリッジプリセット
    – フォリッジレイヤーの集合

    View Slide

  52. 配置用マップ
    52/82
    • 密度マップ
    – フォリッジ点群の配置密度を保持
    – ペイントツールで手動編集
    – プロシージャルペイントにも対応
    – 4枚利用可能
    • エコトープマップ
    – 大まかな景観の種類と範囲を表現
    • 森林、砂漠、雪山、etc.
    • サブエコトープマップ
    – エコトープ内のバリエーション表現
    • マテリアルIDマップ
    – テレインマテリアルIDを保持

    View Slide

  53. 配置用パラメータ
    53/82
    • 配置パラメータ
    – 配置間隔
    – ランダムスケールと回転範囲
    – 配置するテレインの高度と傾斜範囲
    – 密度マップインデックス
    – 配置されるテレインマテリアル
    – 配置されるサブエコトープ
    …etc.

    View Slide

  54. フォリッジ手動配置動画
    54/ xx

    View Slide

  55. 密度マップのノイズペイント
    55/82
    • 各種パラメータを指定してペイント
    – サイズ
    – イテレーション数
    – ゲイン
    – ディストーション
    …etc.
    • 複数のノイズを合成して作成

    View Slide

  56. 密度マップのノイズペイント
    56/82
    • セルノイズ(ボロノイ)
    – グリッドセルにランダムにポイントをランダム配置
    – 各テクセルからポイントに対する距離フィールドを作成
    – UVにディストーションを適用
    – 閾値を指定して2値化
    格子毎にポイント配置 距離フィールド化 ディストーション適用 2値化

    View Slide

  57. テレインレイヤーと密度マップ
    57/82
    • テレインレイヤーに密度マップも保持
    – フォリッジもまとめてコピーペースト・移動が可能
    – 小規模~大規模な範囲まで有用

    View Slide

  58. 58/ xx
    密度マップまで含めたテレインレイヤーの移動動画

    View Slide

  59. フォリッジシステム
    59/82
    1. プロシージャルフォリッジ配置
    2. 点群生成とカリング
    3. 頂点吸着
    4. フォリッジレイヤの依存関係
    5. 遠景フォリッジ
    6. 他システムへの情報提供

    View Slide

  60. 点群パターン
    60/82
    • 密度マップを点群に変換
    – ランダムでなく Deterministic な配置
    – 密度に関わらず偏りのない一様な分布
    • 配置パターン
    – 事前生成した固定の配置パターン
    – 各点が2D座標と密度閾値(0~1)を保持
    – 密度値が閾値を超える点を残す
    – セクターにタイリング
    – 配置間隔でパターンをスケール

    View Slide

  61. 点群生成
    61/82
    セクター
    カリング
    点群生成
    &ソート
    点群
    カリング
    描画
    描画フェーズ
    点群生成フェーズ
    ビューフラスタム
    セクター
    配置点群
    1. ビューフラスタム内に存在するセクターを特定
    2. 点群を生成してソート
    • 可視性が変わったセクターのみ生成し直し
    3. 点単位にカリングして描画 参考資料 [MUI17]

    View Slide

  62. 点群ソート
    62/82
    • 点群生成はGPUで並列実行されるため結果は順不同
    – フォリッジレイヤー単位でソートが必要
    • カリングと描画がフォリッジレイヤー単位のため
    – 場合によってはセクター単位のソートも必要
    • セクター単位でリードバックする必要があるレイヤー(コリジョンありの点群)
    • セクター単位で別マップにラスタライズ描画するレイヤー(ブッシュマップ)
    • ソートキー
    1. フォリッジレイヤーインデックス(0~255、256種のフォリッジ)
    2. アクティブセクターインデックス(0~120、11*11のロード済みセクター)
    • 2つのキーを1つに統合してソート
    • GPU Radix Sort [HAHO11]
    – ソートする値の範囲が限定されている場合に実用的

    View Slide

  63. フォリッジシステム
    63/82
    1. プロシージャルフォリッジ配置
    2. 点群生成とカリング
    3. 頂点吸着
    4. フォリッジレイヤの依存関係
    5. 遠景フォリッジ
    6. 他システムへの情報提供

    View Slide

  64. 頂点吸着
    64/82
    • 地面付近の頂点を地面までオフセット
    – 頂点シェーダでハイトマップを参照
    • コリジョンは未対応
    – コリジョンのあるメッシュは、ズレが目立たない範囲で利用
    – 大きな木の根は、ハイトマップ側のコリジョン変形を検討中

    View Slide

  65. フォリッジシステム
    65/82
    1. プロシージャルフォリッジ配置
    2. 点群生成とカリング
    3. 頂点吸着
    4. フォリッジレイヤの依存関係
    5. 遠景フォリッジ
    6. 他システムへの情報提供

    View Slide

  66. フォリッジレイヤの依存関係
    66/82
    • 例)高木の周り10m以内だけ低木を植えたい
    – レイヤー間に依存関係を持つ
    – 依存される側(高木)の点群を Dependency Map にラスタライズ
    – 依存する側のレイヤー(低木)は Dependency Map を参照
    Dependency Map
    フィルタ後
    フィルタ前

    View Slide

  67. フォリッジシステム
    67/82
    1. プロシージャルフォリッジ配置
    2. 点群生成とカリング
    3. 頂点吸着
    4. フォリッジレイヤの依存関係
    5. 遠景フォリッジ
    6. 他システムへの情報提供

    View Slide

  68. 遠景フォリッジ
    68/82
    • アクティブセクター範囲外ではフォリッジ配置データがない
    – 必要なマップがロードされていない → 点群を配置できない
    • レジデントマップ
    – 全セクター分割マップを一枚にマージ
    – 解像度はセクター単位マップの1/4
    – ストリーミングなし、メモリに常駐
    – Jenkins で毎日自動生成

    View Slide

  69. フォリッジインポスター
    69/82
    • エンジン内のツールでインポスターテクスチャ生成
    – アルベド、ノーマル、ラフネス、オクルージョン、透過色、厚み
    • Octahedral Impostors [BRU18]
    – 上半球の様々な角度からキャプチャ
    – キャプチャ時のカメラ方向を、八面体展開したUVに対応付け
    – 描画時は視線ベクトルで同様の計算を行いUVを決定

    View Slide

  70. フォリッジシステム
    70/82
    1. プロシージャルフォリッジ配置
    2. 点群生成とカリング
    3. 頂点吸着
    4. フォリッジレイヤの依存関係
    5. 遠景フォリッジ
    6. 他システムへの情報提供

    View Slide

  71. 他システムへの情報提供
    71/82
    • 点群の座標はゲーム実行時まで不明
    • 描画以外の機能へ配置情報を提供
    – 例)物理、サウンド、ゲームプレイ
    – 点群データはビデオメモリに存在
    • メインメモリへの転送 (リードバック)が必要

    View Slide

  72. 情報提供: コリジョン
    72/82
    • 配置データを物理システムに提供
    • コリジョンのあるフォリッジレイヤーはセクターロード時に
    必ず点群配置&リードバック
    • 採集アイテムの配置も類似の仕組みで実現

    View Slide

  73. 情報提供: ブッシュマップ
    73/82
    • キャラクターがブッシュの中にいるか知りたい
    • ブッシュ属性のある点群をブッシュマップにラスタライズ
    • ハイトフィールドのコリジョンデータに埋め込み

    View Slide

  74. 情報提供: 点群クエリー
    74/82
    • 指定した円の内にあるフォリッジ配置点を取得
    • サウンドとゲームプレイで活用
    • クエリー結果の点数は少量
    – リードバックするデータ量を抑えるため

    View Slide

  75. 機能とデータの関係図
    75/82
    編集ツール 対象マップ
    出力
    入力
    入出力
    ハイトマップインポータ
    メッシュスタンプ
    手動ペイントツール
    プロシージャルペイント
    スカルプトツール
    パスツール
    テレインレイヤー
    ハイトマップ
    マテリアルIDマップ
    エコトープマップ
    色むらマップ
    密度マップ
    サブエコトープマップ
    テレイン描画システム
    フォリッジ配置システム
    コリジョンシステム サウンドシステム
    ノイズペイント
    配置点群
    利用システム
    Dependencyマップ
    ゲームプレイシステム

    View Slide

  76. 機能とデータの関係図
    76/82
    編集ツール 対象マップ
    出力
    入力
    入出力
    ハイトマップインポータ
    メッシュスタンプ
    手動ペイントツール
    プロシージャルペイント
    スカルプトツール
    パスツール
    テレインレイヤー
    ハイトマップ
    マテリアルIDマップ
    エコトープマップ
    色むらマップ
    密度マップ
    サブエコトープマップ
    テレイン描画システム
    フォリッジ配置システム
    コリジョンシステム サウンドシステム
    ノイズペイント
    配置点群
    利用システム
    Dependencyマップ
    ゲームプレイシステム

    View Slide

  77. 機能とデータの関係図
    77/82
    編集ツール 対象マップ
    出力
    入力
    入出力
    ハイトマップインポータ
    メッシュスタンプ
    手動ペイントツール
    プロシージャルペイント
    スカルプトツール
    パスツール
    テレインレイヤー
    ハイトマップ
    マテリアルIDマップ
    エコトープマップ
    色むらマップ
    密度マップ
    サブエコトープマップ
    テレイン描画システム
    フォリッジ配置システム
    コリジョンシステム サウンドシステム
    ノイズペイント
    配置点群
    利用システム
    Dependencyマップ
    ゲームプレイシステム

    View Slide

  78. 78/82
    まとめ
    • テレインシステム
    –広範囲でも高効率に編集できるツールを整備
    –テレインレイヤー等で非破壊ワークフローを推進
    –マテリアルブレンディングやQuadtreeによるLOD等の最適化
    • フォリッジシステム
    –プロシージャル配置により高効率かつ自然に見える植生分布を実現
    –最適化したリアルタイム配置により製作時、ゲーム中の両方で
    変更を即時反映

    View Slide

  79. 79/82
    Cyllista Game Engine が掲げる指針に沿った機能開発
    • ハードウェアが最大のパフォーマンスを発揮できる
    – オープンワールド前提の設計
    – 継続的な最適化
    – ゲームの要求を満たしつつ処理負荷を可能な限り低減
    • 開発者が最大のパフォーマンスを発揮できる
    – ベイクや事前データの準備を極力減らし、ランタイム実行
    – 機能の利便性、実行速度、メンテナンスのためのシンプルさを注意深くバランス
    – 我々のチームにとって最適な機能開発
    まとめ

    View Slide

  80. 80/82
    最高のエンジンで最高のゲームを

    View Slide

  81. References
    81/82
    [TAG17] 多胡 順司. Cygamesにおける次世代ハイエンドコンソール向けゲームエンジンの開発 ~最高のコンテンツを支えるゲームエンジン~. CEDEC2017
    https://tech.cygames.co.jp/archives/3043/
    [OKI20] 沖 幸太朗. Python による大規模ゲーム開発環境 ~Cyllista Game Engine 開発事例~. CEDEC2020
    https://tech.cygames.co.jp/archives/3442/
    [MOOR18] Jeremy Moore. Terrain Rendering in ’Far Cry 5’. GDC2018
    https://www.gdcvault.com/play/1025480/Terrain-Rendering-in-Far-Cry
    [WEMA17] Guillaume Werle, Benoit Martinez. ‘Ghost Recon Wildlands’: Terrain Tools and Technology. GDC2017
    https://www.gdcvault.com/play/1024029/-Ghost-Recon-Wildlands-Terrain
    [WID12] Mattias Widmark. Terrain in Battlefield 3: A Modern, Complete and Scalable System. GDC2021
    https://www.gdcvault.com/play/1015676/Terrain-in-Battlefield-3-A
    [GOL17] Ben Golus. Normal Mapping for a Triplanar Shader.
    https://bgolus.medium.com/normal-mapping-for-a-triplanar-shader-10bf39dca05a
    [QUI20] Inigo Quilez. Biplanar Mapping.
    https://iquilezles.org/www/articles/biplanar/biplanar.htm
    [WYMC17] Chris Wyman, Morgan McGuire. Hashed Alpha Testing. I3D2017
    https://casual-effects.com/research/Wyman2017Hashed/index.html

    View Slide

  82. References
    82/82
    [HOOK21] JT Hooker. Boots on the Ground: The Terrain of 'Call of Duty’. GDC2021
    https://www.gdcvault.com/play/1027463/Advanced-Graphics-Summit-Boots-on
    [WOH21] Eric Wohllaib. Procedural Grass in 'Ghost of Tsushima. GDC2021
    https://www.gdcvault.com/play/1027214/Advanced-Graphics-Summit-Procedural-Grass
    [MUI17] GPU-based Procedural Placement in Horizon Zero Dawn. GDC2017
    https://www.guerrilla-games.com/read/gpu-based-procedural-placement-in-horizon-zero-dawn
    [HAHO11] Takahiro Harada, Lee Howes. Introduction to GPU Radix Sort.
    http://www.heterogeneouscompute.org/wordpress/wp-content/uploads/2011/06/RadixSort.pdf
    [BRU18] Ryan Brucks. Octahedral Impostors.
    https://shaderbits.com/blog/octahedral-impostors

    View Slide