2 ポイント 投稿者 GN⁺ 2024-03-01 | 1件のコメント | WhatsAppで共有

ビデオゲームでLUTを使う方法と、あなた自身も使える方法

  • ビデオゲームでは、LUT(Look-up tables)を使って創造的な技法を活用している。
  • WebGLを使った例を通じて、リアルタイムでビデオデータを操作する方法を説明している。
  • ユーザーは自分のビデオやウェブカメラを使って実践できる。

設定

  • サーモグラフィカメラで撮影した白黒ビデオを出発点として使う。
  • WebGLを通じてGPUにビデオをアップロードし、シェーダーを使って元のまま表示する。

色付け

  • ピクセルごとの色を決定する Fragment Shader を使って、ビデオに色を付ける。
  • オレンジ色を付ける簡単な例を通じて、色操作の方法を説明している。

性能コスト: ゼロ

  • 色付けによる性能への影響はほとんどなく、GPUの latency hiding によって無視できるレベルである。

Valve Softwareによる色付けの利用

  • Valve Softwareのゲーム Left 4 Dead では、車両モデルに色付けを適用してさまざまなバリエーションを生成している。

LUT - シンプルだが強力

  • LUTを使って色の範囲を定義し、変化させる方法を説明している。

素朴な1D LUT

  • 1D LUTは色の配列であり、グレースケールのビデオをRGBに変換するために使われる。
  • さまざまなサイズの1D LUTを使って色変換を実演している。

たくさんの色

  • matplotlibがサポートするすべてのカラーマップを1D LUTとして提供している。
  • Perceptually Uniform カラーマップを使うことが推奨される。

それでも性能コストはないのか?

  • 小さな1D LUTの場合、性能への大きな影響はなく、GPUのキャッシュを効率的に利用する。

ゾンビのための多様性

  • Left 4 Dead 2 では、LUTを使ってゾンビの多様な色のバリエーションを生成している。

計算の事前計算

  • 1D LUTを使って高コストな計算をキャッシュし、たとえばガンマ補正を高速に実行する。

強力な3D LUT

  • 3D LUTはRGB空間全体を1つのキューブとして表現し、色を再マッピングする。

設定

  • Panasonic GH6で撮影したログプロファイルのビデオを使って、3D LUT処理を説明している。

簡単な修正

  • DaVinci Resolveを使って色補正を適用し、LUTを再エクスポートする過程を説明している。

Left 4 Deadにおける3D LUTの利用

  • ゲーム業界で広く知られたワークフローとして、外部ツールを使ってゲームの色をスタイリングする。

高度な冒険

  • DaVinci Resolveのようなカラーグレーディングツールを使って、複雑な色変換をLUTとしてエクスポートする方法を説明している。

その他の使い方

  • LUTの別のユースケースとして、Game Boy Advancedで Tomb Raider を移植する際に使われたLUTを紹介している。

GN⁺の意見

  • LUTは、ビデオゲームとグラフィックスプログラミングにおける色操作と最適化のための強力なツールである。この技術はリアルタイムレンダリングで性能低下なしに多様な視覚効果を提供できるため、開発者にもアーティストにも有用である。
  • LUTを使う際には、色の正確さとデータの視覚表現を考慮する必要がある。特に、色覚多様性を考慮した Perceptually Uniform カラーマップの重要性を理解することが重要である。
  • この技術は、色補正、視覚的スタイリング、データ可視化など、さまざまな分野に応用できる。たとえば、映画業界でカラーグレーディングに使われるLUTと似た技術をゲーム開発に適用できる。
  • LUTのサイズと精度は用途とプラットフォームによって異なる可能性があり、その理解が必要である。たとえば、映画業界では 33³px サイズのLUTが標準だが、ゲームや他のグラフィックスアプリケーションでは別のサイズが必要になることがある。
  • この技術を使う際には、色の正確な表現と性能最適化のあいだのバランスを取ることが重要である。LUTを効果的に使うには、色彩理論とグラフィックスプログラミングに対する深い理解が必要である。

1件のコメント

 
GN⁺ 2024-03-01
Hacker Newsのコメント
  • ルックアップテーブル(LUT)を使って効果を実装する方法についての説明

    • プレイヤー周辺の円形照明の詳細を保存する大きなルックアップテーブルと、背景行の順序をランダム化する第2のルックアップテーブルが使われている。
    • 画面の1/20しか更新できないが、ランダムな順序によって滑らかなエッジ効果を生み、ラスタースキャンを隠すことができる。
    • リアルタイム計算では遅すぎる部分をルックアップテーブルで処理することで、行が更新されない事態を防いでいる。
  • テクスチャトンネル効果のためにルックアップテーブルを使った経験の共有

    • 画面上の各ピクセルについて、中心からの角度と距離が分かるルックアップテーブルを使っている。
    • 3Dジオメトリのあるトンネル内を移動しているように見えるが、低コストで、Picoでも実装できる。
    • ゲーム『Stardust』がこの効果を使っていたと思っていたが、実際には繰り返される6フレームのアニメーションを背景に使っていた。
  • 『The Legend of Zelda: Wind Waker』がルックアップテーブルを使って独特なビジュアルを実現した方法に関する動画リンクの共有

    • 『Breath of the Wild』と『Tears of the Kingdom』も同じ技術を使っている。
  • ルックアップテーブルに関する記事を投稿した著者が質問に答える準備があることを案内。

  • レトロゲーム開発におけるルックアップテーブルの重要性についての説明

    • 以前はメモリ速度は速かった一方でプロセッサは遅かったため、できるだけ多くの計算をルックアップテーブルに詰め込んでいた。
    • ルックアップテーブルをより上手く活用するほど、より華やかなゲームを作ることができた。
  • NESホームブリューコミュニティで、ルックアップテーブルを使って驚くべき物理効果を実装したゲーム『Bobl』についての経験共有

    • システムがリアルタイムで計算できる量をはるかに超える複雑さに見える効果を、ルックアップテーブルで実現している。
  • SNES版『Doom』移植版がルックアップテーブルを使って三角関数を計算していた方法に関するポッドキャストエピソードの共有

    • SNESにはグラフィックプロセッサがなかったため、ルックアップテーブルを使って計算していた。
  • 動的プログラミングの知識がある人たちがキャッシングとメモ化を混同していることへの不満の表明

    • メモ化はローカルな共有状態、キャッシングはグローバルな共有状態であり、それぞれ異なる問題を抱えている。
    • キャッシングは将来必要になるものを見越すことであり、メモ化はすぐに必要になることが分かっている状態である。
    • タビュレーションは共通部分問題をあらかじめ見つけて解決することであり、ルックアップテーブルは固定サイズのタビュレーションである。
  • ルックアップテーブルを扱うMacアプリ『Lattice』に関する情報の共有

  • ルックアップテーブルを使ったさまざまな効果の例の一覧

    • 大気散乱、スプライトの色調変更、ナイトビジョン、サーモグラフィカメラ、白黒ビデオフィード効果、グリッチ効果、高さマップのシェーディング、宇宙船の排気プルームのアルファ点要素、Webサイト訪問者のマウス滞留ヒートマップ、結晶効果、原始色空間でのポストプロセッシングのカラー化など。
    • ルックアップテーブルは既知の値の配列を可視化したものであり、非常に有用である。