JP4698894B2 - Method, apparatus and program for texture tiling in a graphics system - Google Patents

Method, apparatus and program for texture tiling in a graphics system Download PDF

Info

Publication number
JP4698894B2
JP4698894B2 JP2001206703A JP2001206703A JP4698894B2 JP 4698894 B2 JP4698894 B2 JP 4698894B2 JP 2001206703 A JP2001206703 A JP 2001206703A JP 2001206703 A JP2001206703 A JP 2001206703A JP 4698894 B2 JP4698894 B2 JP 4698894B2
Authority
JP
Japan
Prior art keywords
texture
tile
indirect
coordinates
texture coordinates
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
JP2001206703A
Other languages
Japanese (ja)
Other versions
JP2002208026A (en
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.)
Nintendo Co Ltd
Original Assignee
Nintendo Co Ltd
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 Nintendo Co Ltd filed Critical Nintendo Co Ltd
Publication of JP2002208026A publication Critical patent/JP2002208026A/en
Application granted granted Critical
Publication of JP4698894B2 publication Critical patent/JP4698894B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
本発明は、コンピュータグラフィックスに関し、より特定的には、家庭用ビデオゲームプラットフォームのような対話式グラフィックスシステムに関する。さらにより特定的には、改良されたテクスチャタイリング方法および装置であって、間接テクスチャインデックスマップを用いて、タイル定義マップ内のテクスチャタイルを参照し、テクスチャタイルをレンダリングされたプリミティブにマッピングするものに関する。本発明は、さらに、合成(ブレンドされた)テクスチャタイルをタイル定義マップから作成することができ、テクスチャパターンが繰り返し現れないような方法で、当該テクスチャタイルをプリミティブに対してマッピングすることができる。
【0002】
【従来の技術】
我々の多くは、非常に現実感のある恐竜や宇宙人、アニメ化されたおもちゃといった空想的な生物を含む映像を目にしたことがある。このようなアニメーションは、コンピュータグラフィックスによって可能となっている。このような技術を用いて、コンピュータグラフィックス製作者は、各物体がどのように見えるか、および時間の経過に伴ってどのような外見上の変化が生じるかを特定することができる。そして、コンピュータが、物体をモデル化し、テレビやコンピュータ画面などのディスプレイに表示する。表示画像の各部分の着色や形状が、そのシーンに存在する個々の物体の位置や向き、各物体に対する照明方向、各物体の面の質感、その他様々な要素に基づいて確実にうまく行われるために必要な数多くのタスクは、コンピュータが引き受ける。
【0003】
コンピュータグラフィックスの生成は複雑なため、ほんの数年前まで、コンピュータで作成した3次元グラフィックスの活用は、高価で専門化されたフライトシミュレータやハイエンドグラフイックスワークステーション、スーパーコンピュータにほぼ限定されていた。人々は、コンピュータシステムによって生成された画像を、映画や制作費の高いテレビ広告において目にすることはあっても、グラフィックス生成を行うコンピュータに実際に接することはできなかった。このような状況が変化したのは、ニンテンドウ64(登録商標)やパーソナルコンピュータで利用可能な各種の3Dグラフィックスカードなど、比較的安価な3Dグラフィックスプラットフォームの出現によるものである。今や、自宅や勤務先でも、比較的安価なコンピュータグラフィックスシステム上において、迫力のある3Dアニメーションやシミュレーションと対話的に接することが可能となっている。
【0004】
かつてグラフィックスシステム設計者が直面した問題は、レンダリングされたオブジェクトについての現実感のある面の細部を、ポリゴンや他の幾何学的なプリミティブを使わずに、いかにして作成するかということであった。面の細部をシミュレートすることは、たとえば、無数の小さな三角形に対して頂点間を補間したシェーディングを行うことにより可能ではあるが、所望される細部がより高度に、かつより複雑になるにつれ、三角形などのプリミティブで明確なモデリングを行うと、グラフィックシステムへの負担が大きくなって、あまり現実的でなくなる。E.キャットムルによって開発され、J.F.ブリンおよびM.E.ニューウェルによって改良された他の技術は、デジタル化または合成化によって画像を表面に「マップ」するというものである(「曲面のコンピュータディスプレイのための細分アルゴリズム」、E.キャットムル、博士論文、レポートUTEC−CSc−74−133,コンピュータ科学部、ユタ大学、ソルトレイクシティ、ユタ州、1994年12月、および「コンピュータ生成画像のテクスチャおよび反射」、J.F.ブリンおよびM.E.ニューウェル、CACM、19(10)、1976年10月、452〜457頁)。この手法は、テクスチャマッピング(またはパターンマッピング)として知られており、画像は、テクスチャマップ(または単にテクスチャと称する)と呼ばれる。代わりに、テクスチャマップは、画像ではなく処理によって定義されてもよい。
【0005】
典型的には、テクスチャマップは、2次元の矩形座標空間において定義され、たとえば(u,v)または(s,t)のような直交テクスチャ座標の対を用いてパラメータ化される。テクスチャマップ内の個々の成分は、しばしばテクセルと呼ばれる。レンダリングされた各ピクセルにおいて、選択されたテクセルが用いられて、レンダリングされたオブジェクト表面の1つ以上の主要特性を置換またはスケーリングする。この処理は、しばしばテクスチャマッピングまたは「テクスチャリング」と称される。
【0006】
現在、3次元グラフィックスレンダリングシステムのほとんどは、テクスチャリングサブシステムを含んでいる。このシステムは、メモリからテクスチャを取得して、当該テクスチャをレンダリングされたオブジェクト表面にマッピングするためのものである。グラフィックスシステム設計者が直面している問題は、「テクスチャタイリング」などのより高度なテクスチャ関連効果を、いかにして効率よく便利な方法で行うかということである。通常、テクスチャタイリングでは、テクスチャタイル形式のテクスチャを、2次元表面などのレンダリングされたオブジェクト表面にタイル毎にマッピングすることが行われる。テクスチャタイルは、テクスチャメモリに記憶されたテクスチャのタイル形状部によって定義される。異なるタイルのアレイまたはマトリックスも、テクスチャメモリ内で定義することができる。タイルの大きさや形状は、レンダリングされた特定の表面にタイルをマッピングしやすいように選ばれうる。タイルの大きさは様々であり、レンダリングされた表面を覆うのに多数のタイルが必要であるように定義してもよい。定義されると、テクスチャタイルは、レンダリングされた表面上の特定の位置に置かれ、テクスチャリングされた表面を作り出す。
【0007】
このタイリング効果は、たとえば各所望のタイル毎にポリゴンを描くことによって、過去においても達成されてきた。しかしながら、この手法は、処理オーバーヘッドやメモリの使い方という点で、高くつきかねない。さらに、先行技術のタイリング技術から生じる問題として、タイリングされた表面は、見る者から見てわかるような繰り返しパターンを有しかねないということがある。繰り返しパターンが生じる理由は、表面をタイリングする際にプログラマが利用可能な異なるテクスチャタイルの数が通常限られているからである。したがって、壁、床、地被植物などの広い表面全体を完全に覆うためには、同一のテクスチャタイルを何度も使用することになる。このような同一のタイルを繰り返し使用すると、レンダリングされたシーンの現実感が損なわれかねない。なぜなら、多くの場合、当該タイリング処理によって生じた繰り返しのテクスチャパターンを、人間の目は認識してしまうからである。グラフィックスシステム設計者が直面している他の問題としては、テクスチャタイリング処理を行うために間接テクスチャ処理をどのように利用するかということがある。これにより、テクスチャタイリングに関連して過去に有意義な研究がなされてきているのにもかかわらず、さらなる改良が可能であり、また望まれる。
【0008】
本発明は、この問題を解決するものであり、グラフィックスシステムにおけるテクスチャタイリングを効率的に実施するために用いることができる技術および機構を提供するものである。本発明によって、より現実感のあるテクスチャタイリング済みの表面を作成することができ、これにより、表示されたテクスチャリング済みの表面を見る者が、テクスチャ内の繰り返しパターンに気づくことを減少させるか、全くなくしてしまうようにすることができる。また、本発明により、テクスチャタイル間をブレンディングすることによって、疑似3次元テクスチャを作成することもできる。さらに、本発明により、間接テクスチャ処理を効率的かつ効果的な方法で行って、テクスチャタイリングを達成することができる。
【0009】
本発明が提供する一局面によれば、テクスチャタイリング方法であって、
・テクスチャ座標を生成し、
・間接タイルインデックスマップを用いて、テクスチャ座標を修正し、
・修正されたテクスチャ座標を用いて、タイル定義マップからテクスチャタイルを選択し、
・選択されたテクスチャタイルを表示することを含む、方法である。
【0010】
本発明の他の局面によれば、疑似3次元タイリング方法であって、
・直接テクスチャ座標のセットを定義し、
・間接テクスチャ座標のセットを定義し、
・間接テクスチャ座標を用いて、オフセット値を取得し、
・オフセット値を少なくとも1つの直接テクスチャ座標と組み合わせて、第1の修正されたテクスチャ座標を生成し、
・第1の修正されたテクスチャ座標のセットを用いて、タイル定義マップから第1のテクスチャタイルを取得し、
・オフセット値をバイアスし、
・バイアスされたオフセット値を用いて、直接テクスチャ座標を修正し、
・修正されたオフセット値を、少なくとも1つの直接テクスチャ座標と組み合わせて、第2の修正されたテクスチャ座標のセットを生成し、
・第2の修正されたテクスチャ座標のセットを用いて、タイル定義マップから第2のテクスチャタイルを取得し、
・第1のテクスチャタイルおよび第2のテクスチャタイルをブレンドして、合成テクスチャタイルを生成することを含む、方法である。
【0011】
【発明の実施の形態】
図1は、対話式3Dコンピュータグラフィックスシステム50の例を示す。システム50は、興味をそそる立体音響を伴う対話式3Dビデオゲームをプレイするのに用いることができる。また、これは、他の様々な用途に応用できる。
【0012】
本例において、システム50は、デジタル表現や3次元世界モデルを、対話的にリアルタイムで処理することができる。システム50は、世界のすべてまたは一部を、任意の視点から表示することができる。たとえば、システム50は、手持ちコントローラ52aおよび52bなどの入力装置からのリアルタイム入力に応答して、視点を対話的に変化させることができる。これにより、ゲームプレイヤは、世界の内部または外部の者から見た世界を見ることができる。システム50は、リアルタイム3D対話式表示を要求しないような用途(たとえば、2D表示生成および/または非対話式表示)に用いることもできるが、上質の3D画像を非常に高速に表示する能力は、現実感の高いおもしろいゲームプレイなどの視覚的な対話を生成するのに用いることができる。
【0013】
システム50を用いてビデオゲームなどのアプリケーションをプレイするためには、ユーザは、まず、ケーブル58を用いて、メインユニット54をユーザのカラーテレビ56などの表示装置に接続する。メインユニット54は、カラーテレビ56を制御するためのビデオ信号および音声信号を生成する。ビデオ信号は、テレビ画面59に表示される画像を制御するものであり、音声信号は、テレビのステレオスピーカ61Lおよび61Rを介して、音として再生される。
【0014】
また、ユーザは、メインユニット54を電源に接続する必要がある。この電源は、家庭の壁にある電気コンセントに差し込む従来のACアダプタ(図示せず)であってもよく、家庭用電流を、メインユニット54に電力供給するのに適切な、より低いDC電圧信号に変換する。他の態様として、電池を用いることも可能である。
【0015】
ユーザは、ハンドコントローラ52aおよび52bを用いて、メインユニット54を制御してもよい。たとえば、操作部60を用いて、テレビ56に表示されるキャラクタが3次元世界内で移動すべき方向(上または下、左または右、近または遠)を指定することができる。また、操作部60は、他の用途のための入力を与える(たとえば、メニュー選択、ポインタ/カーソル制御など)。コントローラ52は、様々な形態を取り得る。本例においては、図示された各コントローラ52は、ジョイスティック、押しボタン、および/または方向スイッチなどの操作部60を含む。コントローラ52のメインユニット54への接続は、ケーブルであってもよいし、電磁波(たとえば、電波または赤外線波)を介した無線であってもよい。
【0016】
ゲームなどのアプリケーションをプレイするためには、ユーザは、プレイしたいと思う当該ビデオゲームなどのアプリケーションを記憶する適切な記憶媒体62を選択して、当該記憶媒体をメインユニット54内のスロット64に挿入する。記憶媒体62は、たとえば、特に符号化されたおよび/または暗号化された光学および/または磁気ディスクであってもよい。ユーザは、電源スイッチ66を操作して、メインユニット54をオンして、記憶媒体62に記憶されたソフトウェアに基づいてビデオゲームなどのアプリケーションの実行を開始してもよい。ユーザは、コントローラ52を操作して、メインユニット54に入力を与えてもよい。たとえば、操作部60を操作すると、ゲームなどのアプリケーションが開始されてもよい。他の操作部60を動かすと、動くキャラクタを異なる方向へ移動させたり、3D世界内でのユーザの視点を変化させたりすることができる。記憶媒体62内に記憶された特定のソフトウェアに基づいて、コントローラ52上の様々な制御部60は、異なる時に異なる機能を実行することができる。
【0017】
<システム全体の電子回路例>
図2は、システム50の構成要素例のブロック図を示す。主な構成要素は以下のものを含む。
・メインプロセッサ(CPU)110、
・メインメモリ112、および
・グラフィックス&音声プロセッサ114
【0018】
本例においては、メインプロセッサ110(たとえば、拡張されたIBMPowerPC750)は、グラフィックス&音声プロセッサ114を介して手持ちコントローラ108(および/または他の入力装置)からの入力を受ける。メインプロセッサ110は、ユーザ入力に対話的に応答して、たとえば外部記憶媒体62から光学ディスクドライブなどの大容量記憶アクセス装置106を介して供給されるビデオゲームなどのプログラムを実行する。一例として、ビデオゲームプレイの場合、メインプロセッサ110は、様々な対話的な制御機能に加えて、衝突検出や動画処理を行うことができる。
【0019】
本例において、メインプロセッサ110は、3Dグラフィックスコマンドおよび音声コマンドを生成して、グラフィックス&音声プロセッサ114に送る。グラフィックス&音声プロセッサ114は、これらのコマンドを処理して、興味をそそる視覚的な画像をディスプレイ59に生成したり、興味をそそる立体音響をステレオスピーカ61Rおよび61Lなどの適切な音発生装置に生成したりする。
【0020】
本例のシステム50が含むビデオエンコーダ120は、グラフィックス&音声プロセッサ114から画像信号を受信して、当該画像信号を、コンピュータモニタや家庭用カラーテレビ56などの標準的な表示装置に表示するのに適切なアナログおよび/またはデジタルビデオ信号に変換する。また、システム50が含む音声コーデック(圧縮器/伸長器)122は、デジタル化された音声信号の圧縮および伸長を行い、また、必要に応じて、デジタルまたはアナログ音声信号形式への変換を行ってもよい。音声コーデック122は、音声入力をバッファ124を介して受信して、グラフィックス&音声プロセッサ114に与えて、処理を行うことができる(たとえば、プロセッサが生成した他の音声信号とミキシングするおよび/または大容量記憶アクセス装置106のストリーミング音声出力を介して受信する)。本例のグラフィックス&音声プロセッサ114は、音声関連情報を音声タスク用に利用可能な音声メモリ126に記憶することができる。グラフィックス&音声プロセッサ114は、処理結果の音声出力信号を音声コーデック112に与えて、スピーカ61Lおよび61Rによって再生できるように、(たとえば、バッファ増幅器128Lおよび128Rを介して)伸長やアナログ信号への変換が行われる。
【0021】
グラフィックス&音声プロセッサ114は、システム50内にある様々な付加的な装置と通信を行うことが可能である。たとえば、パラレルデジタルバス130が、大容量記憶アクセス装置106および/または他の構成要素との通信に用いられてもよい。シリアル周辺機器バス132が、様々な周辺機器などの機器との通信に用いられてもよく、それらの機器としては、たとえば、以下のものを含む。
・プログラム可能な読み出し専用メモリおよび/またはリアルタイムクロック134、
・モデム136などのネットワークインターフェース(インターネットなどのデジタルネットワークのような、プログラム命令および/またはデータをダウンロードしたりアップロードしたりすることが可能な電気通信ネットワーク138に対して、システム50を接続するようなものであってもよい)、および
・フラッシュメモリ140。
【0022】
別の外部シリアルバス142が、付加的な拡張メモリ144(たとえば、メモリカード)などの装置との通信に用いられてもよい。コネクタが、様々な装置をバス130、132、および142を接続するために用いられてもよい。
【0023】
<グラフィックス&音声プロセッサの例>
図3は、グラフィックス&音声プロセッサ114の例のブロック図である。一例として、グラフィックス&音声プロセッサ114は、単一チップASIC(特定用途向けIC)であってもよい。本例において、グラフィックス&音声プロセッサ114は、以下のものを含む。
・プロセッサインターフェース150、
・メモリインターフェース/コントローラ152、
・3Dグラフィックスプロセッサ154、
・音声デジタル信号プロセッサ(DSP)156、
・音声メモリインターフェース158
・音声インターフェース&ミキサ160
・周辺機器コントローラ162、および
・ディスプレイコントローラ164。
【0024】
3Dグラフィックスプロセッサ154は、グラフィック処理タスクを行う。音声デジタル信号プロセッサ156は、音声処理タスクを行う。ディスプレイコントローラ164は、画像情報をメインメモリ112からアクセスして、それをビデオエンコーダ120に与えて、表示装置56に表示させる。音声インターフェース&ミキサ160は、音声コーデック122とインターフェースし、また、別のソースからの音声(たとえば、大容量記憶アクセス装置106からのストリーミング音声、音声DSP156の出力、および音声コーデック122を介して受信した外部音声入力)をミキシングすることも可能である。プロセッサインターフェース150は、メインプロセッサ110およびグラフィックス&音声プロセッサ114間のデータおよび制御インターフェースを提供する。
【0025】
メモリインターフェース152は、グラフィックス&音声プロセッサ114およびメモリ112間のデータおよび制御に関するインターフェースを提供する。本例において、メインプロセッサ110は、グラフィックス&音声プロセッサ114の一部であるプロセッサインターフェース150およびメモリインターフェース152を介して、メインメモリ112にアクセスする。周辺機器コントローラ162は、グラフィックス&音声プロセッサ114および上述の様々な周辺機器間におけるデータおよび制御に関するインターフェースを提供する。音声メモリインターフェース158は、音声メモリ126とのインターフェースを提供する。
【0026】
<グラフィックスパイプラインの例>
図4は、3Dグラフィックスプロセッサ154の例のより詳細な図である。3Dグラフィックスプロセッサ154は、特に、コマンドプロセッサ200と、3Dグラッフィックスパイプライン180とを含む。メインプロセッサ110は、データのストリーム(たとえば、グラフィックスコマンドストリームやデータリスト)をコマンドプロセッサ200に伝達する。メインプロセッサ110は、メモリの待ち時間を最小限にするための2レベルキャッシュ115を有し、また、グラフィックス&音声プロセッサ114向けの未キャッシュのデータストリームのためのライトギャザリングバッファ111も有する。ライトギャザリングバッファ111は、部分キャッシュラインを集めて完全キャッシュラインとし、このデータを1キャッシュラインずつグラフィックス&音声プロセッサ114に送出して、バスが最大限に利用できるようにする。
【0027】
コマンドプロセッサ200は、メインプロセッサ110から表示コマンドを受信し、これを解析して、処理に必要な付加データを共通メモリ112から取得する。コマンドプロセッサ200は、頂点コマンドのストリームをグラフィックスパイプライン180に与えて、2Dおよび/または3D処理およびレンダリングを行う。グラフィックスパイプライン180は、これらのコマンドに基づいて画像を生成する。生成された画像情報は、メインメモリ112に転送されて、表示制御部/ビデオインターフェース部164によってアクセスできるようにしてもよく、それによって、ディスプレイ56にパイプライン180のフレームバッファ出力が表示される。
【0028】
図5は、グラフィックスプロセッサ154の論理フロー図である。メインプロセッサ110は、グラフィックスコマンドストリーム210と、表示リスト212と、頂点アレイ214とをメインメモリ112に記憶してもよく、バスインターフェース150を介してポインタをコマンドプロセッサ200に渡す。メインプロセッサ110は、メインメモリ110内に割り当てた1つ以上のグラフィックス先入れ先出し(FIFO)バッファ210にグラフィックスコマンドを記憶する。コマンドプロセッサ200は、以下のものを取り出す。
・グラフィックスコマンドを受信およびバッファリングして、同期/フロー制御およびロードバランシングを行うオンチップFIFOメモリバッファ216を介して、メインメモリ112からのコマンドストリーム、
・オンチップ呼び出しFIFOメモリバッファ218を介して、メインメモリ112からの表示リスト212、および
・コマンドストリームからの、および/または頂点キャッシュ220を介してメインメモリ112内の頂点アレイ214からの頂点属性。
【0029】
コマンドプロセッサ200は、コマンド処理動作200aを行って、属性型を浮動小数点形式に変換し、その結果の完全な頂点ポリゴンデータをグラフィックスパイプライン180に渡して、レンダリング/ラスタライズする。プログラム可能なメモリ調停回路130(図4参照)は、グラフィックスパイプライン180、コマンドプロセッサ200、および表示制御部/ビデオインターフェース部164の間で共通のメインメモリ112に対するアクセスを調停する。
【0030】
図4に示すように、グラフィックスパイプライン180は、以下のものを含んでもよい。
・変換部1300、
・セットアップ/ラスタライザ400、
・テクスチャ部500、
・テクスチャ環境部600、および
・ピクセルエンジン部700。
【0031】
変換部300は、2Dおよび3D変換などの様々な処理300aを行う(図5参照)。変換部300は、変換処理300aに用いられるマトリックスを記憶する1以上のマトリックスメモリ300bを含んでもよい。変換部300は、頂点毎に入力される形状を、オブジェクト空間から画面空間へ変換し、入力されるテクスチャ座標を変換して投影テクスチャ座標を計算する(300c)。変換部300は、ポリゴンクリッピング/カリング(300d)を行ってもよい。また、変換部300bによって行われるライティング処理300eによって、一実施例においては、8個の独立した光に対するライティング計算が頂点毎に行われる。また、変換部300は、エンボス型のバンプマッピング効果を出すためのテクスチャ座標生成(300c)や、ポリゴンクリッピング/カリング処理(300d)を行うこともできる。
【0032】
セットアップ/ラスタライザ400は、セットアップ部を含む。セットアップ部は、頂点データを変換部300から受信して三角形セットアップ情報を1以上のラスタライザ(400b)に送信して、エッジラスタライズ、テクスチャ座標ラスタライズ、およびカラーラスタライズを行う。
【0033】
テクスチャ部500(オンチップテクスチャメモリ(TMEM)502を含んでもよい)、テクスチャリング関連の様々なタスクを行う。タスクには、たとえば、以下のものが含まれる。
・メインメモリ112からテクスチャ504を取り出す、
・たとえばマルチテクスチャ処理、ポストキャッシュテクスチャ伸展、テクスチャフィルタリング、エンボス、投影テクスチャを用いたシャドウおよびライティング、ならびにアルファ透明およびデプスを用いたBLITを含む、テクスチャ処理(500a)、
・バンプマッピング、疑似テクスチャ、テクスチャタイリング効果のためのテクスチャ座標変換量を計算するバンプマップ処理(500b)、および
・間接テクスチャ処理(500c)。
【0034】
図6から図29は、通常(非間接)および間接テクスチャルックアップ処理を行うためのテクスチャ処理の例を示す。グラフィックスパイプライン回路ならびに通常および間接テクスチャルックアップ処理を行う手順については、共通して譲渡された同時係属特許出願番号60/226,891、名称「グラフィクスシステムにおいて直接および間接テクスチャを処理するための方法および装置」(代理人整理番号723−849)を参照のこと。この出願のすべての内容は引用によって合体される。
【0035】
テクスチャ部500は、透過されたテクスチャ値をテクスチャ環境部600に出力して、テクスチャ環境処理を行う(600a)。テクスチャ環境部600は、ポリゴンとテクスチャカラー/アルファ/デプスをブレンドし、テクスチャフォグ処理(600b)をも行って、インバースレンジに基づくフォグ効果を達成する。テクスチャ環境部600は、複数のステージを提供して、たとえばカラー/アルファ・モジュレーション、エンボス、ディテールテクスチャリング、テクスチャスワッピング、クランピング、およびデプスブレンディングに基づいて、他の興味をそそる様々な環境関連の機能を行うことができる。テクスチャ環境部600に関するさらなる詳細は、共通して譲渡された同時係属特許出願番号60/226,888、名称「グラフィクスシステム用再循環シェードツリーブレンダ」(代理人整理番号723−851)を参照のこと。この出願の内容は、本願に合体される。
【0036】
ピクセルエンジン700は、デプス(z)比較(700a)およびピクセルブレンディング(700b)を行う。本例において、ピクセルエンジン700は、組み込み(オンチップ)フレームバッファメモリ702にデータを記憶する。グラフィックスパイプライン180は、1以上の組み込みDRAMメモリ702を含んでもよく、フレームバッファの内容および/またはテクスチャ情報をローカルに記憶する。現在有効なレンダリングモードによっては、Z比較700a’は、グラフィックスパイプラインの早い段階において行われることもできる(たとえば、アルファブレンディングが不要であれば、z比較は早い段階で行うことができる。)。ピクセルエンジン700は、コピー処理700cを含む。これは、オンチップフレームバッファの内容をメインメモリに周期的に書き込むものであり、表示/ビデオインターフェース部164がアクセスできるようにする。このコピー処理700cを用いて、組み込みフレームバッファ702の内容からテクスチャまでを、メインメモリ112にコピーすることもでき、動的なテクスチャ合成効果が得られる。アンチエイリアシングやその他のフィルタリングは、コピーアウト処理中に行うことができる。(最終的にはメインメモリ112に記憶される)グラフィックスパイプライン180のフレームバッファ出力は、フレーム毎に、表示/ビデオインターフェース部164によって読み出される。表示制御部/ビデオインターフェース164は、ディジタルRGBピクセル値を与えて、ディスプレイ102に表示する。
【0037】
<テクスチャタイリング手順例の概略>
本発明は、2つの異なるタイリング方法を提供するものであり、両方とも、好ましくは間接テクスチャタイルマップを用いる。第1の方法は、間接テクスチャタイリング方法を提供する。第2の方法では、複数のタイル間のブレンディングによって固有のテクスチャタイルを作成して、たとえば疑似3次元テクスチャ効果を達成することができる。
【0038】
図30は、本発明の間接テクスチャタイリング方法の手順を示す。この第1の手順例によれば、テクスチャ座標は、レンダリングされたオブジェクトの表面パラメータから生成される(ブロック1400)。タイルインデックスマップを用いて、テクスチャ座標を修正するために用いられるタイル選択オフセットを取得する(ブロック1402)。その後、修正されたテクスチャ座標が用いられて、テクスチャ定義マップからテクスチャタイルが選択される(ブロック1404)。テクスチャタイルは、タイリング処理に使用を望むどのような種類のテクスチャを含んでいてもよく、たとえば、煉瓦、ガラスなど、どのような適切なパターンや大きなパターンの部分であってもよい。その後、結果生じたタイルテクスチャリングされた画像が表示される(ブロック1406)。
【0039】
図31は、テクスチャブレンディングまたは疑似3次元テクスチャ方法の手順例を示す。この第2の手順例によれば、テクスチャ座標も、表面パラメータから生成される(ブロック1410)。その後、テクスチャ座標を用いて、テクスチャ座標を修正するために用いられる少なくとも1つのテクスチャ選択オフセットを取得する(ブロック1412)。その後、修正されたテクスチャ座標を用いて、複数のテクスチャタイルをタイル定義マップから選択する(ブロック1414)。その後、タイルはブレンドされて、合成タイルテクスチャを形成する(ブロック1416)。その後、結果生じた合成タイルテクスチャリング画像が表示される(ブロック1418)。
【0040】
以下に、本発明の上述の両タイリング方法を、別々により詳細に説明する。個々で説明する両タイリング方法は、好ましくは、上述の同時係属出願に記載された間接テクスチャ処理システムを使用することによって実施される。しかしながら、本発明によれば、たとえば再循環、複数パラレルチャンネル、または他の処理回路を組み込んだ適切な処理システムを用いることも可能である。
【0041】
<間接テクスチャタイリング例(第1のタイリング方法)>
図32は、図30に示すような本間接テクスチャタイリング方法のより詳細なブロック図の例である。この方法によれば、間接タイルインデックスマップおよびタイル定義マップが定義される(ブロック1500,1501)。タイル定義マップは、様々なタイルの基本定義を保持する。間接タイルインデックスマップは、テクスチャリングされたオブジェクトの表面上における特定のタイルの特定位置を識別する。このようにオブジェクト上にタイルをマップするために、間接テクスチャ座標対(S0,T0)が生成される(ブロック1504)。この例において、間接テクスチャ座標が基づくのは、インデックスマップではなく、テクスチャリングされた表面のスケールである。これにより、直接テクスチャ座標および間接テクスチャ座標が同一のテクスチャ座標を用いることが可能となる、という利点がある。よって、間接テクスチャ座標は、たとえば、用いるタイルの各次元で座標を除算することによって、インデックスマップに適切にスケーリングされる(ブロック1506)。その後、スケーリングされたテクスチャ座標は、テクスチャインデックスマップ内のルックアップ処理を行うのに用いられて、現在のテクスチャ座標の適切なタイル選択オフセットが得られる(ΔS,ΔT)(ブロック1508)。その後、タイル選択オフセットは、対象テクスチャスケールに再スケーリングされる。これは、たとえば、用いるタイルの各次元をオフセットに乗算することによって行われる(ブロック1510)。
【0042】
直接テクスチャ座標のセット(S1,T1)もまた、定義される(ブロック1512)。上述のように、本実施例において、間接および直接テクスチャ座標は、実際は同一である。直接テクスチャ座標に対して、ラッピング処理が行われる(ブロック1514)。本例においては、ラッピング処理は、nを法とするラップであり、nは、用いるタイルの次元である。
【0043】
適切にスケーリングされたタイルオフセット(ΔS,ΔT)およびラップされたテクスチャ座標(S1,T1)を取得すると、これらは組み合わされて(ブロック1516)、修正されたテクスチャ座標(S’,T’)が生じる。その後、修正されたテクスチャ座標(S’,T’)は、タイル定義マップ内のルックアップ処理に用いられる(ブロック1518)。これは、現在のテクスチャ座標に対する所望のテクスチャタイルを取得する目的で行われる。選択されたテクスチャタイルは、その後、表示のために(またはさらなるテクスチャ処理動作に用いられるために)出力される(ブロック1520)。
【0044】
図33は、本発明の間接タイリング方法の第1の例を示す。図33に示すように、テクスチャタイルインデックスマップ1600は、処理後のテクスチャ1604上の各タイル位置毎にタイル定義マップ1602内の特定のタイルを識別する。本例では、2次元(2×2)タイル定義マップ1602が用いられる。よって、タイル定義マップは、4つのタイルを含み、本例では、各タイルは、より広く想定されたテクスチャパターンにおける互いに異なる補完的な部分を構成する。本例において、処理後のパターン1604の大きさは、512×512テクセルである。間接タイルインデックスマップ1600は、4×4マトリックスであり、各マトリックス成分は、タイル定義マップ1602内の4つのタイルのうちの1つを識別する。タイル定義マップ内の各タイルの大きさは、128×128テクセルである。よって、インデックスマップ1600内の16個のインデックスのそれぞれを用いてタイルをマップすることによって、処理後の画像1604は、タイルインデックスマップによって決定されるような所望の構成において、16個のタイル(512×512テクセル)を含むことになる。図33からわかるように、本例における処理後のタイルパターン1604は、16個のテクスチャタイルからなる4つの正方形で構成されるパターンを含む。
【0045】
上述のように、図33のバンプ部(OP)ブロック1606によって示されるような、直接および間接座標に対する所定のスケーリング、ラッピング、および/または追加処理が行われる。本例において、間接テクスチャは、最初に、間接テクスチャ座標を128(タイルの次元)で除算することによって、縮小される。これは、4×4のインデックスマトリックス1600に対応して、特定のテクスチャ座標のオフセットを取得するために行われる。その後、オフセットは、128(タイルの次元)で乗算されることによって拡大される。拡大されたオフセットは、その後、テクスチャ座標に対するラッピング処理結果と組み合わされる。これは、修正されたテクスチャ座標を取得して、それを用いてタイル定義マップ1602からテクスチャを得るために行われる。
【0046】
図34は、本発明の間接タイリング方法の第2の例を示す。参照符号は、上述の同様の部分に対応している。本例において、タイル定義マップ1602は、図33の第1の例において用いたような2次元マップではなく、1次元のマップである。その結果、間接テクスチャマップ1600は、第1の例のようなオフセット値の対ではなく、単一のオフセット値のみを用いる。よって、タイル定義マップがどのように構成されているか(垂直に、または水平にスタックされているか)によって、選択された特定のオフセット値を用いて、ラップされたS1またはT1の値のいずれか(本例ではS1)を修正することができる。本例では、テクスチャタイルの大きさは、64×64タイルである。よって、バンプ部1606(OP)で用いられるラッピングおよびスケーリングのパラメータは、第1の例のような128ではなく、64である。なお、本発明が用いられる特定のアプリケーションに応じて、いかなる適切な大きさのテクスチャタイルをも用いることが可能である。さらに、本発明を用いて、いかなる適切な大きさの間接テクスチャマップや処理後のテクスチャをも定義することが可能である。
【0047】
図35は、本発明の間接タイリング方法の第3の例を示す。同じく、参照符号は、上述の同様の部分を指定するために用いられている。本例では、8つの18×18テクセルタイルによって構成された2×4タイル定義マップ1602を用いる。間接タイルインデックスマップ1600は、上記第1の例のインデックスマップと同様である。しかしながら、本例では、18×18テクセルタイルのうちの16×16テクセルのみを用いて、処理後のタイルパターン1604を作成している。よって、本例が示すように、タイル定義の大きさに関係なく、いかなる適切なタイルの大きさをも用いることができる。
【0048】
図36は、図32および図33〜35に関する上述の間接タイリング方法例の論理ブロック図である。図36からわかるように、本タイリング方法では、直接座標および間接座標について、同一の初期テクスチャ座標を用いることができる(すなわち、S1=S0,T1=T0)。しかしながら、座標が同一でないような他の構成も可能である。たとえば、タイルインデックスマップに適正に対応するためにスケーリングする必要のない間接テクスチャ座標を用いてもよい。しかしながら、本例のように、同一のテクスチャ座標を用いる場合は、スケーリングブロック1702aおよび1702bに示すように、間接テクスチャ座標1700(S0,T0)は、まずスケーリングされる。これは、間接テクスチャインデックスマップ1600のスケールに適合させるために行われる。その後、適正にスケーリングされた間接座標を用いて、タイルインデックスマップ内のルックアップ処理が行われる。これは、タイル選択オフセット1704(ΔS,ΔT)を得るために行われる。所望のテクスチャをタイリングするため、座標スケールは、タイルの大きさに間接インデックスマップのサイズを乗算したものである。タイルの大きさは、その後除算され、間接マップにアクセスするために用いられる。
【0049】
タイル選択オフセットは、乗算器1706aおよび1706bによって示されるように、元のスケールに拡大されて、直接テクスチャ座標のスケールと対応するようする。その後、nを法とするラッピングブロック1708aおよび1708bに示すように、直接座標がラップされた後、オフセットは、通常のテクスチャ座標1701(S1,T1)と組合せることができるようになる。そして、ラップされた直接座標およびスケーリングされたオフセットは、加算器1710aおよび1710bによって組み合わされる。これにより、修正されたテクスチャ座標1712(S’’,T’’)を生成する。その後、修正されたテクスチャ座標を用いて、タイル定義マップ1602内の通常のテクスチャルックアップが行われ、これにより、テクスチャとしてTEV部に出力されるタイルが選択される。なお、図36の論理ブロック図は、オフセットがS1およびT1の両方に与えられている実施例を示しており、本例では、2次元タイル定義マップが使えるようになっている。しかしながら、図34の例のように、1次元タイルインデックスマップのみを用いるような、本発明に係る他の構成も可能である。
【0050】
<疑似3次元テクスチャタイリングの例(第2のタイリング方法)>
図37は、疑似3Dテクスチャと称する、本発明の第2の間接タイリング方法(図31参照)のより詳細なブロック図を示す。この第2の方法によれば、間接的にインデックス化された複数のタイルを互いにブレンドして、表面にマップされる合成タイルを形成することができる。言い換えれば、この方法では、タイリングマッピングを拡張して、疑似3次元効果を提供することが可能である。この方法では、すべてのタイルは、スタックの一部とみなされる。第1の例のようにタイル定義マップから単一のタイルを選択するのではなく、本例では、複数のタイル(以下の例では、2つの隣接するタイル)を選択し、このタイルをブレンドして、合成テクスチャタイルを生成することができる。この手法は、たとえば、互いに滑らかにブレンドする不連続パターンで広い表面を覆うために用いることができる。テクスチャタイルのブレンドを可能にすることにより、プログラマは、表面を覆う際にタイル定義マップ内の特定のタイルに限定されることがなくなる。代わりに、新たなタイルを既存のタイルと合成することにより、大きなテクスチャ定義マップを必要とせずに、表面を覆うのに利用可能なテクスチャタイルの数を大幅に増加させることも可能である。合成タイルを用いることにより、テクスチャパターンが繰り返される外観を避けることができ、それにより、画像の現実感を向上することができる。この方法は、たとえば、細かい砂から小さな小石、そして大きな岩というように、外観上様々な層を有する浜辺を、タイリングされたテクスチャで覆う場合に用いることができる。ブレンディング機能を用いて、処理後のテクスチャに対して疑似3次元外観を与えることができる。
【0051】
図37に示すように、タイル定義スタック内のタイルへのインデックスを含むように間接タイルインデックスマップを定義する(ブロック1800)。間接テクスチャ座標が定義され(ブロック1802)、テクスチャ選択オフセットおよびブレンディング係数が取得される(ブロック1804)。テクスチャタイル定義は、スタックの形態で定義される(ブロック1806)。疑似3次元効果が所望される場合には、本例では、タイルは、隣接タイルが互いによくブレンドされて階層効果を与えるように定義されるのが好ましい。このことは以下の説明からより理解されるであろう。むろん、上述のように、間接座標と直接座標とを同一にしたい場合などには、間接ルックアップ処理前に間接座標をスケーリングしてもよい。
【0052】
直接座標が定義され(ブロック1808)、オフセットと組み合わされて、第1の修正されたテクスチャ座標(s,t’)が生成される(ブロック1810)。その後、オフセットは、1タイル分だけ増分するなどの所定の方法で修正され(バイアスされ)、その後、修正されたオフセットを直接テクスチャ座標と組み合わせることによって、第2の修正されたテクスチャ座標(s,t’’)(ブロック1812)が定義される。その後、第1の修正されたテクスチャ座標(s,t’)を用いて、第1のテクスチャがタイル定義スタック内でルックアップされ、第1のテクスチャタイルが取得される(ブロック1814)。その後、第2の修正されたテクスチャ座標(s,t’’)を用いて、第2のテクスチャがタイル定義スタック内でルックアップされ、第2のテクスチャタイルが取得される(ブロック1816)。その後、第1および第2のテクスチャタイルはブレンドされて、合成テクスチャが作成される(ブロック1818)。本例では、ブレンディング処理に用いられるブレンディング係数は、タイルインデックスマップからタイル選択オフセットとともに取得される。その後、合成テクスチャが、表示のために(またはさらなるテクスチャ処理動作に用いられるために)出力される(ブロック1820)。
【0053】
図38は、本発明の疑似3次元テクスチャリング方法の例を示す。本例では、テクスチャタイルインデックスマップ1900は、タイルスタック1902へのインデックスと、ブレンディング係数とを含む。特定的には、本例では、タイルインデックスマップは、整数成分と小数成分とを含むインデックスを含む。たとえば、インデックスマップ1900の左下隅の成分は、「4.9」である。この実施例においては、整数成分(すなわち、「4」)はレイヤ選択オフセットを与え、小数成分(すなわち、「.9」)はブレンディング係数を与える。よって、間接テクスチャ座標を用いて、レイヤ選択オフセットとブレンディング係数とをルックアップする。その後、オフセットはスケーリングされ(特定の実施において必要であれば)、バンプブロック1904を用いて(ラップされた後に)直接テクスチャ座標と組み合わされ、第1の修正されたテクスチャ座標のセットが生成される。その後、第1の修正されたテクスチャ座標のセットは、タイル定義スタック1902内のルックアップ処理に用いられて、第1のテクスチャタイルが取得される。また、バンプ部は、タイル選択オフセットに対してバイアス処理を行い、バイアスされたオフセットをラップされた直接テクスチャ座標と組み合わせることによって、第2の修正された座標を生成する。このバイアス処理は、たとえば1タイル分などといいった特定の量だけ、オフセットを単に増加させるものであってもよく、また、処理後のタイルがバイアスを行わない場合の処理後のタイルと異なるようなものであれば、オフセットについての他のいかなる適切な処理を行うものであってもよい。その後、第2の修正されたテクスチャ座標のセットを用いて、タイル定義スタック1902から第2のタイルがルックアップされる。選択された2つのタイルは、その後、間接インデックスタイルインデックスマップ1900によって与えられたブレンディング係数を用いて互いにブレンドされ、それにより、処理後のテクスチャ1906に用いられる合成テクスチャタイルが生成される。本例において、処理後のテクスチャ4.9は、ブレンディング係数0.9を用いてレイヤ定義4とレイヤ定義5とが互いにブレンドされたことを示しており、すなわち、4.9=0.1*(レイヤ4定義)+0・9*(レイヤ5定義)を示す。なお、本例では、1つのオフセットのみが与えられている。よって、本例では、タイル定義マップは、1次元スタックとして扱われ、オフセットは、直接テクスチャ座標のS1またはT1成分を修正するために用いられる。インデックスマップがブレンディング係数とともにオフセット対を与えるような、他の構成も可能である。他の実施例では、ブレンディング係数は一定であってもよいし、そうでなければ、タイルインデックスマップ1900による以外の方法で定義されてもよい。しかしながら、ブレンディング係数をタイルインデックスマップにプログラム可能とすることによって、他のブレンディング係数を簡便に定義して、多様性の高い合成タイルを生成することも可能である。なお、本例においては、オフセットのバイアス係数は1タイルである。よって、最初のタイルが定義されると、2番目のタイルは、スタック内において次のタイルとして定義される。バイアスによって第2のタイルが第1のタイルと異なる関係を有するような、他の構成も可能である。
【0054】
図39は、図37および38に関連して上述したこの第2のタイリング方法の論理ブロック図の例を示す。図39に示すように,間接座標(S0,T0)が決定され、その後、スケーリングブロック1910aおよび1910bによって示すように、適正にスケーリングされる。スケーリングは、本発明の第1の方法に関連して上述したのと同じ理由で行われる。また、本例では、直接および間接テクスチャ座標は同一の値を用いる。しかしながら、上述のように、他の構成も可能であり、特定の実施によっては、スケーリング処理を調整したり、行わなかったりすることも可能である。本例では、スケーリングされた間接座標1908(S0,T0)を用いて、間接テクスチャインデックスマップ1900内のルックアップ処理を行い、タイル選択オフセットを表す整数1918aと、ブレンディング係数を表す小数(1918b)とを取得する。その後、乗算器1922によって示されるように、整数(オフセット)は再スケーリングされ、加算器1916aに送られて、直接テクスチャ座標の修正子として用いられる。nを法とするラップブロック1914aおよび1914bによって示されるように、直接テクスチャ座標1912(S1,T1)はラップされる。その後、オフセットはラップされた座標のt成分と組み合わされて、第1の修正されたテクスチャ座標のセット(s,t’)が生成され、そして、これを用いて、タイル定義スタック1902内のルックアップが行われて、第1のテクスチャタイル(Tex1)が取得される。
【0055】
また、整数1918aによって与えられたタイル選択オフセットを用いて、第2の修正されたテクスチャ座標のセットが取得される。これは、ブロック1926によって示されるように、オフセットをバイアスすることによって行われる。本例では、バイアスの際には、乗算器1922bでオフセットの再スケーリングが行われる前に、オフセットに1を加算することが行われる。その後、バイアスされたオフセットは、加算器1916bに送られる。バイアスされたオフセットは、直接テクスチャ座標のラップされたt成分と加算器1916bによって組み合わされ、第2の修正されたテクスチャ座標のセット(s,t’’)が生成される。その後、第2の修正されたテクスチャ座標のセットは、1902のタイル定義マップ内の第2のルックアップを行うために用いられて、第2のテクスチャタイル(Tex2)が取得される。
【0056】
その後、第1のテクスチャタイル(tex1)および第2のテクスチャタイル(tex2)は、ブレンディングブロック1920に送られる。間接テクスチャインデックスマップ1900から取得した小数成分(1918b)は、多重器1924aおよび1924bを介して、ブレンディングブロック1920に運ばれる。よって、その後、ブレンダーは、2つのテクスチャタイルおよび適正なブレンディング係数を有する。その後、ブレンディング処理が行われて、2つのテクスチャタイルがブレンディング係数に基づいて組み合わされて、合成タイルが生成されて、表示のために(またはさらなるテクスチャ処理動作に用いられるために)出力される。
【0057】
<API間接テクスチャタイリング関数コマンドの例>
図7〜10に示すように、1つ以上のグラフィックスAPI関数を用いて、間接テクスチャルックアップ処理および間接テクスチャ処理を設定および起動させるのが好ましい。上述のような、間接テクスチャ処理設定のためのAPI関数、ならびに間接テクスチャタイリングおよび疑似3次元テクスチャタイリングを行うためのパラメータは、以下のように定義されてもよい。
【0058】
<GXSetTevIndTile>
この関数は、間接テクスチャを用いたタイル化されたテクスチャリングを実施するのに用いてもよい。なお、通常のテクスチャマップは、タイル定義を指定するのみである。ポリゴンに付加するテクセルの実際の数は、基礎タイルの大きさおよび間接マップの大きさの関数である。適正なテクスチャ座標スケールを設定するために、GXSetTexCoordScaleManuallyを呼び出さなければならない。また、通常のTEVステージと同じテクスチャ座標を間接ステージに用いるためには、GxSetIndTexScaleを用いる。
【0059】

