(58)【調査した分野】(Int.Cl.,DB名)
スクリーンの各ピクセルを複数のサブピクセルに分割し、面分によって構成される三次元オブジェクトを、前記サブピクセル単位の分解能で処理する画像処理装置であって、
前記スクリーンへの前記面分の射影にピクセルの少なくとも一部が含まれる場合、当該ピクセルに対応する面分上の点のZ値と、前記面分のZ値の傾きとを出力するラスタライザと、
前記ラスタライザが出力した、前記ピクセルに対応する面分上の点のZ値と前記Z値の傾きとを用いて、前記サブピクセルに対応する面分上の点のZ値を算出するZ値算出部、及び前記Z値算出部が算出した前記サブピクセルに対応する面分上の点のZ値を用いて、サブピクセル単位でZテストを行うZテスト処理部を含むフラグメントテストユニットと、
を有する画像処理装置。
前記Zテスト処理部によって、前記サブピクセルに対応する面分上の点のZ値がZバッファに保持されているZ値よりも視点側に存在すると判断された場合、当該サブピクセルの表示データを生成する表示データ生成部
をさらに有する請求項1又は2に記載の画像処理装置。
【発明を実施するための形態】
【0014】
以下、図面を参照して、本発明を実施するための形態について説明する。なお、以下に示す実施の形態の構成は例示であり、本発明は実施の形態の構成に限定されない。
【0015】
<システム構成>
図1は、実施の形態に係るグラフィックスプロセッサを含むシステム構成の一例を示す機能ブロック図である。本実施の形態に係るシステムは、CPU(Central Processing Unit)1と、いわゆるGPU(Graphics Processing Unit)等のグラフィックスプロセッ
サ2と、テクスチャバッファ3と、Zバッファ41と、カラーバッファ42とを含む。
【0016】
CPU1は、3D(3 Dimensions,三次元)オブジェクト(「3Dモデル」とも呼ぶ)を表示するための、頂点列(「頂点群」とも呼ぶ)を示す情報等を出力する。また、テクスチャバッファ3は、3Dオブジェクトの面にマッピングする画像であるテクスチャを保持する。Zバッファ41、カラーバッファ42は、それぞれスクリーンの画素(ピクセル)ごとに、Z値(深度)情報、色情報を保持する。そして、カラーバッファ42に一画面分のデータが書き出されると、カラーバッファ42が保持しているデータで、スクリーンが更新される。なお、Zバッファ41及びカラーバッファ42は、「フレームバッファ」
とも呼ばれる。
【0017】
また、MSAA(Multi Sample Anti-Aliasing)やスーパーサンプルアンチエイリアシングを行う場合、Zバッファ41及びカラーバッファ42は、スクリーンの解像度よりも高い分解能でデータを保持する。すなわち、Zバッファ41及びカラーバッファ42は、スクリーン上の1ピクセルよりも詳細なサブピクセルのデータを保持するマルチサンプルバッファといえる。この場合、グラフィックスプロセッサ2は、高解像度のデータをマルチサンプルバッファであるZバッファ41及びカラーバッファ42に格納する。そして、カラーバッファ42に格納されたデータは、フィルタ処理によりスクリーンの解像度に変換され、図示していないフレームバッファに格納される。その後、フレームバッファに格納されたデータが、スクリーンに表示される。
【0018】
ここで、MSAA又はスーパーサンプルアンチエイリアシングに用いられるピクセルの構成を説明する。
図2は、複数のサブピクセルに分割された、スクリーン上の1ピクセルの例を示す図である。
図2の例では、スクリーン上のピクセル100が、4つのサブピクセル102(102a〜102d)に分割されている。サブピクセルの境界は、破線で示されている。また、ピクセルに対応する点として、ピクセルの中央を、ピクセルセンター101と呼ぶ。サブピクセルに対応する点として、サブピクセルの中央を、サンプルポイント103(103a〜103d)と呼ぶ。なお、
図2の例では、ピクセルセンター101を基準として、XY平面における左上、右上、左下、右下の領域に、それぞれサブピクセル102a〜102d、サンプルポイント103a〜103dが存在する。
図2の例では、XY平面におけるピクセルの座標及びサブピクセルの座標として、ピクセル及びサブピクセルの中心の座標(すなわち、ピクセルセンター及びサンプルポイント)が用いられているが、このような基準の座標は、中心の座標以外であってもよい。例えば、ピクセル及びサブピクセルの左上の座標を基準の座標としてもよい。
【0019】
スクリーン座標におけるピクセルの1辺の長さを1とすると、ピクセルセンター101とサンプルポイント103とのX軸方向の差Xsは0.25、Y軸方向の差Ysは0.25である。このとき、ピクセルセンター101の座標を(X
101,Y
101)とすると、サンプルポイント103aの座標は(X
101−0.25,Y
101−0.25)、サンプルポイント103bの座標は(X
101+0.25,Y
101−0.25)、サンプルポイント103cの座標は(X
101−0.25,Y
101+0.25)、サンプルポイント103dの座標は(X
101+0.25,Y
101+0.25)と算出できる。なお、Y軸は
図2における下方向が正であるものとする。また、サブピクセルの数は4には限定されず、9や16の他、2以上の数であれば採用することができる。本実施の形態では、ピクセルの分割数を4としてMSAAを行うものとする。
【0020】
また、グラフィックスプロセッサ2は、頂点処理部21と、基本図形生成部22と、ラスタライザ23と、フラグメント処理部24と、Z値算出部251と、Zテスト処理部252と、表示データ生成部26と、ブレンド処理部27とを有する。なお、Z値算出部251及びZテスト処理部252を、「フラグメントテストユニット」とも呼ぶ。
【0021】
頂点処理部21は、CPU1から頂点列の情報を取得する。頂点列の情報は、複数の頂点の情報を含む。また、頂点の情報は、座標の情報と、頂点の属性値とを含む。座標の情報は、X座標、Y座標、Z座標の各座標値を含み、頂点の属性値は、頂点の色又はマッピングするテクスチャのアドレス等を示す情報(attributeとも呼ぶ)を含む。また、頂点
処理部21は、3Dオブジェクトの位置や向き、視点の位置や向き等に基づいて、取得した頂点座標をスクリーン座標に変換する。そして、頂点処理部21は、変換後の頂点座標(X,Y,Z)及び頂点の属性値を、順次描画パイプラインに出力する。
【0022】
なお、頂点処理部21は、例えばDSP(Digital Signal Processor)等のプロセッサであってもよく、プログラマブルであってもよい。また、頂点処理部21は、頂点シェーダ(Vertex Shader)と呼ばれることもある。
【0023】
基本図形生成部22は、座標変換後の頂点列のデータを用いて、基本図形(プリミティブ)を生成する。例えば、基本図形生成部22は、取得した頂点列の順に従い、連続する3頂点をエッジで接続して、基本図形である三角形(いわゆるポリゴン)を生成する。基本図形生成部22は、プリミティブアセンブルとも呼ばれる。
【0024】
また、後述するラスタライズの前処理として、基本図形生成部22は、生成した三角形の各エッジの傾きや、生成した三角形のZ値の傾き(すなわち、X軸方向及びY軸方向についてのZ値の変位量)を算出する。なお、X軸方向についてのZ値の変位量をΔZx、Y軸方向についてのZ値の変位量をΔZyとする。例えば、ΔZxは、X軸方向に単位量変位したときのZ値の変位量を表し、ΔZyは、Y軸方向に単位量変位したときのZ値の変位量を表す。本実施の形態では、単位量を0.25とし、
図2のピクセルセンター101とサンプルポイント103との間のZ値の変位量を、傾きΔZx、ΔZyとして算出するものとする。Z値の傾きは、後述するラスタライズにおいて頂点間の内挿演算に用いられるデータである。すなわち、Z値の傾きは、本実施の形態やMSAAに限らず算出され、ラスタライザ23に渡されるデータである。基本図形生成部22は、生成した三角形の頂点座標(X,Y,Z)及び頂点の属性値のほか、三角形のエッジの傾きや、Z値の傾き等のデータを、描画パイプラインに出力する。
【0025】
ラスタライザ23は、スクリーン上に射影された三角形の領域内(便宜上、単に「三角形の内部」とも呼ぶ)に存在する画素データ列(フラグメント(Fragment)列)を生成する。ここでは、画素(ピクセル)の表示データを生成するための属性値であるフラグメントを生成する。まず、ラスタライザ23は、少なくともエッジの境界付近に存在するサブピクセルについて、当該サブピクセルが三角形の内部に存在するか(すなわち、当該サブピクセルが三角形の内点であるか)内外判定を行う。内外判定は、例えば、三角形のエッジを表すベクトルと、サンプルポイントとの外積を用いて行うことができる。より詳細には、予め向きが定められているエッジと、サンプルポイントとの外積により、サンプルポイントがエッジ(及びその延長線)で分割される領域のどちら側に存在するか判断できる。よって、3つのエッジの各々とサンプルポイントとの外積を求めれば、サンプルポイントが、3つのエッジで囲まれる領域の内側に存在するか否か判定できる。
【0026】
ここでは、三角形の内点であると判定されたサブピクセルを含むピクセルを、三角形の内部に含まれるピクセルとして扱う。そして、ラスタライザ23は、三角形内部に存在するピクセルの属性値(varyingとも呼ぶ)を生成する。当該属性値は、ピクセルの色を決
定するためのデータである。また、三角形に含まれるピクセルの属性値は、例えば、頂点属性の情報を用いて内挿演算することにより求められる。
【0027】
また、ラスタライザ23は、フラグメント情報として、各ピクセルについて、スクリーン上の左右方向及び上下方向の位置を表すx座標及びy座標、奥行き方向の位置を表すz座標、ピクセルの属性値を出力する。さらに、本実施の形態では、ラスタライザ23は、サブピクセル情報として、Z値の傾き(ΔZx、ΔZy)、及びカバーマスクを出力する。カバーマスクとは、各サブピクセルを描画するか否かを示すフラグである。カバーマスクは、例えば、サブピクセル分のビット数が用意される。本実施の形態では、4つ(2*2)のカバーマスクが用意される。そして、カバーマスクには、各サブピクセルに対応して1(Pass)又は0(Fail)が設定される。ラスタライザ23は、例えば、三角形内部に存在すると判定したサブピクセルのカバーマスクに1を設定する。
【0028】
図3を用いて、ラスタライザ23の処理を説明する。
図3は、横方向(X軸方向)に4つ、縦方向(Y軸方向)に3つ、合計12個のピクセルを表している。また、各ピクセルは、4つのサブピクセルに分割されている。斜めに描かれた太線は、三角形のエッジを表しており、エッジの右下側の領域が三角形の内部に相当するものとする。ラスタライザ23は、各サブピクセルの中心であるサンプルポイントの座標を用いて、各サブピクセルが三角形の内側に存在するか判断する。
図3では、三角形の内側に存在するサブピクセルに斜線のハッチングを施している。そして、1つでもサブピクセルが三角形の内側に存在するピクセルについて、フラグメント情報(ピクセルセンターの座標及びピクセルの属性値)と、サブピクセル情報(三角形のZ値の傾き及び各サブピクセルのカバーマスク)が出力される。
図3は1つの三角形の一部を表しているため、三角形のZ値の傾きは、すべてのピクセルで同じ値が設定される。また、カバーマスクは、例えば右上のピクセルの場合、右下のサブピクセルに対応するカバーマスクに1が設定され、その他3つのサブピクセルに対応するカバーマスクにはそれぞれ0が設定される。
【0029】
ラスタライザ23が描画パイプラインに出力するデータを概括的に表すと、次のようになる。
フラグメント情報=(X
101,Y
101,Z
101,属性値)
サブピクセル情報=(ΔZx,ΔZy,カバーマスク[2*2])
このようなデータが、ピクセルごとに出力される。
【0030】
なお、サブピクセルは1ピクセル内という微小領域に存在するため、Z値の傾き(ΔZx,ΔZy)が取り得る値は、Z値がとり得る値と比較して十分に小さいことが期待できる。よって、座標値(Z値)のために確保するビット幅(ビット数)よりも、Z値の傾きのために確保するビット幅を小さくしてもよい。例えば、Z値のビット幅及びデータ型を、32ビットfloat、Z値の傾きのビット幅及びデータ型を、24ビットfloatとしてもよい。
【0031】
フラグメント処理部24は、各ピクセルの属性値を用いてカラー値を算出する。カラー値は、例えば、各原色の輝度を示すR(Red)、G(Green)、B(Blue)、及び透明度を示すA(Alpha)の各パラメータによって表される。本実施の形態では、例えば、各パラ
メータに8ビットを用いる32ビットカラーを採用する。なお、8ビットカラー、16ビットカラー、48ビットカラー、その他を採用してもよい。なお、MSAAでは、ピクセルごとに1つのカラー値が用いられる。また、テクスチャをマッピングする場合は、フラグメント処理部24はテクスチャバッファ3からテクスチャのアドレスを取得し、カラー値の代わりに各画素に表示するテクスチャのアドレスを出力するようにしてもよい。
【0032】
フラグメント処理部24が描画パイプラインに出力するデータを概括的に表すと、次のようになる。
フラグメント情報=(X
101,Y
101,Z
101,RGBA)
サブピクセル情報=(ΔZx,ΔZy,カバーマスク[2*2])
このようなデータが、ピクセルごとに出力される。
【0033】
なお、フラグメント処理部24は、例えばDSP等のプロセッサであってもよく、プログラマブルであってもよい。また、フラグメント処理部24は、フラグメントシェーダと呼ばれることもある。
【0034】
フラグメントテストユニットは、Zバッファ41に格納されているデータを用いて、サブピクセルごとにZ比較(Zテスト)を行う。本実施の形態では、まず、Z値算出部251が、ピクセルセンター101のZ値(Z
101)、並びにZ値の傾きΔZx及びΔZyを
用いて、各サブピクセルのZ値(Za〜Zd)を算出する。
【0035】
サブピクセルのZ値は、例えば、次のような式により求められる。
Za=Z
101−ΔZx−ΔZy
Zb=Z
101+ΔZx−ΔZy
Zc=Z
101−ΔZx+ΔZy
Zd=Z
101+ΔZx+ΔZy
【0036】
なお、本実施の形態では、X軸方向に0.25変位したときのZ値の変位量をΔZxとし、Y軸方向に0.25変位したときのZ値の変位量をΔZyとしている。また、
図2に示したようにピクセルセンター101とサンプルポイント103とのX軸方向の差Xsは0.25、Y軸方向の差Ysは0.25であるため、Za〜Zdは上記の式により求められる。
【0037】
ここで、X軸方向に1変位したときのZ値の変位量をΔZxとし、Y軸方向に1変位したときのZ値の変位量をΔZyとしておいてもよい。この場合は、Za〜Zdの値は次のような式で求められる。
Za=Z
101−0.25*ΔZx−0.25*ΔZy
Zb=Z
101+0.25*ΔZx−0.25*ΔZy
Zc=Z
101−0.25*ΔZx+0.25*ΔZy
Zd=Z
101+0.25*ΔZx+0.25*ΔZy
すなわち、サブピクセルのZ値は、ピクセルセンターのZ値と、三角形のZ値のX軸方向の傾きと、三角形のZ値のY軸方向の傾きと、ピクセルセンター及びサンプルポイントの相対座標とに基づいて算出することができる。
【0038】
そして、Zテスト処理部252は、Zバッファ41に格納されているデータを用いて、サブピクセルごとにZ比較(Zテスト)を行う。すなわち、Zテスト処理部252は、サブピクセルのXY平面における座標に対応するZ値をZバッファ41から取得し、サブピクセルのZ値と比較する。Zバッファ41は、例えばマルチサンプルバッファであり、1画面分の表示データを生成する過程で処理対象となったオブジェクト(三角形)のうち、最も手前(すなわち視点側)に存在する三角形のZ座標(深度)をサブピクセルごとに保持している。採用されている座標系が右手座標系の場合と左手座標系の場合とでは、Z軸方向の正負が逆になるが、いずれの場合であってもZ値の大小比較により三角形が視点側に存在するか否か判断できる。
【0039】
処理対象のサブピクセルについて、三角形がZバッファ41の値よりも視点側に存在すると判断された場合、Zテスト処理部252は、「1(Pass)」をカバーマスクの値とAND演算し、結果の値を新たなカバーマスクとして出力する。一方、三角形がZバッファ41の値よりも奥に存在すると判断された場合、Zテスト処理部252は、「0(Fail)」を、カバーマスクの値とAND演算し、結果の値を新たなカバーマスクとして出力する。すなわち、Zテスト処理部252が出力するカバーマスクには、当該サブピクセルが三角形の内部に存在し、且つ三角形が他のオブジェクトよりも視点側に存在する場合に「1(Pass)」が設定され、それ以外の場合に「0(Fail)」が設定される。
【0040】
Zテスト処理部25は、少なくとも1つのサブピクセルについてカバーマスクが「1(Pass)」の場合、当該サブピクセルを含むピクセルについてフラグメント情報とサブピクセル情報とを出力する。カバーマスクがすべて「0(Fail)」のピクセルについては、フラグメント情報及びサブピクセル情報は廃棄される。
【0041】
なお、Zテスト処理部252によるZ比較は、カバーマスクが「1(Pass)」のサブピクセル(すなわち、三角形内部のサブピクセル)について行うようにしてもよい。また、
Z値算出部251によるZ値の算出も、カバーマスクが「1(Pass)」のサブピクセルについて行うようにしてもよい。
【0042】
図3の例では、少なくとも斜線のハッチングが施されたサブピクセル(すなわち、三角形の内部に存在するサブピクセル)の各々について、サンプルポイントのZ値とZバッファ41に保持されているZ値とを比較する。サンプルポイントのZ値の方が視点側に存在すると判断された場合、サブピクセルに対応するカバーマスクには「1(Pass)」が設定される。これは、カラーバッファ42の当該サブピクセルに、処理対象の三角形を書き込むべきことを意味している。一方、Zバッファ41に保持されているZ値の方が、視点側に存在すると判断された場合、サブピクセルに対応するカバーマスクには「0(Fail)」が設定される。これは、当該サブピクセルにおいて、処理対象の三角形は他のオブジェクトに隠れるためスクリーンに描画されないことを意味する。このようにして、陰面消去が行われる。
【0043】
Zテスト処理部252が描画パイプラインに出力するデータを概括的に表すと、次のようになる。ここでは、Z値の情報は出力されない。
フラグメント情報=(X
101,Y
101,RGBA)
サブピクセル情報=(カバーマスク[2*2])
【0044】
表示データ生成部26は、サブピクセル情報のカバーマスクを参照し、カバーマスクが「1(Pass)」のサブピクセル(すなわち、三角形内部のサブピクセルであって、且つZ比較において三角形が視点側に存在すると判断されたサブピクセル)について、サブピクセルの表示データを生成する。本実施の形態では、1ピクセルにつき最大で4つのサブピクセルの表示データが生成される。生成されるサブピクセルの表示データは、サブピクセルのX座標、Y座標、カラー値を含む。
【0045】
生成されるサブピクセルの表示データを概括的に表すと、次のようになる。
サブピクセル102a=(X
101−0.25,Y
101−0.25,RGBA)
サブピクセル102b=(X
101+0.25,Y
101−0.25,RGBA)
サブピクセル102c=(X
101−0.25,Y
101+0.25,RGBA)
サブピクセル102d=(X
101+0.25,Y
101+0.25,RGBA)
【0046】
X
101及びY
101は、ピクセルセンター101のX座標及びY座標である。
図2を用いて説明したように、サブピクセル102のX座標及びY座標は、ピクセルセンター101のX座標及びY座標との相対座標が予め定められており、各座標は上記のように求められる。また、本実施の形態ではMSAAを採用しているため、各サブピクセル102のRGBAには、すべてピクセルセンターのRGBAが設定される。なお、スーパーサンプルアンチエイリアシングを採用する場合は、サブピクセルごとに独立したカラー値を設定する。表示データ生成部26は、生成されたサブピクセル102(102a〜102d)の表示データを描画パイプラインに出力する。
【0047】
ブレンド処理部27は、サブピクセルごとに透明度(A)に基づいて描画色のブレンド処理を行う。ブレンド処理は、サブピクセルの透明度に応じて、奥に存在するオブジェクトの色を透過して表示するための処理である。そして、ブレンド処理部27は、サブピクセルごとに描画色を示すデータを、カラーバッファ42(マルチサンプルバッファ)に出力する。
【0048】
その後、全てのオブジェクトが描画されると、カラーバッファ42に格納されたデータは、スクリーンの解像度に応じてフィルタ処理される。フィルタ処理後のカラーバッファに保持されるデータは、スクリーンの解像度で保持される。本実施の形態では、例えば、
1つのピクセルに含まれる4つのサブピクセルのカラー値を平均することにより、マルチサンプルバッファに保持されたデータを4分の1に縮小する。
図4は、
図3に示したカラーバッファ42(マルチサンプルバッファ)のデータをフィルタ処理した後のデータを概括的に表している。
図3のマルチサンプルバッファにおいて、三角形の内側の描画対象部分(太線の右下部分)は、単一のカラー値で塗りつぶされており、三角形の外側の描画されていない領域(太線の左上部分)は、各カラー値が0であるとする。このとき、
図3の左下のピクセルは、下側2つのサブピクセルがカラー値を有しており、上側2つのサブピクセルの各カラー値は0である。よって、フィルタ処理後のカラーバッファを示す
図4において、左下のピクセルは、
図3の4つのサブピクセルの平均を取ることによって、下側2つのサブピクセルのカラー値の50%の値となっている。このように表示すれば、スクリーン全体でジャギーが軽減される。
【0049】
本実施の形態では、ラスタライザ23が、ピクセルセンターの座標、及び三次元オブジェクトの面分のZ値の傾き(ΔZx、ΔZy)等を、描画パイプラインに転送する。MSAAでは、一般的に1つのピクセルを4以上のサブピクセルに分割する。ここで、描画パイプラインに4つのZ値を転送するよりも、ピクセルセンターの座標(Z値)及びZ値の傾きを転送する方が、データ量は小さくなる。すなわち、描画パイプラインに必要な信号線の伝送容量が小さくて済み、小さなハードウェア構成でグラフィックスプロセッサを実現することができる。なお、本実施の形態では、Z値算出部251がサブピクセルのZ値を算出し、表示データ生成部26がサブピクセルの表示データを生成する。このような処理を行っても、パイプライン処理全体としては大きな処理の遅延にはつながらない。よって、本実施の形態では、ハードウェア構成を拡大することなく、データの転送効率を向上させることができる。
【0050】
また、本実施の形態では、Z値のために確保するビット幅よりも、Z値の傾きのために確保するビット幅を小さくしてもよい。4つのZ値を転送するよりも、ピクセルセンターのZ値及びZ値の傾き(Z,ΔZx,ΔZy)を転送する方が信号線の幅が小さくなることに加え、Z値の傾きのために確保するビット幅を小さくすれば、さらに信号線の幅(ゲート規模)を削減することができる。すなわち、ハードウェア構成を拡大することなく、データの転送効率を向上させることができる。
【0051】
なお、本実施の形態では、MSAAを行うものとして説明したが、本発明は、スーパーサンプリングアンチエイリアシング等、ピクセルを複数のサブピクセルに分割し、スクリーンの解像度よりも高い分解能で描画データを扱う技術に適用することができる。
【0052】
また、
図2に示したスクリーン座標におけるピクセルのサイズは任意のスケールを採用することができる。例えば、ピクセルの1辺の長さを4とすれば、サンプルポイントとピクセルセンターとの距離は、X軸方向に1、Y軸方向に1となる。すなわち、サブピクセル102a〜102dの座標は、次のように求められる。
サブピクセル102a(X
101−1,Y
101−1)
サブピクセル102b(X
101+1,Y
101−1)
サブピクセル102c(X
101−1,Y
101+1)
サブピクセル102d(X
101+1,Y
101+1)
このようにすれば、表示データ生成部26がサブピクセルの座標を求める際の演算は、より単純なものとなる。
【0053】
なお、上記実施の形態で説明した処理は、結果が変わらない限りにおいて、実行する順序を入れ替えてもよい。また、本実施の形態に係るグラフィックプロセッサ2は、同様の処理を行うグラフィックアクセラレータや、LSI(Large Scale Integration)の部分
であるIP(Intellectual Property)コア等の画像処理装置であってもよい。また、機
能ブロック図で示したグラフィックスプロセッサ等の画像処理装置は、例えば、集積回路のようなデジタル回路を設計するための、様々なハードウェア記述言語を利用して設計することができる。
【0054】
また、上記実施の形態で説明した処理をプログラムによって実行することもできる。プログラムは、コンピュータが読み取り可能な記録媒体に記録されていてもよい。ここで、コンピュータが読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータから読み取ることができる記録媒体をいう。このような記録媒体のうち、コンピュータから取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、光ディスク、フラッシュメモリ、磁気テープ等がある。また、コンピュータに固定された記録媒体としてHDD(Hard disk drive)、SSD(Solid State Drive)、ROM(Read Only Memory)等がある。