ディザリング
Playdateの画面は物理的に「黒か白か」の2色しか表示できない
1-bit ディスプレイ です。
そのため、中間色の「グレー」を表現するには、黒と白のドットを特定のパターンで配置して、人間の目にグレーに見えるように錯覚させるディザリング(Dithering)という技法が不可欠です。
概要
1. ディザリングの基本原理
Playdateでは、ピクセルを網目状(チェック柄など)に配置することで、擬似的にグレーの階層を作り出します。
- 高密度: 黒いドットが多い → 濃いグレー
- 低密度: 白いドットが多い → 薄いグレー
2. Playdate SDKでの主な手法
- A. グラフィックス描画での「パターン」指定
- 塗りつぶし(fillRect や fillEllipse など)を行う際、色(kColorBlack/White)の代わりに「パターン」を指定することでディザリングを実現します。
local gfx = playdate.graphics
-- 50%グレーのパターンを設定
gfx.setPattern({0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55})
gfx.fillRect(0, 0, 100, 100)
- 8x8ピクセルのバイナリパターンを定義します。SDKには、標準的なグレー階調のパターンがあらかじめ用意されています。
- B. 画像の描画モード (setImageDrawMode)
- 画像をプログラムで描画する際、透明度をディザリングで表現するモードがあります。
- kDrawModeFillWhite / kDrawModeFillBlack: 画像を単色塗りつぶしとして扱い、特定のパターンでマスクします
- kDrawModeXOR: 重なった部分を反転させます
- C. 画像変換時のディザリング
- PC上のツールで画像をPlaydate用(1-bit)に変換する際、あらかじめディザリングをかけるのが一般的です。
- Bayer (Ordered): 規則的なドット配置。レトロゲームらしい見た目になります
- Floyd-Steinberg: 誤差拡散法。写真などの階調を滑らかに再現するのに適していますが、1-bit画面では少しノイジーに見えることもあります
3. Playdate特有の「パターン」の書き方
SDKの gfx.setPattern で使う8x8のパターンは、8つの数値(各8ビット)をテーブル(配列)として渡します。
-- 例:斜め線のパターン
{0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01}
これを手動で計算するのは大変なため、多くの開発者はオンラインのパターンエディタや、SDKに標準で含まれているグレー階調用の定数を利用します。
4. ディザリング利用時の注意点
- フリッカー(ちらつき)
- 非常に細かいディザリングパターンを高速で動かすと、画面の特性上、少し「にじみ」や「残像」のように見えることがあります。
- 視認性
- Playdateの画面はバックライトがない(反射型)ため、あまりに複雑なディザリングは、特に暗い場所で画面を読み取りにくくします。
- 「迷ったら太い線やハッキリしたドットを使う」のがPlaydateデザインの鉄則です。
- 圧縮効率
- 複雑なディザリングを多用した画像は、ファイルサイズ(pdi形式)が大きくなりやすい傾向にあります。
Playdateにおいてディザリングは「制限を回避するための工夫」ではなく、「1-bitならではの表現スタイル」そのものです。
標準の gfx.setPattern を使いこなすことで、黒と白しかない世界に奥行きと質感を加えることができます。
ディダリングパターンツール
関連ページ
最終更新:2026年05月03日 10:11