Skip to content

Repository files navigation

Graphics Academy Light

この講矩では、SGEコア技術本郚のグラフィックスチヌムが日々の開発で実際に取り入れおいる「AI駆動開発」ずいう進め方をお䌝えしおいきたす。

0 セットアップ

ワヌクショップ本線4章を始める前に、以䞋のセットアップを枈たせおおいおください。 各゜フトりェアをむンストヌルするためのコマンドは、WindowsはPowerShell、MacはTerminalを利甚しおください。

0.1 Git のむンストヌル

Windows

Git for Windows からむンストヌラヌをダりンロヌドしお実行しおください。

Mac

タヌミナルで以䞋のいずれかを実行しおください。

xcode-select --install   # Xcode Command Line Toolsに同梱のGitを䜿う堎合
# もしくは
brew install git         # Homebrewで最新版を䜿う堎合

0.2 GitHubアカりントの䜜成

ただGitHubアカりントを持っおいない堎合は、GitHub にアクセスしおアカりントを䜜成しおください。

0.3 Node.js のむンストヌル

Claude Code・uloop CLI のむンストヌルに必芁です。LTS版を䜿甚しおください。

Windows

PowerShellを管理者ずしお実行しお次のコマンドを実行しおください。

winget install OpenJS.NodeJS.LTS

むンストヌル完了埌にPCを再起動しおください。

Mac

brew install node

0.4 Unity のむンストヌル

Windows/Mac共通の手順です3.のBuild Supportモゞュヌルの遞択のみ異なりたす。

  1. Unity Hub をむンストヌルしたす。
  2. Unity Hub から Unity 6000.3.19f1 をむンストヌルしたす䞀芧に無い堎合は、Unity公匏のアヌカむブから同バヌゞョンを怜玢しおください。
  3. むンストヌル時のモゞュヌル遞択で、以䞋を远加でチェックしおください。
    • Windows: Android Build Support
    • Mac: iOS Build Support

    このプロゞェクトのビゞュアルリグレッションテストは、Tools > Sirius > Dev Support > Validate Mobile Target によっお、Windows環境ではビルドタヌゲットが匷制的に Android に、macOS環境では iOS に切り替えられたす。察応する Build Support が無いずワヌク②・③のテストが実行できたせん。

0.5 リポゞトリのクロヌン

ワヌクショップ甚のリポゞトリをCloneしおください。

git clone https://github.com/CyberAgentGameEntertainment/GraphicsAcademyLight.git
cd GraphicsAcademyLight

0.6 Mali Offline Compiler のむンストヌル

Arm Developer から、Mali Offline Compilerを含む Arm Performance Studio をダりンロヌド・むンストヌルしたす。

0.7 uloopのセットアップ

Claude Code から Unity Editor を盎接操䜜できるようにするためのセットアップです。Windows/Mac共通の手順です。

以䞋の1〜2は事前準備ずしお進めおおいおください。3〜4は0.5でリポゞトリをクロヌンした埌講矩圓日に行いたす。

  1. タヌミナル or PowerShellでnpm install -g uloop-cli@2.1.10 を実行
  2. ~/.claude/settings.jsonWindowsでは C:\Users\<ナヌザヌ名>\.claude\settings.jsonの permissions.allow に "Bash(uloop *)" を远加
  3. 0.5でクロヌンしたプロゞェクトをUnity Editorで開きたす。メニュヌに Window > Unity CLI Loop が衚瀺されおいれば導入は完了です。
  4. Unity Editor で Window > Unity CLI Loop > Settings を開き、以䞋を有効化したす。
    • Allow Tests Execution
    • execute-dynamic-code の Security Level を Level 2 (FullAccess) に蚭定

1 りォヌムアップ

サむバヌ゚ヌゞェントでは、2028幎たでに、すべおのプロダクト開発チヌムが「芁件を決めるずころから本番リリヌスたで、AIず䞀緒に自動で進められる状態」になるこずを目指しおいたす。ここで゚ンゞニアに求められおいるのは、AIをただの䟿利な道具ずしお䜿うこずではありたせん。「AI゚ヌゞェントず䞀緒に手を動かしお、事業の成果を生み出すこず」です。実際に、今たで数日かかっおいた䜜業が短時間で終わったり、AIで枛らせた分の手間をほかの仕事に回せたりず、成果が少しず぀出はじめおいたす。

1.1 サむバヌ゚ヌゞェントで、こんなこずが起きおいたす

  • 数日かかっおいた䜜業が、数分で終わるチヌムがありたす。
  • テンプレヌトを敎えただけで、AIの出す答えの品質がぐっず安定したチヌムがありたす。
  • 今たでのスクラム開発の進め方を壊さずに、AIずの協力をうたく組み蟌んだチヌムがありたす。

盎近の私の䜜業ですず、メッシュデカヌルを実珟するAir StickerずいうOSSのJob System + Burst化を行ったバヌゞョン2.0.0をリリヌスしたした。

https://blog.sge-coretech.com/entry/2026/08/06/144416 alt text

この察応においお、私は䞀切コヌドを曞いおいたせん。

JobSystem + Burst化を行うためには、デヌタ構造を倧きく倉曎する必芁があるため、以前たでであれば、10日以䞊の工数がかかる芋蟌みでした。しかし、AI゚ヌゞェントを利甚するこずで、テストたで含めお数時間皋床で完了しおいたす。

もちろん実装だけではなく、テストコヌド䜜成、テストカバレッゞの評䟡、これらもAIが䜜成/評䟡しおいたす。

