JP4064339B2 - 描画処理装置、描画処理方法および描画処理プログラム - Google Patents

描画処理装置、描画処理方法および描画処理プログラム Download PDF

Info

Publication number
JP4064339B2
JP4064339B2 JP2003423797A JP2003423797A JP4064339B2 JP 4064339 B2 JP4064339 B2 JP 4064339B2 JP 2003423797 A JP2003423797 A JP 2003423797A JP 2003423797 A JP2003423797 A JP 2003423797A JP 4064339 B2 JP4064339 B2 JP 4064339B2
Authority
JP
Japan
Prior art keywords
triangle
area
start point
scanning
edge
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2003423797A
Other languages
English (en)
Other versions
JP2005182547A (ja
Inventor
快行 爰島
敬弘 齋藤
卓 竹本
治郎 雨宮
健一 森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2003423797A priority Critical patent/JP4064339B2/ja
Priority to US10/981,681 priority patent/US7446770B2/en
Publication of JP2005182547A publication Critical patent/JP2005182547A/ja
Application granted granted Critical
Publication of JP4064339B2 publication Critical patent/JP4064339B2/ja
Priority to US12/210,254 priority patent/US20090096786A1/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture

Description

本発明は、三次元グラフィクス画像の描画処理を行う描画処理装置、描画処理方法および描画処理プログラムであって、特に、三角形の画像のラスタライズ処理に関するものである。
従来から、一般的なコンピュータグラフィクスの描画処理装置としては、次のような構成となっている。図29は、従来の一般的なリアルタイムCG描画装置の構成を示すブロック図である。従来の描画処理装置は、三角形の頂点データを入力するための頂点入力処理部2901と、頂点入力処理部2901から入力された頂点データに対する演算を行うための頂点演算処理部2902と、頂点演算処理部2902によって加工された頂点データからピクセルデータを生成するためのラスタライズ処理部2903と、ラスタライズ処理部2903によって生成されたピクセルデータに対する演算を行うためのピクセル処理部2907と、頂点演算処理部2902から入力される頂点データをバッファリングするための頂点データバッファ2906と、ピクセル処理部2907によって加工されたピクセルデータを記憶するための描画メモリ2908から主に構成されている。
ラスタライズ処理部2903は、頂点データバッファ2906から三角形の3頂点のデータを取得してラスタライズに必要なセットアップデータを生成するためのセットアップ処理部2904と、セットアップ処理部2905から受け渡されたセットアップデータを用いてピクセルデータを生成するトラバース処理部2905を備えた構成となっている。
ラスタライズ処理部2903に入力される頂点データは、同次座標やウィンドウ座標などの頂点座標と、カラー、フォグ(fog)、テクスチャ座標、法線ベクトルなどの頂点パラメータから構成される。ラスタライズ処理部2903はこの頂点データを用いて、三角形の内側に入るピクセルを見つける処理とピクセルのパラメータを求める処理を行い、ピクセルデータを生成する。ピクセルデータは、ウィンドウ座標、奥行き値(depth)、カラー、フォグ、テクスチャ座標、法線ベクトル、三角形の内側に入るかどうかを表すフラグなどから構成される。
一般に、ラスタライズ処理部2903は三角形の形状を数1式のような3辺の線形方程式の組で表す。
数1
A0(X,Y)=a0*(X−X0)+b0*(Y−Y0)
A1(X,Y)=a1*(X−X1)+b1*(Y−Y1)
A2(X,Y)=a2*(X−X2)+b2*(Y−Y2)
ここでX,Yはピクセルのウィンドウ座標、(X0,Y0),(X1,Y1),(X2,Y2)は三角形の頂点のウィンドウ座標、a0,a1,a2,b0,b1,b2は定数である。これらの線形方程式はエッジ関数と呼ばれ、ディスプレイ上のピクセルを、三角形の内側、辺上、外側の3つの領域に分類するために使用される。
すなわち、エッジ関数の値が0より大きいピクセルは三角形の内側領域、ちょうど0のピクセルは辺上、0より小さいピクセルは外側領域にあることを意味する。ラスタライズ処理部2903は、トラバース処理部2905によって3辺のエッジ関数の値がすべて0より大きいかどうかを調べることにより、ピクセルが三角形の内側に入るかどうかを判定する。なお、エッジ関数の傾きa0,b0,a1,b1,a2,b2は数2式により計算する。
数2
a0=Y0−Y1
b0=X1−X0
a1=Y1−Y2
b1=X2−X1
a2=Y2−Y0
b2=X0−Y2
このような計算手順をハードウェアで実装する方法にはDDA(Digital Differential Analyser)とDE(Direct Evaluation)の2種類がある。
DDAの場合には、代表ピクセルにおけるエッジ関数の初期値のみを数1式により計算し、その初期値にエッジ関数の傾きを次々と足し合わせていくことにより、隣接するピクセルのエッジ関数の値を求める。
DDAによれば、初期値の計算以外は加算のみで済むので回路面積を小さくすることができるが、加算の積み重ねによる誤差を考慮する必要がある。この場合、ラスタライズ処理部2903はセットアップ処理部2904によって初期値と傾きの計算を行い、トラバース処理部2905によって傾きの加算を行う。
DEの場合には、すべてのピクセルのエッジ関数の値を数1式により計算する。このため、DEの場合には、DDAの場合のように誤差を考慮する必要はないが、乗算を多用するため回路面積は大きくなる。この場合、ラスタライズ処理部2903はセットアップ処理部2905によって傾きの計算を行い、トラバース部33にて数1式の乗算を行う。
次に、ラスタライズ処理部2903は、三角形の内側領域に入ると判定されたピクセルの奥行き値、カラー、フォグ、テクスチャ座標、法線ベクトルなどのパラメータを求める。これらのパラメータは三角形の3頂点のパラメータを補間することによって計算される。補間計算の方法にはDDAと重心座標βを使う方法の2種類がある。
DDAの場合は、まず代表ピクセル(X,Y)におけるパラメータの初期値を数3式により計算する。
数3
P(X,Y)=a*X+b*Y+c
そして、その初期値に傾きa,bを次々と足し合わせていくことにより、隣接するピクセルのパラメータを求める。なお、数3式の係数a,b,cを求めるには数4式を解く。
数4
a*X0+b*Y0+c=p0
a*X1+b*Y1+c=p1
a*X2+b*Y2+c=p2
ここで、(X0,Y0),(X1,Y1),(X2,Y2)は三角形の3頂点のウィンドウ座標、p0,p1,p2は対応する頂点のパラメータである。エッジ関数の場合と同様に、初期値の計算以外は加算のみで済むので演算回路を小さくすることができるが、加算の積み重ねによる誤差を考慮する必要がある。また、パラメータの数だけ数4式により係数a,b,cを求める必要があるため、パラメータ数が多い場合に計算量が大きくなるという欠点がある。この場合、ラスタライズ処理部2903は、セットアップ処理部2905によって初期値と傾きの計算を行い、トラバース処理部2905によって傾きの加算を行う。
これに対して重心座標βを使う方法では、数5式を用いてすべてのパラメータを補間することができる。
数5
P(X,Y)=s0*p0+s1*p1+s2*p2
パラメータが変わっても重心座標β0,β1,β2を使いまわして補間できるため、パラメータ数が多い場合に有効である。なお、重心座標β0,β1,β2は数6式により計算する。
数6
β0(X,Y)=(1/sum(X,Y))*A0(X,Y)
β1(X,Y)=(1/sum(X,Y))*A1(X,Y)
β2(X,Y)=(1/sum(X,Y))*A2(X,Y)
1/sum(X,Y)=1/(A0(X,Y)+A1(X,Y)+A2(X,Y))
この場合、ラスタライズ処理部2903では、トラバース処理部2905によって数6式の計算を行い、各ピクセルの重心座標を計算する。数5式の計算はトラバース処理部2905あるいはラスタライズ処理部2903の後段に接続されたピクセル処理部2907によって行う。
以上の方法により、ラスタライズ処理部2903は、ピクセルが三角形の内側領域に入るか否かを判定する処理と、頂点パラメータを補間してピクセルのパラメータを求める処理を行っている。
米国特許第6504542号明細書 米国特許第6462737号明細書 米国特許第6198488号明細書
このように従来の技術では、ピクセルが三角形の内側領域に入るかどうかを判定する処理と、頂点パラメータを補間してピクセルのパラメータを計算する処理を行っているが、これらの処理は描画プリミティブの頂点のウィンドウ座標を用いて行うようになっている。このため、頂点演算処理部2902によって頂点をウィンドウ上に投影し、ウィンドウ上に投影したときのウィンドウ座標をラスタライズ処理部2903へ受け渡すようになっている。
しかしながら、ラスタライズ処理部2903に入力される三角形の頂点データの中に視点座標のW成分が0より小さいものが含まれる場合、つまり三角形の一部が視点より後方にある場合がある。このように、三角形が視点後方の頂点を含む場合、その頂点はウィンドウ上に投影されないためウィンドウ座標を有しないこととなる。そこで、このような三角形に対してラスタライズ処理を行う際には、あらかじめ図32のように三角形を近クリップ面で切断し、ビューポート上に投影される部分3201と投影されない部分3202に分割する。そして、ラスタライズ処理部2903にはウィンドウ上に投影される部分3201のウィンドウ座標を入力する。このように描画プリミティブをクリップ面で分割する処理をクリッピング処理という。クリッピング処理は、複雑かつ処理量が多いため、専用ハードウェアを用いて行うのが一般的であるが、特許文献1ではクリッピング処理を不要にできるラスタライズ処理の技術が開示されている。
しかしながら、このような従来技術のラスタライズ処理を採用するためには、走査の開始点を効率よく探索する処理が新たに必要となる。このため、三角形の一部が視点より後方にある場合には、三角形のすべての領域が投影面に投影されている場合の処理の他に、走査の開始点を探索するなどの特別な処理が必要となり、処理の効率が悪化する。
本発明は、上記に鑑みてなされたものであって、入力される三角形の一部が視点より後方に存在するか否かを問わずに、統一的な処理でラスタライズ処理を行うことができる描画処理装置、描画処理方法および描画処理プログラムを提供することを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、三次元グラフィクス画像を描画する際に、三角形の頂点に関する頂点データからピクセルデータを生成するラスタライズ処理を行う描画処理装置であって、前記頂点データからピクセルが三角形の内部領域に存在するか否かを判定するためのエッジ関数のエッジ係数を算出するエッジ係数算出手段と、前記エッジ係数算出手段によって算出されたエッジ係数に基づいて、投影面における前記三角形の投影像のバウンディング領域を求めるバウンディング領域計算手段と、前記三角形の投影像を、各辺の前記エッジ係数の組み合わせに基づいて分類し、分類に基づいて前記バウンディング領域の端点から走査開始点を決定する開始点決定手段と、前記開始点決定手段によって決定された走査開始点から、前記バウンディング領域を走査してピクセルデータを生成するトラバース手段とを備えたことを特徴とする。
また、本発明は、三次元グラフィクス画像を描画する際に、三角形の頂点に関する頂点データからピクセルデータを生成するラスタライズ処理を行う描画処理方法であって、前記頂点データからピクセルが三角形の内部領域に存在するか否かを判定するためのエッジ関数のエッジ係数を算出するエッジ係数算出ステップと、前記エッジ係数算出手段によって算出されたエッジ係数に基づいて、投影面における前記三角形の投影像のバウンディング領域を求めるバウンディング領域計算ステップと、前記三角形の投影像を、各辺の前記エッジ係数の組み合わせに基づいて分類し、分類に基づいて前記バウンディング領域の端点から走査開始点を決定する開始点決定ステップと、前記開始点決定手段によって決定された走査開始点から、前記バウンディング領域を走査してピクセルデータを生成するトラバースステップとを含むことを特徴とする。
また、本発明は、三次元グラフィクス画像を描画する際に、三角形の頂点に関する頂点データからピクセルデータを生成するラスタライズ処理を行う描画処理プログラムであって、前記頂点データからピクセルが三角形の内部領域に存在するか否かを判定するためのエッジ関数のエッジ係数を算出するエッジ係数算出手順と、前記エッジ係数算出手段によって算出されたエッジ係数に基づいて、投影面における前記三角形の投影像のバウンディング領域を求めるバウンディング領域計算手順と、前記三角形の投影像を、各辺の前記エッジ係数の組み合わせに基づいて分類し、分類に基づいて前記バウンディング領域の端点から走査開始点を決定する開始点決定手順と、前記開始点決定手段によって決定された走査開始点から、前記バウンディング領域を走査してピクセルデータを生成するトラバース手順と、をコンピュータに実行させる描画処理プログラムである。
本発明は、三角形の頂点データからピクセルが三角形の内部領域に存在するか否かを判定するためのエッジ関数のエッジ係数を算出し、算出されたエッジ係数に基づいて、投影面における三角形の投影像のバウンディング領域を求め、三角形の投影像を、各辺の前記エッジ係数の組み合わせに基づいて分類し、分類に基づいてバウンディング領域における走査開始点を決定し、決定された走査開始点から、前記バウンディング領域を走査してピクセルデータを生成することで、頂点のウィンドウ座標を大小比較する代わりに、エッジ関数のエッジ係数)の組み合わせによって三角形の投影像を分類し、分類に応じてバウンディング領域の端点から走査開始点を決定しているので、入力される三角形の一部が視点より後方にある場合でも特別な処理を必要とせずに、三角形の全てが投影面に投影されている場合と同様に、統一的な処理でセットアップデータを生成することができるという効果を奏する。
以下に添付図面を参照して、この発明にかかる描画処理装置、描画処理方法および描画処理プログラムの最良な実施の形態を詳細に説明する。
(描画処理装置の全体構成)
図1は、本実施の形態における描画処理装置の構成図である。この描画処理装置は、図1に示すように、頂点入力処理部101と、頂点演算処理部102と、ラスタライズ処理部100と、複数のピクセル処理部103と、描画メモリ120と、RAM(Random Access Memory)に確保された頂点データバッファ111および複数のピクセルデータバッファ112を備えた構成となっている。図29に示す従来の描画処理装置と構成上異なる点は、ラスタライズ処理部100に補間処理部104をさらに備え、RAMにピクセルデータバッファ112をさらに備えた点である。
頂点入力処理部101は、描画する三角形の頂点データを入力するものである。ここで、頂点データは、同次座標やウィンドウ座標などの頂点座標と、カラー、フォグ(fog)、テクスチャ座標、法線ベクトルなどの頂点パラメータから構成される。
頂点演算処理部102は、頂点入力処理部101から入力された頂点データに対する演算を行うものである。
ラスタライズ処理部100は、頂点演算処理部102によって加工された頂点データからピクセルデータを生成するものである。
ピクセル処理部103は、ラスタライズ処理部100によって生成されたピクセルデータに対する演算を行うものである。本実施の形態では、ピクセル処理の並列処理を行うため、複数のピクセル処理部103を設けている。このため、ディスプレイをエリア(area)と呼ぶ矩形領域に分割し、分割されたエリア単位に異なるピクセル処理部103を割り当てている。
ここで、ピクセルデータは、ウィンドウ座標、奥行き値(depth)、カラー、フォグ、テクスチャ座標、法線ベクトル、三角形の内側領域に存在するか否かを示すフラグなどから構成される。
ラスタライズ処理部100は、図1に示すように、セットアップ処理部200と、トラバース処理部300と、複数の補間処理部104とから構成されている。
セットアップ処理部200は、頂点データバッファ111から三角形の3頂点のデータを取得してラスタライズに必要なセットアップデータを生成するものである。
トラバース処理部300は、セットアップ処理部200から受け渡されたセットアップデータを用いてピクセルデータを生成するものである。
補間処理部104は、頂点データバッファ111に保存されている三角形の3頂点のパラメータを補間して、ピクセルデータバッファ112に保存されているピクセルのパラメータを計算するものである。
ラスタライズ処理部100の処理を効率良く実行するためには、処理対象のピクセルをできるだけ効率的に走査する必要がある。このような処理対象のピクセルを効率良く走査するために、本実施の形態では、スタンプ(stamp)と呼ぶ矩形領域単位で走査を行っている。スタンプは、ラスタライズ処理部100が1サイクルに並列処理するピクセルの集合である。
例えばスタンプの大きさが2×4ピクセルの場合は、ラスタライズ処理部100は1サイクルの間に8個のピクセルを処理することになる。ラスタライズ処理部100のトラバース処理部300は、スタンプを1サイクルごとに移動させてディスプレイ上を走査し、ピクセルデータを生成する。この際、スタンプ周辺の点が三角形の内側領域に入るか否かを判定し、その判定結果に基づいて移動方向を決定することにより、三角形の内側に入るピクセルを無駄なく走査している。スタンプ周辺の点は、移動方向に対して位置的に先行する点であることから先行点(sense point)と呼ぶ。
頂点データバッファ111は、頂点演算処理部102から入力される頂点データを保存し、ピクセルデータバッファは、トラバース処理部300にて生成されるピクセルデータを保存するものである。
描画メモリ120は、ピクセル処理部103によって加工されたピクセルデータを記憶するものである。この描画メモリ120は、本実施の形態のように描画専用のメモリを用いる他、RAMを用いてもよい。
(セットアップ処理部200の構成)
図2は、セットアップ処理部200の機能的構成を示すブロック図である。セットアップ処理部200は、図2に示すように、エッジ係数算出部201とバウンディングボックス計算部202と開始点決定部203と先行点決定部204とエッジ関数初期値算出部205とから構成される。
エッジ係数算出部201は、エッジ関数の係数(傾き)を計算するものである。バウンディングボックス計算部202は、三角形の投影像のバウンディングボックスを計算するものである。開始点決定部203と先行点決定部204は、バウンディングボックス計算部202にて計算されたバウンディングボックスの四隅から走査開始点を決定するものである。エッジ関数初期値算出部205は、代表ピクセルにおけるエッジ関数の値をDDAの初期値として計算するものである。
(トラバース処理部300の構成)
図3は、トラバース処理部300の機能的構成を示すブロック図である。トラバース処理部300は、図3に示すように、走査部301とエッジ関数計算部302と重心座標計算部303とから構成される。
走査部301は、開始点決定部203によって決定された走査開始点を含むスタンプあるいはエリアから、隣接するスタンプあるいはエリアを辿ってピクセルを走査するものである。エッジ関数計算部302は、スタンプ内に含まれるピクセルのエッジ関数の値を計算するものである。重心座標計算部303は、スタンプ内に含まれるピクセルの重心座標を計算するものである。
本実施の形態の描画処理装置は、CPUなどの制御装置と、ROM(Read Only Memory)やRAM(Ramdom Access Memory)などの記憶装置と、ハードディスクおよびハードディスクドライブ装置(HDD)、CDドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置を備えており(いずれも不図示)、ゲーム専用のゲーム装置やコンピュータを利用したハードウェア構成となっている。
本実施形態の描画処理装置で実行される描画処理プログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
また、本実施形態の描画処理装置で実行される描画処理プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施形態の描画処理装置で実行される描画処理プログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
本実施形態の描画処理装置で実行される描画処理プログラムは、上記記憶媒体から読み出して実行することにより主記憶装置上にロードされ、上述した各部(ラスタライズ処理部100、ピクセル処理部103など)が主記憶装置上に生成されるようになっている。
次に、このように構成された本実施の形態の描画処理装置による三角形の描画処理方法について説明する。
(セットアップ処理部200の処理)
まず、セットアップ処理部200の処理について説明する。図4は、セットアップ処理部200によるセットアップデータの生成処理の手順を示すフローチャートである。
セットアップ処理部200では、まずエッジ係数算出部201により、頂点データバッファ111から三角形の3頂点のデータを取得する(ステップS401)。図5は、頂点データの一例を示すデータ構造図である。図5に示す例では、頂点データは、同次座標、ウィンドウ座標、カラー、テクスチャ座標、フォグ、法線ベクトルから構成される。なお、頂点データは図5に示すデータ構造に限定されるものではなく、他のデータ構造を有するように構成してもよい。
なお、ここで、取得した3頂点の同次座標のW成分がすべて0より小さい場合は、その三角形が完全に視点より後ろ側にあることを意味している。このため、この場合には以降の処理を実行せずに次の三角形の3頂点のデータを取得するように構成してもよい。
次に、エッジ係数算出部201によって、エッジ関数の係数を計算する(ステップS402)。本実施形態のエッジ関数は、数7式のように表される。
数7
V0(x,y,w)=a0*x+b0*y+c0*w
V1(x,y,w)=a1*x+b1*y+c1*w
V2(x,y,w)=a2*x+b2*y+c2*w
ここで(x,y,w)は三角形の頂点の同次座標である。エッジ係数a0,b0,c0,a1,b1,c1,a2,b2,c2は数8式〜数10式を解くことにより計算する。
数8
a0*x0*b0*y0+c0*w0=1
a0*x1*b0*y1+c0*w1=0
a0*x2*b0*y2+c0*w2=0
数9
a1*x0*b1*y0+c1*w0=0
a1*x1*b1*y1+c1*w1=1
a1*x2*b1*y2+c1*w2=0
数10
a2*x0*b2*y0+c2*w0=0
a2*x1*b2*y1+c2*w1=0
a2*x2*b2*y2+c2*w2=1
上記数8〜10式は、行列を用いて書き直すと数11式のように表せる。
数11
M*V=I
ここで、行列M,V,Iはそれぞれ数12式、数13式、数14式に示すとおりである。
Figure 0004064339
Figure 0004064339
Figure 0004064339
数11式より、エッジ係数の行列Mは、行列Vの逆行列V-1そのものであることがわかる。従って、行列Mの各行列要素は数15式により計算することができる。
数15
a0=(y1*w2−y2*w1)/det
b0=(w1*x2−w2*x1)/det
c0=(x1*y2−x2*y1)/det
a1=(y2*w0−y0*w2)/det
b1=(w2*x0−w0*x2)/det
c1=(x2*y0−x0*y2)/det
a2=(y0*w1−y1*w0)/det
b2=(w0*x1−w1*x0)/det
c2=(x0*y1−x1*y0)/det
det=x0*(y1*w2−y2*w1)
−x1*(y0*w2−y2*w0)+x2*(y0*w1−y1*w0)
ただし、同次座標では比だけが意味をもつため、数16式のdetでの除算は省略することができる。したがって、エッジ係数a0,b0,c0,a1,b1,c1,a2,b2,c2は数16式によって計算できる。
数16
a0=y1*w2−y2*w1
b0=w1*x2−w2*x1
c0=x1*y2−x2*y1
a1=y2*w0−y0*w2
b1=w2*x0−w0*x2
c1=x2*y0−x0*y2
a2=y0*w1−y1*w0
b2=w0*x1−w1*x0
c2=x0*y1−x1*y0
以上の計算手順をまとめると、エッジ係数算出部201は数16式を計算することによってエッジ係数を求める(ステップS402)。ただし、三角形の縮退判定および表裏判定をする場合には別途計算が必要になる。
次いで、バウンディングボックス計算部202によって、バウンディングボックスを計算する(ステップS403)。バウンディングボックスとは、三角形の投影像の外接矩形とシザーボックス(scissor box)の共通領域のことである。一般に、シザーボックスは描画処理装置へのパラメータとして入力されるので、ここでは三角形の投影像の外接矩形を求めることが主な処理となる。
バウンディングボックスの計算が終了すると、開始点決定部203によって走査の開始点を決定する(ステップS404)。そして、開始点が決定されると、先行点決定部204によって三角形の各辺の内外判定に使用する先行点を決定する(ステップS405)。先行点が決定されると、次に、エッジ関数初期値算出部205によって、代表ピクセルにおけるエッジ関数の値をDDAの初期値として計算する(ステップS406)。代表ピクセル(X,Y)におけるエッジ関数の値を求めるためには、数7式の両辺をそれぞれw0,w1,w2で除算することによって得られる数17式を用いる。
数17
V0(X,Y)=V0(x,y,w)/w0=a0*X+b0*Y+c0
V1(X,Y)=V1(x,y,w)/w1=a1*X+b1*Y+c1
V2(X,Y)=V2(x,y,w)/w2=a2*X+b2*Y+c2
セットアップ処理部200の後段に接続されたトラバース処理部300は、ステップS406によって計算した初期値に傾きを順次足し合わせていくことにより、代表ピクセル以外のピクセルのエッジ関数の値を求める。セットアップ処理部200で生成されたセットアップデータは、トラバース処理部300へ送られる(ステップS407)。図15は、セットアップデータのデータ構造を示す説明図である。図15に示すように、セットアップデータ、エッジ関数、バウンディングボックス、開始点、各辺の先行点、エッジ関数の初期値から構成される。
(バウンディングボックス計算部の処理)
次に、ステップS403におけるバウンディングボックス計算部202によるバウンディングボックスの計算処理について説明する。図6は、バウンディングボックスの計算処理の手順を示すフローチャートである。
通常、三角形の投影像の外接矩形は頂点のウィンドウ座標のXY成分の最小値と最大値を求めることによって簡単に求めることができる。しかし、同次座標のW成分が0より小さい頂点を含む三角形の場合は、その頂点が投影面に投影されない。このため、本実施の形態では、外接矩形を以下のように求めている。
まず、バウンディングボックス計算部202は、外接矩形を初期化する。外接矩形は左上隅の点のウィンドウ座標(Xmin,Ymin)と右下隅の点のウィンドウ座標(Xmax,Ymax)で表される。ここでは、(Xmin,Ymin)=(0,0),(Xmax,Ymax)=(width−1,height−1)と初期化する(ステップS601)。なお、width,heightはビューポートである。
次に、三角形の3頂点の中からW座標成分が0より大きな頂点をひとつ選択する(ステップS602)。ステップS603〜S606では、選択した頂点から見て左方向に伸びる辺のX方向の傾きをaL、右方向に伸びる辺のX方向の傾きをaRと表記している。ステップS607〜S609では、選択した頂点から見て左方向に伸びる辺のY方向の傾きをbL、右方向に伸びる辺のY方向の傾きをbRと表記している。
そして、aL<0,aR>=0,Y>Yminの条件が成り立つかどうかを判定し(ステップS603)、成り立つ場合は、YminにYを設定する(ステップS604)。成り立たない場合はステップS604をスキップする。
次に、aL>=0,aR<0,Y<Ymaxの条件が成り立つかどうかを判定し(ステップS605)、成り立つ場合はYmaxにYを設定する(ステップS606)。成り立たない場合はステップS606をスキップする。
次に、バウンディングボックス計算部202は、bL>=0,bR<0,X>Xminの条件が成り立つかどうかを判定し(ステップS607)、成り立つ場合はXminにXを設定する(ステップS608)。成り立たない場合はステップS708をスキップする。
次に、bL<0,bR>=0,X<Xmaxの条件が成り立つかどうかを判定し(ステップS609)、成り立つ場合はXmaxにXを設定する(ステップS610)。成り立たない場合はステップS210をスキップする。
そして、ステップS603〜S610の処理が三角形の3頂点すべてについて終了したかどうかを判定し(ステップS611)、終了した場合は外接矩形を求める処理を終了する。未処理の頂点が残っている場合はステップS602へ戻って頂点を選択し、ステップS603〜S610の処理を繰り返す。
上記の処理が終了したときの(Xmin,Ymin)が外接矩形の左上隅の点のウィンドウ座標、(Xmax,Ymax)が右下隅の点のウィンドウ座標を表している。例えば三角形が図9に示す(A)のような場合、この処理は以下のように動作する。
ステップS601:(Xmin,Ymin )=(0,0),(Xmax,Ymax)=(width−1,height−1)
ステップS602:頂点(X0,Y0)を選択する。
ステップS607:b1>=0,b2<0,X0>XminなのでステップS608へ進む。
ステップS608:Xmin=X0
ステップS611:未処理の頂点が2個残っているのでステップS602へ戻る。
ステップS602:頂点(X1,Y1)を選択する。
ステップS605:a2>=0,a0<0,Y1<YmaxなのでステップS604へ進む。
ステップS606:Ymax=Y1
ステップS609:b2<0,b0>=0,X1<XmaxなのでステップS604へ進む。
ステップS610:Xmax=X1
ステップS611:未処理の頂点が1個残っているのでステップS602へ戻る。
ステップS602:頂点(X2,Y2)を選択
ステップS603:a0<0,a1>=0,Y2>YminなのでステップS604へ進む。
ステップS604:Ymin=Y2
ステップS611:未処理の頂点がなくなったので処理を終了する。
外接矩形の左上隅の点(X0,Y2)と右下隅の点(X1,Y1)が正しく計算できていることが分かる。また、この処理手順は、図7に示す(B)のように、視点座標のW成分が0より小さい頂点を含む三角形に対しては以下のように動作する。
ステップS601:(Xmin,Ymin)=(0,0),(Xmax,Ymax)=(width−1,height−1)
ステップS602:頂点(X0,Y0)を選択
ステップS611:未処理の頂点が2個残っているのでステップS602へ戻る。
ステップS602:頂点(X1,Y1)は視点座標のW成分が0より小さいので選択しない。
ステップS611:未処理の頂点が1個残っているのでステップS602へ戻る。
ステップS602:頂点(X2,Y2)を選択する。
ステップS603:a0<0,a1>=0,Y2>YminであるためステップS604へ進む。
ステップS604:Ymin=Y2
ステップS611:未処理の頂点がなくなったので処理を終了する。
外接矩形の左上隅の点(0,Y2)と右下隅の点(width−1,height−1)が正しく計算できていることが分かる。バウンディングボックス計算部202は、ここで求めた外接矩形とシザーボックスの共通領域を計算することによってバウンディングボックスを求める。
(開始点決定部203の処理)
次に、図4におけるステップS404の開始点決定部203の開始点決定処理について説明する。
一般に、三角形の投影像は8種類の三角形に分類され、開始点決定部203は、この分類に応じて走査の開始点を決定する。図8は、8種類の三角形と、各三角形における走査の開始点位置と進行方向を示した説明図である。入力された三角形が8種類の中のどの三角形に投影されるかを判断するためには、各頂点のウィンドウ座標のXY成分を大小比較すればよい。
しかし、同次座標のW成分が0より小さい頂点を含む三角形の場合は、その頂点がディスプレイ上に投影されないため、上記の8種類の三角形とは異なる形状に投影される。そこで本実施の形態の描画処理装置では、頂点のウィンドウ座標のXY成分を大小比較する代わりに、エッジ関数の傾き(係数)の組み合わせによって三角形の投影像を分類している。そして、この分類に応じて、投影像のバウンディングボックスの四隅の中から開始点を選択している。
エッジ関数の傾き(係数)は5つのグループに分類される。第1のグループは図9−11に示す(A)〜(D)の4種類の傾きである。このグループの傾きは、X方向の傾き(a0あるいはa1あるいはa2)あるいはY方向の傾き(b0あるいはb1あるいはb2)が0の場合、すなわちエッジ関数がX軸あるいはY軸に平行なものである。傾きはバウンディングボックスのバウンダリ(boundary)上に重なっている。
第2のグループは、図9−2に示すような傾きの場合である。このグループの傾きは、X方向の傾き(a0あるいはa1あるいはa2)とY方向の傾き(b0あるいはb1あるいはb2)の両方が0より大きいものである。傾きはバウンディングボックスを左上領域と右下領域に分割し、左上領域は三角形の外側、右下領域は三角形の内側を表している。
第3のグループは、図9−3に示すような傾きである。このグループの傾きは、X方向の傾き(a0あるいはa1あるいはa2)が0より小さく、Y方向の傾き(b0あるいはb1あるいはb2)が0より大きいものである。傾きはバウンディングボックスを右上領域と左下領域に分割し、右上領域は三角形の外側、左下領域は三角形の内側領域を表している。
第4のグループは、図9−4に示すような傾きである。このグループの傾きは、X方向の傾き(a0あるいはa1あるいはa2)が0より大きく、Y方向の傾き(b0あるいはb1あるいはb2)が0より小さいものである。傾きは第3のグループと同様にバウンディングボックスを右上領域と左下領域に分割する。ただし、第3のグループとは反対に、右上領域は三角形の内側領域、左下領域は三角形の外側領域を表している。
第5のグループは図9−5に示すような傾きである。このグループの傾きは、X方向の傾き(a0あるいはa1あるいはa2)とY方向の傾き(b0あるいはb1あるいはb2)の両方が0より小さいものである。傾きは2つ目のグループと同様にバウンディングボックスを左上領域と右下領域に分割する。ただし、第2のグループとは反対に、左上領域は三角形の内側領域、右下領域は三角形の外側領域を表している。
本実施の形態では。このようなエッジ関数の5つのグループの傾きを分類ビットとして、0,1,2,4,8の5つのビット値に対応させて表している。このとき、分類ビットの各ビット値と、そのビット値の傾きがつくる三角形の外側領域の対応に着目すると、ビット値0の場合は領域なし、ビット値1の場合は左上領域、ビット値2の場合は右上領域、ビット値4の場合は左下領域、ビット値8の場合は右下領域という関係になっている。そこで図9−1〜9−5に示すように、この関係に合わせてビット値を配置した2×2のテーブル(分類ビットテーブル)をRAMなどに設け、各ビット値における三角形の外側領域を視覚的に表すことにする。以下では、この分類ビットテーブルを用いて三角形の投影像を分類する方法について説明していく。
図10は、開始点決定部203による、入力された三角形の投影像を分類して開始点を決定する処理の手順を示すフローチャートである。
開始点決定部203は、まず変数or,sumを0に初期化する(ステップS1001)。orとsumはエッジ関数の傾きの組み合わせを表すための変数である。そして、三角形の3辺の中からひとつを選択する(ステップS1002)。
次に、選択した辺の少なくとも一方の頂点の同次座標のW成分が0より大きいかどうか、すなわち投影面に投影されているか否かを判定する(ステップS1003)。そして、選択した辺の少なくとも一方の頂点の同次座標のW成分が0より大きい場合は(ステップS1003:Yes)、辺が投影面に投影されていると判断し、選択した辺のエッジ関数の傾きを表すビット値bitを求める(ステップS1004)。ここで、上述したように、bitの値は0,1,2,4,8のいずれかである。一方、ステップS1003において、選択した辺の両方の頂点の同次座標のW成分が0以下の場合には(ステップS1003:No)、辺が完全に視点の後ろ側にあると判断し、ステップS1004〜S1005までの処理を実行せずにステップS1006へ進む。
次に、変数orとbitの論理和を計算して結果をorにセットする。また、変数sumとbitの算術和を計算して結果をsumにセットする(ステップS1005)。
次に、三角形の3辺すべてについてステップS1003〜S1005の処理が終了したかどうかを判定し(ステップS1006)、終了した場合はステップS1007へ進む。未処理の辺が残っている場合はステップS1002へ戻って辺を選択し、ステップS1003〜S1005の処理を繰り返す。
次に、三角形の3辺すべてについてステップS1003〜S1005の処理が終了した場合には、変数or,sumの値に基づいて三角形の投影像を分類する。
or=0の場合、図11−1に示すように、各辺のエッジ関数のbit値は0であるから、or=0|0|0=0,sum=0+0+0=1となる。
or=1の場合、図11−2に示すように投影像はsum=1,2,3の3種類に分類される。sum=1の投影像は右下に直角をもつ直角三角形である。直角を挟む2辺はX軸あるいはY軸に平行であるため、エッジ関数のbit値は0、残りの1辺のbit値は1であるから、or=0|0|1=1,sum=0+0+1=1となる。sum=2の場合は2辺のbit値が1で、残りの1辺は完全に視点後ろ側にあるのでbit値は0であるから、or=1|1|0=1,sum=1+1+0=2となる。sum=3の場合は3辺のbit値が1であるから、or=1|1|1=1,sum=1+1+1=3となる。三角形の辺は3本しかないので、投影像の辺は最大3本である。したがって、or=1の場合の投影像は、図11−2に示したsum=1,2,3の3種類以外ありえない。
or=2以降についてもor=1の場合と同様に分類される。or=2の場合、図11−3のように投影像はsum=2,4,6の3種類に分類される。
or=3の場合、図11−4に示すように投影像はsum=3,4,5の3種類に分類される。or=4の場合、図11−5に示すように投影像はsum=4,8,12の3種類に分類される。or=5の場合、図11−6に示すように投影像はsum=5,6,9の3種類に分類される。or=6の場合、図11−7のように投影像はsum=6,8,10の3種類に分類される。or=7の場合、図11−8に示すように投影像は1種類のみである。or=8の場合、図11−9に示すように投影像はsum=8,16,24の3種類に分類される。or=9の場合、図11−10に示すように投影像はsum=9,10,17の3種類に分類される。or=10の場合、図11−11に示すように投影像はsum=10,12,18の3種類に分類される。or=11の場合、図11−12に示すように投影像は1種類のみである。or=12の場合、図11−13に示すように投影像はsum=12,16,20の3種類に分類される。or=13の場合、図11ー14に示すように投影像は1種類のみである。or=14の場合も、図11−15に示すように投影像は1種類のみである。
このように投影像は合計35種類になる。変数orとsumの組み合わせパターンはこれ以外ありえないので、すべての投影像はこの35種類の中のいずれかに分類されることになる。
図10に戻ると、投影像を上述のように分類したら、投影像の分類結果に応じてラスタライズの走査開始点を決定する。図11−1〜図11−15の分類図において、バウンディングボックスの四隅の点のいずれかに○印で示されているのが開始点である。
走査開始点は、バウンディングボックスの四隅の中から、三角形の外側領域に属さない点が選ばれている。例えば、図11−4のor=3,sum=3の場合には、バウンディングボックスの四隅の内、左上の点と右上の点は三角形の外側領域に属しているため、これらの点は走査開始点として選択しない。仮に、これらの点から走査を開始すると、図12−1、図12−2に矢印で示したように、三角形の外側領域を走査するという無駄な走査が生じるからである。三角形の外側領域に属さない左下の点、あるいは右下の点から走査を開始すればこのような無駄な走査が生じることはない。
投影像の分類と開始点位置の対応をまとめると次のようになる。
・or=0
開始点はバウンディングボックスの任意の四隅
・or=6,8,10,12,14
開始点はバウンディングボックスの左上隅
・or=2,3,11
開始点はバウンディングボックスの左下隅
・or=1,7
開始点はバウンディングボックスの右下隅
・or=4,5,9,13
開始点はバウンディングボックスの右上隅
なお、本実施の形態では、投影像の分類を網羅していることを示すために変数sumを使用したが、上記対応関係から変数sumの値は開始点の位置とは無関係である。このため、sumを開始点決定部203の処理において、sumを考慮しないように構成してもよい。例えば、開始点決定部203の処理をハードウェアにより実装する際には図10における変数sumに関する処理を省略してもよい。以上の手順により、開始点決定部203はバウンディングボックスの四隅から開始点を決定する。
(先行点決定部204の処理)
次に、図4にけるステップS405の先行点決定部204による三角形の各辺の内外判定に使用する先行点の決定処理について説明する。
先行点にはA,B,Cの3種類があり、これら3点は走査方向に関して常に相対的に同じ位置になるように配置されている。また、先行点はスタンプとエリアの2つの矩形領域ごとに位置が決められている。例えば、開始点がバウンディングボックスの左上隅の場合、すなわち走査が右下方向に進む場合には、スタンプとエリアの先行点は図13に示す(A)のように配置されている。同様に、開始点がバウンディングボックスの右上隅の場合は図13に示す(B)、左下隅の場合は図13に示す(C)、右下隅の場合は図13に示す(D)のように先行点が配置されている。
先行点決定部204は、走査方向とエッジ関数の傾き(エッジ係数)の関係から、三角形の各辺の内外判定に使用する先行点をA,B,Cの中から選択する。図14は、先行点決定部204による先行点決定処理の手順を示すフローチャートである。
まず、先行点決定部204は、三角形の3辺の中からひとつを選択する(ステップS1401)。そして、走査が右方向に進み、かつ選択した辺のX方向の傾きが0より大きいという条件が成立するか否かを判定する(ステップS1402)。成立しない場合には、その辺の内外判定に使用する先行点をA点に決定してからステップS1409へ進む(ステップS1406)。
一方、ステップS1402の条件が成立する場合は、走査が左方向に進み、かつ選択した辺のX方向の傾きが0以下であるという条件が成立するか否かを判定する(ステップS1403)。成立しない場合は、その辺の内外判定に使用する先行点をA点に決定してからステップS1409へ進む(ステップS1406)。
一方、ステップS1403の条件が成立しない場合には、走査が下方向に進み、かつ選択した辺のY方向の傾きが0より大きいという条件が成立するか否かを判定する(ステップS1404)。成立しない場合には、その辺の内外判定に使用する先行点をB点に決定してからステップS1409へ進む(ステップS1407)。
一方、ステップS1404の条件が成立する場合には、走査が上方向に進み、かつ選択した辺のY方向の傾きが0以下であるという条件が成立するか否かを判定する(ステップS1405)。成立しない場合には、その辺の内外判定に使用する先行点をB点に決定してからステップS1409へ進む(ステップS1407)。
一方、ステップS1405の条件が成立する場合には、選択した辺の内外判定に使用する先行点をC点に決定する(ステップS1408)。そして、ステップS1402〜S1408までの処理が三角形の3辺すべてについて終了したかどうかを判定し(ステップS1409)、終了した場合は三角形の各辺の内外判定に使用する先行点を決定する処理を終了する。未処理の辺が残っている場合はステップS1402〜S1408の処理を繰り返す。
以上の処理により、先行点決定部204は三角形の各辺の内外判定に使用する先行点をA,B,Cの中から決定する。図11−1〜15の投影像の分類図では、この手順によって各辺に割り当てられた先行点が示されている。セットアップ処理部200の後段に接続されたトラバース処理部300は、ここで求めた先行点が各辺の内側に入るかどうかを判定することにより、次に走査するスタンプあるいはエリアを決める。
以上説明したように、本実施形態のセットアップ処理部200によれば、頂点のウィンドウ座標のXY成分を大小比較する代わりに、エッジ関数の傾き(エッジ係数)の組み合わせによって三角形の投影像を分類し、分類に応じてバウンディングボックスの四隅から走査開始点を決定しているので、入力される三角形の一部が視点より後方にある場合でも特別な処理を必要とせずに、三角形の全ての領域が投影面に投影されている場合と同様に、統一的な処理でセットアップデータを生成することができる。
(トラバース処理部の処理)
次に、トラバース処理部300の処理について説明する。トラバース処理部300は、生成したピクセルデータをエリア単位にまとめてピクセル処理部4に渡しており、このため、トラバース処理部300はひとつのエリア内のスタンプ走査を終えてから、次のエリア内へとスタンプを移動させている。
エリアとピクセル処理部103の割り当ては、ピクセル処理部103の負荷を分散させるためにインタリーブ(interleave)の構成を採用している。例えばピクセル処理部103が8個ある場合、エリアとピクセル処理部103の割り当ては図30に示すとおりになる。ここで、エリア内に記入されている1〜8の数字がピクセル処理部103の番号を表している。
隣接するエリアを辿って走査を進めていくため、このような割り当てにすると8個のピクセル処理部103への負荷が分散し、ピクセル処理性能が向上する。例えば、図30の小さい方の三角形を右下から左上に向かって走査する場合、5番、8番、7番、6番、5番、4番、3番、2番、1番、8番、7番、6番のように8個のピクセル処理部103に平均的に負荷がかかることになる。
しかし、上記のようにエリアとピクセル処理部103を割り当てた場合でも、巨大な三角形をラスタライズする場合には半数のピクセル処理部103に負荷が集中し、ピクセル処理の性能が劣化してしまう。例えば、図30において、大きい方の三角形を右下から左上に向かって走査する場合、ピクセル処理部103は4番、3番、2番、1番、あるいは8番、7番、6番、5番の順番で繰り返しエリアを処理することが多くなる。この結果、4番、3番、2番、1番のピクセル処理部103に処理が集中しているときは8番、7番、6番、5番のピクセル処理部が遊んでしまい、反対に8番、7番、6番、5番のピクセル処理部に処理が集中しているときは4番、3番、2番、1番のピクセル処理部104が遊んでしまう。
このため、本実施の形態では、ディスプレイを図31に示すようにタイル(tile)という列領域に分割し、ひとつのタイル内のエリア走査を終えてから、次のタイル内のエリアへと移動している。例えば、図31示す大きい方の三角形を走査する場合、ピクセル処理部103は1番、2番、3番、4番、8番、7番、6番、5番、あるいは4番、3番、2番、1番、5番、6番、7番、8番の順番で繰り返しエリアを処理することが多くなり、8個のピクセル処理部103の負荷を分散させることができる。
図16はトラバース処理部300によるピクセルデータの生成処理の手順を示すフローチャートである。まず、トラバース処理部300は、セットアップ処理部200からセットアップデータを取得する(ステップS1601)。そして、走査部301によってスタンプあるいはエリアを走査する(ステップS1602)。なお、かかる走査の処理については後述する。
走査部301がスタンプあるいはエリアを1つ移動したら、すなわちスタンプ走査あるいはエリア走査の処理が1回終了したら、エッジ関数計算部302によってスタンプ内のピクセルおよび先行点におけるエッジ関数の値を計算する(ステップS1603)。次に、重心座標計算部303によってスタンプ内のピクセルの重心座標を計算する(ステップS1604)。そして、スタンプ内のピクセルデータをピクセルデータバッファ112に保存する(ステップS1605)。そして、走査部301の走査処理が終了したかどうかを判定し、終了した場合はトラバース処理部300の処理を終了し、走査対象のピクセルが残っている場合はステップS1602の走査処理から繰り返す。
(走査部301の処理)
次に、トラバース処理部300の走査部301による、ステップS1602の走査処理について説明する。図17は、走査部301の走査処理の手順を示すフローチャートである。
走査部301は、まず、開始点決定部203によって決定された走査開始点を含むエリアを走査開始エリアとして選択する(ステップS1701)。そして、走査開始点を含むスタンプを走査開始スタンプとして選択する(ステップS1702)。
次に、スタンプの次の列へ移動できるか否かの判定処理(ステップS1703)、スタンプの次の行へ移動できるか否かの判定処理(ステップS1704)のスタンプ走査の処理を順次実行する。さらに、エリアの次の列へ移動できるか否かの判定処理(ステップS1705)、エリアの次の行へ移動できるか否かの判定処理(ステップS1706)、エリアの次のタイルへ移動できるか否かの判定処理(ステップS1707)のエリア走査の処理を順次実行する。
図18−1はステップS1703の次の列のスタンプへの移動判定処理の手順を示すフローチャートである。
まず、スタンプが次の列のエリアとの境界に到達しているかどうかを判定する(ステップS1801)。到達していた場合は、ステップS1802へ進み、到達していなかった場合はステップS1803へ進む。
ステップS1802では、スタンプがA辺の内側に入っているかどうかを判定する。ここでA辺とは、先行点決定部204にて、内外判定に使用する先行点としてA点を割り当てられた辺である。スタンプがA辺の内側に入っているかどうかを判定するには、先行点AがA辺の内側に入っているかどうかを調べればよい。ステップS1802の判定の結果、スタンプがA辺の内側に入っている場合(図18−2(A))はスタンプの次の行への移動判定処理(図17のステップS1704)へ進み、内側に入っていない場合(図18−2(B))は、エリアの次の列への判定処理(図17のステップS1705)へ進む。
次に、ステップS1803では、スタンプがB辺あるいはC辺の外側に出ているかどうかを判定する(ステップS1803)。ここでB辺、C辺とは、内外判定に使用する先行点としてそれぞれB点、C点を割り当てられた辺である。スタンプがB辺あるいはC辺の外側に出ているかどうかを判定するには、先行点BあるいはCがB辺あるいはC辺の外側に出ているかどうかを調べる。かかる判定の結果、外側に出ている場合(図18−2(C))はスタンプの次の行への移動判定処理(図17のステップS1704)へ進む。
一方、外側に出ていない場合は、次の列のスタンプがバウンディングボックスに含まれないかどうかを判定し(ステップS1804)、含まれない場合はステップS1805へ進む。含まれる場合は次の列のスタンプに移動し、ステップS1801から処理を繰り返す。
ステップ1805では、スタンプがA辺の内側に入っているかどうかを判定し(ステップS1805)、内側に入っている場合(図18−2(D))は、スタンプの次の行への移動判定処理(図17のステップS1704)へ進み、内側に入っていない場合(図18−2(E))はエリアの次の列への判定処理(図17のステップS1705)へ進む。
図19−1は、ステップS1704の次の行のスタンプへの移動判定処理の手順を示すフローチャートである。
まず、次の行のスタンプが異なるエリアに属するかどうかを判定する(ステップS1901)。異なるエリアに属する場合(図19−2(A))は、エリアの次の列への移動判定処理(図17のS1705)へ進む。
一方、同じエリアに属する場合は、次の行のスタンプがバウンディングボックスに含まれないかどうかを判定する(ステップS1902)。
バウンディングボックスに含まれない場合(図19−2(B))は、エリアの次の列への移動判定処理(図17のS1705)へ進む。
一方、含まれる場合は、次の行のスタンプが前のタイルでC辺の外側に出たときのY座標に到達するかどうかを判定する(ステップS1903)。到達する場合(図19−2(C))は、エリアの次の列への移動判定処理(図17のS1705)へ進む。
一方、到達しない場合は、次の行のスタンプが前のエリアでC辺の外側に出たときのY座標に到達するかどうかを判定する(ステップS1904)。到達する場合(図19−2(D))は、エリアの次の列への移動判定処理(図17のS1705)へ進む。一方、到達しない場合は、次のスタンプに移動し(ステップS1905)、スタンプの次の列への移動判定処理(素17のステップ1703)へ進む。
図20−1は、エリアの次の列への移動判定処理の手順を示すフローチャートである。まず、エリアが次のタイルとの境界に到達しているかどうかを判定する(ステップS2001)。到達している場合はステップS20022へ進み、到達していない場合はステップS2003へ進む。
ステップS2002では、エリアがA辺の内側に入っているかどうかを判定する(ステップS2002)。内側に入っている場合(図20−2(A))はエリアの次の行への判定処理(図17のS1706)へ進み、外側に出ている場合(図20−2(B))はエリアの次のタイルへの移動判定処理(図17のS1707)へ進む。
ステップS2003では、エリアがB辺あるいはC辺の外側に出ているかどうかを判定する(ステップS2003)。外側に出ている場合(図20−2(C))は、エリアの次の行への判定処理(図17のS1706)へ進み、内側に入っている場合はステップS2004へ進む。
ステップS2004では、次の列のエリアがバウンディングボックスに含まれないかどうかを判定する(ステップS2004)。含まれない場合はステップS2005へ進み、含まれる場合は、次の列のエリアに移動し(ステップS2006)、図17のステップS1702へ進み、走査開始スタンプの選択を行う。
ステップS2005では、エリアがA辺の内側に入っているかどうかを判定する(ステップS2005)。内側に入っている場合(図20−2(D))はエリアの次の行への判定処理(図17のS1706)へ進み、外側に出ている場合(図20−2(E))は処理を終了する。
図21−1は、ステップS1707のエリアの次のタイルへの移動判定処理の手順を示すフローチャートである。まず、次のタイルが有効かどうかを判定する(ステップS2101)。有効である場合は、次のタイルへ移動し(ステップS2102)、有効でない場合は処理を終了する。
ステップS2101の有効か否かの判定処理は、次のタイルが有効かどうかを表すフラグを用いて行う。このフラグは、エリアを移動する際(ステップS2102)に更新される。すなわち、エリアが次のタイルとの境界に到達しているかどうかを判定する(ステップS2103)。到達している場合はステップS2104へ進み、到達していない場合は、次のタイルの有効フラグをOFFにして次のタイルを無効とする(ステップS2106)。
一方、ステップS2104では、次の列のエリアがバウンディングボックスに含まれるかどうかを判定する(ステップS2104)。含まれる場合(図21−2)は、次のタイルの有効フラグをONにして次のタイルを有効とし(ステップS2105)、含まれない場合は次のタイルを無効とする(ステップS2106)。
図22−1は、図17のステップS1706のエリアの次の行への移動判定処理の手順を示すフローチャートである。まず、次の行のエリアがバウンディングボックスに含まれないかどうかを判定する(ステップS2201)。そして、含まれない場合(図22−2(A))は、エリアの次のタイルへの移動判定処理(図17のS1707)へ進む。
一方、ステップS2201において、次の行のエリアがバウンディングボックスに含まれると判断される場合は、次の行のエリアが前のタイルでC辺の外側に出たときのY座標に到達しているかどうかを判定する(ステップS2202)。到達している場合(図22−2(B))は、エリアの次のタイルへの移動判定処理(図17のS1707)へ進む。一方、到達していない場合は、次の行のエリアに移動し(ステップS2203)、図17のステップS1702の走査開始スタンプの選択を行う。
ここで、次の列のエリアへ移動した場合、走査開始スタンプの選択処理(図17のS1702)を行う必要がある。この走査開始スタンプは、前のエリア内でスタンプを移動しているときに、図23の(A)および(B)に示すようにあらかじめ見つけておく。すなわち、図23の(A)に示すように、スタンプが次の列のエリアとの境界に到達していて、かつエリア内で初めてB辺の内側に入った場合には、その次の列のスタンプが、次の列のエリアでの走査開始スタンプとして選択する。
ただし、この条件が成立しない状態で次の列のエリアへ移動する場合がある。例えば図23の(B)の例では、スタンプがB辺の内側に1度も入らないまま次の列のエリアへ移動してしまう。このような場合は、最後に次の列のエリアとの境界に到達したときの次の列のスタンプを、次の列のエリアでの走査開始スタンプにすればよい。
同様に、次の行のエリアへ移動した場合も、走査開始スタンプを選択する必要がある。この走査開始スタンプは、前のエリア内でスタンプを移動しているときに、図24に示すようにあらかじめ見つけておく。すなわち、図24に示しように、スタンプが次の行のエリアとの境界に到達していて、その行で初めてA辺の内側に入った場合に、その次の行のスタンプが、次の行のエリアでの走査開始スタンプとする。
これに対して、次のタイルのエリアへ移動した場合は、走査開始エリアの選択処理(図17のS1701)を行う要がある。この走査開始エリアは、前のタイル内でエリアを移動しているときに図25の(A)および(B)に示すようにあらかじめ見つけておく。すなわち、図25の(A)に示すように、エリアが次のタイルとの境界に到達していて、かつタイル内で初めてB辺の内側に入った場合に、その次の列のエリアを、次のタイルでの走査開始エリアとする。
ただし、この条件が成り立たないまま次のタイルへ移動することもある。例えば25の(B)に示すように、エリアがB辺の内側に1度も入らないまま次のタイルへ移動してしまう。このような場合は、最後に次のタイルとの境界に到達したときの次の列のエリアを、次のタイルでの走査開始エリアにすればよい。
以上説明した走査部による走査結果の例を図26−1および図26−2に示す。図26−1はエリア走査の順番を、図26−2はエリア内のスタンプ走査の順番を矢印で示している。
このような走査処理を行った後、上述したように、エッジ関数計算部302にてスタンプ内のピクセルおよび先行点におけるエッジ関数の値を計算し、重心座標計算部303によりスタンプ内のピクセルの重心座標を計算し、スタンプ内のピクセルデータをピクセルデータバッファ112へ保存する。
図27は、ピクセルデータのデータ構造を示す説明図である。図27に示すように、ピクセルデータは、ウィンドウ座標、重心座標、頂点インデックス、coverageから構成される。
このように、本実施形態のトラバース処理部300によれば、入力される三角形の一部が視点より後ろ側にあるかどうかによらず、統一的な処理でピクセルデータを生成することができる。
以上のように、本発明にかかる描画処理装置、描画処理方法および描画処理プログラムは、三次元グラフィクス画像を描画する際に、ラスタライズ処理を行う描画処理装置、描画処理方法および描画処理プログラムに有用であり、特に、三次元グラフィクス画像を描画するゲーム装置、ゲーム方法およびゲームプログラムに適している。
本実施形態による描画処理装置の構成を示すブロック図である。 セットアップ処理部の構成を示すブロック図である。 トラバース処理部の構成を示すブロック図である。 セットアップ処理部の処理手順を示すフローチャートである。 頂点データの例を示すデータ構造図である。 バウンディングボックス計算部による三角形の投影像の外接矩形を求める処理手順を示すフローチャートである。 三角形の投影像の外接矩形を求める処理の例を示す図である。 一般的な三角形の形状の分類方法を示す図である。 エッジ関数の傾きの分類を示す説明図である。 エッジ関数の傾きの分類を示す説明図である。 エッジ関数の傾きの分類を示す説明図である。 エッジ関数の傾きの分類を示す説明図である。 エッジ関数の傾きの分類を示す説明図である。 開始点決定部による走査開始点の決定処理の手順を示すフローチャートである。 or=0の場合の三角形の投影像を示す図である。 or=1の場合の三角形の投影像を示す図である。 or=2の場合の三角形の投影像を示す図である。 or=3の場合の三角形の投影像を示す図である。 or=4の場合の三角形の投影像を示す図である。 or=5の場合の三角形の投影像を示す図である。 or=6の場合の三角形の投影像を示す図である。 or=7の場合の三角形の投影像を示す図である。 or=8の場合の三角形の投影像を示す図である。 or=9の場合の三角形の投影像を示す図である。 or=10の場合の三角形の投影像を示す図である。 or=11の場合の三角形の投影像を示す図である。 or=12の場合の三角形の投影像を示す図である。 or=13の場合の三角形の投影像を示す図である。 or=14の場合の三角形の投影像を示す図である。 or=3,sum=3の場合の三角形の投影像にて無駄な走査が生じることを示す図である。 スタンプとエリアの先行点の配置を示す図である。 先行点決定部による先行点を決定する処理の流れを示すフローチャートである。 セットアップデータの例を示すデータ構造図である。 トラバース処理部の処理手順を示すフローチャートである。 ピクセル走査処理の手順を示すフローチャートである。 スタンプの次の列への移動判定処理の手順を示すフローチャートである。 スタンプの次の列への移動判定処理の内容を示す説明図である。 スタンプの次の行への移動判定処理の手順を示すフローチャートである。 スタンプの次の行への移動判定処理の内容を示す説明図である。 エリアの次の列への移動判定処理の手順を示すフローチャートである。 エリアの次の列への移動判定処理の内容を示す説明図である。 エリアの次のタイルへの移動判定処理の手順を示すフローチャートである。 エリアの次のタイルへの移動判定処理の内容を示す説明図である。 エリアの次の行への移動判定処理の手順を示すフローチャートである。 エリアの次の行への移動判定処理の内容を示す説明図である。 次の列のエリアの走査開始スタンプを示す図である。 次の行のエリアの走査開始スタンプを示す図である。 次のタイルの走査開始エリアを示す図である。 ピクセル走査結果の例を示す図である。 ピクセル走査結果の別の例を示す図である。 ピクセルデータの例を示すデータ構造図である。 パラメータデータ合成後のピクセルデータの例を示すデータ構造図である。 一般的な従来の描画処理装置の構成を示すブロック図である。 エリアラスタライズの説明図である。 タイル単位のエリアラスタライズの説明図である。 三角形のクリッピング処理の概要を示す模式図である。
符号の説明
100 ラスタライズ処理部
101 頂点入力処理部
102 頂点演算処理部
103 ピクセル処理部
104 補間処理部
111 頂点データバッファ
112 ピクセルデータバッファ
120 描画メモリ
200 セットアップ処理部
201 エッジ係数算出部
202 バウンディングボックス計算部
203 開始点決定部
204 先行点決定部
205 エッジ関数初期値算出部
300 トラバース処理部
301 走査部
302 エッジ関数計算部
303 重心座標計算部

