PICO-8パレットとピクセルマッピングアルゴリズム

2025-09-11

このコードは、PICO-8ゲーム機の16色パレットを定義し、いくつかの色距離計算方法(ユークリッド距離、重み付きRGB距離、HyAB距離とその変種)と、画像ピクセルを最も近いパレットの色にマッピングする関数を提供します。NumPyを利用して効率的に色データを処理し、ユーザーは異なる色合わせ戦略に合わせて距離関数をカスタマイズできます。これは、ピクセルアートゲーム開発や画像の色量子化に非常に役立ちます。

続きを読む
ゲーム

HyAB距離式によるCIELAB色量子化の改良

2025-07-10

この記事では、従来のユークリッド距離に代わるHyABという新しい距離式を用いた、CIELAB色量子化の改良手法について論じています。HyABは、輝度には絶対差、彩度にはユークリッド距離を用いることで、人間の知覚により良く合致することを実験で示しています。著者はこれをk-meansアルゴリズムに適用し、L成分の平均値計算を中央値計算に置き換えることで、さらに結果を最適化しています。HyABは場合によっては画像品質を向上させるものの、全体的なシステム設計やディザリングなどの後処理技術の方が最終的な結果に大きな影響を与えることを著者は指摘しています。

続きを読む
開発

N64におけるリアルタイムライティングとノーマルマッピング:驚異的なリバースエンジニアリングの偉業

2025-05-17

この記事では、任天堂64でリアルタイムライティングとノーマルマッピングを実現する驚くべき技術について説明しています。パレットテクスチャとCPUサイドシェーディングを巧みに活用することで、作者はN64のハードウェアの制限を回避し、驚くほど印象的なビジュアルを実現しました。この技術は、拡散と法線情報を共有パレットに圧縮し、実行時にCPUを介してパレットを更新してライティング効果をシミュレートするというものです。点光源や影のサポートがないなど、いくつかの制限はありますが、その革新的な性質は注目に値し、N64プラットフォームでのグラフィックレンダリングに新たな可能性を開きます。

続きを読む
開発

Quakeのプリコンパイルされた可視性:PVSアルゴリズムの解明

2025-01-10

これは「PVSの解明」シリーズの最初の部分であり、Quakeのエンジンがプリコンパイルされた可視性セット(PVS)を使用してレンダリングのパフォーマンスをどのように最適化したかを調べます。90年代半ば、ソフトウェアレンダリングの制限により、オーバードローの削減が不可欠になりました。Quakeは、この問題に対処するために、ポータルシステムとPVSを使用しました。ポータルは世界をセルに分割し、エンジンはカメラから見えるセルと、ポータルを通して見える他のセルのみをレンダリングします。PVSアルゴリズムは、マップのコンパイル中に各セルの見えるセルのリストを事前に計算することにより、ランタイムでの複雑な可視性テストを回避し、レンダリング効率を大幅に向上させます。この記事では、ポータルの定義、BSPツリーの役割、アルゴリズムの3つのステップ(基本可視性、完全可視性、結果の解決)を含め、PVSアルゴリズムの実装の詳細について詳しく説明します。

続きを読む