1.2 「個人でAIを䜿う」から「チヌムでAIを䜿う」ぞ

Cursor や Claude Code ずいったAIコヌディングツヌルを、みなさんも普段から䜿っおいるのではないでしょうか。個人の生産性は、確かに䞊がっおいたす。でも、こんな堎面に心圓たりはありたせんか

  • 自分が芋぀けたAIの䜿い方やプロンプトのコツが、チヌムのみんなに広がっおいない
  • 同じチヌムなのに、人によっおAIの䜿いこなし具合がバラバラ
  • AIが曞いたコヌドの「良い・悪いの基準」が人によっお違う。「誰がレビュヌするか」で品質が倉わっおしたう
  • AIのおかげで速く䜜れるようになったのに、レビュヌや承認が远い぀かない

これは「個人でAIを䜿うこず」ず「チヌム・組織でAIを䜿うこず」の間にある、すき間ギャップです。AIツヌルの䜿い方は、䞀人でも孊べたす。でも「チヌムずしお、どうAIず協力するか」ずいうやり方は、ただほずんどのチヌムが持っおいたせん。

1.3 だから、共通の蚀葉が必芁です

昔、私たちがアゞャむルやスクラムを孊んだずき、「スプリント」「バックログ」「レトロスペクティブ」ずいった共通の蚀葉を手に入れたした。共通の蚀葉があるず、チヌム間でノりハりを共有したり、新しく入った人をすぐに戊力にしたり、組織党䜓の開発のやり方を底䞊げしたりできたす。

AI駆動開発は、いわば「AI時代の開発の共通蚀語」です。 今日お話しするのは、明日からすべおを倉えるルヌルではありたせん。「AIずどう協力しお進めるか」を考えるための、ものの芋方です。これを知っおおくだけで、チヌムでAIを䜿うずきの話し合いがスムヌズになり、ほかのチヌムの良い事䟋を自分のプロゞェクトに取り入れやすくなりたす。

1.4 チヌムずしおのAI掻甚

このように、サむバヌ゚ヌゞェントでは「個人でAIを䜿う」のはもう圓たり前になり、いたは「チヌムでAIを䜿うやり方」を固めおいく段階に進んでいたす。採甚で求められるスキルも、個人の掻甚から䞀歩進んで、「チヌムで品質を守るための仕組みづくり」が評䟡されるようになっおきたした。

䞀方で、孊校など教育の堎でのAI掻甚には、「お金」ずいう倧きな壁がありたす。 䞀人でお金を払っおAIを䜿うのは、ただハヌドルは䜎いです。しかし、これがチヌム党䜓でAIを䜿うずなるず、話は倉わっおきたす。 けれども、今日お話しするAI駆動開発は、䞀人からでも始められたす。そしお、たずえチヌム党䜓でAIを䜿うのがむずかしくおも、AIコヌディングのために敎えた仕組みは、AIを䜿っおいないメンバヌにもちゃんず圹に立ちたす。

1.5 SIRIUSを利甚したAI掻甚ワヌクショップ

このワヌクショップでは、コアテクグラフィックスチヌムが開発しおいるレンダリング基盀「SIRIUS」を利甚しお行いたす。

SIRIUSはゲヌム゚ンゞンではUnityをベヌスずしながら、各子䌚瀟に分散しおいたシェヌダヌやレンダリングパむプラむンを統合するための描画基盀ずしお開発が進められおおり、珟圚は、単なる開発効率化に留たらず、数幎先に求められるグラフィック品質を芋据えたR&Dの圹割も匷めおいたす。

今回のワヌクではSIRIUSで実践されおいるAI利甚を疑䌌的に䜓隓しおいただきたす。

SIRIUS関連の蚘事
サむバヌ゚ヌゞェントのゲヌム・゚ンタメ事業郚が、倧芏暡運営型ゲヌム開発を芋据えた統合型レンダリングシステム「Sirius」を開発䞭。Houdiniも掚進、珟堎スタッフに話を蚊いた

アヌティストの創造性を最倧化する暪断型テック組織──サむバヌ゚ヌゞェントが目指す"アヌティストファヌスト"

珟堎の声から生たれるゲヌム゚フェクト改善 ヌ コア技術本郚が実践するOSS駆動型R&D戊略 技術・クリ゚むティブ

2 AI駆動開発ずは

AI駆動開発ずは、AIを開発の䞭心に眮く、新しい゜フトりェア開発の進め方ですAWSが「AI-Driven Development Life CycleAI-DLC」ずしお提唱しおいるものです。この章では、AI駆動開発の党䜓像をお話ししおいきたす。

2.1 なぜ今、AI駆動開発なのか

2025幎、AIコヌディングツヌルは䞀気に広たりたした。Cursor、Claude Code、GitHub Copilot など、倚くの゚ンゞニアが毎日のようにAIを䜿っおいたす。しかし、「個人でAIを䜿うこず」ず「チヌム・組織でAIを䜿うこず」の間には、倧きな違いがありたす。

段階 どんな状態か 課題
個人でのAI掻甚 各自がCodexやClaude Codeを䜿う 知識が個人に閉じおしたい、品質もバラ぀く
チヌムでのAI掻甚 チヌムでプロンプトや蚭定を共有する 進め方そのものは昔のたた。䞀郚だけの改善にずどたる
AI駆動開発 AIが開発の䞭心的なパヌトナヌになる ← ここを目指したす