Claims (11)

  1. 三次元グラフィクス画像を描画する際に、三角形の頂点に関する頂点データからピクセルデータを生成するラスタライズ処理を行う描画処理装置であって、
    前記頂点データからピクセルが三角形の内部領域に存在するか否かを判定するためのエッジ関数のエッジ係数を算出するエッジ係数算出手段と、
    前記エッジ係数算出手段によって算出されたエッジ係数に基づいて、投影面における前記三角形の投影像のバウンディング領域を求めるバウンディング領域計算手段と、
    前記三角形の投影像を、各辺の前記エッジ係数の組み合わせに基づいて分類し、分類に基づいて前記バウンディング領域の端点から走査開始点を決定する開始点決定手段と、
    前記開始点決定手段によって決定された走査開始点から、前記バウンディング領域を走査してピクセルデータを生成するトラバース手段と、
    を備えたことを特徴とする描画処理装置。
  2. 前記バウンディングボックス計算手段は、各頂点から左右方向の辺の前記エッジ係数と、前記頂点の同次座標とから投影面における三角形の投影像のバウンディング領域を求めることを特徴とする請求項1に記載の描画処理装置。
  3. 前記開始点決定手段は、前記三角形の投影像を、各辺ごとの前記投影面におけるX軸方向の前記エッジ係数の符号とY軸方向のエッジ係数の符号の組み合わせに基づいて分類し、分類に基づいて前記バウンディング領域の端点から走査開始点を決定することを特徴とする請求項1に記載の描画処理装置。
  4. 前記開始点決定手段は、前記三角形の投影像を、各辺ごとの前記投影面におけるX軸方向の前記エッジ係数の符号とY軸方向のエッジ係数の符号の組み合わせと前記エッジ係数の分類を示すビット値を予め定めた分類ビットテーブルとに基づいて分類し、前記分類ビットテーブルに基づいて前記バウンディング領域の端点から走査開始点を決定することを特徴とする請求項3に記載の描画処理装置。
  5. 前記開始点決定手段は、前記三角形の投影像を、各辺ごとの前記投影面におけるX軸方向の前記エッジ係数の符号とY軸方向のエッジ係数の符号の組み合わせと前記エッジ係数の分類を示すビット値を予め定めた分類ビットテーブルと前記ビット値の合計とに基づいて分類し、前記分類ビットテーブルと前記合計値とに基づいて前記バウンディング領域の端点から走査開始点を決定することを特徴とする請求項4に記載の描画処理装置。
  6. 前記開始点決定手段は、さらに前記バウンディング領域において前記三角形の内部領域の端点から走査開始点を決定することを特徴とする請求項1に記載の描画処理装置。
  7. 前記三角形の各辺の内外判定を行うための先行点を、前記バウンディング領域における走査方向と前記エッジ係数との関係に基づいて決定する先行点決定手段をさらに備え、
    前記トラバース手段は、前記開始点決定手段によって決定された走査開始点から、前記先行点決定手段によって決定された先行点に基づいてピクセルが三角形の内部領域に存在するか否かを判定しながら、前記バウンディング領域を走査してピクセルデータを生成することを特徴とする請求項1に記載の描画処理装置。
  8. 前記トラバース手段は、前記開始点決定手段によって決定された走査開始点を含むスタンプまたはエリアから、隣接するスタンプまたはエリアを順次移動してピクセルを走査してピクセルデータを生成することを特徴とする請求項1に記載の描画処理装置。
  9. 前記トラバース手段は、前記投影面を列方向に区切ったタイルの内部に含まれるエリアを順次辿ってピクセルを走査し、前記エリアの内部に含まれるスタンプを順次辿ってピクセルを走査してピクセルデータを生成することを特徴とする請求項1に記載の描画処理装置。
  10. 三次元グラフィクス画像を描画する際に、三角形の頂点に関する頂点データからピクセルデータを生成するラスタライズ処理を行う描画処理方法であって、
    前記頂点データからピクセルが三角形の内部領域に存在するか否かを判定するためのエッジ関数のエッジ係数を算出するエッジ係数算出ステップと、
    前記エッジ係数算出手段によって算出されたエッジ係数に基づいて、投影面における前記三角形の投影像のバウンディング領域を求めるバウンディング領域計算ステップと、
    前記三角形の投影像を、各辺の前記エッジ係数の組み合わせに基づいて分類し、分類に基づいて前記バウンディング領域の端点から走査開始点を決定する開始点決定ステップと、
    前記開始点決定手段によって決定された走査開始点から、前記バウンディング領域を走査してピクセルデータを生成するトラバースステップと、
    を含むことを特徴とする描画処理方法。
  11. 三次元グラフィクス画像を描画する際に、三角形の頂点に関する頂点データからピクセルデータを生成するラスタライズ処理を行う描画処理プログラムであって、
    前記頂点データからピクセルが三角形の内部領域に存在するか否かを判定するためのエッジ関数のエッジ係数を算出するエッジ係数算出手順と、
    前記エッジ係数算出手段によって算出されたエッジ係数に基づいて、投影面における前記三角形の投影像のバウンディング領域を求めるバウンディング領域計算手順と、
    前記三角形の投影像を、各辺の前記エッジ係数の組み合わせに基づいて分類し、分類に基づいて前記バウンディング領域の端点から走査開始点を決定する開始点決定手順と、
    前記開始点決定手段によって決定された走査開始点から、前記バウンディング領域を走査してピクセルデータを生成するトラバース手順と、
    をコンピュータに実行させる描画処理プログラム。
