アットウィキロゴ

シェーディング

2Dゲーム開発におけるシェーディングは、主にスプライト(画像)や背景に対して、ピクセル単位で色調変更、影の描写、発光などの視覚効果を与える処理です。


Playdateにおけるシェーディング

Playdateにおける「シェーディング(陰影表現)」は、一般的なPCやスマートフォンのゲーム開発とは全く異なる、非常にユニークなアプローチが必要になります。
Playdateの最大の特徴は、「白と黒の2色(1-bit)しか表示できないディスプレイ」であり、グレー(灰色)すら存在しない点です。また、強力なGPUを搭載しておらず、描画はCPUベースで行われます。

そのため、Playdateにおけるシェーディングは、最新のシェーダープログラムではなく、レトロゲーム特有の工夫と数学的アルゴリズムによって実現されます。
1. ディザリング(Dithering)による擬似的なグレー表現
Playdateで陰影(グラデーションやグレー)を表現するための最も重要かつ基本的なテクニックです。
概要
白いピクセルと黒いピクセルを市松模様や砂嵐のように細かく交互に配置することで、人間の目の錯覚を利用して「擬似的なグレー」を作り出します。
シェーディングへの応用
光が強く当たっている場所は「真っ白」、少し影になる部分は「白の割合が多いディザパターン」、深い影は「黒の割合が多いディザパターン」、光が当たらない場所は「真っ黒」といった形で、パターンの密度によって明暗(シェーディング)を表現します。

2. パターン描画(Pattern Drawing)の活用
Playdate SDKには、このディザリングを簡単に扱うための機能が標準で用意されています。
x8のパターン定義
開発者は、8×8ピクセルの画像(パターン)を使って図形や線を塗りつぶすことができます。
動的な影の描画
キャラクターの足元の影を描画する際、半透明の黒を重ねることはできないため、「背景のピクセルをチェックして、市松模様のパターンで黒いピクセルだけを上書きする」といった処理を行い、背景が透けて見える擬似的な影(チェッカーボード・シャドウ)を描画します。

3. 3D/擬似3Dゲームにおける動的ライティング
Playdateで3Dゲーム(ポリゴン描画)や擬似3Dを作る猛者たちもいますが、そこでのライティングは以下のように処理されます。
フラットシェーディングとディザパターンのマッピング
光源の方向とポリゴンの面が向いている方向(法線)の角度を計算します。ここまでは一般的な3Dと同じですが、結果を色ではなく「どのディザパターンを面に塗るか」に変換します。面が光を正面から受けていれば白、斜めなら中間のディザパターン、裏側なら黒を割り当てることで、1-bit ディスプレイ上で立体感を生み出します。
アウトライン(輪郭線)の強調
2色しかないため、白い物体と白い物体が重なると境界が消えてしまいます。そのため、物体のエッジ(輪郭)に黒い線を引く(ワイヤーフレームやトゥーンレンダリングのような手法)ことで、視認性を確保することが非常に重要になります。

4. パフォーマンスの壁と「事前レンダリング」
PlaydateはCPUで全ての描画計算を行うため、画面全体に対してリアルタイムで複雑な影の計算(動的なディザリング処理など)を行うと、すぐに処理落ちしてしまいます。

スプライトシートへの焼き込み(Baking)
多くの2Dゲームでは、あらかじめPC上のツール(BlenderやPhotoshopなど)で高精細な3Dモデルや画像を作り、それにディザリング処理をかけて「1-bitのドット絵(スプライト)」に変換したものをゲーム内に取り込みます。これにより、ゲーム実行時の計算負荷をゼロにしています。
C言語による最適化
Lua言語でゲームを作るのが標準ですが、リアルタイムなライティングや複雑な描画エフェクトを行いたい場合は、C言語のAPIを使用してピクセル単位の処理を極限まで最適化する必要があります。

関連ページ

最終更新:2026年05月03日 07:18