PixelFormat (日本語)

LÖVE 11.0 から使用可能
この列挙型は CanvasFormatCompressedImageFormat から変更されました。

テクスチャ, ImageData, および CompressedImageData のピクセル形式です。

通常配色形式

定数

名称 ベクトル成分 ピクセルあたりのビット数 範囲 Canvas で使用可能 ImageData で使用可能 注釈
normal 4 32 [0, 1] はい ガンマ補正有効時は rgba8 または srgba8 のエイリアス (別名) となります。
r8 1 8 [0, 1] はい
rg8 2 16 [0, 1] はい
rgba8 4 32 [0, 1] はい はい
srgba8 4 32 [0, 1] はい rgba8 のガンマ補正版です。
rgba16 4 64 [0, 1] はい
r16f 1 16 [-65504, +65504]* はい
rg16f 2 32 [-65504, +65504]* はい
rgba16f 4 64 [-65504, +65504]* はい はい
r32f 1 32 [-3.4028235e38, 3.4028235e38]* はい
rg32f 2 64 [-3.4028235e38, 3.4028235e38]* はい
rgba32f 4 128 [-3.4028235e38, 3.4028235e38]* はい はい
rgba4 4 16 [0, 1] はい
rgb5a1 4 16 [0, 1] はい
rgb565 3 16 [0, 1] はい
rgb10a2 4 32 [0, 1] はい
rg11b10f 3 32 [0, 65024]** はい

* -infinity と +infinity は合法値です。
** +infinity は合法値です。

深度 / ステンシル形式

全ての深度とステンシルピクセル形式は Canvas に限り使用可能です。

デフォルトは読み取り不能であり、読み取り可能フラグを指定して作成した深度・ステンシル形式の Canvas に限りシェーダーのピクセル深度値へアクセスできます (ステンシル値は一切読み取り不能です)。

定数

名称 ピクセルあたりのビット数 深度の有無 ステンシルの有無 注釈
stencil8 8 はい
depth16 16 はい
depth24 24 はい
depth32f 32 はい
depth24stencil8 32 はい はい
depth32fstencil8 40 はい はい

圧縮形式

全ての圧縮ピクセル形式は CompressedImageData (圧縮形式のテクスチャ) を通した Image に限り使用可能です。

通常の配色形式とは異なり、 RAM と VRAM に圧縮したまま存在します。描画時、グラフィックスカードは高速アクセス用のキャッシュへ画像のピクセルを大量に保持するため、これはメモリの空き領域を節約するだけではなく性能の改善にも有効です。

定数 (デスクトップ GPU)

名称 ベクトル成分 ピクセルあたりのビット数 範囲 注釈
DXT1 3 4 [0, 1] デスクトップシステムにおいて完全に不透明な画像に適しています。
DXT3 4 8 [0, 1] この形式で不透明度を滑らかに変化させる場合は上手く混ざり合いません。一般に DXT1 または DXT5 はすべての状況で最良です。
DXT5 4 8 [0, 1] デスクトップシステムでは不透明度が変化する画像において推奨されます。
BC4 1 4 [0, 1] 3Dc+ または ATI1 としても知られています。赤チャンネルのみを格納します。
BC4s 1 4 [-1, 1] BC4 よりも精度は落ちますが、負数を使えます。
BC5 2 8 [0, 1] 3Dc または ATI2 としても知られています。デスクトップシステムにおける標準的なマップでよく使われます。
BC5s 2 8 [-1, 1] BC5 よりも精度は落ちますが、負数を使えます。デスクトップシステムにおける標準的なマップでよく使われます。
BC6h 3 8 [0, +infinity] 半精度浮動小数点数形式による RGB データを格納します。デスクトップシステムにおいて HDR 画像に適しています。
BC6hs 3 8 [-infinity, +infinity] BC6h よりも精度は落ちますが、負数を使えます。
BC7 4 8 [0, 1] 不透明や透過画像表現には非常に優秀ではあるものの DX11 / OpenGL 4 対応の GPU が必要です。

定数 (モバイル GPU)