JP2003423797A 2003-12-19 2003-12-19 描画処理装置、描画処理方法および描画処理プログラム Expired - Lifetime JP4064339B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2003423797A JP4064339B2 (ja) 2003-12-19 2003-12-19 描画処理装置、描画処理方法および描画処理プログラム
US10/981,681 US7446770B2 (en) 2003-12-19 2004-11-05 Apparatus of and method for drawing graphics, and computer program product
US12/210,254 US20090096786A1 (en) 2003-12-19 2008-12-02 Apparatus of and method for drawing graphics, and computer program product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003423797A JP4064339B2 (ja) 2003-12-19 2003-12-19 描画処理装置、描画処理方法および描画処理プログラム

Publications (2)

Publication Number Publication Date
JP2005182547A JP2005182547A (ja) 2005-07-07
JP4064339B2 true JP4064339B2 (ja) 2008-03-19

Family

ID=34675372

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003423797A Expired - Lifetime JP4064339B2 (ja) 2003-12-19 2003-12-19 描画処理装置、描画処理方法および描画処理プログラム

Country Status (2)

Country Link
US (2) US7446770B2 (ja)
JP (1) JP4064339B2 (ja)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8775997B2 (en) 2003-09-15 2014-07-08 Nvidia Corporation System and method for testing and configuring semiconductor functional circuits
US8732644B1 (en) 2003-09-15 2014-05-20 Nvidia Corporation Micro electro mechanical switch system and method for testing and configuring semiconductor functional circuits
US8768642B2 (en) 2003-09-15 2014-07-01 Nvidia Corporation System and method for remotely configuring semiconductor functional circuits
US8711161B1 (en) 2003-12-18 2014-04-29 Nvidia Corporation Functional component compensation reconfiguration system and method
JP4199159B2 (ja) * 2004-06-09 2008-12-17 株式会社東芝 描画処理装置、描画処理方法、及び描画処理プログラム
US8723231B1 (en) 2004-09-15 2014-05-13 Nvidia Corporation Semiconductor die micro electro-mechanical switch management system and method
US8711156B1 (en) 2004-09-30 2014-04-29 Nvidia Corporation Method and system for remapping processing elements in a pipeline of a graphics processing unit
US8427496B1 (en) 2005-05-13 2013-04-23 Nvidia Corporation Method and system for implementing compression across a graphics bus interconnect
US9123173B2 (en) 2005-12-15 2015-09-01 Nvidia Corporation Method for rasterizing non-rectangular tile groups in a raster stage of a graphics pipeline
US8698811B1 (en) 2005-12-15 2014-04-15 Nvidia Corporation Nested boustrophedonic patterns for rasterization
US8390645B1 (en) 2005-12-19 2013-03-05 Nvidia Corporation Method and system for rendering connecting antialiased line segments
US9117309B1 (en) 2005-12-19 2015-08-25 Nvidia Corporation Method and system for rendering polygons with a bounding box in a graphics processor unit
TWI319166B (en) * 2006-03-06 2010-01-01 Via Tech Inc Method and related apparatus for graphic processing
US8928676B2 (en) 2006-06-23 2015-01-06 Nvidia Corporation Method for parallel fine rasterization in a raster stage of a graphics pipeline
US9070213B2 (en) 2006-07-26 2015-06-30 Nvidia Corporation Tile based precision rasterization in a graphics pipeline
US8085264B1 (en) 2006-07-26 2011-12-27 Nvidia Corporation Tile output using multiple queue output buffering in a raster stage
US7843468B2 (en) * 2006-07-26 2010-11-30 Nvidia Corporation Accellerated start tile search
US8427487B1 (en) 2006-11-02 2013-04-23 Nvidia Corporation Multiple tile output using interface compression in a raster stage
US8482567B1 (en) 2006-11-03 2013-07-09 Nvidia Corporation Line rasterization techniques
US20080218520A1 (en) * 2007-03-09 2008-09-11 Graham Sellers Acceleration of Triangle Scan Conversion Through Minor Direction Detection
US8724483B2 (en) 2007-10-22 2014-05-13 Nvidia Corporation Loopback configuration for bi-directional interfaces
JP4568750B2 (ja) * 2007-11-30 2010-10-27 富士通株式会社 描画装置、描画プログラムおよび描画方法
US8780123B2 (en) 2007-12-17 2014-07-15 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US8681861B2 (en) 2008-05-01 2014-03-25 Nvidia Corporation Multistandard hardware video encoder
US8923385B2 (en) 2008-05-01 2014-12-30 Nvidia Corporation Rewind-enabled hardware encoder
CN101661741B (zh) * 2008-08-29 2012-02-22 富士通株式会社 图形光栅扫描中的三角形遍历方法和装置
JP5120174B2 (ja) * 2008-09-18 2013-01-16 富士通株式会社 描画装置
US20110063304A1 (en) 2009-09-16 2011-03-17 Nvidia Corporation Co-processing synchronizing techniques on heterogeneous graphics processing units
US9331869B2 (en) 2010-03-04 2016-05-03 Nvidia Corporation Input/output request packet handling techniques by a device specific kernel mode driver
US9171350B2 (en) 2010-10-28 2015-10-27 Nvidia Corporation Adaptive resolution DGPU rendering to provide constant framerate with free IGPU scale up
TWI488126B (zh) * 2012-10-03 2015-06-11 Pixart Imaging Inc 光學導航方法及光學導航裝置
US9710894B2 (en) 2013-06-04 2017-07-18 Nvidia Corporation System and method for enhanced multi-sample anti-aliasing
US11341383B2 (en) * 2019-08-18 2022-05-24 Kyocera Document Solutions Inc. Methods and apparatus to detect effective tiling area and fill tiles efficiently

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2271260A (en) * 1992-10-02 1994-04-06 Canon Res Ct Europe Ltd Processing image data
US6025853A (en) * 1995-03-24 2000-02-15 3Dlabs Inc. Ltd. Integrated graphics subsystem with message-passing architecture
US6111584A (en) * 1995-12-18 2000-08-29 3Dlabs Inc. Ltd. Rendering system with mini-patch retrieval from local texture storage
US6072505A (en) * 1998-04-01 2000-06-06 Real 3D, Inc. Method and apparatus to efficiently interpolate polygon attributes in two dimensions at a prescribed clock rate
US6525737B1 (en) * 1998-08-20 2003-02-25 Apple Computer, Inc. Graphics processor with pipeline state storage and retrieval
US6650325B1 (en) * 1999-12-06 2003-11-18 Nvidia Corporation Method, apparatus and article of manufacture for boustrophedonic rasterization
US6504542B1 (en) * 1999-12-06 2003-01-07 Nvidia Corporation Method, apparatus and article of manufacture for area rasterization using sense points
US6765575B1 (en) * 1999-12-06 2004-07-20 Nvidia Corporation Clip-less rasterization using line equation-based traversal
US7002577B2 (en) * 1999-12-06 2006-02-21 Nvidia Corporation Clipping system and method for a single graphics semiconductor platform
US6198488B1 (en) 1999-12-06 2001-03-06 Nvidia Transform, lighting and rasterization system embodied on a single semiconductor platform
US7551174B2 (en) * 2003-12-23 2009-06-23 Via Technologies, Inc. Method and apparatus for triangle rasterization with clipping and wire-frame mode support
JP4199159B2 (ja) * 2004-06-09 2008-12-17 株式会社東芝 描画処理装置、描画処理方法、及び描画処理プログラム