Figure 0004698894
【0060】
Figure 0004698894
【0061】
上記の関数は、上述の間接テクスチャタイリング方法または疑似3次元テクスチャタイリング方法を特定するために用いることができる。なお、タイルの大きさと間隔とは個別に指定することが可能である。タイルの大きさよりも大きな間隔を用いる理由の例としては、ミップマッピングのための境界を持たせることがある。ミップマップスタックの高さによっては、タイルの外側にあるテクセルが、ミップマップ用のフィルタリング計算に含まれる場合がある。この関数により、所定の入力に基づいて適切に、マトリックスおよびスケール値が設定される。どのマトリックススロットを使用するかを指定しさえすればよい。biasSelやalphaSelパラメータを用いるのは、疑似3次元ルックアップの場合のみである。これらは、通常の2次元タイリングの場合には、(それぞれ)GX_ITB_NONEおよびGX_ITBA_OFFに設定される。なお、テクスチャタイリングは、間接マップおよび通常(直接)マップに同一のテクスチャ座標を利用することができる。しかしながら、通常のテクスチャ座標の所望のスケール値は、タイル定義を含む通常マップの大きさと直接は関係していない。通常、テクスチャ座標のスケールの大きさは、ルックアップされるマップの大きさに設定され、テクスチャ座標が共用される場合には、通常マップの大きさが好ましい。テクスチャタイリングによって、異なるスケールが必要なので、以下の関数を用いることができる。
【0062】
Figure 0004698894
【0063】
GXSetCoordScaleManuallyが呼び出されて、イネーブルがGX_Trueに設定されると、関数が再び呼び出されるまで、所定のテクスチャ座標スケール値が固定される。関数が呼び出されてイネーブルがGX_Falseに設定されると、自動テクスチャ座標スケーリングが、当該テクスチャ座標に対して再び引き継ぐ。テクスチャタイリングでは、所望のテクスチャ座標スケールは、タイルの大きさと間接マップの大きさの積である。その後、GXSetIndTexCoordScaleを用いて、タイルの大きさを分割して、間接マップへのアクセスに使用する。
【0064】
疑似3次元テクスチャルックアップに対応するために、本例では、GXSetTevIndTileを2つの隣接するTEVステージのために呼び出さなければならない。第1のステージは、通常の2次元タイリングの仕様と似ている。第2のステージでは、バイアス選択およびアルファ選択を指定する。バイアスを用いて、タイルスタック方向を選択する。次のタイルがS次元のオフセットである場合は、GX_ITB_Sが用いられ、次のタイルがT次元のオフセットである場合は、GX_ITB_Tが用いられる。その後、バンプアルファを選択して、第1のルックアップからのタイルおよび第2のルックアップからのタイルをブレンドする。なお、本例においては、疑似3次元テクスチャでは8ビットフォーマットを用いることはできない。代わりに、3、4、および5ビットフォーマットを用いることができる。このようなフォーマットは、−128の代わりに+1のバイアス値を用いる。+1バイアスを用いて、第2のステージの「次の」タイルを得る。
【0065】
<互換可能な他の実施例>
上述のシステム構成要素50のうちのあるものは、上述の家庭用ビデオゲームコンソール以外であっても実施できる。たとえば、システム50のために書き込まれているグラフィックスアプリケーションなどのソフトウェアを、システム50をエミュレートするかまたはそれと互換性のある他の構成を用いたプラットフォーム上で実行することができる。他のプラットフォームが、システム50のハードウェアおよびソフトウェア資源の一部または全部をうまくエミュレート、模倣、および/または提供できるのであれば、当該他のプラットフォームは、ソフトウェアをうまく実行することができるであろう。
【0066】
一例として、エミュレータは、システム50のハードウェアおよび/またはソフトウェア構成(プラットフォーム)とは異なるハードウェアおよび/またはソフトウェア構成(プラットフォーム)を提供してもよい。エミュレータシステムは、アプリケーションソフトウェアを書き込む対象であるシステムのハードウェアおよび/またはソフトウェア構成要素の一部またはすべてをエミュレートするハードウェアおよび/またはソフトウェア構成要素を含んでいてもよい。たとえば、エミュレータシステムは、パーソナルコンピュータなどの汎用デジタルコンピュータを備えることができ、これによって、システム50のハードウェアおよび/またはファームウェアを模倣するソフトウェアエミュレータプログラムが実行される。
【0067】
汎用デジタルコンピュータの中には(たとえば、IBMまたはマッキントッシュ製パーソナルコンピュータおよびその互換機)、現在、DirectX3Dやその他の標準グラフィックスコマンドAPIに対応したグラフィックスパイプラインを提供する3Dグラフィックスカードが搭載されているものもある。これらには、また、標準的なサウンドコマンドに基づいて高品質の立体音響を提供する立体音響サウンドカードも搭載されている場合もある。エミュレータソフトウェアを実行させるこのようなマルチメディアハードウェアを搭載したコンピュータは、システム50のグラフィックス性能およびサウンド性能を近似するに充分な性能を有している場合がある。エミュレータソフトウェアは、パーソナルコンピュータプラットフォーム上のハードウェア資源を制御して、ゲームプログラマがゲームソフトウェアを書き込む対象である家庭用ビデオゲームゲームコンソールプラットフォームの処理性能、3Dグラフィックス性能、サウンド性能、周辺性能などを模倣する。
【0068】
図40は、エミュレーション処理全体の例を示しており、この処理は、ホストプラットフォーム1201と、エミュレータ構成要素1303と、記憶媒体62上に与えられているバイナリ画像を実行可能なゲームソフトウェアとを用いる。ホスト1201は、汎用または専用デジタルコンピューティング装置であってもよく、たとえばパーソナルコンピュータやビデオゲームコンソールなど、充分な計算能力を備えたプラットフォームが挙げられる。エミュレータ1303は、ホストプラットフォーム1201上で実行されるソフトウェアおよび/またはハードウェアであってもよく、コマンドやデータなどの記憶媒体62からの情報をリアルタイムで変換して、ホスト1201が処理可能な形式にすることができる。たとえば、エミュレータ1303は、システム50が実行しようとする「ソース」バイナリ画像プログラム命令を記憶媒体62から取り出して、実行可能な形式またはホスト1201によって処理可能な形式に当該プログラム命令を変換する。
【0069】
一例として、IBMのPowerPCなどの特定のプロセッサを用いたプラットフォーム上で実行するためにソフトウェアが書き込まれており、ホスト1201は、異なる(たとえば、インテルの)プロセッサを用いたパーソナルコンピュータである場合、エミュレータ1303は、バイナリ画像プログラム命令の1つまたはシーケンスを記憶媒体1305から取り出して、これらのプログラム命令を、インテルのバイナリ画像プログラム命令に相当するものに変換する。また、エミュレータ1303は、グラフィックス音声プロセッサ114によって処理されるグラフィックスコマンドや音声コマンドを取り出しおよび/または生成し、ハードウェアおよび/またはソフトウェアグラフィックスおよびホスト1201で利用可能な音声処理資源によって処理可能な形式に、これらコマンドを変換する。一例として、エミュレータ1303は、これらのコマンドを、ホスト1201の特定のグラフィックスおよび/またはサウンドハードウェアによって処理可能なコマンドに変換する(たとえば、DirectX、OpenGLおよび/またはサウンドAPIを用いる)。
【0070】
エミュレータ内の特定のグラフィックス対応ハードウェアが間接テクスチャ参照機能や図7から39に示す機能を含まない場合には、エミュレータ設計者は以下のうちいずれかの選択を行う。
・間接テクスチャ参照コマンドを、グラフィックス対応ハードウェアが解釈できる他のグラフィックスAPIコマンドに変換する。
・間接テクスチャ参照をソフトウェア内で実施する。これに応じて、プロセッサの処理速度によっては性能の低下を余儀なくされる可能性がある。または、
・間接テクスチャ参照をコマンドを「スタブ」(すなわち、無視する)して、間接テクスチャ参照を用いた効果を含まないレンダリング済み画像を提供する。
【0071】
図36および39の論理図は、すべてソフトウェア、すべてハードウェア、およびハードウェアとソフトウェアとの組み合わせによって実施可能であるが、好ましい実施例においては、ほとんどの計算を(バンプ部500bを用いて)ハードウェアで行い速度性能や他の利点を得るようにする。それにもかかわらず、他の実施形態においては(たとえば、非常に高速のプロセッサが利用可能な場合)、本記載のすべてのうちのいくらかの処理をソフトウェアで行って、同様なまたは同一の画像結果を得るようにしてもよい。
【0072】
上述のビデオゲームシステムの機能の一部または全部を提供するために用いられるエミュレータ1303には、エミュレータを用いて実行される様々なオプションや画面モードの選択を簡略化または自動化するグラフィックユーザインターフェース(GUI)が与えられてもよい。一例として、そのようなエミュレータ1303は、ソフトウェアが本来対象としていたホストプラットフォームに比較して、拡張された機能をさらに含んでいてもよい。
【0073】
図41は、エミュレータ1303と共に用いられるのに適したエミュレーションホストシステム1201を示す。システム1201は、処理部1203と、システムメモリ1205とを含む。システムバス1207は、システムメモリ1205から処理部1203までを含む様々なシステム構成要素を結合する。システム1207は、メモリバスまたはメモリコントローラ、周辺機器バス、ローカルバスなど、様々なバスアーキテクチャのいずれかを用いたものを含む、数種のバス構成のいずれであってもよい。システムメモリ1207は、読み出し専用メモリ(ROM)1252と、ランダムアクセスメモリ(RAM)1254とを含む。ベーシック入出力システム(BIOS)1256は、パーソナルコンピュータシステム1201内の要素間において情報を転送するのを助ける基本ルーチンを含んでおり、ROM1252に記憶される。システム1201は、様々なドライブや、関連したコンピュータが読み取り可能な媒体をさらに含む。ハードディスクドライブ1209は、(典型的には固定された)磁気ハードディスク1211からの読み出しやそれに対する書き込みを行う。付加的な(選択可能な)磁気ディスクドライブ1213は、着脱可能な「フロッピー」などの磁気ディスク1215からの読み出しやそれに対する書き込みを行う。随意のディスクドライブ1217は、CDROMなどの随意の媒体のような着脱可能な光ディスク1219からの読み出しや、構成によってはそれに対する書き込みも行う。ハードディスクドライブ1209および光ディスクドライブ1217は、それぞれ、ハードディスクドライブインターフェース1221および光ドライブインターフェース1225によって、システムバス1207に接続している。ドライブやそれに関連するコンピュータが読み出し可能な媒体によって、コンピュータが読み出し可能な命令、データ構造、プログラムモジュール、ゲームプログラムなどのパーソナルコンピュータシステム1201のためのデータが不揮発的に記憶される。他の構成においては、コンピュータが読み出し可能な他の種類の媒体が用いられていてもよく、コンピュータによってアクセス可能なデータを記憶できる媒体(たとえば、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)など)であってもよい。
【0074】
エミュレータ1303を含む多くのプログラムモジュールは、ハードディスク1211、着脱可能な磁気ディスク1215、光学ディスク1219、および/またはシステムメモリ1205のROM1252および/またはRAM1254に記憶されてもよい。そのようなプログラムモジュールは、グラフィックスやサウンドAPIを提供するオペレーティングシステム、1つ以上のアプリケーションプログラム、他のプログラムモジュール、プログラムデータ、ゲームデータを含んでもよい。ユーザは、コマンドや情報を、キーボード1227、ポインティングデバイス1229、マイク、ジョイスティック、ゲームコントローラ、衛星アンテナ、スキャナなどの入力装置を通じて、パーソナルコンピュータシステム1201に対して入力する。このような入力装置は、システムバス1207に結合されたシリアルポートインターフェース1231を介して処理部1203に接続されることが可能であるが、パラレルポートや、ゲームポートファイアワイヤーバス、またはユニバーサルシリアルバス(USB)などの他のインターフェースによって接続されてもよい。モニタ1233などの表示装置も、ビデオアダプタ1235などのインターフェースを介して、システムバス1207に接続される。
【0075】
また、システム1201は、インターネットのようなネットワーク1152上での通信を確立するための、モデム1154などのネットワークインターフェース手段を含んでもよい。モデム1154は、内蔵であっても外付けであってもよく、シリアルポートインターフェース1231を介してシステムバス123に接続される。また、ローカルエリアネットワーク1158を介して(または、ワイドエリアネットワーク1152、ダイアルアップなどの他の通信路、または他の通信手段を介してもよい)、システム1201が遠隔コンピューティング装置1150(たとえば、他のシステム1201)と通信できるように、ネットワークインターフェース1156が与えられてもよい。システム1201は、典型的には、プリンタなどの標準周辺機器のような、他の周辺出力装置を含む。
【0076】
一例において、ビデオアダプタ1235は、Microsoft製DirectX7.0などのバージョンのような標準3Dグラフィックスアプリケーションプログラマインターフェースに基づいて出される3Dグラフィックスコマンドに応答して、高速3Dグラフィックスレンダリングを提供するグラフィックスパイプラインチップセットを含んでいてもよい。立体音響スピーカセット1237も、システムバス1207に対して、従来の「サウンドカード」のような音声生成インターフェースを介して接続されている。そのようなインターフェースは、バス1207から与えられたサウンドコマンドに基づいて高品質な立体音響を生成するための支援をハードウェアや組み込みソフトウェアに対して行う。このようなハードウェアの機能によって、システム1201は、記憶媒体62に記憶されたソフトウェアを実行するのに充分なグラフィックスおよび音響の速度性能を提供することができる。
【0077】
本発明は、現時点において最も現実的で最適な実施例と思われるものに関連して説明してきたが、本発明は、開示された実施例に限定されるものではなく、添付の請求項の範囲に含まれる様々な変形例や相当する仕組みを含むことを意図していると解釈されるべきである。
【図面の簡単な説明】
【図1】対話式コンピュータグラフィックスシステムの一例の概略図である。
【図2】図1のコンピュータグラフィックスシステムの例のブロック図である。
【図3】図2に示すグラフィックス&音声プロセッサの例のブロック図である。
【図4】図3に示す3Dグラフィックスプロセッサの例のブロック図である。
【図5】図4のグラフィックス&音声プロセッサの論理フロー図の例である。
【図6】本発明に係る間接テクスチャ処理の論理概要を示すブロック図である。
【図7】通常(非間接)テクスチャルックアップの単純な基本例を示す機能ブロック図である。
【図8】間接テクスチャルックアップの単純な基本例を示す機能ブロック図である。
【図9】本発明に係る間接テクスチャ処理を実施するための物理的な構成例の概要を示すブロック図である。
【図10】テクスチャアドレス(座標/データ)プロセッサ処理の論理概要を示すブロック図である。
【図11】テクスチャリングパイプラインの実施例において、インターリーブされた直接および間接テクスチャ処理の結果である、ピクセル直接座標データおよびピクセル間接テクスチャデータの相関的な経過を示すブロック図群である。
【図12】テクスチャリングパイプラインの実施例において、インターリーブされた直接および間接テクスチャ処理の結果である、ピクセル直接座標データおよびピクセル間接テクスチャデータの相関的な経過を示すブロック図群である。
【図13】テクスチャリングパイプラインの実施例において、インターリーブされた直接および間接テクスチャ処理の結果である、ピクセル直接座標データおよびピクセル間接テクスチャデータの相関的な経過を示すブロック図群である。
【図14】テクスチャリングパイプラインの実施例において、インターリーブされた直接および間接テクスチャ処理の結果である、ピクセル直接座標データおよびピクセル間接テクスチャデータの相関的な経過を示すブロック図群である。
【図15】テクスチャリングパイプラインの実施例において、インターリーブされた直接および間接テクスチャ処理の結果である、ピクセル直接座標データおよびピクセル間接テクスチャデータの相関的な経過を示すブロック図群である。
【図16】テクスチャリングパイプラインの実施例において、インターリーブされた直接および間接テクスチャ処理の結果である、ピクセル直接座標データおよびピクセル間接テクスチャデータの相関的な経過を示すブロック図群である。
【図17】テクスチャリングパイプラインの実施例において、インターリーブされた直接および間接テクスチャ処理の結果である、ピクセル直接座標データおよびピクセル間接テクスチャデータの相関的な経過を示すブロック図群である。
【図18】テクスチャリングパイプラインの実施例において、インターリーブされた直接および間接テクスチャ処理の結果である、ピクセル直接座標データおよびピクセル間接テクスチャデータの相関的な経過を示すブロック図群である。
【図19】テクスチャリングパイプラインの実施例において、インターリーブされた直接および間接テクスチャ処理の結果である、ピクセル直接座標データおよびピクセル間接テクスチャデータの相関的な経過を示すブロック図群である。
【図20】テクスチャリングパイプラインの実施例において、インターリーブされた直接および間接テクスチャ処理の結果である、ピクセル直接座標データおよびピクセル間接テクスチャデータの相関的な経過を示すブロック図群である。
【図21】テクスチャリングパイプラインの実施例において、インターリーブされた直接および間接テクスチャ処理の結果である、ピクセル直接座標データおよびピクセル間接テクスチャデータの相関的な経過を示すブロック図群である。
【図22】本発明に係る間接テクスチャ処理を実施するためのステップ例を示す、フローチャートである。
【図23】本発明に係る、通常(非間接)テクスチャ処理の例を示す機能処理図である。
【図24】本発明に係る、通常(非間接)および間接テクスチャ処理両方の例を示す、機能処理図である。
【図25】図5に示すテクスチャ座標/バンプ処理部の詳細例を示す、ブロック図である。
【図26】図25に示す間接テクスチャルックアップデータ/座標処理ロジック(proc)の詳細例を示すブロック図である。
【図27】図26の処理ロジック回路(proc)によって用いられるテクスチャオフセットマトリックスの例を示す。
【図28】図26の処理ロジック回路(proc)によって用いられるテクスチャオフセットマトリックスの例を示す。
【図29】図26の処理回路内の処理を制御するための制御ロジックレジスタのデータフィールドフォーマット例を示すブロック図である。
【図30】本発明の好ましい実施例に係る、第1のタイリング方法の一般的な機能ブロック図である。
【図31】本発明の好ましい実施例に係る、第2のタイリング方法の一般的な機能ブロック図である。
【図32】図30の第1のタイリング方法のより詳細な機能ブロック図である。
【図33】本発明の第1のタイリング方法の3つの例を示す。
【図34】本発明の第1のタイリング方法の3つの例を示す。
【図35】本発明の第1のタイリング方法の3つの例を示す。
【図36】本発明の第1のタイリング方法の例図である。
【図37】図25の第2のタイリング方法のフローチャートである。
【図38】本発明の第2のタイリング方法の例である。
【図39】本発明の第2のタイリング方法の論理ブロック図の例である。
【図40】他の代替可能な実施例を示す。
【図41】他の代替可能な実施例を示す。[0001]
BACKGROUND OF THE INVENTION
The present invention relates to computer graphics, and more particularly to interactive graphics systems such as home video game platforms. Even more specifically, an improved texture tiling method and apparatus that uses an indirect texture index map to reference a texture tile in a tile definition map and map the texture tile to a rendered primitive. About. The present invention further allows composite (blended) texture tiles to be created from the tile definition map, and the texture tiles can be mapped to primitives in such a way that texture patterns do not appear repeatedly.
[0002]
[Prior art]
Many of us have seen images of imaginary creatures such as dinosaurs, aliens, and animated toys that are very realistic. Such animation is made possible by computer graphics. Using such techniques, computer graphics producers can specify how each object looks and what appearance changes over time. The computer models the object and displays it on a display such as a television or a computer screen. Coloring and shape of each part of the display image is performed properly based on the position and orientation of each object in the scene, the illumination direction for each object, the texture of the surface of each object, and various other factors The computer takes care of many of the tasks that are necessary.
[0003]
Due to the complexity of computer graphics generation, until just a few years ago, the use of computer-generated 3D graphics was almost limited to expensive and specialized flight simulators, high-end graphics workstations, and supercomputers. It was. Although people see images generated by computer systems in movies and high-cost television advertising, they have not been able to touch the computer that generates the graphics. This situation has changed due to the emergence of relatively inexpensive 3D graphics platforms such as Nintendo 64 (registered trademark) and various 3D graphics cards that can be used in personal computers. Now, at home and at work, it is possible to interact with powerful 3D animations and simulations on a relatively inexpensive computer graphics system.
[0004]
The problem once faced by graphics system designers is how to create realistic surface details for rendered objects without using polygons or other geometric primitives. there were. Simulating surface details is possible, for example, by performing shading with inter-vertex interpolation on a myriad of small triangles, but as the desired details become more sophisticated and more complex, Clear modeling with primitives such as triangles increases the burden on the graphics system and is not very realistic. E. Developed by Catmul, F. Bryn and M.C. E. Another technique improved by Newwell is to “map” images to surfaces by digitization or synthesis (“Subdivision Algorithms for Curved Computer Displays”, E. Catmul, PhD thesis, Report UTEC-CSc-74-133, School of Computer Science, University of Utah, Salt Lake City, Utah, December 1994, and “Textures and Reflections of Computer Generated Images”, J. F. Blin and M. E. New Well, CACM, 19 (10), October 1976, pages 452-457). This technique is known as texture mapping (or pattern mapping) and the image is called a texture map (or simply referred to as texture). Alternatively, the texture map may be defined by processing rather than images.
[0005]
Typically, a texture map is defined in a two-dimensional rectangular coordinate space and parameterized using orthogonal texture coordinate pairs, such as (u, v) or (s, t). Individual components within a texture map are often referred to as texels. At each rendered pixel, the selected texel is used to replace or scale one or more key characteristics of the rendered object surface. This process is often referred to as texture mapping or “texturing”.
[0006]
Currently, most 3D graphics rendering systems include a texturing subsystem. The system is for obtaining a texture from memory and mapping the texture to the rendered object surface. The problem facing graphics system designers is how to perform more sophisticated texture related effects such as “texture tiling” in an efficient and convenient way. In texture tiling, texture tile style textures are typically mapped on a tile-by-tile basis to a rendered object surface, such as a two-dimensional surface. The texture tile is defined by the tile shape portion of the texture stored in the texture memory. An array or matrix of different tiles can also be defined in the texture memory. The size and shape of the tile can be chosen to facilitate mapping the tile to the particular surface rendered. Tile sizes vary and may be defined as multiple tiles are required to cover the rendered surface. Once defined, texture tiles are placed at specific locations on the rendered surface to create a textured surface.
[0007]
This tiling effect has been achieved in the past, for example by drawing polygons for each desired tile. However, this method can be expensive in terms of processing overhead and memory usage. Furthermore, a problem arising from prior art tiling techniques is that the tiled surface may have a repeating pattern as seen by the viewer. The reason for the repeated pattern is that the number of different texture tiles available to the programmer when tiling the surface is usually limited. Thus, the same texture tile is used over and over to completely cover the entire large surface such as walls, floors, and ground cover plants. The repeated use of such identical tiles can impair the realism of the rendered scene. This is because, in many cases, the human eye recognizes the repeated texture pattern generated by the tiling process. Another problem facing graphics system designers is how to use indirect texture processing to perform texture tiling. This allows and is hopeful for further improvements despite significant past research related to texture tiling.
[0008]
The present invention solves this problem and provides techniques and mechanisms that can be used to efficiently implement texture tiling in a graphics system. The present invention allows the creation of a more realistic textured surface that reduces the viewer viewing the displayed textured surface from noticing repetitive patterns in the texture. , You can make it disappear at all. Further, according to the present invention, a pseudo three-dimensional texture can be created by blending between texture tiles. Furthermore, according to the present invention, texture tiling can be achieved by performing indirect texture processing in an efficient and effective manner.
[0009]
According to one aspect provided by the present invention, a texture tiling method comprising:
-Generate texture coordinates,
・ Modify the texture coordinates using the indirect tile index map,
Use the modified texture coordinates to select a texture tile from the tile definition map,
A method comprising displaying selected texture tiles;
[0010]
According to another aspect of the present invention, there is provided a pseudo three-dimensional tiling method,
Define a set of texture coordinates directly,
Define a set of indirect texture coordinates,
・ Indirect texture coordinates are used to obtain offset values,
Combining the offset value with at least one direct texture coordinate to generate a first modified texture coordinate;
Obtaining a first texture tile from the tile definition map using a first modified set of texture coordinates;
・ Bias the offset value,
-Correct texture coordinates directly using biased offset values,
Combining the modified offset value with at least one direct texture coordinate to generate a second set of modified texture coordinates;
Using the second modified set of texture coordinates to obtain a second texture tile from the tile definition map;
A method comprising blending a first texture tile and a second texture tile to produce a composite texture tile.
[0011]
DETAILED DESCRIPTION OF THE INVENTION
FIG. 1 shows an example of an interactive 3D computer graphics system 50. The system 50 can be used to play interactive 3D video games with intriguing stereophony. It can also be applied to various other uses.
[0012]
In this example, the system 50 can interactively process digital representations and 3D world models in real time. The system 50 can display all or part of the world from any viewpoint. For example, the system 50 can interactively change the viewpoint in response to real-time input from input devices such as handheld controllers 52a and 52b. Thereby, the game player can see the world viewed from inside or outside the world. The system 50 can be used for applications that do not require real-time 3D interactive display (eg, 2D display generation and / or non-interactive display), but the ability to display high quality 3D images very quickly is It can be used to generate visual dialogues such as high realistic gameplay.
[0013]
In order to play an application such as a video game using the system 50, the user first connects the main unit 54 to a display device such as the user's color television 56 using the cable 58. The main unit 54 generates a video signal and an audio signal for controlling the color television 56. The video signal controls an image displayed on the television screen 59, and the audio signal is reproduced as sound through the stereo speakers 61L and 61R of the television.
[0014]
Further, the user needs to connect the main unit 54 to a power source. This power source may be a conventional AC adapter (not shown) that plugs into an electrical outlet on the wall of the home, and a lower DC voltage signal suitable for powering the home current to the main unit 54. Convert to As another embodiment, a battery can be used.
[0015]
The user may control the main unit 54 using the hand controllers 52a and 52b. For example, the operation unit 60 can be used to specify the direction (up or down, left or right, near or far) in which the character displayed on the television 56 should move within the three-dimensional world. The operation unit 60 also provides input for other uses (for example, menu selection, pointer / cursor control, etc.). The controller 52 can take a variety of forms. In the present example, each illustrated controller 52 includes an operation unit 60 such as a joystick, a push button, and / or a direction switch. The connection of the controller 52 to the main unit 54 may be a cable or may be wireless via electromagnetic waves (for example, radio waves or infrared waves).
[0016]
In order to play an application such as a game, the user selects an appropriate storage medium 62 storing the application such as the video game that he / she wants to play, and inserts the storage medium into the slot 64 in the main unit 54. To do. The storage medium 62 may be, for example, a specifically encoded and / or encrypted optical and / or magnetic disk. The user may operate the power switch 66 to turn on the main unit 54 and start execution of an application such as a video game based on software stored in the storage medium 62. The user may operate the controller 52 to give input to the main unit 54. For example, when the operation unit 60 is operated, an application such as a game may be started. When the other operation unit 60 is moved, the moving character can be moved in a different direction, or the viewpoint of the user in the 3D world can be changed. Based on the specific software stored in the storage medium 62, the various controllers 60 on the controller 52 can perform different functions at different times.
[0017]
<Example of electronic circuit of the entire system>
FIG. 2 shows a block diagram of example components of system 50. The main components include:
A main processor (CPU) 110,
Main memory 112, and
・ Graphics & Audio Processor 114
[0018]
In this example, main processor 110 (eg, enhanced IBM Power PC 750) receives input from handheld controller 108 (and / or other input devices) via graphics & audio processor 114. The main processor 110 interactively responds to user input and executes programs such as video games supplied from the external storage medium 62 via a mass storage access device 106 such as an optical disk drive. As an example, in the case of video game play, the main processor 110 can perform collision detection and moving image processing in addition to various interactive control functions.
[0019]
In this example, the main processor 110 generates 3D graphics commands and audio commands and sends them to the graphics and audio processor 114. The graphics & audio processor 114 processes these commands to generate an intriguing visual image on the display 59, or intriguing stereophonic sound to an appropriate sound generator such as stereo speakers 61R and 61L. Or generate.
[0020]
The video encoder 120 included in the system 50 of the present example receives an image signal from the graphics and audio processor 114 and displays the image signal on a standard display device such as a computer monitor or a home color television 56. To analog and / or digital video signals suitable for The audio codec (compressor / decompressor) 122 included in the system 50 compresses and expands the digitized audio signal, and converts it into a digital or analog audio signal format as necessary. Also good. The audio codec 122 can receive the audio input via the buffer 124 and provide it to the graphics and audio processor 114 for processing (eg, mixing with other audio signals generated by the processor and / or). Received via streaming audio output of mass storage access device 106). The graphics and audio processor 114 of this example can store audio related information in the audio memory 126 that is available for audio tasks. The graphics & audio processor 114 provides the processed audio output signal to the audio codec 112 for decompression or analog signal (eg, via buffer amplifiers 128L and 128R) so that it can be played back by the speakers 61L and 61R. Conversion is performed.
[0021]
Graphics and audio processor 114 can communicate with various additional devices within system 50. For example, the parallel digital bus 130 may be used for communication with the mass storage access device 106 and / or other components. The serial peripheral device bus 132 may be used for communication with devices such as various peripheral devices. Examples of such devices include the following.
A programmable read-only memory and / or real-time clock 134,
A network interface such as modem 136 (such as connecting system 50 to a telecommunications network 138 capable of downloading and uploading program instructions and / or data, such as a digital network such as the Internet; May be)
A flash memory 140;
[0022]
Another external serial bus 142 may be used for communication with devices such as additional expansion memory 144 (eg, a memory card). Connectors may be used to connect buses 130, 132, and 142 to various devices.
[0023]
<Example of graphics and audio processor>
FIG. 3 is a block diagram of an example of the graphics and audio processor 114. As an example, the graphics and audio processor 114 may be a single chip ASIC (application specific IC). In this example, the graphics and audio processor 114 includes:
Processor interface 150,
Memory interface / controller 152,
3D graphics processor 154,
An audio digital signal processor (DSP) 156,
-Voice memory interface 158
・ Audio interface & mixer 160
The peripheral device controller 162, and
A display controller 164;
[0024]
The 3D graphics processor 154 performs graphics processing tasks. The audio digital signal processor 156 performs audio processing tasks. The display controller 164 accesses the image information from the main memory 112, gives it to the video encoder 120, and displays it on the display device 56. Audio interface & mixer 160 interfaces with audio codec 122 and also receives audio from another source (eg, streaming audio from mass storage access device 106, output of audio DSP 156, and audio codec 122. It is also possible to mix (external audio input). The processor interface 150 provides a data and control interface between the main processor 110 and the graphics and audio processor 114.
[0025]
Memory interface 152 provides an interface for data and control between graphics and audio processor 114 and memory 112. In this example, the main processor 110 accesses the main memory 112 via a processor interface 150 and a memory interface 152 that are part of the graphics and audio processor 114. Peripheral controller 162 provides an interface for data and control between graphics and audio processor 114 and the various peripherals described above. The audio memory interface 158 provides an interface with the audio memory 126.
[0026]
<Example of graphics pipeline>
FIG. 4 is a more detailed diagram of an example 3D graphics processor 154. The 3D graphics processor 154 includes a command processor 200 and a 3D graphics pipeline 180, among others. The main processor 110 transmits a data stream (for example, a graphics command stream or a data list) to the command processor 200. The main processor 110 has a two-level cache 115 to minimize memory latency, and also has a write gathering buffer 111 for an uncached data stream for the graphics and audio processor 114. The write gathering buffer 111 collects partial cache lines to form a complete cache line, and sends this data to the graphics & audio processor 114 one cache line at a time so that the bus can be used to the maximum.
[0027]
The command processor 200 receives a display command from the main processor 110, analyzes it, and acquires additional data necessary for processing from the common memory 112. Command processor 200 provides a stream of vertex commands to graphics pipeline 180 for 2D and / or 3D processing and rendering. The graphics pipeline 180 generates an image based on these commands. The generated image information may be transferred to the main memory 112 and made accessible by the display controller / video interface unit 164, thereby displaying the frame buffer output of the pipeline 180 on the display 56.
[0028]
FIG. 5 is a logic flow diagram of the graphics processor 154. The main processor 110 may store the graphics command stream 210, the display list 212, and the vertex array 214 in the main memory 112, and passes a pointer to the command processor 200 via the bus interface 150. The main processor 110 stores graphics commands in one or more graphics first in first out (FIFO) buffers 210 allocated in the main memory 110. The command processor 200 retrieves:
A command stream from the main memory 112 via an on-chip FIFO memory buffer 216 that receives and buffers graphics commands for synchronization / flow control and load balancing;
The display list 212 from the main memory 112 via the on-chip call FIFO memory buffer 218, and
Vertex attributes from the command stream and / or from the vertex array 214 in the main memory 112 via the vertex cache 220.
[0029]
The command processor 200 performs a command processing operation 200a to convert the attribute type to a floating-point format, and passes the resulting complete vertex polygon data to the graphics pipeline 180 for rendering / rasterization. Programmable memory arbitration circuit 130 (see FIG. 4) arbitrates access to main memory 112 that is common among graphics pipeline 180, command processor 200, and display controller / video interface unit 164.
[0030]
As shown in FIG. 4, graphics pipeline 180 may include:
-Conversion unit 1300,
-Setup / rasterizer 400,
-Texture part 500,
-Texture environment unit 600, and
Pixel engine unit 700.
[0031]
The conversion unit 300 performs various processes 300a such as 2D and 3D conversion (see FIG. 5). The conversion unit 300 may include one or more matrix memories 300b that store a matrix used for the conversion process 300a. The conversion unit 300 converts the shape input for each vertex from the object space to the screen space, converts the input texture coordinates, and calculates the projected texture coordinates (300c). The conversion unit 300 may perform polygon clipping / culling (300d). Further, in one embodiment, the lighting calculation for the eight independent lights is performed for each vertex by the lighting processing 300e performed by the conversion unit 300b. The conversion unit 300 can also perform texture coordinate generation (300c) for producing an embossed bump mapping effect and polygon clipping / culling processing (300d).
[0032]
The setup / rasterizer 400 includes a setup unit. The setup unit receives vertex data from the conversion unit 300 and transmits triangle setup information to one or more rasterizers (400b) to perform edge rasterization, texture coordinate rasterization, and color rasterization.
[0033]
A texture unit 500 (which may include an on-chip texture memory (TMEM) 502), performs various tasks related to texturing. The tasks include, for example, the following.
Extract texture 504 from main memory 112,
Texture processing (500a), including, for example, multi-texture processing, post-cache texture extension, texture filtering, embossing, shadows and lighting with projected textures, and BLIT with alpha transparency and depth,
Bump map processing (500b) for calculating a texture coordinate conversion amount for bump mapping, pseudo texture, texture tiling effect, and
Indirect texture processing (500c).
[0034]
6 to 29 show examples of texture processing for performing normal (non-indirect) and indirect texture lookup processing. For a graphics pipeline circuit and a procedure for performing normal and indirect texture lookup processing, see commonly assigned co-pending patent application No. 60 / 226,891, named “Method for Processing Direct and Indirect Textures in Graphics Systems. And device "(attorney docket number 723-849). The entire contents of this application are incorporated by reference.
[0035]
The texture unit 500 outputs the transmitted texture value to the texture environment unit 600 to perform texture environment processing (600a). The texture environment unit 600 blends the polygon and the texture color / alpha / depth and also performs texture fog processing (600b) to achieve a fog effect based on the inverse range. Texture environment 600 provides multiple stages to provide a variety of other intriguing environment-related, for example, based on color / alpha modulation, embossing, detail texturing, texture swapping, clamping, and depth blending. The function can be performed. For further details regarding the texture environment 600, see commonly assigned copending patent application No. 60 / 226,888, named “Recirculating Shade Tree Blender for Graphics Systems” (Attorney Docket No. 723-851). . The contents of this application are incorporated herein.
[0036]
The pixel engine 700 performs depth (z) comparison (700a) and pixel blending (700b). In this example, the pixel engine 700 stores data in an embedded (on-chip) frame buffer memory 702. Graphics pipeline 180 may include one or more embedded DRAM memories 702 and stores the contents of the frame buffer and / or texture information locally. Depending on the currently available rendering mode, the Z comparison 700a ′ can be done early in the graphics pipeline (eg, if no alpha blending is needed, the z comparison can be done early). The pixel engine 700 includes a copy process 700c. This is to periodically write the contents of the on-chip frame buffer to the main memory and allow the display / video interface unit 164 to access. Using this copy process 700c, the contents from the embedded frame buffer 702 to the texture can be copied to the main memory 112, and a dynamic texture synthesis effect can be obtained. Anti-aliasing and other filtering can be done during the copy-out process. The frame buffer output of the graphics pipeline 180 (which is finally stored in the main memory 112) is read by the display / video interface unit 164 for each frame. The display controller / video interface 164 gives digital RGB pixel values and displays them on the display 102.
[0037]
<Outline of texture tiling procedure example>
The present invention provides two different tiling methods, both preferably using indirect texture tile maps. The first method provides an indirect texture tiling method. In the second method, unique texture tiles can be created by blending between multiple tiles to achieve, for example, a pseudo 3D texture effect.
[0038]
FIG. 30 shows the procedure of the indirect texture tiling method of the present invention. According to this first example procedure, texture coordinates are generated from the surface parameters of the rendered object (block 1400). The tile index map is used to obtain a tile selection offset that is used to modify the texture coordinates (block 1402). The modified texture coordinates are then used to select a texture tile from the texture definition map (block 1404). The texture tile may include any type of texture that one desires to use in the tiling process, and may be any suitable pattern or large pattern portion, such as brick, glass, for example. The resulting tile textured image is then displayed (block 1406).
[0039]
FIG. 31 shows a procedure example of the texture blending or pseudo three-dimensional texture method. According to this second example procedure, texture coordinates are also generated from the surface parameters (block 1410). Thereafter, the texture coordinates are used to obtain at least one texture selection offset that is used to modify the texture coordinates (block 1412). Thereafter, a plurality of texture tiles are selected from the tile definition map using the modified texture coordinates (block 1414). The tiles are then blended to form a composite tile texture (block 1416). The resulting composite tile texturing image is then displayed (block 1418).
[0040]
In the following, the above-described both tiling methods of the present invention will be described in more detail separately. Both tiling methods described individually are preferably implemented by using the indirect texture processing system described in the above-mentioned co-pending application. However, according to the present invention, it is also possible to use a suitable processing system incorporating, for example, recirculation, multiple parallel channels, or other processing circuitry.
[0041]
<Indirect texture tiling example (first tiling method)>
FIG. 32 is an example of a more detailed block diagram of the indirect texture tiling method as shown in FIG. According to this method, an indirect tile index map and a tile definition map are defined (blocks 1500 and 1501). The tile definition map holds basic definitions of various tiles. The indirect tile index map identifies a specific position of a specific tile on the surface of the textured object. In order to map tiles onto the object in this way, an indirect texture coordinate pair (S0, T0) is generated (block 1504). In this example, the indirect texture coordinates are based on the scale of the textured surface, not the index map. Thereby, there is an advantage that it is possible to use the texture coordinates in which the direct texture coordinates and the indirect texture coordinates are the same. Thus, the indirect texture coordinates are appropriately scaled to an index map, for example, by dividing the coordinates by each dimension of the tile used (block 1506). The scaled texture coordinates are then used to perform a lookup process in the texture index map to obtain an appropriate tile selection offset of the current texture coordinates (ΔS, ΔT) (block 1508). The tile selection offset is then rescaled to the target texture scale. This is done, for example, by multiplying each dimension of the tile used by an offset (block 1510).
[0042]
A set of direct texture coordinates (S1, T1) is also defined (block 1512). As described above, in this embodiment, the indirect and direct texture coordinates are actually the same. A wrapping process is performed on the direct texture coordinates (block 1514). In this example, the wrapping process is a wrap modulo n, where n is the dimension of the tile used.
[0043]
Having obtained the appropriately scaled tile offset (ΔS, ΔT) and the wrapped texture coordinates (S1, T1), they are combined (block 1516) to produce the modified texture coordinates (S ′, T ′). Arise. The modified texture coordinates (S ′, T ′) are then used for lookup processing in the tile definition map (block 1518). This is done for the purpose of obtaining the desired texture tile for the current texture coordinate. The selected texture tile is then output for display (or for use in further texture processing operations) (block 1520).
[0044]
FIG. 33 shows a first example of the indirect tiling method of the present invention. As shown in FIG. 33, the texture tile index map 1600 identifies a specific tile in the tile definition map 1602 for each tile position on the texture 1604 after processing. In this example, a two-dimensional (2 × 2) tile definition map 1602 is used. Thus, the tile definition map includes four tiles, and in this example, each tile constitutes a different complementary part of the more widely assumed texture pattern. In this example, the size of the processed pattern 1604 is 512 × 512 texels. The indirect tile index map 1600 is a 4 × 4 matrix, and each matrix component identifies one of the four tiles in the tile definition map 1602. The size of each tile in the tile definition map is 128 × 128 texels. Thus, by mapping tiles using each of the 16 indexes in the index map 1600, the processed image 1604 has 16 tiles (512 in a desired configuration as determined by the tile index map). × 512 texels). As can be seen from FIG. 33, the tile pattern 1604 after processing in this example includes a pattern composed of four squares composed of 16 texture tiles.
[0045]
As described above, certain scaling, wrapping, and / or additional processing is performed on the direct and indirect coordinates, as indicated by the bump section (OP) block 1606 of FIG. In this example, the indirect texture is first reduced by dividing the indirect texture coordinates by 128 (the dimension of the tile). This is done to obtain a specific texture coordinate offset, corresponding to a 4 × 4 index matrix 1600. The offset is then expanded by multiplying by 128 (tile dimension). The enlarged offset is then combined with the wrapping result for the texture coordinates. This is done to obtain the modified texture coordinates and use it to obtain the texture from the tile definition map 1602.
[0046]
FIG. 34 shows a second example of the indirect tiling method of the present invention. Reference numerals correspond to similar parts described above. In this example, the tile definition map 1602 is not a two-dimensional map used in the first example of FIG. 33 but a one-dimensional map. As a result, the indirect texture map 1600 uses only a single offset value, not a pair of offset values as in the first example. Thus, depending on how the tile definition map is constructed (vertically or horizontally stacked), either a wrapped S1 or T1 value (with a specific selected offset value) In this example, S1) can be corrected. In this example, the size of the texture tile is 64 × 64 tiles. Therefore, the lapping and scaling parameters used in the bump part 1606 (OP) are 64 instead of 128 as in the first example. It should be noted that any suitable size texture tile can be used depending on the particular application in which the present invention is used. Furthermore, any suitable sized indirect texture map and processed texture can be defined using the present invention.
[0047]
FIG. 35 shows a third example of the indirect tiling method of the present invention. Similarly, reference numerals are used to designate similar parts as described above. In this example, a 2 × 4 tile definition map 1602 composed of eight 18 × 18 texel tiles is used. The indirect tile index map 1600 is the same as the index map of the first example. However, in this example, the processed tile pattern 1604 is created using only 16 × 16 texels of 18 × 18 texel tiles. Thus, as this example shows, any suitable tile size can be used regardless of the size of the tile definition.
[0048]
FIG. 36 is a logic block diagram of the example indirect tiling method described above with respect to FIGS. 32 and 33-35. As can be seen from FIG. 36, in this tiling method, the same initial texture coordinates can be used for the direct coordinates and the indirect coordinates (that is, S1 = S0, T1 = T0). However, other configurations where the coordinates are not identical are possible. For example, indirect texture coordinates that do not need to be scaled to properly accommodate the tile index map may be used. However, when using the same texture coordinates as in this example, the indirect texture coordinates 1700 (S0, T0) are first scaled, as shown in scaling blocks 1702a and 1702b. This is done to match the scale of the indirect texture index map 1600. Thereafter, lookup processing in the tile index map is performed using the appropriately scaled indirect coordinates. This is done to obtain a tile selection offset 1704 (ΔS, ΔT). To tile the desired texture, the coordinate scale is the tile size multiplied by the size of the indirect index map. The tile size is then divided and used to access the indirect map.
[0049]
The tile selection offset is scaled up to the original scale, as indicated by multipliers 1706a and 1706b, to directly correspond to the scale of texture coordinates. Then, as shown in wrapping blocks 1708a and 1708b modulo n, after the direct coordinates are wrapped, the offset can be combined with normal texture coordinates 1701 (S1, T1). The wrapped direct coordinates and scaled offset are then combined by adders 1710a and 1710b. As a result, corrected texture coordinates 1712 (S ″, T ″) are generated. Thereafter, a normal texture lookup in the tile definition map 1602 is performed using the modified texture coordinates, and thereby a tile to be output as a texture to the TEV unit is selected. The logical block diagram of FIG. 36 shows an embodiment in which the offset is given to both S1 and T1, and in this example, a two-dimensional tile definition map can be used. However, other configurations according to the present invention are possible, such as using only a one-dimensional tile index map, as in the example of FIG.
[0050]
<Example of pseudo three-dimensional texture tiling (second tiling method)>
FIG. 37 shows a more detailed block diagram of the second indirect tiling method of the present invention (see FIG. 31), referred to as a pseudo 3D texture. According to this second method, a plurality of indirectly indexed tiles can be blended together to form a composite tile that is mapped to the surface. In other words, in this method, it is possible to extend the tiling mapping to provide a pseudo 3D effect. In this way, all tiles are considered part of the stack. Rather than selecting a single tile from the tile definition map as in the first example, this example selects multiple tiles (in the example below, two adjacent tiles) and blends the tiles. Composite texture tiles can be generated. This approach can be used, for example, to cover large surfaces with discontinuous patterns that blend smoothly with one another. By allowing blending of texture tiles, the programmer is not limited to specific tiles in the tile definition map when covering the surface. Alternatively, by combining new tiles with existing tiles, the number of texture tiles available to cover the surface can be greatly increased without the need for a large texture definition map. By using synthetic tiles, the appearance of repeated texture patterns can be avoided, thereby improving the realism of the image. This method can be used for covering a beach with various layers in appearance, such as fine sand, small pebbles, and large rocks, with a tiled texture. A blending function can be used to give a pseudo three-dimensional appearance to the texture after processing.
[0051]
As shown in FIG. 37, an indirect tile index map is defined to include an index to tiles in the tile definition stack (block 1800). Indirect texture coordinates are defined (block 1802), and texture selection offsets and blending coefficients are obtained (block 1804). Texture tile definitions are defined in the form of a stack (block 1806). If a pseudo three-dimensional effect is desired, in this example, the tiles are preferably defined such that adjacent tiles are well blended together to give a hierarchical effect. This will be better understood from the following description. Of course, as described above, when it is desired to make the indirect coordinates and the direct coordinates the same, the indirect coordinates may be scaled before the indirect lookup processing.
[0052]
Direct coordinates are defined (block 1808) and combined with the offset to generate a first modified texture coordinate (s, t ′) (block 1810). The offset is then modified (biased) in a predetermined manner, such as incrementing by one tile, and then the second modified texture coordinate (s, t ″) (block 1812) is defined. Thereafter, using the first modified texture coordinates (s, t ′), the first texture is looked up in the tile definition stack to obtain a first texture tile (block 1814). Thereafter, using the second modified texture coordinates (s, t ″), the second texture is looked up in the tile definition stack to obtain a second texture tile (block 1816). The first and second texture tiles are then blended to create a composite texture (block 1818). In this example, the blending coefficient used for the blending process is acquired together with the tile selection offset from the tile index map. The composite texture is then output for display (or for use in further texture processing operations) (block 1820).
[0053]
FIG. 38 shows an example of the pseudo 3D texturing method of the present invention. In this example, texture tile index map 1900 includes an index into tile stack 1902 and a blending factor. Specifically, in this example, the tile index map includes an index that includes an integer component and a fractional component. For example, the lower left corner component of the index map 1900 is “4.9”. In this example, the integer component (ie, “4”) provides the layer selection offset and the fractional component (ie, “.9”) provides the blending factor. Thus, the indirect texture coordinates are used to look up the layer selection offset and blending coefficient. The offset is then scaled (if necessary in a particular implementation) and combined directly with the texture coordinates (after being wrapped) using bump block 1904 to produce a first modified set of texture coordinates. . The first modified texture coordinate set is then used for lookup processing in the tile definition stack 1902 to obtain the first texture tile. The bump unit also performs a bias process on the tile selection offset and generates a second modified coordinate by combining the biased offset with the wrapped direct texture coordinates. This bias processing may simply increase the offset by a specific amount, for example, for one tile, and the processed tile is different from the processed tile when no bias is applied. Any other suitable process for offset may be performed. A second tile is then looked up from the tile definition stack 1902 using the second modified set of texture coordinates. The two selected tiles are then blended together using the blending coefficients given by the indirect index tile index map 1900, thereby producing a composite texture tile that is used for the processed texture 1906. In this example, the processed texture 4.9 indicates that layer definition 4 and layer definition 5 have been blended together using a blending factor of 0.9, ie, 4.9 = 0.1 * (Layer 4 definition) + 0 · 9 * (Layer 5 definition). In this example, only one offset is given. Thus, in this example, the tile definition map is treated as a one-dimensional stack, and the offset is used to directly modify the S1 or T1 component of the texture coordinates. Other configurations are possible where the index map provides an offset pair with blending factors. In other embodiments, the blending factor may be constant or otherwise defined in a manner other than by the tile index map 1900. However, by making the blending coefficients programmable in the tile index map, it is possible to easily define other blending coefficients and generate highly diverse composite tiles. In this example, the offset bias coefficient is one tile. Thus, when the first tile is defined, the second tile is defined as the next tile in the stack. Other configurations are possible in which the bias causes the second tile to have a different relationship to the first tile.
[0054]
FIG. 39 shows an example of a logical block diagram of this second tiling method described above in connection with FIGS. As shown in FIG. 39, indirect coordinates (S0, T0) are determined and then scaled appropriately as indicated by scaling blocks 1910a and 1910b. Scaling is done for the same reasons as described above in connection with the first method of the present invention. In this example, the same value is used for the direct and indirect texture coordinates. However, as noted above, other configurations are possible, and depending on the particular implementation, the scaling process may or may not be adjusted. In this example, the scaled indirect coordinates 1908 (S0, T0) are used to perform a look-up process in the indirect texture index map 1900, and an integer 1918a representing a tile selection offset and a decimal (1918b) representing a blending coefficient, To get. Thereafter, as indicated by multiplier 1922, the integer (offset) is rescaled and sent to adder 1916a to be used directly as a texture coordinate modifier. Direct texture coordinates 1912 (S1, T1) are wrapped, as indicated by wrap blocks 1914a and 1914b modulo n. The offset is then combined with the t component of the wrapped coordinates to generate a first modified set of texture coordinates (s, t ′) and is used to look up the look in the tile definition stack 1902 Up is performed and the first texture tile (Tex1) is obtained.
[0055]
Also, a second modified set of texture coordinates is obtained using the tile selection offset given by the integer 1918a. This is done by biasing the offset, as indicated by block 1926. In this example, at the time of bias, 1 is added to the offset before the rescaling of the offset is performed by the multiplier 1922b. The biased offset is then sent to adder 1916b. The biased offset is combined by the adder 1916b directly with the wrapped t component of the texture coordinates to generate a second modified set of texture coordinates (s, t ″). The second modified set of texture coordinates is then used to perform a second lookup in the 1902 tile definition map to obtain a second texture tile (Tex2).
[0056]
Thereafter, the first texture tile (tex1) and the second texture tile (tex2) are sent to the blending block 1920. The fractional component (1918b) obtained from the indirect texture index map 1900 is carried to the blending block 1920 via the multiplexers 1924a and 1924b. Thus, thereafter, the blender has two texture tiles and a proper blending factor. A blending process is then performed and the two texture tiles are combined based on the blending coefficients to generate a composite tile that is output for display (or for use in further texture processing operations).
[0057]
<Example of API indirect texture tiling function command>
As shown in FIGS. 7-10, it is preferred to set up and activate indirect texture lookup processing and indirect texture processing using one or more graphics API functions. The API function for setting indirect texture processing as described above, and parameters for performing indirect texture tiling and pseudo 3D texture tiling may be defined as follows.
[0058]
<GXSetTevIndTile>
This function may be used to perform tiled texturing using indirect textures. Note that a normal texture map only specifies a tile definition. The actual number of texels added to the polygon is a function of the size of the base tile and the size of the indirect map. To set the proper texture coordinate scale, GXSetTexCoordScaleManually must be called. In addition, in order to use the same texture coordinates as the normal TEV stage for the indirect stage, GxSetIndTexScale is used.
[0059]
Figure 0004698894
[0060]
Figure 0004698894
[0061]
The above functions can be used to specify the indirect texture tiling method or the pseudo 3D texture tiling method described above. Note that the tile size and spacing can be individually specified. An example of the reason for using an interval larger than the tile size is to have a boundary for mip mapping. Depending on the height of the mipmap stack, texels outside the tile may be included in the filtering calculation for the mipmap. This function sets the matrix and scale values appropriately based on predetermined inputs. You only need to specify which matrix slot to use. The biasSel and alphaSel parameters are used only in the case of a pseudo three-dimensional lookup. These are set to GX_ITB_NONE and GX_ITBA_OFF (respectively) in the case of normal two-dimensional tiling. Note that texture tiling can use the same texture coordinates for the indirect map and the normal (direct) map. However, the desired scale value of normal texture coordinates is not directly related to the size of the normal map containing the tile definition. Usually, the size of the scale of the texture coordinates is set to the size of the map to be looked up, and when the texture coordinates are shared, the size of the normal map is preferable. Because texture tiling requires different scales, the following function can be used.
[0062]
Figure 0004698894
[0063]
When GXSetCoordScaleManual is called and enable is set to GX_True, the predetermined texture coordinate scale value is fixed until the function is called again. When the function is called and enable is set to GX_False, automatic texture coordinate scaling takes over again for that texture coordinate. For texture tiling, the desired texture coordinate scale is the product of the size of the tile and the size of the indirect map. Then, using GXSetIndTexCoordScale, the tile size is divided and used to access the indirect map.
[0064]
In order to support pseudo 3D texture lookup, in this example GXSetTevIndTile must be called for two adjacent TEV stages. The first stage is similar to the normal two-dimensional tiling specification. In the second stage, bias selection and alpha selection are specified. A bias is used to select the tile stack direction. When the next tile is an S-dimensional offset, GX_ITB_S is used, and when the next tile is a T-dimensional offset, GX_ITB_T is used. A bump alpha is then selected to blend the tile from the first lookup and the tile from the second lookup. In this example, the 8-bit format cannot be used for the pseudo three-dimensional texture. Alternatively, 3, 4, and 5 bit formats can be used. Such a format uses a bias value of +1 instead of -128. Use the +1 bias to get the “next” tile of the second stage.
[0065]
<Other compatible examples>
Some of the system components 50 described above may be implemented other than the home video game console described above. For example, software such as a graphics application written for the system 50 may be run on a platform using other configurations that emulate or are compatible with the system 50. If other platforms can successfully emulate, mimic and / or provide some or all of the hardware and software resources of system 50, the other platforms will be able to successfully execute the software. Let's go.
[0066]
As an example, the emulator may provide a hardware and / or software configuration (platform) that is different from the hardware and / or software configuration (platform) of the system 50. The emulator system may include hardware and / or software components that emulate some or all of the system hardware and / or software components to which application software is written. For example, the emulator system can comprise a general purpose digital computer such as a personal computer, which executes a software emulator program that mimics the hardware and / or firmware of the system 50.
[0067]
Some general-purpose digital computers (eg, IBM or Macintosh personal computers and compatibles) currently have 3D graphics cards that provide a graphics pipeline that supports DirectX3D and other standard graphics command APIs. There are also things. They may also have a stereo sound card that provides high quality stereo sound based on standard sound commands. A computer equipped with such multimedia hardware that runs emulator software may have sufficient performance to approximate the graphics and sound performance of the system 50. The emulator software controls the hardware resources on the personal computer platform and controls the processing performance, 3D graphics performance, sound performance, peripheral performance, etc. of the home video game game console platform to which game programmers write game software. To imitate.
[0068]
FIG. 40 shows an example of the entire emulation process, which uses a host platform 1201, an emulator component 1303, and game software capable of executing a binary image provided on the storage medium 62. The host 1201 may be a general purpose or dedicated digital computing device, such as a platform with sufficient computing power, such as a personal computer or a video game console. The emulator 1303 may be software and / or hardware executed on the host platform 1201 and converts information from the storage medium 62 such as commands and data in real time into a format that can be processed by the host 1201. can do. For example, the emulator 1303 takes the “source” binary image program instructions that the system 50 is to execute from the storage medium 62 and converts the program instructions into an executable format or a format that can be processed by the host 1201.
[0069]
As an example, if the software is written to run on a platform using a specific processor such as IBM PowerPC and the host 1201 is a personal computer using a different (eg, Intel) processor, an emulator 1303 retrieves one or a sequence of binary image program instructions from the storage medium 1305 and converts these program instructions into those corresponding to Intel's binary image program instructions. In addition, the emulator 1303 can extract and / or generate graphics commands and voice commands to be processed by the graphics audio processor 114 and process them using hardware and / or software graphics and audio processing resources available on the host 1201. Convert these commands to the correct format. As an example, emulator 1303 translates these commands into commands that can be processed by specific graphics and / or sound hardware of host 1201 (eg, using DirectX, OpenGL, and / or sound APIs).
[0070]
When the specific graphics-compatible hardware in the emulator does not include the indirect texture reference function or the functions shown in FIGS. 7 to 39, the emulator designer makes one of the following selections.
Convert indirect texture reference commands into other graphics API commands that can be interpreted by graphics-capable hardware.
-Indirect texture reference is implemented in the software. In response to this, there is a possibility that performance may be reduced depending on the processing speed of the processor. Or
• “Stub” the command for indirect texture references (ie, ignore) to provide a rendered image that does not include effects using indirect texture references.
[0071]
The logical diagrams of FIGS. 36 and 39 can be implemented by all software, all hardware, and a combination of hardware and software, but in the preferred embodiment, most calculations are hard (using bump 500b). To gain speed performance and other benefits. Nevertheless, in other embodiments (eg, when a very fast processor is available), some of the processing described herein is performed in software to produce similar or identical image results. You may make it obtain.
[0072]
An emulator 1303 used to provide some or all of the functions of the video game system described above includes a graphical user interface (GUI) that simplifies or automates the selection of various options and screen modes performed using the emulator. ) May be given. As an example, such an emulator 1303 may further include extended functions compared to the host platform that the software was originally intended for.
[0073]
FIG. 41 shows an emulation host system 1201 suitable for use with the emulator 1303. The system 1201 includes a processing unit 1203 and a system memory 1205. A system bus 1207 couples various system components including the system memory 1205 to the processing unit 1203. The system 1207 may be any of several bus configurations, including those using any of a variety of bus architectures, such as a memory bus or memory controller, a peripheral bus, a local bus, and the like. The system memory 1207 includes a read only memory (ROM) 1252 and a random access memory (RAM) 1254. A basic input / output system (BIOS) 1256 includes basic routines that help to transfer information between elements within the personal computer system 1201 and is stored in ROM 1252. System 1201 further includes various drives and associated computer readable media. The hard disk drive 1209 performs reading from and writing to a magnetic hard disk 1211 (typically fixed). An additional (selectable) magnetic disk drive 1213 reads from and writes to a magnetic disk 1215 such as a removable “floppy”. The optional disk drive 1217 reads from or writes to a removable optical disk 1219 such as an optional medium such as a CDROM. The hard disk drive 1209 and the optical disk drive 1217 are connected to the system bus 1207 by a hard disk drive interface 1221 and an optical drive interface 1225, respectively. Data for the personal computer system 1201 such as instructions, data structures, program modules, and game programs that can be read by the computer is stored in a nonvolatile manner by a drive and a computer-readable medium associated therewith. In other configurations, other types of computer readable media may be used, such as media that can store data accessible by the computer (eg, magnetic cassette, flash memory card, digital video disk, Bernoulli cartridge). Random access memory (RAM), read only memory (ROM), etc.).
[0074]
Many program modules including emulator 1303 may be stored in hard disk 1211, removable magnetic disk 1215, optical disk 1219, and / or ROM 1252 and / or RAM 1254 in system memory 1205. Such program modules may include an operating system that provides graphics and sound APIs, one or more application programs, other program modules, program data, and game data. A user inputs commands and information to the personal computer system 1201 through input devices such as a keyboard 1227, a pointing device 1229, a microphone, a joystick, a game controller, a satellite antenna, and a scanner. Such an input device can be connected to the processing unit 1203 via a serial port interface 1231 coupled to the system bus 1207, but can be connected to a parallel port, a game port fire wire bus, or a universal serial bus ( USB) may be used for connection. A display device such as a monitor 1233 is also connected to the system bus 1207 via an interface such as a video adapter 1235.
[0075]
The system 1201 may also include network interface means, such as a modem 1154, for establishing communications over a network 1152, such as the Internet. The modem 1154 may be internal or external and is connected to the system bus 123 via the serial port interface 1231. Also, the local computing device 1150 (e.g., another network device 1150 (e.g., other communication path such as a wide area network 1152, dial-up, or other communication means) via the local area network 1158 may be used by the system 1201. A network interface 1156 may be provided so that it can communicate with the system 1201). System 1201 typically includes other peripheral output devices such as standard peripherals such as printers.
[0076]
In one example, the video adapter 1235 is a graphics spy that provides high-speed 3D graphics rendering in response to 3D graphics commands issued based on a standard 3D graphics application programmer interface, such as a version such as Microsoft DirectX 7.0. It may include a pipeline chipset. The stereo sound speaker set 1237 is also connected to the system bus 1207 via a sound generation interface such as a conventional “sound card”. Such an interface provides support for hardware or embedded software to generate high-quality stereophonic sounds based on sound commands provided from the bus 1207. Such hardware capabilities allow system 1201 to provide sufficient graphics and acoustic speed performance to execute software stored on storage medium 62.
[0077]
Although the present invention has been described in connection with what is presently considered to be the most realistic and optimal embodiments, the present invention is not limited to the disclosed embodiments, and is not limited by the scope of the appended claims. Should be construed as including various modifications and equivalent mechanisms included in the above.
[Brief description of the drawings]
FIG. 1 is a schematic diagram of an example of an interactive computer graphics system.
FIG. 2 is a block diagram of an example of the computer graphics system of FIG.
FIG. 3 is a block diagram of an example of the graphics and audio processor shown in FIG.
4 is a block diagram of an example of the 3D graphics processor shown in FIG.
FIG. 5 is an example of a logic flow diagram for the graphics and audio processor of FIG. 4;
FIG. 6 is a block diagram showing a logical outline of indirect texture processing according to the present invention.
FIG. 7 is a functional block diagram illustrating a simple basic example of normal (non-indirect) texture lookup.
FIG. 8 is a functional block diagram illustrating a simple basic example of indirect texture lookup.
FIG. 9 is a block diagram illustrating an outline of a physical configuration example for performing indirect texture processing according to the present invention.
FIG. 10 is a block diagram showing a logical outline of texture address (coordinate / data) processor processing.
FIG. 11 is a group of block diagrams illustrating the relative course of pixel direct coordinate data and pixel indirect texture data that are the result of interleaved direct and indirect texture processing in an example of a texturing pipeline.
FIG. 12 is a block diagram illustrating the relative course of pixel direct coordinate data and pixel indirect texture data that are the result of interleaved direct and indirect texture processing in an example of a texturing pipeline.
FIG. 13 is a group of block diagrams illustrating the relative course of pixel direct coordinate data and pixel indirect texture data that are the result of interleaved direct and indirect texture processing in an example of a texturing pipeline.
FIG. 14 is a block diagram illustrating the relative course of pixel direct coordinate data and pixel indirect texture data that are the result of interleaved direct and indirect texture processing in an example of a texturing pipeline.
FIG. 15 is a group of block diagrams illustrating the relative course of pixel direct coordinate data and pixel indirect texture data that are the result of interleaved direct and indirect texture processing in an example of a texturing pipeline.
FIG. 16 is a group of block diagrams illustrating the relative course of pixel direct coordinate data and pixel indirect texture data that are the result of interleaved direct and indirect texture processing in an example of a texturing pipeline.
FIG. 17 is a block diagram illustrating the relative course of pixel direct coordinate data and pixel indirect texture data that are the result of interleaved direct and indirect texture processing in an example of a texturing pipeline.
FIG. 18 is a block diagram illustrating the relative course of pixel direct coordinate data and pixel indirect texture data that is the result of interleaved direct and indirect texture processing in an example of a texturing pipeline.
FIG. 19 is a group of block diagrams illustrating the relative course of pixel direct coordinate data and pixel indirect texture data that are the result of interleaved direct and indirect texture processing in an embodiment of a texturing pipeline.
FIG. 20 is a group of block diagrams illustrating the relative course of pixel direct coordinate data and pixel indirect texture data that are the result of interleaved direct and indirect texture processing in an example of a texturing pipeline.
FIG. 21 is a group of block diagrams illustrating the relative course of pixel direct coordinate data and pixel indirect texture data that are the result of interleaved direct and indirect texture processing in an example of a texturing pipeline.
FIG. 22 is a flowchart showing an example of steps for performing indirect texture processing according to the present invention.
FIG. 23 is a functional processing diagram showing an example of normal (non-indirect) texture processing according to the present invention.
FIG. 24 is a functional processing diagram showing an example of both normal (non-indirect) and indirect texture processing according to the present invention.
25 is a block diagram showing a detailed example of a texture coordinate / bump processing unit shown in FIG.
26 is a block diagram illustrating a detailed example of the indirect texture lookup data / coordinate processing logic (proc) shown in FIG. 25. FIG.
FIG. 27 shows an example of a texture offset matrix used by the processing logic circuit (proc) of FIG.
FIG. 28 shows an example of a texture offset matrix used by the processing logic circuit (proc) of FIG.
29 is a block diagram showing an example of a data field format of a control logic register for controlling processing in the processing circuit of FIG. 26. FIG.
FIG. 30 is a general functional block diagram of a first tiling method according to a preferred embodiment of the present invention.
FIG. 31 is a general functional block diagram of a second tiling method according to a preferred embodiment of the present invention.
32 is a more detailed functional block diagram of the first tiling method of FIG. 30. FIG.
FIG. 33 shows three examples of the first tiling method of the present invention.
FIG. 34 shows three examples of the first tiling method of the present invention.
FIG. 35 shows three examples of the first tiling method of the present invention.
FIG. 36 is an example of the first tiling method of the present invention.
37 is a flowchart of the second tiling method of FIG. 25. FIG.
FIG. 38 is an example of a second tiling method of the present invention.
FIG. 39 is an example of a logical block diagram of a second tiling method of the present invention.
FIG. 40 illustrates another alternative embodiment.
FIG. 41 shows another alternative embodiment.