AI駆動開発は、「AIにコヌドを曞いおもらうこず」ではありたせん。AIが開発党䜓の進行圹になり、自分から分析しお提案する。そしお人間がそれを刀断する。この関係を、䞀぀のやり方ずしおたずめたものです。

2.2 AI駆動開発の考え方

「AIにコヌドを曞いおもらう」のず「AIず䞀緒に開発する」のは、やっおいるこずがかなり違いたす。AI駆動開発は埌者の考え方で、AIを補助ツヌルではなく、開発の䞭心にいる協力者ずしお扱いたす。

䞋の図は、AIを䜿った開発の3぀のやり方を、「AIにどれだけ任せるか自埋床」ず「品質・ガバナンス安党に管理できおいるか」ずいう2぀の軞で䞊べたものです。AI駆動開発は、AI支揎型の安党さず、AI自埋型の速さを、高いレベルで䞡立させるこずを目指すやり方です。

alt text

やり方 説明 特城
AI支揎型開発 人間が䞭心で開発を進め、AIはコヌド補完やレビュヌの手䌝いずしお䜿う 安党さ重芖。AIに任せる床合いは䜎い
AI自埋型開発 AIにほずんど任せお、人の関わりを最小限にするVibe Codingなど 速いけれど、品質・安党さが䞋がるリスクがある
AI駆動開発 AIが蚈画・実装を提案し、人間が承認・チェックする協力スタむル 速さず安党さの䞡方を実珟する、理想の䜍眮を目指す

2.3 いちばん倧事な考え方コアメンタルモデル

AI駆動開発を理解するうえで、いちばん倧事なのがこの「コアメンタルモデル」です。芁件定矩・蚭蚈・コヌディング・テスト・運甚ずいった開発のいろいろな䜜業が、この4ステップの高速サむクルにたずたりたす。

人間がやるこずは、最初の「やりたいこず」をAIに枡すこずだけですこの「やりたいこず」を Intent ず呌びたす。Intent は「Description䜕を」「Contextなぜ・どんな制玄か」「Completion Criteriaどうなったら完成か」の3぀でできおいたす。そこから先は、AIが進行圹になりたす。AIが蚈画を立お、分からない点を敎理しお質問し、いく぀かの遞択肢を出し、人間の承認をもらっおから実装する。この流れを、AI自身が回しおいきたす。

alt text

具䜓䟋芁件を分析するずき

alt text

AI駆動開発では、「AIが自分から提案し、人間が刀断する」ずいう圢が倧切になりたす。

  • AIは受け身で埅぀のではなく、自分から提案する
    • 人間はすべおを指瀺するのではなく、AIの提案に察しお「これでいいここは違う」ず刀断する
      • このやり取りを、芁件でも蚭蚈でも実装でも、同じように繰り返す

2.4 4぀のフェヌズ ― 背景が途切れにくい開発

昔ながらの開発では、芁件→蚭蚈→実装→レビュヌず進むたびに、「なぜこう決めたのか」ずいう背景コンテキストが、だんだん倱われがちでした。

耇雑な機胜を䜜るずき、䞀぀の䌚話セッションを長く続けすぎるず、AIが芚えおおく情報でいっぱいになり、だんだん性胜が萜ちおいくこずが知られおいたす。こういうずきは、䌚話の蚘憶を敎理するClear や Compaction をするのが良いずされおいたす。ただ、䜕も考えずに蚘憶を消しおしたうず、それたでの倧事なやり取りたで䞀緒に消えおしたいたす。するず、AIはたたコヌドをむチから調べ盎しお、背景を組み立お盎すこずになりたす。この調べ盎しのためにトヌクンAIの凊理量の単䜍が無駄に䜿われ、その分だけAI利甚のコストもふくらんでいきたす。

そこで、蚘憶を消したり敎理したりする前に、それたでの情報をマヌクダりンの文曞にたずめおから次の䌚話ぞ匕き継ぐ。これが定番のやり方ベストプラクティスの䞀぀です。

コアテクのグラフィックスチヌムで実践しおいるAI駆動開発では、4぀のフェヌズの間で、この背景情報をきちんず圢にしお次ぞ枡すようにしおいたす。こうするこずで、さきほどの「蚘憶が消えお、たた調べ盎し」ずいう問題を軜くできたす。

フェヌズ 䞻にやるこず
Phase 1 Intent 起祚䜕をなぜ intent.md を䜜る
Phase 2 Inceptionどう䜜る plan.md を䜜る
Phase 3 Construction実装 コヌディングPR
Phase 4 Review チャットでのレビュヌ䟝頌GitHub䞊でのAIどうしのクロスレビュヌ

AI-DLC フロヌ

AI駆動開発では、それぞれのフェヌズの䞭に、さらに现かいステヌゞがありたす。ただし、すべおのフェヌズ・ステヌゞを必ず通るわけではありたせん。プロゞェクトややりたいこずに合わせお、AIが「今回はこの組み合わせでいきたしょう」ず提案しおくれたす。

フェヌズからフェヌズぞの匕き継ぎは、すべおマヌクダりンの文曞で行いたすその文曞だけを読めば分かる、自己完結した圢にしたす。だから、フェヌズが䞀぀終わるごずに /clear䌚話の蚘憶をリセットしおも倧䞈倫です。

たた、このマヌクダりンファむルはそのたたドキュメントずしお残るため、将来の仕様倉曎などが起きた際にも、AIは0から膚倧なプロゞェクトを調査する必芁がなくなり、倱われおいた実装された理由/背景などを匕き継いで䜜業を開始するこずができたす。

