アンチエリアシング(Anti-aliasing)は、CG画像で発生するジャギー(エイリアシング)を減らす技術です。 斜めの線や曲線を描画する際に生じる階段状のギザギザを、周辺ピクセルの色を調整することで滑らかに見せます。
効果: 線や文字がより滑らかで自然に見える
原理: エッジ部分で中間色を使用して視覚的なギザギザを軽減
用途: フォント描画、3Dグラフィックス、画像処理など
原理: 実際の解像度より高い解像度で描画し、その後ダウンサンプリングする
方法: 例えば4倍の解像度で描画後、4ピクセルの平均色を1ピクセルに集約
特徴: 最も高品質だが、計算負荷が非常に大きい
用途: 高品質が要求される映像制作、建築可視化など
原理: 各ピクセル内で複数のサンプルポイントを取り、カバレッジを計算
方法: ピクセル内の4点や8点でサンプリングし、図形がカバーする割合で色を決定
特徴: SSAAより軽量で実用的、エッジ部分のみに適用
用途: リアルタイム3Dグラフィックス、ゲーム開発
原理: 複数フレームの情報を活用して高品質化
方法: フレーム間でサンプル位置を微調整し、時間軸方向で平均化
特徴: 少ない計算負荷で高品質、動きのあるシーンに適用
用途: 現代のゲームエンジン、リアルタイムレンダリング
原理: 描画後の画像に対してフィルタ処理を適用
方法: エッジ検出後、周辺ピクセルとのブレンディングで滑らか化
特徴: 非常に軽量、既存の描画パイプラインに容易に組み込み可能
用途: モバイルデバイス、低スペック環境での3Dグラフィックス
原理: 図形の幾何学的情報を利用して数学的に計算
方法: 直線や円などの図形で、ピクセルとの交差面積を解析的に求める
特徴: 非常に高精度、特定の図形に限定される
用途: ベクターグラフィックス、CADソフトウェア、フォント描画
// アンチエリアシングの有効化
ctx.imageSmoothingEnabled = true;
ctx.imageSmoothingQuality = 'high'; // 'low', 'medium', 'high'
// WebGL での MSAA 有効化
const gl = canvas.getContext('webgl', { antialias: true });
// CSS でのフォントアンチエリアシング
font-smooth: always;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
// 4倍解像度で描画後、ダウンサンプリング
const scale = 4;
const highResCanvas = document.createElement('canvas');
highResCanvas.width = originalWidth * scale;
highResCanvas.height = originalHeight * scale;
const highResCtx = highResCanvas.getContext('2d');
highResCtx.scale(scale, scale);
// 高解像度で描画...
// 元のサイズに縮小してアンチエリアシング効果を得る
ctx.drawImage(highResCanvas, 0, 0, originalWidth, originalHeight);
品質順: SSAA > MSAA > TAA > 解析的AA > フィルタベースAA
速度順: フィルタベースAA > 解析的AA > TAA > MSAA > SSAA
メモリ使用量: フィルタベースAA < 解析的AA < TAA < MSAA < SSAA