---
title: GCC26_niraya_pub
tags:  #ゲーム開発  
author: [株式会社ヘキサドライブ](https://www.docswell.com/user/hexadrive)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/DEY42P3GJM.jpg?width=480
description: GCC26の「圧倒的不評に立ち向かう--40項目修正を支えたチェック機構」のスライドの公開用資料です
published: March 28, 26
canonical: https://www.docswell.com/s/hexadrive/Z8NGDX-2026-03-28-niraya
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/DEY42P3GJM.jpg)

圧倒的不評に立ち向かう!
2週間で5回,40項目修正を支えたチェック機構
株式会社ヘキサドライブ/山口裕也
1


# Page. 2

![Page Image](https://bcdn.docswell.com/page/VJNY85V878.jpg)

これはGAME CREATORS CONFERENCE ’26の公開用スライドです
実際の講演で使用されるスライドとは若干の差異があります
2


# Page. 3

![Page Image](https://bcdn.docswell.com/page/YE9PKY6XJ3.jpg)

自己紹介
山口裕也
株式会社ヘキサドライブ
去年ぶりですね
3


# Page. 4

![Page Image](https://bcdn.docswell.com/page/GE8DR6Z9ED.jpg)

このセッションはこんな方にお勧め
• 自動プレイシステムを組み込んでみたいけれど、
どこから手を付けたら良いか分からない人
• AIエージェントを使った開発に興味はあるが、ど
こから手を付けたらよいか分からない人
4


# Page. 5

![Page Image](https://bcdn.docswell.com/page/LELMK9DM7R.jpg)

アジェンダ
5


# Page. 6

![Page Image](https://bcdn.docswell.com/page/4JMY2ZP6JW.jpg)

アジェンダ
• 自動プレイの実装解説
• HDRPからURPへの移行
• AIを使ったR&amp;Dのすすめ
6


# Page. 7

![Page Image](https://bcdn.docswell.com/page/PJR9M61N79.jpg)

自動プレイの実装解説
7


# Page. 8

![Page Image](https://bcdn.docswell.com/page/PEXQVMY8JX.jpg)

■■ノニラヤの紹介
Steamで販売中の和風マイルドホラーゲーム
Unity6でほぼ一人で開発
去年メイキングのお話をさせて頂きました
そんなに怖くないよ
8


# Page. 9

![Page Image](https://bcdn.docswell.com/page/3EK9QG3LED.jpg)

圧倒的不評の話
• ゲームは週末にリリース
• 週明けから増えるおすすめしませんレビュー
• 圧倒的不評を頂き、即座に対策を開始
• 謎解き用のヒント追加
• 戦闘のバランス調整
9


# Page. 10

![Page Image](https://bcdn.docswell.com/page/L73WPNG675.jpg)

修正はすすむ
しかし
10


# Page. 11

![Page Image](https://bcdn.docswell.com/page/87DKLW1MJG.jpg)

その修正、他のバグを生んでない?
• 修正=変更は思わない副作用を生んでいるかも
• 副作用が致命的でないかチェックが必要
• でもチェックしてたら修正の時間が取れない
11


# Page. 12

![Page Image](https://bcdn.docswell.com/page/VJPK29QQE8.jpg)

自動プレイがあるじゃない
去年の講演で軽く触れた自動プレイ
これを活用する事でチェックを減らせるのでは?
12


# Page. 13

![Page Image](https://bcdn.docswell.com/page/2EVVDM5PEQ.jpg)

自動プレイでやってる事
• 規定ルートに沿ってクリアするまで進行する
• 敵に対しては無敵
• 謎解きはフラグがあってれば即クリア
• ※Jenkins経由のみOBSで録画
たったこれだけだが、修正に伴う予期せぬ進行不能
を除外できる
13


# Page. 14

![Page Image](https://bcdn.docswell.com/page/57GLYG6QEL.jpg)

頼るしかない
多分最低限の保証は出来ている…と思う
自動プレイが通ればリリースしよう!
14


# Page. 15

![Page Image](https://bcdn.docswell.com/page/4EQYMX4WJP.jpg)

自動プレイで見つかった事例
• コリジョン調整でギミックにアクセスできなく
なっていた
• BoxColliderのIsTriggerのチェックが外れて進行で
きなくなっていた
しっかり再チェックが大変な要素は見つけている
15


# Page. 16

![Page Image](https://bcdn.docswell.com/page/KJ4WV6Q171.jpg)

デプロイの流れ
• 修正してsubmitすると自動ビルドされる
• 自動ビルドが終わると自動プレイが始まる
• 全行程が成功すると最後に成功したビルドが
steamの開発用ブランチにデプロイ出来る
※基本深夜に1回デプロイされる
更新しました
ビルドしたんで
自動プレイして
OKでした
深夜にアップす
るよ
16


# Page. 17

![Page Image](https://bcdn.docswell.com/page/LE1Y3VP57G.jpg)

ビルドエンジニアに感謝
Jenkinsから実行される自動プレイは3倍速実行で
OBS録画されるので、イテレーションが早い
17


# Page. 18

![Page Image](https://bcdn.docswell.com/page/GEWGPL2WJ2.jpg)

自動プレイの実装のざっくり解説
• 超シンプル
• 記録中と再生中で専用のシングルトンが生成
• 再生中はプレイヤーの行動結果を記録
• 記録中はプレイヤーの操作処理をバイパス
それだけですが、次ページから簡単解説します
18


# Page. 19

![Page Image](https://bcdn.docswell.com/page/47ZLKMD2J3.jpg)

自動プレイの中身
• 行動データーはInterface
• 各行動に合わせてclass作成
Interfaceに意味は無いですclassでもOK
19


# Page. 20

![Page Image](https://bcdn.docswell.com/page/YJ6WQN36JV.jpg)

自動プレイ情報を可視化すると
こんな感じで経路が記録されて
黄色いところでギミックアクセスしてます
可視化・編集ツールの作成
おすすめします
20


# Page. 21

![Page Image](https://bcdn.docswell.com/page/GJ5MR5L5J4.jpg)

自動プレイの記録コードの一部
記録用classに
行動毎の記録関数を作成
21


# Page. 22

![Page Image](https://bcdn.docswell.com/page/LE3WPNL5E5.jpg)

自動プレイの記録コードの一部
Playerやギミックで
記録処理を呼び出す。
こちらはPlayerの
更新コード
22


# Page. 23

![Page Image](https://bcdn.docswell.com/page/8EDKLWNY7G.jpg)

自動プレイの記録
記録無効
プレイヤー更新
入力情報
行動
行動結果を記録
記録有効
移動
ギミックアクセス
etc
23


# Page. 24

![Page Image](https://bcdn.docswell.com/page/V7PK2952J8.jpg)

自動プレイの再生コードの一部
再生用classでは行動完了
したら
次のデーターを取り出す。
一定時間完了しないとき
はエラーにする。
24


# Page. 25

![Page Image](https://bcdn.docswell.com/page/2JVVDMPXJQ.jpg)

自動プレイの再生コードの一部
再生用class続き
25


# Page. 26

![Page Image](https://bcdn.docswell.com/page/5EGLYGPRJL.jpg)

自動プレイの再生コードの一部
再生用class続き
26


# Page. 27

![Page Image](https://bcdn.docswell.com/page/4JQYMX2Y7P.jpg)

自動プレイの再生コードの一部
プレイヤー側
各ステートで
必要な行動を処理
27


# Page. 28

![Page Image](https://bcdn.docswell.com/page/K74WV6LZE1.jpg)

自動プレイの再生
再生無効
プレイヤー更新
入力情報
行動
行動情報
再生有効
行動結果を確認
次の行動を取り出し
目的地か?
正しいギミックに
アクセスしたか?
etc
28


# Page. 29

![Page Image](https://bcdn.docswell.com/page/LJ1Y3VLDEG.jpg)

圧倒的安心感
• 結構強気にバージョンアップを繰り返せた
• この記事を書いているタイミングでは
賛否両論の評価を頂けた
29


# Page. 30

![Page Image](https://bcdn.docswell.com/page/GJWGPLV872.jpg)

但し自動プレイは万能じゃない
以下の不具合は自動プレイで見つからなかった
• ポーズしなくなっていた
• 敵登場演出中に足踏みが止まらなくなっていた
• ゲームオーバーからタイトルに戻ると画面が変
• 足跡が出ない、足音の種類が一致していない
30


# Page. 31

![Page Image](https://bcdn.docswell.com/page/4EZLKM4973.jpg)

そして
バージョンアップは不具合修正・調整だけじゃない
31


# Page. 32

![Page Image](https://bcdn.docswell.com/page/Y76WQN3D7V.jpg)

HDRPからURPへの移行
32


# Page. 33

![Page Image](https://bcdn.docswell.com/page/G75MR5L874.jpg)

HDRPを捨てる決意
社内でのチェックではD3D11ならば安定していた
が海外からのレビューでとにかく不安定との事
URPならモバイル含め幅広く使われていて
安定しているハズ!
それにきっと負荷も軽いハズ!
見切り発車良くない
33


# Page. 34

![Page Image](https://bcdn.docswell.com/page/9J29DNLVER.jpg)

環境とか進め方とか
• 環境はURP17 deferred+ HDR
• 移行期間はおよそ2ヶ月(1日の稼働率は70%未満)
• 異なる種類の問題全てをほぼ同時に進行する事で
大きな問題が残らないように進行
34


# Page. 35

![Page Image](https://bcdn.docswell.com/page/DEY42PQQJM.jpg)

移行の為に必要だった主な作業
• シェーディングモデル5種類のシェーダー作成
• 全マテリアルのURP移行(ShaderGraphで約70)
• 一部VFX Graphの再構築
• テッセレーションの為にshaderlabコードを作成
• 必須プロセスを含む特殊描画4種対応
• ライティングをベイク方式に移行
• 水面システムの作成
35


# Page. 36

![Page Image](https://bcdn.docswell.com/page/VJNY85K278.jpg)

シェーディングモデルの移行
対象は以下
• Subsurface Scattering
• Hair
• Fabric
• Translucence
• Eye
36


# Page. 37

![Page Image](https://bcdn.docswell.com/page/YE9PKYVDJ3.jpg)

シェーディングモデルの解決方法
URP+ShaderGraphのカスタムライティング機能
シェーディングモデルをhlslで記述出来る
ShaderGraphからはUnlitで出力
37


# Page. 38

![Page Image](https://bcdn.docswell.com/page/GE8DR6P5ED.jpg)

でもシェーディングモデルの専門家じゃない
カスタムライティング使うのも初めて
シェーディングモデル調査もしないといけない
こういうページ見て
「数式はいいコードを出せ」って思わないといけない
https://simonstechblog.blogspot.com/2015/02/pre-integrated-skin-shading.html
38


# Page. 39

![Page Image](https://bcdn.docswell.com/page/LELMK9137R.jpg)

救世主到来
39


# Page. 40

![Page Image](https://bcdn.docswell.com/page/4JMY2ZWMJW.jpg)

Antigravityとは?
AI総合開発環境
エディター内のチャットでAIに指示を出すことで
必要なソースコードの生成・編集もしてくれる
40


# Page. 41

![Page Image](https://bcdn.docswell.com/page/PJR9M6YL79.jpg)

どうしてAntigravity?
類似製品を幾つか使った結果、
個人的にはお金と成果のバランスが良い気がした
• Cursor … 賢いがクレジット消費が爆速
• Antigravity … 使用制限をあまり気にしなくて良い
• GitHub Copilot … バグの調査もままならない
41


# Page. 42

![Page Image](https://bcdn.docswell.com/page/PEXQVM46JX.jpg)

AIにお願い
チャット欄に
お願いを書くだけで、それっぽいものが作られる
URP17のカスタムライティングを使ったPre-Integrated Skinシェーダーの実装依頼
依頼内容:
Assets/Shaders/Skin/skin.hlslを作成
URP17のShaderGraphから呼び出されるカスタムライティングによるPre-Integrated Skinに基づいたシェーディングモデル
のコードを作成
Main Lightの対応は不要Additional LightsとAdaptive Probe Volumesに対応して
併せてLUTを生成するツールも作成して下さい
LUTはScriptableObjectに出力パスを含んだパラメーターを記録して、出力ボタンで再生成できるようにして
参照:
ライト情報へのアクセス方法については以下を参考にして
https://docs.unity3d.com/ja/current/Manual/urp/lighting/custom-lighting-introduction.html
https://docs.unity3d.com/ja/current/Manual/urp/use-built-in-shader-methods-lighting.html
https://docs.unity3d.com/ja/current/Manual/urp/use-built-in-shader-methods-additional-lights-fplus.html
https://docs.unity3d.com/ja/current/Manual/urp/use-built-in-shader-methods-indirect-lighting.html
42


# Page. 43

![Page Image](https://bcdn.docswell.com/page/3EK9QGZGED.jpg)

AIが数分でやってくれました
簡単なツール類はほぼ完ぺきに作ってくれる。
ライティングのサンプルがずれたりするので、
HLSLの細かい部分を修正するかして貰って終わり。
43


# Page. 44

![Page Image](https://bcdn.docswell.com/page/L73WPND575.jpg)

無事移行完了
予定より早く移行を完了出来た
AIすごい
44


# Page. 45

![Page Image](https://bcdn.docswell.com/page/87DKLWPYJG.jpg)

ライティングの移行
• Deferred+での1カメラのライト上限256個
(一つのステージに30～500個くらいの点光源)
• Point lightがサイズを持たない,Specular切れない
(一番致命的全てのライトに鋭いハイライトが発生する)
• Area Lightがベイク専用, Tube Lightがない
ベイクするしかない
45


# Page. 46

![Page Image](https://bcdn.docswell.com/page/VJPK29N2E8.jpg)

ライトベイクの問題
一括でベイク出来ない
至る所で他のステージのメッシュが重なっている
46


# Page. 47

![Page Image](https://bcdn.docswell.com/page/2EVVDMKXEQ.jpg)

ライトベイクの問題解決の兆し
公式ページで対策を発見
https://docs.unity3d.com/ja/current/Manual/urp/probevolumesbakedifferentlightingsetups.html
47


# Page. 48

![Page Image](https://bcdn.docswell.com/page/57GLYGQREL.jpg)

ベイクの解決方法を検証する
凄く裏技感を感じる…が検証したら確かに動く!
1.
2.
3.
4.
ライトプローブだけの運用にする
最初に全部入れてプローブの位置を決定する
プローブポジションを固定してから、重ならないメッシュの
組み合わせでシナリオをベイク
適切なタイミングでライティングシナリオをブレンドする
48


# Page. 49

![Page Image](https://bcdn.docswell.com/page/4EQYMXKYJP.jpg)

ベイクもAIに補助してもらう
補助するツールを10分位でAIに作ってもらった
• ライトマップ設定を探すツール(ライトプローブだけにするため)
• ベイクシーンの表示制御ツール
49


# Page. 50

![Page Image](https://bcdn.docswell.com/page/KJ4WV6PZ71.jpg)

ベイク問題も解決したが
ベイク時間だけはAIにも短縮できず
結構な時間を調整とベイクに費やした
50


# Page. 51

![Page Image](https://bcdn.docswell.com/page/LE1Y3V9D7G.jpg)

ポスプロ&amp;特殊描画移行の問題
かなりの数があるので全てを作ることは出来ない
51


# Page. 52

![Page Image](https://bcdn.docswell.com/page/GEWGPLQ8J2.jpg)

ポスプロ&amp;特殊描画はOSS主体
先人に感謝!
• Auto Exposure
https://github.com/Lepsima/Auto-Exposure-Unity-6-URP
• Screen Space Reflection
https://github.com/mseonKim/URP-ScreenSpaceReflection
• Physically Based Sky + Cloud
https://github.com/jiaozi158/UnityPhysicallyBasedSkyURP
https://github.com/jiaozi158/UnityVolumetricCloudsURP
• Volumetric Fog
https://github.com/CristianQiu/Unity-URP-Volumetric-Light
• Water
しっくりこなかった
52


# Page. 53

![Page Image](https://bcdn.docswell.com/page/47ZLKMW9J3.jpg)

でもOSSはHDRPの機能と同じではない
それにちょっとバグっぽい挙動する
そうだAIに手伝ってもらって改造しよう!
53


# Page. 54

![Page Image](https://bcdn.docswell.com/page/YJ6WQNGDJV.jpg)

改造事例
Auto Exposure
OK Google!
見た目と処理をHDRPに近づけて
できました
54


# Page. 55

![Page Image](https://bcdn.docswell.com/page/GJ5MR5V8J4.jpg)

修正事例
Volumetric Cloud
OK Google!
Volumetric Cloudの雲のアニメーションがループしていないから修正して
制御用の変数のリセット周期とシェーダーが計算で使っている周期が一致していないみたい
できました
55


# Page. 56

![Page Image](https://bcdn.docswell.com/page/9E29DN3V7R.jpg)

作成事例
Local Volumetric Fogが別途必要だったので作成
Local Volumetric Fogの実装依頼
以下の条件を満たしたLocal Volumetric Fogを作って
Volumetric Fogの直前に動作する
URP17のRenderGraphに対応する
Additional LightとLPVに対応する
Raymarchingのステップ数をVolumeで変更する
できました
56


# Page. 57

![Page Image](https://bcdn.docswell.com/page/D7Y42P1QEM.jpg)

テッセレーションの移行
残念ながら.shaderを自力で書いた
Deferred+のパス構成等詳しくないままAIにお願い
した結果上手く行かなかった。
もう二度と書きたくない。
57


# Page. 58

![Page Image](https://bcdn.docswell.com/page/VENY8522J8.jpg)

これで一通り完了
後述のWater以外の移行は無事完了
URP版のリリースも間近
58


# Page. 59

![Page Image](https://bcdn.docswell.com/page/Y79PKY1DE3.jpg)

順調に見せかけて問題発生
描画負荷が爆裂問題
ライトをベイクしたのに数FPSしか出ない
Frame Debuggerを確認すると信じられない数の
Shadowが描画されている
追加ロードしたシーンに配置されている影付き点光
源がBake設定なのにRealtimeとして動作していた
Awakeで無効化するスクリプトで解消
59


# Page. 60

![Page Image](https://bcdn.docswell.com/page/G78DR6457D.jpg)

でも、なんやかんやあって
およそ1.5倍速程度で動作するようになりました
※ただしこれはURPの力というよりは影描画の削減が大きい
60


# Page. 61

![Page Image](https://bcdn.docswell.com/page/L7LMK963JR.jpg)

URP移行を終えて
• AIエージェントが強すぎる
• シェーダーの様な専門作業の調査時間が大幅短縮
• 簡単なツールなら爆速で作ってくれる
本編開発の時に使っていれば…
• 移行出来なくはない
• 最初からベイク運用だったら難度は更に下がる
• URPはライトが拡張されないと将来不安
• URPにしたから高速化するわけではない
61


# Page. 62

![Page Image](https://bcdn.docswell.com/page/4EMY2Z5MEW.jpg)

AIを使ったR&amp;Dのすすめ
62


# Page. 63

![Page Image](https://bcdn.docswell.com/page/PER9M63LJ9.jpg)

きっかけはWater
HDRPのWaterシステムの代替OSSを調査したが
しっくりくるものが無かった
UVスクロールか波形重ね合わせで自作を検討
63


# Page. 64

![Page Image](https://bcdn.docswell.com/page/P7XQVM96EX.jpg)

欲が出た
そもそも、HDRPのWaterシステムも
滝つぼのRippleの動きが好きじゃなかった
画像はHDRPのもの
うねりを
被せただけに見える
64


# Page. 65

![Page Image](https://bcdn.docswell.com/page/37K9QGPG7D.jpg)

こんな川が作りたかった
Rippleで生まれた波紋が水流に合成されて欲しい
水流は障害物を避けて欲しい
65


# Page. 66

![Page Image](https://bcdn.docswell.com/page/LJ3WPNX5J5.jpg)

AIなら作れるのでは?
結論 出来た
画像は今回作ったもの
波紋が水流に
溶け込んでいる
Foam(泡)は失われた
66


# Page. 67

![Page Image](https://bcdn.docswell.com/page/8JDKLW2YEG.jpg)

AIが河川システムを作るまで
ということで
具体的なステップを紹介しつつ
困ったことやAIを操るコツを紹介します
67


# Page. 68

![Page Image](https://bcdn.docswell.com/page/VEPK291278.jpg)

AIが河川システムを作るまで
前提:
• ゲームプロジェクトとは別の検証専用プロジェクト
• URP-ScreenSpaceReflectionと協調させる
• バージョン管理はgit
68


# Page. 69

![Page Image](https://bcdn.docswell.com/page/27VVDMYX7Q.jpg)

AIが河川システムを作るまで
最初に全貌を伝えておいてコーディングさせない
作られたレポートを基にチャットで情報を足す
河川専用の水面システムの作成相談
依頼内容:
以下の要件を満たす水面描画システムを作成したい
- URP17で動作する
- RenderGraphに対応してURP-ScreenSpaceReflectionの描画タイミングより前に動作する
- Deferred+で動作する
- 水面メッシュを矩形とカーブに沿って作成できるようにする
- 水面に発生する波紋はシミュレーションで作成する
- 波紋生成コンポーネントや障害物コンポーネントでシミュレーションに介入できる
- 別のコンポーネントから指定した位置での水面の高さを取得できる
コーディングせずに構造の設計を行って日本語でレポートを作成して下さい
69


# Page. 70

![Page Image](https://bcdn.docswell.com/page/5JGLYG9R7L.jpg)

AIが河川システムを作るまで
ある程度固まったら順番に実装を進める
細かい粒度で新規チャットで依頼する
AIを信用できないときは実装プランを先に出させる
河川システム用のメインコンポーネントの実装依頼
依頼内容:
基底クラスコンポーネントから以下2つのコンポーネントを派生させる
- 指定したサイズで矩形メッシュを作成するコンポーネント
- カーブに沿ってメッシュを作成するコンポーネント
共通化できる情報は全て基底クラスに実装して
70


# Page. 71

![Page Image](https://bcdn.docswell.com/page/47QYMXWYEP.jpg)

コード生成量は出来るだけ少なくする
一気にコードが生成されるとレビューがつらい
実際欲をかいてレビューを疎かにして苦しんだ
71


# Page. 72

![Page Image](https://bcdn.docswell.com/page/KE4WV6KZJ1.jpg)

レビュー前にエラーと動作確認
そもそもエラーがあったり、
正常に動作しないコードが作られる事が多々ある
動くことを確認してからレビュー
72


# Page. 73

![Page Image](https://bcdn.docswell.com/page/L71Y3VXDJG.jpg)

細かくコミットする
レビューがOKなら忘れずコミット
次の指示でAIがやらかすかもしれない
73


# Page. 74

![Page Image](https://bcdn.docswell.com/page/G7WGPLN8E2.jpg)

一つ出来たら次に進む
コンポーネント等の具体的な名前が確定していたら
AIが困らないように必ず名称で指示する
RiverSurfaceBaseのRenderGraph対応
依頼内容:
- RiverSurfaceBaseで作成されたメッシュをURP17のRenderGraphで描画されるようにして
- G-Bufferのライティング後、URP-ScreenSpaceReflectionより前に描画を完了して
-ライティングはAdditional Lightsのみに対応してMain Lightは今回は不要です
-ライティングレイヤーにも対応して
コーディングせずに実装プランを日本語でレポートして
74


# Page. 75

![Page Image](https://bcdn.docswell.com/page/4JZLKM39E3.jpg)

出来るだけ細かく機能追加とチェック
テッセレーションやシェーディングの基本指示
このテッセレーションは無事実装出来た…悔しい
RiverSurfaceBaseのテッセレーション対応依頼
依頼内容:
- RiverWater.shaderの描画をテッセレーション対応してください
- 影描画は不要です
- 調整パラメーターはRiverSurfaceBaseに実装して、マテリアルへのパラメーター受け渡しを行って下さい
RiverWater.shaderのシェーディング修正依頼
依頼内容:
- 直前のライティング済みバッファを使用して屈折表現を実装して
- 同じく深度バッファを参照して深さに合わせて透明度を変更して
- 透明度を調整するパラメーターはRiverSurfaceBaseに実装して
75


# Page. 76

![Page Image](https://bcdn.docswell.com/page/YE6WQNXDEV.jpg)

AIと一緒に悩むことも
シミュレーションはコレジャナイを繰り返す
RiverSurfaceBaseのシミュレーション対応依頼
依頼内容:
RiverSurfaceBaseに水流のシミュレーション処理を追加してください
極力compute shaderだけで完結するような構造にして下さい
毎フレームランダムに波紋を発生させて下さい
河川をイメージして水流を計算してください
↑の依頼の前にパーティクルによるシミュレーションを試しましたが100x100mでは非現実的で全部巻き戻し
↓の実装結果は路面に雨が降ったようになっただけで、納得いく結果が得られず相談してみたりするが改善せず
RiverWater.shaderのシミュレーション修正相談
雨が降ったような波紋が発生するだけで川の波の様には見えません
河川にらしい波を作る方法ないですかね?
76


# Page. 77

![Page Image](https://bcdn.docswell.com/page/GE5MR5X8E4.jpg)

閃きが成果につながると嬉しい
流れの激しい川の波の発生要因を妄想して試行する
偶然、以下が良い結果を出した
GridRipple.computeのシミュレーション改善依頼
依頼内容:
現在波の発生にランダムな外力を適応していますが、川底の地形起因にしてみてはどうでしょうか
川底に砂利があったり、川の地形の隆起の変化や岩等があって通過するときの水流の速度変化や地形への衝突で波を発生
させてみてはどうでしょうか?
77


# Page. 78

![Page Image](https://bcdn.docswell.com/page/9729DNXVJR.jpg)

基本が出来たのであと少し
様子を見ながら機能を盛る
GridRipple.computeのシミュレーション改善依頼
依頼内容:
- 岩などの高低差が激しいところを中心にcurl noiseで渦感を出してほしい
- 地形による凹凸による小波が大きな波が被さった時にも発生するのは不自然なのでどうにかなりませんか?
RiverWater.shaderのシェーディング改善依頼
依頼内容:
波による凹凸がシミュレーショングリッドよりも密度が低く感じる
シミュレーショングリッド間の勾配に合わせて凹凸を作成できないでしょうか?
RiverWater.shaderのシェーディング改善依頼
依頼内容:
水流の速度に応じた空気抵抗で周期的な波を発生させたい
78


# Page. 79

![Page Image](https://bcdn.docswell.com/page/DJY42P8Q7M.jpg)

そして3週間が経過
ベイク待ち等の隙間時間で開発を進めた結果
それっぽいものが出来た
79


# Page. 80

![Page Image](https://bcdn.docswell.com/page/V7NY85Q2E8.jpg)

立ちはだかる最適化の壁
しかし奇跡的に面白い結果が出たものの
100x100mのサイズで動作して欲しい
80


# Page. 81

![Page Image](https://bcdn.docswell.com/page/YJ9PKYDD73.jpg)

壁は高い
約70MBと1600x1600を毎フレーム3回書き込み
テクスチャ種別
100x100m解像度
フォーマット
100x100mサイズ
地形情報
800x800
A16R16G16B16
5MB
障害物水流情報
800x800
A16R16G16B16
5MB
シミュレーションバッファx2
1600x1600
A16R16G16B16
40MB
描画用勾配情報
1600x1600
A16R16G16B16
20MB
主
な
更
新
処
理
水流更新
前フレームで発生した波を水流情報に沿って流す、軽量処理
波紋生成
流れた波に地形を考慮した波の発生を行う、超重量処理
勾配
シミュレーション結果を描画用の勾配情報にする、軽量処理
81


# Page. 82

![Page Image](https://bcdn.docswell.com/page/GJ8DR635JD.jpg)

まずは簡単な最適化指示
無駄な計算や未使用変数の削除依頼
消してはいけないコードも消すので要注意
GridRipple.computeの最適化依頼
対象:
該当シェーダー全体
依頼内容:
未使用な関数を削除
各関数内で無意味な計算の削除
各関数内で不要な計算の削除
結果発生した未使用な変数を削除
削除されるシェーダーに紐づいたC#側の変数とバインディング処理の削除
82


# Page. 83

![Page Image](https://bcdn.docswell.com/page/LJLMK9V3ER.jpg)

ここでレビューをさぼったツケが
想定していたフローと実際のフローが違う
現実
想定
水面下の地形
初期化時のみ
初期化時のみ
水面下の地形
障害物
水流ベイク
障害物
水流ベイク
水流更新
水流更新
毎フレーム
毎フレーム
波紋生成
波紋生成
勾配計算
勾配計算
83


# Page. 84

![Page Image](https://bcdn.docswell.com/page/47MY2ZGM7W.jpg)

レビューと修正指示は細かく確実に
焦って雑な修正指示を出してレビューを怠ると
AIは平気で嘘をつくので要注意
FlowMapと障害物情報の入ったテクスチャは初期化時に一度だけ作れば良いです
毎フレーム更新しないようにして下さい
わかりました
(直したとは言っ
ていない)
84


# Page. 85

![Page Image](https://bcdn.docswell.com/page/P7R9M6ZLE9.jpg)

レビューと修正指示は細かく確実に
このように具体的な名称と対処方法で指示して
成果物を必ずレビューする
CombinedInteractionが毎フレーム更新されています
パラメーター更新時にdirty判定で必要な時のみ更新するようにして下さい
この変更でシミュレーションに支障がないことを確認して問題があれば日本語でレポートして下さい
85


# Page. 86

![Page Image](https://bcdn.docswell.com/page/PJXQVM167X.jpg)

AIは時々凄い
シミュレーション用のテクスチャフォーマット変更
64bit(A16R16G16B16)20MB=&gt;32bit
A2R10G10B10_UNORMやR11G11B10_FLOAT
を試すも小さい値の蓄積誤差で上手く行かず
ごねたらまさかの提案で解決
最後の手段です。
R32フォーマットでテクスチャを作成して高さ情報に14bitを割り当てて、独自にパッ
キングを行いましょう。
これによって0.12mmの精度を確保する事が出来ます。
パッキング処理でALUが消費されますが、それ以上の効果が期待できます。
86


# Page. 87

![Page Image](https://bcdn.docswell.com/page/3JK9QG2GJD.jpg)

AIを最適化に使って便利だなと思った事
地形と水流の勢いから波を作るのがとんでもない計算量
計算量を半分にしたいが係数の辻褄合わせが面倒
辻褄合わせもお願いしたらなんかやってくれた
GridRipple.computeのUpdatePhysicsカーネルのチェッカーボード化依頼
依頼内容:
UpdatePhysicsの計算負荷が高いので1フレームの計算量を半分にしたい
対象ピクセルをチェッカーボード形式で1つ飛ばしになるようにしてほしい
ダイバージェントを防ぐ為にif分岐ではなく、スレッド数を半分にして位置をオフセットしてチェッカーボード化して
1/2フレーム実行になるので必要な係数をスケールして下さい
懸念や問題があれば事前に日本語でレポートして下さい
できました
87


# Page. 88

![Page Image](https://bcdn.docswell.com/page/LE3WPN45E5.jpg)

そして最適化完了
約37.5MBと1600x1600を毎フレーム2.5回書き込み
テクスチャ種別
100x100m解像度 フォーマット
100x100mサイズ
障害物&amp;波紋作成情報
800x800
A16R16G16B16=&gt;A8R8G8B8
5MB=&gt;2.5MB
水流情報
800x800
A16R16G16B16
5MB
シミュレーションバッファx2
1600x1600
A16R16G16B16=&gt;R32
40MB=&gt;20MB
描画用勾配情報
1600x1600
A16R16G16B16=&gt;A2R10G10B10 20MB=&gt;10MB
主
な
更
新
処
理
½! 波紋生成
水流更新
勾配
流れた波に地形を考慮した波の発生を行う、超重量処理
チェッカーボードの波を水流情報に沿って流して馴染ませる、軽量処理
シミュレーション結果を描画用の勾配情報にする、軽量処理
88


# Page. 89

![Page Image](https://bcdn.docswell.com/page/8EDKLWQY7G.jpg)

AIでR&amp;Dは相性が良い
• 専門分野を学ばずにアイディアを形に出来るかも
• でもAIはまだ万能ではなくコントロールが必要
• 問題が起きにくく
• 起きても小規模に
• そして発見しやすく
• その為のコードレビュー力＆デバッグ能力は必須
将来AI性能が向上したらもっと便利になりそう
89


# Page. 90

![Page Image](https://bcdn.docswell.com/page/V7PK29L2J8.jpg)

AIが作った河川システム公開中
ということでMITライセンスで公開中です
ご自由に改造してください
https://github.com/hexagit/RiverWater
90


# Page. 91

![Page Image](https://bcdn.docswell.com/page/2JVVDMQXJQ.jpg)

Screen Space Fluid Renderingもやってみた
HDRPでメッシュを飛ばしていたのが気になっていた
既存技術は(なりふり構わなければ)
短時間で実装できる
パーティクルの動きはシェーダー直書きです
91


# Page. 92

![Page Image](https://bcdn.docswell.com/page/5EGLYGWRJL.jpg)

■■ノニラヤもよろしくお願いします
今回の講演の内容が反映された
■■ノニラヤはSteamで販売中です
興味が湧いたら是非ご購入下さい
https://store.steampowered.com/app/3034350/_/
92


# Page. 93

![Page Image](https://bcdn.docswell.com/page/4JQYMX3Y7P.jpg)

質疑応答
93


# Page. 94

![Page Image](https://bcdn.docswell.com/page/K74WV61ZE1.jpg)

ご清聴ありがとうございました
94