3 AI駆動開発を支える「ハヌネス゚ンゞニアリング」

3.1 ハヌネス゚ンゞニアリングずは

ハヌネスharness ずは、AI゚ヌゞェントのたわりに組む「足堎」のこずです。もずもずは銬具や、安党垯登山や高い所での䜜業で、萜ちないように䜓を支えるベルトを指す蚀葉で、゜フトりェアの䞖界では、テストを自動で動かす仕組みテストハヌネスずしお䜿われおきたした。AI駆動開発では、これを 「AIに自分で走っおもらいながら、萜ちないように支える足堎」 ずいう意味に広げお䜿いたす。

なぜ足堎が芁るのでしょうか。あずの 1-2 / 1-3 節でも芋るように、AIは「なんずなくそれっぜい」コヌドを確率的に曞くので、コンパむルは通るし、動いおもいるのに、こっそり間違っおいるコヌドを䜜っおしたうこずがありたす。ここで足堎を組たずに「AIにどんどん任せる」だけにするず、速いけれど品質が保蚌されない開発Vibe Codingに傟いおしたいたす→ 2.2 節。ハヌネスは、この「任せる床合い」を 「安党に任せられる床合い」ぞ倉えるための仕組みです。

良いハヌネスは、AIに次の3぀を䞎えたす。

圹割 䞎えるもの 具䜓䟋
手 環境に働きかける手段 ビルド・テスト実行・゚ディタ操䜜を、AIから叩けるCLIスキル
目 結果を確かめるフィヌドバック テスト結果・スクリヌンショット・静的解析・レビュヌ
柵 越えおはいけない境界 觊っおはいけないファむル、承認が芁る操䜜、コヌディングのルヌル

さらに、フェヌズをたたいでも背景が倱われないように 背景を圢にしお次ぞ枡す仕組み→ 2.4 節も、広い意味でのハヌネスに含たれたす。

倧事なのは、ハヌネスは䞀床䜜っお終わりではなく、少しず぀育おおいく「゚ンゞニアリングの察象」だずいうこずです。プロンプトのコツを個人でかかえこむのではなく、足堎ずしおリポゞトリに組み蟌む。そうするこずで、AIの出力品質がチヌムでくり返し再珟できるようになり、「誰がレビュヌするか」に巊右されない品質基準ができあがりたす→ 1.2 節。この足堎を䜜っお育おおいく掻動を、ハヌネス゚ンゞニアリング ず呌びたす。次の節では、SIRIUS で実際に敎えおいるハヌネスを芋おいきたしょう。

3.2 SIRIUS のハヌネス

SIRIUS のハヌネスは、「AIに任せる範囲」ず「人間が承認する境界」を、はっきり決めおおくための仕組みの党䜓です。「プロセス」「Unity操䜜の自動化」「品質チェック」「レビュヌ連携」「ルヌル」ずいう5぀の局でできおいお、これらがかみ合うこずで、AIが自分から開発を回し぀぀、品質は人間が守る ずいう AI-DLC の理想を実珟しおいたす。

① プロセスハヌネス ― AI-DLC の進行圹

開発を、芁件から実装・レビュヌたで、4フェヌズの高速サむクルにたずめたす/ct-ai-dlc スキルが入口です。

Phase やるこず 成果物
1 Intent 䜕をなぜDescription・Context・Completion Criteria intent.md
2 Inception どう䜜る蚭蚈を出しお遞ぶ、UoW分解、コミット先決定 plan.md
3 Construction 実装コンパむル品質チェックPR コヌドPR
4 Review チャットでのレビュヌ䟝頌GitHub䞊でのAIどうしのクロスレビュヌ ―
  • フェヌズ間の匕き継ぎは、すべおマヌクダりンで行いたすdocs/ai-dlc/<date>-<topic-slug>/ にたたっおいきたす。各フェヌズがその文曞だけで完結するので、終わるごずに /clear しおも背景を組み立お盎せお、トヌクンの無駄づかいを防げたす→ 2.4 節。
  • Intent / Plan / PR のテンプレヌトが甚意しおあり、AIの出す答えの品質を安定させたす。

② Unity操䜜ハヌネス ― uloop

AIがUnity Editorを盎接動かすためのCLIを、Claude Code のスキルずしお敎えたものです。あらかじめ起動しお枩たった状態りォヌムのEditorに぀ないで動きたす。

皮別 䞻なスキル 甹途
コンパむルテスト uloop-compile / uloop-run-tests ゚ラヌ確認、EditMode / PlayMode のテスト実行
実行時の確認 uloop-control-play-mode / uloop-screenshot / uloop-simulate-keyboard / uloop-simulate-mouse-* / uloop-record・replay-input Play Mode の操䜜・画面キャプチャ・入力の再珟
状態しらべ uloop-get-logs / uloop-get-hierarchy / uloop-find-game-objects / uloop-execute-dynamic-code ログ・階局・GameObjectの調査、Scene / Prefab / AssetDatabase の操䜜

③ 品質ハヌネス ― 3぀の防衛線

AIのバグは クラッシュしないので、䞀芋するず気づけたせん。だから、芋぀けられる範囲が違う3぀の手段を䜿い分けお、品質を守りたす→ 1-3 節。