Also Published As

Publication number Publication date
US20050134583A1 (en) 2005-06-23
JP2005182547A (ja) 2005-07-07
US20090096786A1 (en) 2009-04-16
US7446770B2 (en) 2008-11-04

Similar Documents

Publication Publication Date Title
JP4064339B2 (ja) 描画処理装置、描画処理方法および描画処理プログラム
JP3184327B2 (ja) 3次元グラフィックス処理方法及びその装置
US7164424B2 (en) Interactive water effects using texture coordinate shifting
US7414636B2 (en) Rendering apparatus, rendering processing method and computer program product
JP3390463B2 (ja) 3次元グラフィックスにおけるシャドウ・テスト方法
JP2002529871A (ja) 3次元コンピュータ生成画像のシェーディング
JP2002529868A (ja) 3次元コンピュータ生成画像のシェーディング
CN111145356A (zh) 一种基于Unity3D模型的切割方法
KR100959349B1 (ko) 그래픽스 처리 유닛을 이용한 사진트리 기반의 지형 렌더링 방법을 가속화하는 방법
US7567246B2 (en) Image processing apparatus, image processing method, and image processing program
EP3319047B1 (en) Apparatus for generating an acceleration structure for ray tracing
US7289117B2 (en) Process for providing a vector image with removed hidden lines
JPH0636013A (ja) 地形データの作成方法および装置
JP3931701B2 (ja) 画像生成装置及びプログラム
KR100300969B1 (ko) 레이트레이싱에있어서교차테스트영역추출방법및이에적합한렌더링장치
JPH09305791A (ja) 立体画像生成装置および立体画像生成方法
Sommer et al. Geometry and rendering optimizations for the interactive visualization of crash-worthiness simultations
e Silva et al. Efficient hpr-based rendering of point clouds
KR100269118B1 (ko) 사각형을이용한래스터화방법
Hoppe et al. Adaptive meshing and detail-reduction of 3D-point clouds from laser scans
JP2716570B2 (ja) 画像生成装置
JP2006524384A (ja) 平行四辺形をフィル・インする方法及びシステム
Lundqvist Real-time visualization of 3D atmospheric data using OpenSpace
Schmiade Adaptive GPU-based terrain rendering
JP2003067746A (ja) 形状特徴マイニング方法およびその装置

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20071218

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20071226

R151 Written notification of patent or utility model registration

Ref document number: 4064339

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110111

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120111

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130111

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130111

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140111

Year of fee payment: 6

EXPY Cancellation because of completion of term