Claims (18)

一次元的または二次元的に配置された複数の同一サイズのテクスチャ要素(以下、テクスチャタイルと称す)を有するテクスチャ画像と、テクスチャ座標と前記テクスチャタイルとの対応関係を定義した間接タイルインデックスマップとを記憶した記憶手段にアクセス可能なグラフィックスシステムにおける制御部によってテクスチャタイリングを行う方法であって、
前記制御部がテクスチャ座標を生成するステップ
前記制御部が、前記間接タイルインデックスマップを用いて、前記テクスチャ座標を修正する修正ステップ
前記制御部が、前記修正されたテクスチャ座標を用いて、前記テクスチャタイルを選択するステップおよび、
前記制御部が、前記選択されたテクスチャタイルを表示するステップを含む、方法。
A texture image having a plurality of identically sized texture elements (hereinafter referred to as texture tiles) arranged one-dimensionally or two-dimensionally, and an indirect tile index map defining a correspondence relationship between texture coordinates and the texture tiles; A method for performing texture tiling by a control unit in a graphics system accessible to storage means storing
The step of the control unit generates texture coordinates,
A correction step in which the control unit corrects the texture coordinates using the indirect tile index map;
Wherein the control unit, by using the corrected texture coordinates, step selecting the texture tile and,
The method comprising the step of the controller displaying the selected texture tile.
前記制御部が、間接テクスチャ座標を用いて前記間接タイルインデックスマップにアクセスするアクセスステップをさらに含む、請求項1に記載の方法。 Wherein the control unit further comprises an access step of accessing the indirect tile index map using the indirect texture coordinates A method according to claim 1. 前記制御部が、前記テクスチャ座標と前記間接テクスチャ座標とで同一の値を用いる、請求項2に記載の方法。 Wherein the control unit, Ru using the same values in the texture coordinates and the indirect texture coordinates A method according to claim 2. 前記アクセスステップにおいて、前記制御部が、前記間接テクスチャ座標を用いる前に、前記間接テクスチャ座標をスケーリングして、前記間接タイルインデックスマップにアクセスする、請求項3に記載の方法。 In the access step, the control section, prior to using the indirect texture coordinates, by scaling the indirect texture coordinates, that access to the indirect tile index map The method of claim 3. 前記間接タイルインデックスマップは、前記テクスチャ座標をこのテクスチャ座標に対応するテクスチャタイル内の座標に変換するためのオフセット値を含み、The indirect tile index map includes an offset value for converting the texture coordinates to coordinates in a texture tile corresponding to the texture coordinates;
前記アクセスステップにおいて、前記制御部が、前記間接テクスチャ座標を用いて前記間接タイルインデックスマップにアクセスすることで、オフセット値を取得し、In the access step, the control unit obtains an offset value by accessing the indirect tile index map using the indirect texture coordinates,
前記修正ステップにおいて、前記制御部が、前記オフセット値を用いて前記テクスチャ座標を修正する、  In the correction step, the control unit corrects the texture coordinates using the offset value.
請求項2乃至4の何れかに記載の方法。  The method according to claim 2.
前記修正ステップにおいて、前記制御部が、前記テクスチャ座標にラップ処理を行い、このラップ処理後の前記テクスチャ座標と前記オフセット値を加算することで、前記テクスチャ座標の修正を行う、In the correction step, the control unit performs wrap processing on the texture coordinates, and corrects the texture coordinates by adding the texture coordinates after the wrap processing and the offset value.
請求項5に記載の方法。  The method of claim 5.
一次元的または二次元的に配置された複数の同一サイズのテクスチャ要素(以下、テクスチャタイルと称す)を有するテクスチャ画像を記憶した記憶手段にアクセス可能なグラフィックスシステムにおける制御部によってテクスチャタイリングを行う方法であって、
前記制御部が、直接テクスチャ座標のセットを定義するステップ
前記制御部が、間接テクスチャ座標のセットを定義するステップ
前記制御部が、前記間接テクスチャ座標を用いて、オフセット値を取得するステップ
前記制御部が、前記オフセット値を少なくとも1つの前記直接テクスチャ座標と組み合わせて、第1の修正されたテクスチャ座標を生成するステップおよび、
前記制御部が、前記第1の修正されたテクスチャ座標のセットを用いて、前記テクスチャ画像から第1のテクスチャタイルを取得するステップを含む、方法。
One-dimensional or two-dimensionally arranged plurality of texture elements of the same size (hereinafter, referred to as texture tile) texture tiling by the control unit in the accessible graphics system in a storage means for storing a texture image having A way to do ,
The controller directly defining a set of texture coordinates;
The controller defining a set of indirect texture coordinates;
The controller obtains an offset value using the indirect texture coordinates;
The controller combines the offset value with at least one of the direct texture coordinates to generate a first modified texture coordinate; and
The method includes the step of the controller obtaining a first texture tile from the texture image using the first modified set of texture coordinates.
前記記憶手段には、前記間接テクスチャ座標と前記オフセット値との対応関係を定義した間接タイルインデックスマップがさらに記憶されており、
前記制御部は前記間接タイルインデックスマップから前記オフセット値を取得る、請求項に記載の方法。
The storage means further stores an indirect tile index map that defines a correspondence relationship between the indirect texture coordinates and the offset value,
Wherein the control unit, you get the offset value from the indirect tile index map The method of claim 7.
前記間接テクスチャ座標は、前記直接テクスチャ座標と同一である、請求項に記載の方法。The method of claim 7 , wherein the indirect texture coordinates are the same as the direct texture coordinates. 前記制御部が、前記オフセット値をバイアスするステップ、
前記制御部が、前記バイアスされたオフセット値を、少なくとも1つの前記直接テクスチャ座標と組み合わせて、第2の修正されたテクスチャ座標のセットを生成するステップ
前記制御部が、前記第2の修正されたテクスチャ座標のセットを用いて、前記テクスチャ画像から第2のテクスチャタイルを取得するステップをさらに含む、請求項に記載の方法。
The controller biasing the offset value ;
The controller combines the biased offset value with at least one of the direct texture coordinates to generate a second modified set of texture coordinates;
Wherein the control unit, using the second set of modified texture coordinates, further comprising the step of acquiring the second texture tiles texture image, The method of claim 7.
前記制御部が、前記第1のテクスチャタイルおよび前記第2のテクスチャタイルをブレンドして、合成テクスチャタイルを生成するステップをさらに含む、請求項10に記載の方法。 Wherein the control unit, the first texture tile and a blend of the second texture tiles, further comprising the step of generating a composite texture tile method according to claim 10. 前記制御部は、前記第1のテクスチャタイルおよび前記第2のテクスチャタイルのブレンド率を決定するブレンディング係数を用いて前記第1のテクスチャタイルおよび前記第2のテクスチャタイルをブレンドする、請求項11に記載の方法。 Wherein the control unit, blending the first texture tile and the second texture tiles using a blending factor that determines the blend ratio of the first texture tile and the second texture tiles to claim 11 The method described. 前記記憶手段には、前記間接テクスチャ座標と前記オフセット値との対応関係を定義した間接タイルインデックスマップがさらに記憶されており、
前記制御部は、前記間接タイルインデックスマップから前記オフセット値を取得するとともに当該間接タイルインデックスマップから前記ブレンディング係数取得する、請求項12に記載の方法。
The storage means further stores an indirect tile index map that defines a correspondence relationship between the indirect texture coordinates and the offset value,
Wherein the control unit obtains the offset value from the indirect tile index map, you also get the blending factor from the indirect tile index map The method of claim 12.
前記テクスチャ画像に含まれる各テクスチャタイルが、複数のレイヤの各レイヤのテクスチャを表している、請求項に記載の方法。The method according to claim 7 , wherein each texture tile included in the texture image represents a texture of each layer of a plurality of layers . 一次元的または二次元的に配置された複数の同一サイズのテクスチャ要素(以下、テクスチャタイルと称す)を有するテクスチャ画像と、テクスチャ座標と前記テクスチャタイルとの対応関係を定義した間接タイルインデックスマップとを記憶した記憶手段にアクセス可能であり、かつテクスチャタイリングを行う装置であって、A texture image having a plurality of texture elements of the same size (hereinafter referred to as texture tiles) arranged one-dimensionally or two-dimensionally, and an indirect tile index map defining a correspondence relationship between texture coordinates and the texture tiles; Is a device that can access the storage means storing the texture and performs texture tiling,
テクスチャ座標を生成する手段、Means for generating texture coordinates,
前記間接タイルインデックスマップを用いて、前記テクスチャ座標を修正する手段、Means for modifying the texture coordinates using the indirect tile index map;
前記修正されたテクスチャ座標を用いて、前記テクスチャタイルを選択する手段、および、Means for selecting the texture tile using the modified texture coordinates; and
前記選択されたテクスチャタイルを表示する手段Means for displaying the selected texture tile
を備えた装置。With a device.
一次元的または二次元的に配置された複数の同一サイズのテクスチャ要素(以下、テクスチャタイルと称す)を有するテクスチャ画像を記憶した記憶手段にアクセス可能であり、かつテクスチャタイリングを行う装置であって、
直接テクスチャ座標のセットを定義する手段
間接テクスチャ座標のセットを定義する手段
前記間接テクスチャ座標を用いて、オフセット値を取得する手段
前記オフセット値を少なくとも1つの前記直接テクスチャ座標と組み合わせて、第1の修正されたテクスチャ座標を生成する手段、および、
前記第1の修正されたテクスチャ座標のセットを用いて、前記テクスチャ画像から第1のテクスチャタイルを取得する手段
を備えた装置。
A device that can access a storage means storing texture images having a plurality of texture elements of the same size (hereinafter referred to as texture tiles) arranged one-dimensionally or two-dimensionally and performs texture tiling. And
Means to directly define a set of texture coordinates ,
A means to define a set of indirect texture coordinates ,
Means for obtaining an offset value using the indirect texture coordinates ;
Means for combining the offset value with at least one of the direct texture coordinates to generate a first modified texture coordinate; and
Means for obtaining a first texture tile from the texture image using the first modified set of texture coordinates
With a device.
一次元的または二次元的に配置された複数の同一サイズのテクスチャ要素(以下、テクスチャタイルと称す)を有するテクスチャ画像と、テクスチャ座標と前記テクスチャタイルとの対応関係を定義した間接タイルインデックスマップとを記憶した記憶手段にアクセス可能なグラフィックスシステムにおけるコンピュータにテクスチャタイリングを行わせるためのプログラムであって、A texture image having a plurality of texture elements of the same size (hereinafter referred to as texture tiles) arranged one-dimensionally or two-dimensionally, and an indirect tile index map defining a correspondence relationship between texture coordinates and the texture tiles; A program for causing a computer in a graphics system accessible to storage means storing the texture tiling,
テクスチャ座標を生成するステップ、  Generating texture coordinates;
前記間接タイルインデックスマップを用いて、前記テクスチャ座標を修正するステップ、  Modifying the texture coordinates using the indirect tile index map;
前記修正されたテクスチャ座標を用いて、前記テクスチャタイルを選択するステップ、および、  Selecting the texture tile using the modified texture coordinates; and
前記選択されたテクスチャタイルを表示するステップ、  Displaying the selected texture tile;
を前記コンピュータに実行させるためのプログラム。  For causing the computer to execute.
一次元的または二次元的に配置された複数の同一サイズのテクスチャ要素(以下、テクスチャタイルと称す)を有するテクスチャ画像を記憶した記憶手段にアクセス可能なグラフィックスシステムにおけるコンピュータにテクスチャタイリングを行わせるためのプログラムであって、
直接テクスチャ座標のセットを定義するステップ
間接テクスチャ座標のセットを定義するステップ
前記間接テクスチャ座標を用いて、オフセット値を取得するステップ
前記オフセット値を少なくとも1つの前記直接テクスチャ座標と組み合わせて、第1の修正されたテクスチャ座標を生成するステップおよび、
前記第1の修正されたテクスチャ座標のセットを用いて、前記テクスチャ画像から第1のテクスチャタイルを取得するステップ、
を前記コンピュータに実行させるためのプログラム。
One-dimensional or two-dimensionally arranged plurality of texture elements of the same size (hereinafter, referred to as texture tiles) perform texture tiling storage means for storing a texture image having the computer in the accessible graphics system A program for
Defining a set of texture coordinates directly,
Defining a set of indirect texture coordinates;
Using the indirect texture coordinates to obtain an offset value;
Combining the offset value with at least one of the direct texture coordinates to generate a first modified texture coordinate; and
Obtaining a first texture tile from the texture image using the first modified set of texture coordinates ;
For causing the computer to execute.
JP2001206703A 2000-08-23 2001-07-06 Method, apparatus and program for texture tiling in a graphics system Expired - Lifetime JP4698894B2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US22703300P 2000-08-23 2000-08-23
US60/227033 2000-08-23