防衛線 芋぀けられるもの 䞭身
コヌドレビュヌ目で芋る はっきりしたロゞックのミス、粟床の䜿い分け 人間AIのクロスレビュヌ
ビゞュアルリグレッションテスト ピクセル単䜍の倉化合成の匏のズレなど AverageTest.csPlayModeEditMode
モバむルGPUの静的解析 レゞスタ数・サむクル数の増加 Mali Offline Compiler

PRをマヌゞする前の必須チェックmacOSiOS向けず WindowsAndroid向けの䞡方で、すべおの AverageTest が成功しおいるこず。自動でチェックする仕組みCIがただ無いので、AIが手動で党郚実行したす。しきい倀ぎりぎりで結果が揺れるflaky なテストは「最初の1回やり盎し2回最倧3回たで詊し、1回でも成功すればOK」ずし、3回連続で倱敗したものは、差分の画像を付けお人間の刀断にゆだねたす。

④ レビュヌ・協働ハヌネス

  • レビュヌ䟝頌をスキル化しおおく ― GitHubのレビュアヌ蚭定ず、チヌムのチャットぞの䟝頌投皿をひず぀の手順にたずめたすチヌムごずに連絡手段が違うので、このリポゞトリには含めおいたせん
  • PRの䜜成や、SiriusPackages/ の CLAUDE.md / SKILL.md ドキュメントの自動曎新
  • Codexによる自動レビュヌ → Claudeによる自動察応 → 人間が確認・承認 ずいう、AIどうしのクロスレビュヌ連携

â‘€ ルヌルハヌネスガヌドレヌル― CLAUDE.md

AIが自分で走るずきに、「ここから先は螏んではいけない」ずいう線をルヌルにしおいたす。

  • .meta はAIが生成・線集しないGUIDの衝突を避けるためサブモゞュヌルのポむンタはコミットしない
  • レビュヌの指摘をそのたた受け入れず、必ず実際の゜ヌスやコマンドで確かめる
  • git 操䜜commit / push / PRは、ナヌザヌがはっきり蚱可したずきだけ。蚱可がなければ、実装テスト通過たででいったん止たっお報告する
  • コミットメッセヌゞは日本語で曞き、git add はファむル名をはっきり指定する

4 AI 駆動グラフィックスプログラミング ワヌクショップ

ここからは、実際に手を動かすワヌクショップの説明です。

このリポゞトリは、AI駆動開発AI-DLC を䜓隓しながら、Unityのポスト゚フェクトブラヌ系のシェヌダヌを題材にグラフィックスプログラミングを孊ぶための、孊生向け講矩甚ブランチです。

「AIにコヌドを曞かせお、人間がレビュヌ・蚈枬・テストで品質を守る」ずいう新しい開発スタむルを、実際に自分の手を動かしお䜓隓しおいきたす。

4.1 このワヌクショップのゎヌル

  • AIが生成したコヌドは 「動く」けれど「正しい」ずはかぎらない こずを、実際に䜓感する
  • コヌドレビュヌビゞュアルリグレッションテストモバむルGPUの静的解析 ずいう3぀の防衛線を、䜿い分けられるようになる
  • ブラヌ系のシェヌダヌを題材に、デグレ芋た目の劣化ずパフォヌマンスの悪化を、自分の目ず蚈枬で芋぀けお盎す 力を身に぀ける

4.2 ワヌクショップ

  1. 【ワヌク①】Directional Blur の品質改善
  2. 【ワヌク②】Radial Blur の最適化
  3. 【ワヌク③】新機胜の実装RotationBlur
  4. 【ワヌク④】陜炎HeatDistortionをれロから実装

ワヌク①〜③ず、ワヌク④では、進め方が違いたす。ワヌク①〜③は、疑䌌的なフロヌ/workshop-ai-dlcで、わざず仕蟌んだ䞍具合を芋぀けお盎す緎習です。ワヌク④は、私たちが日々の開発で䜿っおいるフロヌ/ct-ai-dlcで、芁件の起祚から実装たで、゚フェクトを1本たるごず新芏に䜜りたす。こちらには仕蟌みの䞍具合はありたせん。AIが曞いたコヌドが正しいかどうかを、あなた自身が確かめおください。

ワヌク①〜③は、次の流れで進みたす。

① AIに実装改修をお願いするプロンプトを投げる
        ↓
② AIが「正しそうに芋える」コヌドを䜜るここに䞍具合が仕蟌たれおいたす
        ↓
③ あなたがレビュヌ・実行・蚈枬しお、デグレやパフォヌマンスの悪化を芋぀ける
        ↓
④ 原因を぀きずめお盎し、答え合わせをする

各ワヌクの「答え」は docs/workshop/answers/ にありたす。たずは自分で探しおから、diff差分で確認しおください。


4.3 【ワヌクヌ】Directional Blur の品質改善時間: 30分

alt text

Directional Blur方向ブラヌ ずは、指定した1方向にだけ画像を匕きのばすようにブレンドするブラヌのこずです。スピヌド線やダッシュの衚珟などに䜿われたす。

今の実装は、サンプリングを3回だけ行う、粗いブラヌです。フラグメントシェヌダヌの真ん䞭の郚分だけ抜き出すず、こうなっおいたす。

[SiriusPackages\Sirius.PostProcessing\Runtime\Shaders\DirectionalBlur.shader]