名称 ベクトル成分 ピクセルあたりのビット数 範囲 注釈
ETC1 3 4 [0, 1] 古い Android デバイスにおいて完全に不透明な画像に適しています。
ETC2rgb 3 4 [0, 1] 新しい Android デバイスにおいて完全に不透明な画像に適しています。
ETC2rgba 4 8 [0, 1] 新しいモバイルデバイスで可変不透明の画像で推奨されます。
ETC2rgba1 4 4 [0, 1] ETC2 形式の RGBA による異形でありピクセルが完全に透明または完全に不透明からなります。
EACr 1 4 [0, 1] 赤チャンネルのみ格納します。
EACrs 1 4 [-1, 1] EACr よりも精度は落ちますが、負数を使えます。
EACrg 2 8 [0, 1] 赤と緑チャンネルを格納します。
EACrgs 2 8 [-1, 1] EACrg よりも精度は落ちますが、負数を使えます。
PVR1rgb2 3 2 [0, 1] この形式を用いる画像は正方形、かつ二の累乗の寸法にする必要があります。
PVR1rgb4 3 4 [0, 1] この形式を用いる画像は正方形、かつ二の累乗の寸法にする必要があります。
PVR1rgba2 4 2 [0, 1] この形式を用いる画像は正方形、かつ二の累乗の寸法にする必要があります。
PVR1rgba4 4 4 [0, 1] この形式を用いる画像は正方形、かつ二の累乗の寸法にする必要があります。
ASTC4x4 4 8 [0, 1]
ASTC5x4 4 6.4 [0, 1]
ASTC5x5 4 5.12 [0, 1]
ASTC6x5 4 4.27 [0, 1]
ASTC6x6 4 3.56 [0, 1]
ASTC8x5 4 3.2 [0, 1]
ASTC8x6 4 2.67 [0, 1]
ASTC8x8 4 2 [0, 1]
ASTC10x5 4 2.56 [0, 1]
ASTC10x6 4 2.13 [0, 1]
ASTC10x8 4 1.6 [0, 1]
ASTC10x10 4 1.28 [0, 1]
ASTC12x10 4 1.07 [0, 1]
ASTC12x12 4 0.89 [0, 1]

注釈

全てのシステムで love.graphics の 画像、および Canvas 形式へ全て対応しているとは限りませんが、デスクトップシステムにおいて圧縮画像形式の DXT ならば、ほぼ 100% 対応しています。

BC4 と BC5 形式はデスクトップシステムの DirectX 10 / OpenGL 3 対応ハードウェアおよびドライバで対応しています。 BC6H と BC7 形式はデスクトップシステムの DirectX 11 / OpenGL 4 対応ハードウェアおよび非常に新しいドライバでのみ対応しています。現在のところ Mac OS X では BC6H または BC7 への対応は一切ありません。

ETC1 はほとんどの Android デバイスと iPhone 5s 以降で対応しています。

ETC2 と EAC 形式は iPhone 5s 以降、および OpenGL ES 3 対応に対応した全ての Android デバイス、そして OpenGL 4.3 対応に対応したデスクトップ GPU で対応しています。

PVR1 形式 は全ての iOS デバイス、および PowerVR GPU と搭載した数機種の Android デバイスで対応しています。

ASTC は新しいモバイルデバイス (例えば iPhone 6 以降)、および Adreno 4xx GPU 以降搭載の Android デバイス、そして Skylake 以降の CPU に内蔵されている Intel GPU のみ対応しています。 また、優れた圧縮形式生成機能がないテクスチャの指定における高圧縮可能形式の選択を考慮した各種異形があります。

Canvas と Image の各種対応状況は love.graphics.getCanvasFormats および love.graphics.getImageFormats で確認してください:

local supportedformats = love.graphics.getImageFormats()

if not supportedformats["DXT5"] then
    -- DXT5 形式の画像を CompressedImageData へ読み込めません!
    -- DXT (別名は S3TC) 形式は特許で保護されているため、 Mesa ドライバを使用している
    -- 一部の Linux システムでは利用者により "libtxc-dxtn" のパッケージを導入する必要があります。
    -- その他のデスクトップ用のドライバにおいて DXT 形式以外の対応は、ほぼ保証されています。
end

if not supportedformats["BC5"] then
    -- BC4 および BC5 形式の画像を CompressedImageData へ読み込むことができません!
    -- 恐らく利用者は動作要件を満たしていないビデオカードを使用しています。
end

関連


そのほかの言語