Publications (2)

Publication Number Publication Date
JP2002208026A JP2002208026A (en) 2002-07-26
JP4698894B2 true JP4698894B2 (en) 2011-06-08

Family

ID=27788785

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001206703A Expired - Lifetime JP4698894B2 (en) 2000-08-23 2001-07-06 Method, apparatus and program for texture tiling in a graphics system

Country Status (1)

Country Link
JP (1) JP4698894B2 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5475848B2 (en) * 2012-09-07 2014-04-16 株式会社ディジタルメディアプロフェッショナル A computer graphics circuit and a three-dimensional computer that uses this circuit to generate a two-dimensional pseudo-random texture pattern applied to a three-dimensional object displayed on a two-dimensional display system using a one-dimensional texture image Graphics equipment

Also Published As

Publication number Publication date
JP2002208026A (en) 2002-07-26

Similar Documents

Publication Publication Date Title
US6707458B1 (en) Method and apparatus for texture tiling in a graphics system
JP4790150B2 (en) Shadow mapping in low cost graphics systems
JP4731028B2 (en) Recirculating shade tree blender for graphics systems
US6825851B1 (en) Method and apparatus for environment-mapped bump-mapping in a graphics system
US6700586B1 (en) Low cost graphics with stitching processing hardware support for skeletal animation
US7002591B1 (en) Method and apparatus for interleaved processing of direct and indirect texture coordinates in a graphics system
JP4698893B2 (en) Method, graphics system, and program for providing improved fog effects
US7307640B2 (en) Method and apparatus for efficient generation of texture coordinate displacements for implementing emboss-style bump mapping in a graphics rendering system
US6618048B1 (en) 3D graphics rendering system for performing Z value clamping in near-Z range to maximize scene resolution of visually important Z components
US6664958B1 (en) Z-texturing
JP4719363B2 (en) Graphics system with copy-out conversion between internal frame buffer and main memory
US7061502B1 (en) Method and apparatus for providing logical combination of N alpha operations within a graphics system
JP4975159B2 (en) Colorless lighting in a graphics system, method and program for generating graphics images
JP4683760B2 (en) Graphics system with embedded frame buffer having a reconfigurable pixel format
JP4698894B2 (en) Method, apparatus and program for texture tiling in a graphics system
JP4740476B2 (en) Method and apparatus for providing a logical combination of N alpha operations in a graphics system
JP4740490B2 (en) Clamping Z values in the Z neighborhood to maximize the accuracy of visually important Z components in graphics rendering systems and avoid Z neighborhood clipping

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080627

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100913

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100921

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101117

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: 20110203

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110302

R150 Certificate of patent or registration of utility model

Ref document number: 4698894

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term