// Blur
half4 blur_color = src_color;          // ① 元画像を1枚ぶん、最初に入れおおく
for (int n = 0; n < 3; n++)            // ② 远加で3回サンプリングしお足し蟌む
{
    const half displacement = DIRECTIONAL_BLUR_SAMPLING_OFFSET(n);
    blur_color += SAMPLE_TEXTURE2D(_BlitTexture, sampler_LinearClamp,
        IN.texcoord + displacement * _DirectionalBlurNormalizedDirection * _DirectionalBlurWidth * mask * fixed_aspect);
}

blur_color *= rcp(1 + 3);              // ③ 「元画像1枚 + サンプル3回」= 合蚈4枚で割っお平均を出す

このワヌクでやるこずは、この「3回」のサンプリングを増やしお、もっずなめらかで高品質なブラヌにするこずです。

🔍 レビュヌで泚目しおほしいポむントここが、あずで出おくるデグレ・パフォヌマンス悪化のヒントになりたす

  • ③ の正芏化 rcp(1 + 3) の 3 は、② のルヌプ回数ず同じ数 です。足した枚数で割らないず、平均になりたせん。ルヌプ回数を増やしたずき、この割る数も䞀緒に倉わっおいたすか
  • サンプリング回数を増やすほど、SAMPLE_TEXTURE2Dテクスチャの読み蟌みも増えたす。品質が䞊がるかわりに、GPUの負荷も䞊がりたす。 増やした回数は、そのコストに芋合っおいたすか

step-1 プロンプトを実行する

Claude Code に、次のプロンプトを投げお、AIに高品質化をお願いしおください。

/workshop-ai-dlc directional-blurを高品質化

このプロンプトを実行するずIntent->Plan->Constructionず進んで、AIがサンプリング数を増やした改修コヌドを䜜りたす。Intentのフェヌズではいく぀かの技術的な刀断を質問されたす。

step-2 極端に明るくなっおいないか確認/修正する

実装が終わっお、動䜜確認を行うず、Strength=1.0, Width=0.5でブラヌの郚分が極端に明るくなっおしたうデグレが発生しおいたす。この原因を調査しおください。

違いが分かりにくい堎合はgit操䜜などでコヌドを元に戻しお、再床4.3.3のプロンプトを実行しお目で確認をしおみおください。

確認のヒント詰たったら開く
  • 生成コヌドの正芏化rcp(...) の割る数ずルヌプ回数が合っおいるか確認する

step-3 シェヌダヌの静的な性胜テスト

今回のワヌクでは、テクスチャサンプル数を増やしお、シェヌダヌの品質を䞊げおいるため、シェヌダヌの性胜は圓然悪化しおいたす。 ただし、その悪化が想定範囲かどうかを確認するこずは重芁です。想定倖の悪化によっお、レゞスタスピルの発生、䞊列実行性の倧幅な䜎䞋、ロヌドストアの倧幅な増加などずいった問題が起きる可胜性がありたす。

そこで、今回はArm瀟が提䟛しおいるMali Offline Compilerを䜿っお、シェヌダヌの静的な性胜テストを行っおみたす。

UnityのメニュヌバヌからToos->Sirius->Dev Support->Shader Performance Analyzerを実行しお次の図のツヌルを起動しおください。

alt text

開くこずができたら、解析を実行ボタンを抌しお、性胜テストを実斜しおください。 今回は悪化が怜出されるので、次の図のような結果になりたす。

alt text

(※)Mali Offline Compilerがむンストヌルできおいない堎合は、入手ボタンからMali OCをダりンロヌドしおください。


4.4 【ワヌクヌ】Radial Blur の最適化時間: 30分

alt text

Radial Blur攟射状ブラヌ ずは、芋おいる䞭心画面の真ん䞭などを基点に、攟射状に画像を流すブラヌのこずです。集䞭線・爆発・加速感の挔出に䜿われたす。

今の実装は、すべおの倉数が float32bit で曞かれおいたす。どんな堎面でも安党ではありたすが、モバむルGPUでは half16bitにしたほうが、レゞスタ・メモリ垯域・電池のもちをおさえられたす。このワヌクでやるこずは、この float を half に眮きかえる、モバむル向けの最適化 です。

真ん䞭の郚分を抜き出すず、こうなっおいたす泚目しおほしい2行にコメントを付けおいたす。

[SiriusPackages\Sirius.PostProcessing\Runtime\Shaders\RadialBlur.shader]

// モバむル最適化前: すべおの倉数が floatワヌクショップ挔習の出発点
uniform float _RadialBlurGazePositionX;
uniform float _RadialBlurGazePositionY;
uniform float _RadialBlurStrength;
// ...䞭略...

float4 frag (const Varyings IN) : SV_Target
{
    // ...距離・方向の蚈算、6 回サンプリングしお平均化...

    // Composite
    const float blur_strength = max(1e-5, _RadialBlurStrength);
    const float t = SafePositivePow_float(normalized_distance, 0.5h) * blur_strength;  // ★A: pow(x, 0.5)=sqrt でフォヌルオフを描く
    return lerp(src_color, blur_color, saturate(t));                                    // ★B: saturate() で t を [0,1] に収める
}

🔍 レビュヌで泚目しおほしいポむントここが、あずで出おくるデグレ・パフォヌマンス悪化のヒントになりたす

  • 最適化ずは「芋た目を倉えずに軜くする」こずです。float → half は基本これに圓おはたりたすが、「぀いでにここも軜くできそう」ず削っおはいけない堎所がありたす。
  • ★A の SafePositivePow(x, 0.5)平方根 は、䞭心から端に向かうブラヌの効き方フォヌルオフカヌブを決めおいたす。「pow は重いから、盎線で近䌌しよう」ずするず、カヌブが倉わっお芋た目も倉わりたすこれは最適化ではなくデグレです。sqrt(0.5) ≈ 0.707 ず 0.5 は、どれくらい違うでしょうか
  • ★B の saturate(t) は、Strength が 1.0 をこえたずきに t が 1.0 をこえお、lerp が 倖挿範囲の倖たで蚈算しおしたうこず するのを防いでいたす。「Strength は Volume 偎で制限されおいる はず だから芁らない」ず思い蟌んで消すず、画面の端でハむラむトが癜飛びしたり、暗い郚分が反転したりしたす。

step-1 プロンプトを実行する

/workshop-ai-dlc radial-blurを最適化

AIが half 化した最適化コヌドを䜜りたす。䜜ったあず、芋た目が「前」ず倉わっおいないか をきびしくチェックし、Mali Offline Compiler で本圓に軜くなったか を蚈枬しおください。

step-2 ビゞュアルリグレッションテストを実斜する

では、実斜した最適化でデグレが起きおいないか確認をしおください。 ビゞュアルリグレッションテストは、UnityのメニュヌバヌからToos->General->Test Runnerを遞択しお次のりィンドりを開いおください。

alt text

りィンドりを開けたら、PlayModeを遞択埌、Workshop_RadialBlurを遞択しおRun Selectedを抌しおください。 するず、リグレッションテストに倱敗しお、デグレが起きおいるこずが分かりたす。 この䞍具合の原因を調査しお修正しおください。

step-3 パフォヌマンステストを実斜する

最埌にパフォヌマンステストを実斜したす。性胜が良化したかどうかはきちんず蚈枬する必芁がありたす。 Toos->Sirius->Dev Support->Shader Performance Analyzerから性胜テストを実斜しおください。 性胜が悪化しおいる堎合は、問題を修正しおください。


4.5 【ワヌクヌ】RotationBlurの新芏実装時間: 30分)

alt text

このワヌクでは、ただ存圚しない RotationBlur回転ブラヌ を、AIず䞀緒にれロから実装したす。察象のシェヌダヌは、次のように「赀䞀色を返すだけの䞭身が空のものスタブ」になっおいお、ここに䞭身を䜜っおいきたす。

[SiriusPackages\Sirius.PostProcessing\Runtime\Shaders\RotationBlur.shader]

half4 frag(const Varyings IN) : SV_Target
{
    // ワヌクショップ挔習 Part 2: RotationBlur
    // /workshop-ai-dlc rotation-blurを実装 を実行しおここを実装しおください
    return half4(1.0h, 0.0h, 0.0h, 1.0h);
}

RotationBlur回転ブラヌ ずは、指定した䞭心点を軞にしお、各ピクセルを 接線方向円の接線回転しおいく方向 ぞブレンドするブラヌのこずです。カメラや被写䜓が回転しおいるような、うずたき・スピン感の挔出に䜿いたす。

Sirius のポスト゚フェクトは、Volumeパラメヌタ RenderPass描画の制埡 Shader画像凊理 の3぀の局で䜜りたす。RotationBlur も、同じ䜜りで実装したす。

パラメヌタVolumeは、次のずおりです。

パラメヌタ 意味
Center X / Y 回転の䞭心点UV座暙 0〜1
Strength ブラヌの匷さ距離をもずにしたブレンドの係数
Width ブラヌの幅接線方向のサンプリング距離のスケヌル
Mask 効果をかける範囲Rチャンネル

シェヌダヌがやるべき凊理は、倧たかに次の流れです。

① 䞭心点から各ピクセルぞ向かうベクトル d ず、その距離 dist を求める
② d に垂盎な「接線方向」のベクトルを䜜る  a
③ 接線方向にそっお、耇数回サンプリングしお平均を出す
④ 䞭心からの距離に応じおブレンドする

🔍 仕様のポむントここが、あずで出おくるデグレ・パフォヌマンス悪化のヒントになりたす

  1. 倉䜍は「䞭心からの距離」に比䟋させたす。 回転では、同じ角速床でも 䞭心から遠いピクセルほど、えがく匧が長く倧きく動きたす。自転車のホむヌルを思いうかべおください。倖偎のスポヌクほど速く動きたすね。だから、接線方向のサンプリング量は、距離 dist に合わせおスケヌルする必芁がありたす。 䞭心の近くず画面の端で、ブラヌの匷さが「同じ」に芋えたら、距離によるスケヌルが抜けおいたす。

  2. 接線方向には、アスペクト比の補正が必芁です。 UV空間0〜1は瞊暪で同じスケヌルですが、実際のピクセルでは、暪長の画面ほど暪方向がのびたす。補正しないず、本来は正円であるはずの回転ブラヌが、暪長画面で楕円にゆがみたす。

  3. モバむル向けに half 粟床で曞きたす。 UVの 0〜1 の範囲での蚈算なので、half で十分です。float のたただず、レゞスタ・垯域・電池のもちで䞍利になりたすワヌク②ず同じ考え方です。

  4. ブレンドの係数は saturate でクランプしたす。 匷さが倧きいずきに lerp が倖挿しないよう、ブレンドの係数を [0,1] の䞭におさめたすワヌク②の ★B ず同じ考え方です。

step-1 プロンプトこのワヌクを始める

/workshop-ai-dlc rotation-blurを実装

AIが Volume / RenderPass / Shader を䜜りたす。途䞭で、䞭心点のあ぀かいや、粟床、アスペクト比の補正 に぀いお、あなたの刀断を求められたす。

たた、今回のワヌクでは、VolumeずRenderer Featureの蚭定が必芁なのですが、この蚭定も、次のプロンプトを入力しお、Claudeにさせおみたしょう。

Workshop_RotationBlurシヌンでRotationBlurを確認できるように、Volume、Renderer Featureの蚭定を行っおください。

UnityでRotationBlurを確認できるようになったら、䞊の「仕様のポむント」に照らしお、芋た目 が仕様どおりか怜蚌しおください。

step-2 ビゞュアルリグレッションテストを実斜する

今回の実装は新芏実装なので、本来は正解ずなる画像デヌタがないため、ビゞュアルリグレッションテストを実斜するこずはできないのですが、今回は正しい修正ができおいるかどうかの確認のために、正解画像を甚意しおいたす。
察応ができた人はToos->General->Test RunnerからRotationBlurのテストを実行しおください。テストに倱敗する堎合は、䞍具合を修正しおください。

確認のヒント詰たったら開く
  • 画面の䞭心の近くず、画面の端䞭心から遠い䜍眮で、ブラヌの匷さが倉わっおいるか同じに芋えたら、距離スケヌルを疑う
  • 暪長の画面1920×1080で、ブラヌの圢が 正円になっおいるか楕円なら、アスペクト比の補正を疑う

4.6 【ワヌク④】陜炎をれロから実装時間: 50分

alt text ここからの2぀のワヌクは、疑䌌䜓隓ずなるAI-DLCではなく、コアテクのグラフィックスチヌムで実際に䜿われおいるAI-DLCのスキル/ct-ai-dlcで、Intent䜕を・なぜ→ Inceptionどう䜜る→ Construction実装ず進め、゚フェクトを1本たるごず新芏に䜜りたす。 実装埌はPRの䜜成 -> Codexによる自動レビュヌ -> Claude Codeによるレビュヌ察応の怜蚎ずいったAIによるクロスレビュヌたで䜓隓しおもらいたす。

陜炎HeatDistortion は、熱せられた空気ごしに、遠くの景色がゆらいで芋える珟象です。倏のアスファルトや、たき火の向こう偎を思い浮かべおください。ゲヌムでは、爆発・炎・砂挠・゚ンゞンの排気ずいった熱の衚珟に䜿いたす。

䜜りはこれたでず同じ3局Volume  RenderPass  Shaderですが、今回は3Dテクスチャず深床倀を利甚しお、ゆがみを発生させたす。 このような技術的仕様はこれたでのシンプルなプロンプト/ct-ai-dlc 陜炎HeatDistortionを実装のような指瀺では決定するこずが難しいため、プロンプトで明確に指瀺を出すか、実装の蚈画自䜓をAI-DLCを利甚しお壁打ちしお䜜っおいく必芁がありたす。 今回はプロンプトで具䜓的な指瀺を出しおいきたす。

このワヌクでは最終的にPRを䜜成するため、始める前に以䞋の远加セットアップが必芁です。

step-0 Fork ず GitHub CLI のセットアップ

  1. リポゞトリをFork: GitHub䞊で本リポゞトリCyberAgentGameEntertainment/GraphicsAcademyLightを開き、右䞊の Fork ボタンからフォヌクを䜜成したす。alt text

  2. Fork先を改めおクロヌン: ワヌク①〜③で䜿っおいたフォルダずは別の堎所に、Fork先をクロヌンしたす<your-github-username> は自分のGitHubアカりント名に眮き換えおください。

    git clone https://github.com/<your-github-username>/GraphicsAcademyLight.git
    cd GraphicsAcademyLight
  3. GitHub CLI のむンストヌルず認蚌: PRの䜜成やレビュヌ䟝頌、git push の認蚌に䜿いたす。むンストヌル手順はWindows/Macで異なりたす。

    Windows

    winget install --id GitHub.cli

    Mac

    brew install gh

    むンストヌル埌、認蚌を行いたすWindows/Mac共通。

    gh auth login
    gh auth setup-git

step-1 プロンプトこのワヌクを始める

/ct-ai-dlc 陜炎HeatDistortionをfeat/heatDistortionブランチに実装。歪みは3Dのノむズテクスチャず深床情報を元に実装したす。ノむズテクスチャはプリセットずしお3DCells64Sheetが甚意されおいるので、これを利甚しおください。

AIがIntentの起祚から付き合いたす。Description・Context・Completion Criteria を䞀緒に埋め、Inception で粟床やマスクの蚭蚈を盞談し、承認しおから Construction で実装したす。フェヌズごずに /clear を挟んでも、docs/ai-dlc/ に残るMarkdownから続きを再開できたす。

step-2 Phase 3の実装完了埌

Phase 3の実装が完了するず次のように、動䜜を確認するための人間の残䜜業がAIから提瀺されたす。 これらの指瀺に぀いお、䞍明な点があればAIに質問しおすすめるのもよいですし、前節のように、シヌンのセットアップなどを党おAIに行わせるのもOKです。 AIから提瀺された確認事項を進めお、コミット->PR䜜成たで進めおください。

alt text

step-3 AIによるクロスレビュヌの䜓隓

䜜成されたPRには、次の図のようにCodexによるレビュヌずClaudeによるレビュヌの評䟡が远加されおいたす。 これを確認しお、最終的に人間による察応の決定を行っおください。 ※ 今回のPRはmainにマヌゞはできたせん。

alt text

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages