(57)【要約】【課題】  グラフィックス処理装置を含むコンピューティング装置、及びグラフィックス処理装置においてグラフィックスパイプラインを実行する方法を提供する。【解決手段】  グラフィックス処理装置、及びグラフィックス処理装置においてグラフィックスパイプラインを実行する方法は、ドローコールに対応するバウンディングボックスのタイルビニング結果を含むビットストリームを生成し、ビットストリームによって割り当てられたバウンディングボックスに対応するドローコールに対する選択的なテッセレーションを行うことにより、タイルをレンダリングする。【選択図】      図７
2017097870.tif 000002
【特許請求の範囲】
【請求項１】
グラフィックス処理装置においてグラフィックスパイプラインを実行する方法であって、
テッセレーティングされる必要があるドローコールに対応するバウンディングボックスのタイルビニング結果を含む第１ビットストリームを生成するビニングパイプラインを実行する段階と、
現在処理される現在タイルにおいて、前記第１ビットストリームによって割り当てられたバウンディングボックスが識別された場合、前記の識別されたバウンディングボックスに対応するドローコールに対する選択的なテッセレーションを行うことにより、前記現在タイルをレンダリングするレンダリングパイプラインを実行する段階と、を含む方法。
【請求項２】
前記第１ビットストリームは、
入力されたドローコールそれぞれに係わるテッセレーションの必要性を示す情報、及び前記テッセレーティングされる必要があるドローコールに対応する前記バウンディングボックスをカバーするタイルリストの情報を含む、請求項１に記載の方法。
【請求項３】
前記ビニングパイプラインを実行する段階は、
入力されたドローコールそれぞれの可視性を示す情報を含む第２ビットストリーム、及び前記入力されたドローコールそれぞれに含まれるプリミティブの可視性を示す情報を含む第３ビットストリームを生成する段階をさらに含む、請求項１に記載の方法。
【請求項４】
前記ビニングパイプラインを実行する段階は、
入力されたドローコールのうち、前記テッセレーションが必要な第１タイプのドローコール、及び前記テッセレーションが不要な第２タイプのドローコールを判別する段階と、
前記第１タイプのドローコールに対応するバウンディングボックスをカバーするタイルリストを識別するためのタイルビニングを行う段階と、
前記第１タイプのドローコールを示す識別情報、前記第２タイプのドローコールを示す識別情報、及び前記タイルリストの情報を含む前記第１ビットストリームを生成する段階と、を含む、請求項１に記載の方法。
【請求項５】
前記グラフィックスパイプラインは、
前記レンダリングパイプラインでのみ前記テッセレーションを行うディファードテッセレーションを行う、請求項１ないし４のうちいずれか１項に記載の方法。
【請求項６】
前記レンダリングパイプラインは、
前記第１ビットストリームを利用して、前記テッセレーションが必要な第１タイプのドローコール、及び前記テッセレーションが不要な第２タイプのドローコールに対して互いに異なるレンダリング方式で、前記現在タイルをレンダリングする、請求項１に記載の方法。
【請求項７】
前記第１タイプのドローコールは、
テッセレーションステージを含む第１サブレンダリングパイプラインによって処理され、
前記第２タイプのドローコールは、
テッセレーションステージを含まない第２サブレンダリングパイプラインによって処理される、請求項６に記載の方法。
【請求項８】
前記第１サブレンダリングパイプラインは、
前記現在タイルで処理される前記第１タイプのドローコールに対する前記テッセレーションが以前タイルで行われていない場合、前記現在タイルで処理される前記第１タイプのドローコールに対して、前記テッセレーションを行い、
前記現在タイルで処理される前記第１タイプのドローコールに対するテッセレーティングされたプリミティブが以前タイルですでに生成されている場合、前記現在タイルで処理されるドローコールに対する前記テッセレーションをスキップする、請求項７に記載の方法。
【請求項９】
前記レンダリングパイプラインを実行する段階は、
前記第１ビットストリームに含まれる前記タイルビニング結果に基づいて、前記バウンディングボックスをカバーするタイルに対して、高い優先順位が割り当てられるように、タイルのレンダリング順序をスケジューリングする段階をさらに含み、
前記レンダリングパイプラインは、
前記のスケジューリングされたタイルのレンダリング順序によって、タイル単位で前記レンダリングを行う、請求項１ないし８のうちいずれか１項に記載の方法。
【請求項１０】
前記レンダリングパイプラインが実行される間、前記第１タイプのドローコールに対するテッセレーティングされたプリミティブが、他のタイルで利用されない場合、メモリから前記テッセレーティングされたプリミティブと係わるデータを削除する段階をさらに含む、請求項６ないし８のうちいずれか１項に記載の方法。
【請求項１１】
請求項１ないし１０のうちいずれか１項に記載の方法をコンピュータに実行させるためのプログラム。
【請求項１２】
グラフィックスパイプラインを実行するコンピューティング装置であって、
テッセレーティングされる必要があるドローコールに対応するバウンディングボックスのタイルビニング結果を含む第１ビットストリームを生成するビニングパイプライン、及び現在処理される現在タイルにおいて、前記第１ビットストリームによって割り当てられたバウンディングボックスが識別された場合、前記の識別されたバウンディングボックスに対応するドローコールに対する選択的なテッセレーションを行うことにより、前記現在タイルをレンダリングするレンダリングパイプラインを実行するグラフィックス処理装置と、
前記ビニングパイプラインで生成された前記第１ビットストリームを保存し、前記の保存された第１ビットストリームを前記レンダリングパイプラインに提供するメモリと、を含むコンピューティング装置。
【請求項１３】
前記第１ビットストリームは、
入力されたドローコールそれぞれに係わるテッセレーションの必要性を示す情報、及び前記テッセレーティングされる必要があるドローコールに対応する前記バウンディングボックスをカバーするタイルリストの情報を含む、請求項１２に記載のコンピューティング装置。
【請求項１４】
前記グラフィックス処理装置は、
前記ビニングパイプラインが実行される間、入力されたドローコールそれぞれの可視性を示す情報を含む第２ビットストリーム、及び前記入力されたドローコールそれぞれに含まれるプリミティブの可視性を示す情報を含む第３ビットストリームを生成する、請求項１２に記載のコンピューティング装置。
【請求項１５】
前記グラフィックス処理装置は、
前記ビニングパイプラインが実行される間、入力されたドローコールのうち、前記テッセレーションが必要な第１タイプのドローコール、及び前記テッセレーションが不要な第２タイプのドローコールを判別し、前記第１タイプのドローコールに対応するバウンディングボックスをカバーするタイルリストを識別するためのタイルビニングを行い、前記第１タイプのドローコールを示す識別情報、前記第２タイプのドローコールを示す識別情報、及び前記タイルリストの情報を含む前記第１ビットストリームを生成する、請求項１２に記載のコンピューティング装置。
【請求項１６】
前記グラフィックス処理装置は、
ディファードテッセレーションに基づいた前記グラフィックスパイプラインを実行する、請求項１２ないし１５のうちいずれか１項に記載のコンピューティング装置。
【請求項１７】
前記グラフィックス処理装置は、
前記レンダリングパイプラインが実行される間、前記第１ビットストリームを利用して、前記テッセレーションが必要な第１タイプのドローコール、及び前記テッセレーションが不要な第２タイプのドローコールに対して互いに異なるレンダリング方式で、前記現在タイルをレンダリングする、請求項１２に記載のコンピューティング装置。
【請求項１８】
前記第１タイプのドローコールは、
テッセレーションステージを含む第１サブレンダリングパイプラインによって処理され、
前記第２タイプのドローコールは、
テッセレーションステージを含まない第２サブレンダリングパイプラインによって処理される、請求項１７に記載のコンピューティング装置。
【請求項１９】
前記グラフィックス処理装置は、
前記レンダリングパイプラインが実行される間、前記第１ビットストリームに含まれる前記タイルビニング結果に基づいて、前記バウンディングボックスをカバーするタイルに対して、高い優先順位が割り当てられるように、タイルのレンダリング順序をスケジューリングし、前記のスケジューリングされたタイルのレンダリング順序によって、タイル単位で前記レンダリングを行う、請求項１２ないし１８のうちいずれか１項に記載のコンピューティング装置。
【請求項２０】
前記メモリは、
前記レンダリングパイプラインが実行される間、前記第１タイプのドローコールに対するテッセレーティングされたプリミティブが、他のタイルで利用されない場合、前記テッセレーティングされたプリミティブと係わるデータを削除する、請求項１７または１８に記載のコンピューティング装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、グラフィックス処理装置を含むコンピューティング装置、及びグラフィックス処理装置においてグラフィックスパイプラインを実行する方法に関する。
【背景技術】
【０００２】
ＧＰＵ（graphics  processing  unit）のようなグラフィックス処理装置は、コンピューティング装置において、グラフィックスデータをレンダリングする役割を担う。一般的に、グラフィックス処理装置は、二次元オブジェクトまたは三次元オブジェクトに該当するグラフィックスデータを二次元ピクセル表現に変換し、表示のためのフレームを生成する。コンピューティング装置の種類としては、ＰＣ（personal  computer）、ノート型ＰＣ、ビデオゲーム用コンソールだけではなく、スマートフォン、タブレットデバイス、ウェアラブルデバイスのようなエンベデッド（embedded）デバイスも含まれる。スマートフォン、タブレットデバイス、ウェアラブルデバイスのようなエンベデッドデバイスは、比較的低い演算処理能力、及び多くの電力消費の問題によって、十分なメモリ空間及び処理能力を確保しているＰＣ、ノート型ＰＣ、ビデオゲーム用コンソールのようなワークステーションと同一のグラフィックス処理性能を有し難い。しかし、最近、全世界的にスマートフォンまたはタブレットデバイスのような携帯デバイスが広く普及されるにつれて、ユーザは、スマートフォンまたはタブレットデバイスを介して、ゲームをプレイしたり、映画、ドラマなどのコンテンツを鑑賞したりする頻度が急増している。これにより、グラフィックス処理装置の製造業者は、ユーザの需要に歩調を合わせ、エンベデッドデバイスにおいても、グラフィックス処理装置の性能及び処理効率を高めるための多くの研究を進めている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明が解決しようとする課題は、グラフィックス処理装置を含むコンピューティング装置、及びグラフィックス処理装置においてグラフィックスパイプラインを実行する方法を提供することである。本実施形態が関係する技術的課題は、前述のような技術的課題に限定されるものではなく、以下の実施形態から、他の技術的課題が類推される。
【課題を解決するための手段】
【０００４】
一側面によれば、グラフィックス処理装置においてグラフィックスパイプラインを実行する方法は、テッセレーティングされる必要があるドローコールに対応するバウンディングボックスのタイルビニング結果を含む第１ビットストリームを生成するビニングパイプラインを実行する段階と、現在処理される現在タイルにおいて、前記第１ビットストリームによって割り当てられたバウンディングボックスが識別された場合、前記の識別されたバウンディングボックスに対応するドローコールに対する選択的なテッセレーションを実行することにより、前記現在タイルをレンダリングするレンダリングパイプラインを実行する段階と、を含む。
【０００５】
また、前記第１ビットストリームは、入力されたドローコールそれぞれに係わるテッセレーションの必要性を示す情報、及び前記テッセレーティングされる必要があるドローコールに対応する前記バウンディングボックスをカバーするタイルリストの情報を含む。
【０００６】
また、前記ビニングパイプラインを実行する段階は、入力されたドローコールそれぞれの可視性を示す情報を含む第２ビットストリーム、及び前記入力されたドローコールそれぞれに含まれるプリミティブの可視性を示す情報を含む第３ビットストリームを生成する段階をさらに含む。
【０００７】
また、前記ビニングパイプラインを実行する段階は、入力されたドローコールのうち、前記テッセレーションが必要な第１タイプのドローコール、及び前記テッセレーションが不要な第２タイプのドローコールを判別する段階と、前記第１タイプのドローコールに対応するバウンディングボックスをカバーするタイルリストを識別するためのタイルビニングを行う段階と、前記第１タイプのドローコールを示す識別情報、前記第２タイプのドローコールを示す識別情報、及び前記タイルリストの情報を含む前記第１ビットストリームを生成する段階と、を含む。
【０００８】
また、前記グラフィックスパイプラインは、前記レンダリングパイプラインでのみ前記テッセレーションを行うディファードテッセレーション（deferred  tessellation）を実行する。
【０００９】
また、前記レンダリングパイプラインは、前記第１ビットストリームを利用して、前記テッセレーションが必要な第１タイプのドローコール、及び前記テッセレーションが不要な第２タイプのドローコールに対して、互いに異なるレンダリング方式で、前記現在タイルをレンダリングする。
【００１０】
また、前記第１タイプのドローコールは、テッセレーションステージを含む第１サブレンダリングパイプラインによって処理され、前記第２タイプのドローコールは、テッセレーションステージを含まない第２サブレンダリングパイプラインによって処理される。
【００１１】
また、前記第１サブレンダリングパイプラインは、前記現在タイルで処理される前記第１タイプのドローコールに対する前記テッセレーションが、以前タイルで行われていない場合、前記現在タイルで処理される前記第１タイプのドローコールに対して、前記テッセレーションを行い、前記現在タイルで処理される前記第１タイプのドローコールに対するテッセレーティングされたプリミティブ（tessellated  primitives）が、以前タイルですでに生成されている場合、前記現在タイルで処理されるドローコールに対する前記テッセレーションをスキップする。
【００１２】
また、前記レンダリングパイプラインを実行する段階は、前記第１ビットストリームに含まれる前記タイルビニング結果に基づいて、前記バウンディングボックスをカバーするタイルに対して、高い優先順位が割り当てられるように、タイルのレンダリング順序をスケジューリングする段階をさらに含み、前記レンダリングパイプラインは、前記のスケジューリングされたタイルのレンダリング順序によって、タイル単位で前記レンダリングを行う。
【００１３】
また、前記レンダリングパイプラインが実行される間、前記第１タイプのドローコールに対するテッセレーティングされたプリミティブが、他のタイルで利用されない場合、メモリから前記テッセレーティングされたプリミティブと係わるデータを削除する段階をさらに含む。
【００１４】
他の側面によれば、前記方法をコンピュータに実行させるためのプログラムを提供する。
【００１５】
さらに他の側面によれば、前記プログラムを記録したコンピュータで読み取り可能な記録媒体を提供する。
【００１６】
さらに他の側面によれば、グラフィックスパイプラインを実行するコンピューティング装置は、テッセレーティングされる必要があるドローコールに対応するバウンディングボックスのタイルビニング結果を含む第１ビットストリームを生成するビニングパイプライン、及び現在処理される現在タイルにおいて、前記第１ビットストリームによって割り当てられたバウンディングボックスが識別された場合、前記の識別されたバウンディングボックスに対応するドローコールに対する選択的なテッセレーションを行うことにより、前記現在タイルをレンダリングするレンダリングパイプラインを実行するグラフィックス処理装置と、前記ビニングパイプラインで生成された前記第１ビットストリームを保存し、前記の保存された第１ビットストリームを前記レンダリングパイプラインに提供するメモリと、を含む。
【００１７】
また、前記第１ビットストリームは、入力されたドローコールそれぞれに係わるテッセレーションの必要性を示す情報、及び前記テッセレーティングされる必要があるドローコールに対応する前記バウンディングボックスをカバーするタイルリストの情報を含む。
【００１８】
また、前記グラフィックス処理装置は、前記ビニングパイプラインが実行される間、入力されたドローコールそれぞれの可視性を示す情報を含む第２ビットストリーム、及び前記入力されたドローコールそれぞれに含まれるプリミティブの可視性を示す情報を含む第３ビットストリームを生成する。
【００１９】
また、前記グラフィックス処理装置は、前記ビニングパイプラインが実行される間、入力されたドローコールのうち、前記テッセレーションが必要な第１タイプのドローコール、及び前記テッセレーションが不要な第２タイプのドローコールを判別し、前記第１タイプのドローコールに対応するバウンディングボックスをカバーするタイルリストを識別するためのタイルビニングを行い、前記第１タイプのドローコールを示す識別情報、前記第２タイプのドローコールを示す識別情報、及び前記タイルリストの情報を含む前記第１ビットストリームを生成する。
【００２０】
また、前記グラフィックス処理装置は、ディファードテッセレーションに基づいた前記グラフィックスパイプラインを実行する。
【００２１】
また、前記グラフィックス処理装置は、前記レンダリングパイプラインが実行される間、前記第１ビットストリームを利用して、前記テッセレーションが必要な第１タイプのドローコール、及び前記テッセレーションが不要な第２タイプのドローコールに対して互いに異なるレンダリング方式で、前記現在タイルをレンダリングする。
【００２２】
また、前記第１タイプのドローコールは、テッセレーションステージを含む第１サブレンダリングパイプラインによって処理され、前記第２タイプのドローコールは、テッセレーションステージを含まない第２サブレンダリングパイプラインによって処理される。
【００２３】
また、前記グラフィックス処理装置は、前記レンダリングパイプラインが実行される間、前記第１ビットストリームに含まれる前記タイルビニング結果に基づいて、前記バウンディングボックスをカバーするタイルに対して、高い優先順位が割り当てられるように、タイルのレンダリング順序をスケジューリングし、前記のスケジューリングされたタイルのレンダリング順序によって、タイル単位で前記レンダリングを行う。
【００２４】
また、前記メモリは、前記レンダリングパイプラインが実行される間、前記第１タイプのドローコールに対するテッセレーティングされたプリミティブが、他のタイルで利用されない場合、前記テッセレーティングされたプリミティブと係わるデータを削除する。
【図面の簡単な説明】
【００２５】
【図１】一実施形態によるコンピューティング装置について説明するための図面である。
【図２】タイルベースレンダリング（ＴＢＲ）について説明するための図面である。
【図３】テッセレーションパイプラインについて説明するための図面である。
【図４】テッセレーションパイプラインについて説明するための図面である。
【図５】テッセレーションパイプラインについて説明するための図面である。
【図６】一実施形態による、図１のＧＰＵの詳細なハードウェア構造を図示したブロック図である。
【図７】一実施形態によるグラフィックスパイプラインについて説明するための図面である。
【図８】一実施形態によるビニングパイプラインについて説明するための図面である。
【図９】一実施形態によるバウンディングボックスビットストリームを生成する方法のフローチャートである。
【図１０】一実施形態による、２×２タイルによってカバーされるドローコールの例を図示した図面である。
【図１１】一実施形態による、バウンディングボックスの空間と、テッセレーティングされたプリミティブで構成された空間との包含関係について説明するための図面である。
【図１２】一実施形態によって、バウンディングボックスビットストリームを生成することについて説明するための図面である。
【図１３】一実施形態による多種の可視性ビットストリームについて説明するための図面である。
【図１４】一実施形態によるレンダリングパイプラインについて説明するための図面である。
【図１５】一実施形態による、レンダリングパイプラインを実行する方法の詳細なフローチャートである。
【図１６】一実施形態による、コンピューティング装置の詳細なハードウェア構成を図示したブロック図である。
【図１７】一実施形態による、グラフィックスパイプラインを実行する方法のフローチャートである。
【発明を実施するための形態】
【００２６】
本実施形態で使用される用語として、本実施形態での機能を考慮しながら、可能な限り現在広く使用されている一般的な用語を選択したが、それは、当業者の意図または判例、新たな技術の出現などによって異なりもする。また、特定の場合は、任意に選定された用語もあり、その場合、当該実施形態の説明部分で詳細にその意味を記載する。従って、本実施形態で使用される用語は、単純な用語の名称ではない、その用語が有する意味と、本実施形態の全般にわたる内容とを基に定義されなければならない。
【００２７】
実施形態に係わる説明において、ある部分が他の部分と接続されているとするとき、それは、直接的に接続されている場合だけではなく、その中間に、他の構成要素を挟んで電気的に接続されている場合も含む。また、ある部分がある構成要素を含むとするとき、それは、特に反対の記載がない限り、他の構成要素を除くものではなく、他の構成要素をさらに含んでもよいことを意味する。また、実施形態に記載された「・・・部」、「・・・モジュール」という用語は、少なくとも１つの機能や動作を処理する単位を意味し、それは、ハードウェアまたはソフトウェアによって具現化されるか、あるいはハードウェアとソフトウェアとの組み合わせによっても具現化される。
【００２８】
本実施形態で使用される「構成される」または「含む」というような用語は、明細書に記載された多くの構成要素、またはさまざまな段階のいずれも必ず含むものであると解釈されるべきではなく、そのうち一部の構成要素または一部の段階は、含まれないこともあり、またはさらなる構成要素または段階をさらに含んでもよいと解釈されなければならない。
【００２９】
下記実施形態に係わる説明は、権利範囲を限定するものであると解釈されてはならず、当該技術分野の当業者が容易に類推することができることは、実施形態の権利範囲に属するものであると解釈されなければならない。以下、添付された図面を参照しながら、例示のために過ぎない実施形態について詳細に説明する。
【００３０】
図１は、一実施形態によるコンピューティング装置について説明するための図面である。
【００３１】
図１を参照すると、コンピューティング装置１は、ＧＰＵ１０、ＣＰＵ（central  processing  unit）２０、メモリ３０及びバス４０を含む。図１に図示されたコンピューティング装置１には、実施形態と係わる構成要素だけが図示されている。従って、図１に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいことは、当該技術分野の当業者であるならば、理解することができるであろう。
【００３２】
コンピューティング装置１の例として、デスクトップコンピュータ、ノート型ＰＣ、スマートフォン、ＰＤＡ（personal  digital  assistant）、携帯型メディアプレイヤ、ビデオゲーム用コンソール、テレビセットトップボックス、タブレットデバイス、電子書籍リーダ、ウェアラブルデバイスなどを挙げることができるが、それらに限定されるものではない。すなわち、コンピューティング装置１は、コンテンツの表示のためのグラフィックス処理機能を有する装置であり、コンピューティング装置１の範疇には、多様な装置が含まれてよい。
【００３３】
ＣＰＵ２０は、コンピューティング装置１の全般的な動作及び機能を制御するハードウェアである。例えば、ＣＰＵ２０は、オペレーティングシステム（ＯＳ：operating  system）を駆動し、ＧＰＵ１０のためのグラフィックスＡＰＩ（application  programming  interface）を呼び出し、ＧＰＵ１０のドライバを実行することができる。また、ＣＰＵ２０は、メモリ３０に保存された多様なアプリケーション、例えば、ウェブブラウジングアプリケーション、ゲームアプリケーション、ビデオアプリケーションなどを実行することができる。
【００３４】
ＧＰＵ１０は、OpenＧＬ（登録商標）（open  graphic(s)  library）、DirectＸ（登録商標）、ＣＵＤＡ（compute  unified  device  architecture）のような多様なバージョン、種類のグラフィックスパイプライン（graphics  pipeline）１００を実行するグラフィックス専用プロセッサとして、三次元イメージ上の三次元オブジェクトを、表示用の二次元イメージにレンダリングするために三次元グラフィックスパイプラインを実行するように具現化されたハードウェアでもある。例えば、ＧＰＵ１０は、シェーディング、ブレンディング、イルミネーティングのような多様な機能、及び表示されるピクセルに対するピクセル値を生成するための多様な機能を実行することもできる。
【００３５】
ＧＰＵ１０は、タイルベース（tile-based）グラフィックスパイプラインまたはタイルベースレンダリング（ＴＢＲ：tile-based  rendering）を行うことができる。タイルベースという用語は、動画の各フレームを複数のタイルに分割した（dividingまたはpartitioning）後、タイル単位でレンダリングを行うことを意味する。タイルベースのアーキテクチャは、ピクセル単位でフレームを処理するときよりも演算量が少なくなるため、スマートフォン、タブレットデバイスのように、比較的処理性能が低いモバイルデバイス（または、エンベデッドデバイス）で使用するグラフィックスレンダリング方法でもある。
【００３６】
図１を参照すると、ＧＰＵ１０は、ビニングパイプライン（binning  pipeline）１０１及びレンダリングパイプライン（rendering  pipeline）１０２を含むグラフィックスパイプライン１００を実行することができる。ビニングパイプライン１０１は、二次元オブジェクトまたは三次元オブジェクトを構成する頂点、プリミティブまたはパッチが、いずれのタイルに含まれるかを示すタイルリストを生成するプロセスである。かような理由によって、ビニングパイプライン１０１は、タイリングパイプライン（tiling  pipeline）、ビニングフェーズ（binning  phase）の用語のような他の用語で代替されることもある。レンダリングパイプライン１０２は、ビニングパイプライン１０１で生成されたタイルリストに基づいて、タイル単位で（per  tile）、オブジェクトをレンダリングするプロセスである。レンダリングパイプライン１０２が完了すれば、二次元表示画面上に表示される二次元オブジェクトまたは三次元オブジェクトのピクセル表現が決定される。レンダリングパイプライン１０２は、レンダリングフェーズ（rendering  phase）の用語のように、他の用語で代替されることもある。
【００３７】
Microsoft（登録商標）社のDirectＸ（登録商標）１１（ＤＸ１１）  ＡＰＩ、OpenＧＬ（登録商標）  ４．０  ＡＰＩなどを含む特定のグラフィックスパイプラインは、グラフィックスプリミティブ（または、グラフィックスパッチ）のテッセレーションのためのさらなる処理ステージ（テッセレーションステージ）を含む。テッセレーションは、グラフィックスパッチを、さらに小さいグラフィックスプリミティブに分割し、さらに微細なディテールを有するイメージの表示を可能にするプロセスである。コンピューティング装置１のＧＰＵ１０で駆動されるグラフィックスパイプライン１００は、かようなテッセレーションを支援することができる。一方、本明細書において、以下で説明される実施形態は、ＧＰＵ１０によって駆動される。
【００３８】
メモリ３０は、コンピューティング装置１内で処理される各種データを保存するハードウェアであり、例えば、メモリ３０は、ＧＰＵ１０及びＣＰＵ２０で処理されたデータ、及び処理されるデータを保存することができる。また、メモリ３０は、ＧＰＵ１０及びＣＰＵ２０によって駆動されるアプリケーション、ドライバなどを保存することができる。メモリ３０は、ＤＲＡＭ（dynamic  random  access  memory）、ＳＲＡＭ（static  random  access  memory）のようなＲＡＭ（random  access  memory）、ＲＯＭ（read  only  memory）、ＥＥＰＲＯＭ（electrically  erasable  and  programmable  read  only  memory）、ＣＤ（compact  disc）−ＲＯＭ、ブルーレイ（登録商標）（Blu-ray）ディスクまたは他の光ディスクストレージ、ＨＤＤ（hard  disk  drive）、ＳＳＤ（solid  state  drive）、またはフラッシュメモリを含み、さらに、コンピューティング装置１によりアクセス可能な外部の他のストレージデバイスを含んでもよい。
【００３９】
バス４０は、コンピューティング装置１内のハードウェア間でデータを送受信することができるように、ハードウェアを接続させるハードウェアであり、バス４０は、例えば、ＰＣＩバス、ＰＣＩエクスプレスバスのような多種のバスを含んでよい。
【００４０】
図２は、タイルベースレンダリング（ＴＢＲ）について説明するための図面である。図２を参照すると、自動車オブジェクト２２０は、ある動画でのある１フレームに該当すると仮定する。図１のＧＰＵ１０は、三次元自動車オブジェクト２２０が含まれる１フレームを、Ｎ×Ｍ（Ｎ、Ｍは、自然数）タイル２１０に分割する。ここで、三次元自動車オブジェクト２２０が含まれるフレームをタイル２１０に分割し、どのタイル２１０に三次元自動車オブジェクト２２０が存在するかということの判別は、図１のビニングパイプライン１０１によって実行される。その後、図１のＧＰＵ１０は、タイル単位で、タイル２１０に含まれる三次元自動車オブジェクト２２０をレンダリングし、ピクセル表現に変換する。ここで、タイル単位で三次元自動車オブジェクト２２０をレンダリングし、ピクセル表現に変換することは、図１のレンダリングパイプライン１０２によって行われる。このように、１フレームに含まれる三次元自動車オブジェクト２２０を、ピクセル単位でレンダリングするのではなく、タイル２１０を利用してレンダリングすることを、タイルベースレンダリング（ＴＢＲ）という。
【００４１】
図３ないし図５は、テッセレーションパイプラインについて説明するための図面である。以下では、図３ないし図５を連携させて説明する。前述のように、図３ないし図５で説明されるテッセレーションパイプライン（または、テッセレーションステージ）３００は、図１のグラフィックスパイプライン１００に含まれてよい。
【００４２】
図３を参照すると、テッセレーションパイプライン３００は、制御シェーダ（control  shader）１２１、テッセレータ（tessellator）１２３及びテッセレーション評価シェーダ（tessellation  evaluation  shader）１２５によって実行される。すなわち、本明細書で説明されるテッセレーションパイプライン３００という用語は、グラフィックスパイプライン１００のバージョン、種類に応じて、他の用語で代替されることもある。例えば、制御シェーダ１２１は、ハルシェーダ（hull  shader）という用語で、テッセレーション評価シェーダ１２５は、ドメインシェーダ（domain  shader）という用語で代替されることもある。
【００４３】
制御シェーダ１２１は、低次（low  order）のサーフェスを表現する入力制御点（input  control  points）を、パッチを構成する出力制御点（output  control  points）に変換する。例えば、制御シェーダ１２１は、入力制御点を変換し、図４に図示された制御点Ｐ００、Ｐ０１、Ｐ０２、Ｐ０３、Ｐ１０、Ｐ１１、Ｐ１２、Ｐ１３、Ｐ２０、Ｐ２１、Ｐ２２、Ｐ２３、Ｐ３０、Ｐ３１、Ｐ３２及びＰ３３で構成されたメッシュ（mesh）のパッチ４１０を生成することができる。ここで、パッチは、三角形、四角形、等値線（isoline）などのポリゴン形態を有することもできる。
【００４４】
制御シェーダ１２１は、パッチを構成する出力制御点を生成することに加えて、テッセレーション係数（ＴＦ：tessellation  factor）またはテッセレーションレベル（ＴＬ：tessellation  level）を決定することができる。テッセレーション係数（ＴＦ）またはテッセレーションレベル（ＴＬ）は、パッチをどのくらい分割するか、あるいはパッチをどのように分割するかということを示すインデックスである。図５に図示されたテーブル５００は、テッセレーション係数（ＴＦ）と、分割される三角形の個数との関係を定義したテーブルである。テーブル５００によれば、テッセレーション係数（ＴＦ）が１である場合、三角形の個数が１であるので、パッチに対するテッセレーションは、実行されない。しかし、テッセレーション係数（ＴＦ）が増加するほど、三角形の個数は、幾何級数的に増加する。言い換えれば、テッセレーション係数（ＴＦ）が増加するほど、分割される三角形の個数が多くなるということは、ＧＰＵ１０において、あるパッチに対して処理されなければならない演算量が増加するということを意味する。ただし、テッセレーション係数（ＴＦ）が増加すればするほど、オブジェクトのパッチに対するより柔らかい表現が可能になる。一方、図５のテーブル５００においては、分割されるポリゴンが三角形である場合を例として挙げたが、それに限定されるものではなく、パッチは、四角形、等値線などの他のポリゴンに分割されることもある。
【００４５】
制御シェーダ１２１は、出力パッチ（output  patch）の出力制御点及びテッセレーション係数（ＴＦ）に係わる情報をテッセレータ１２３及びテッセレーション評価シェーダ１２５に伝達する。
【００４６】
テッセレータ１２３は、制御シェーダ１２１から受信されたテッセレーション係数（ＴＦ）を利用して、出力制御点に対する重心座標系（barycentric  coordinates）でのｕｖｗ座標及び加重値を計算する。
【００４７】
テッセレーション評価シェーダ１２５は、制御シェーダ１２１から受信された出力パッチの出力制御点及びテッセレーション係数（ＴＦ）に係わる情報、テッセレータ１２３から受信されたｕｖｗ座標（ｗ座標は、任意的である）及び加重値を利用して、テッセレーティングされた頂点（tessellated  vertices）を生成する。図４を参照すると、テッセレーティングされた頂点の位置は、サーフェス４２０を形成する。すなわち、パッチ４１０は、テッセレーションパイプラインが実行されることにより、より柔らかくなったサーフェス４２０上の頂点（または、プリミティブ）に変換される。
【００４８】
図６は、一実施形態による図１のＧＰＵの詳細なハードウェア構造を図示したブロック図である。図６を参照すると、ＧＰＵ１０は、グラフィックスパイプライン１００を実行する入力アセンブラ（input  assembler）１１０、頂点シェーダ（vertex  shader）１１５、制御シェーダ１２１、テッセレータ１２３、テッセレーション評価シェーダ１２５、プリミティブアセンブラ（primitive  assembler）１３０、ビナ（binner）１４０、ラステライザ（rasterizer）１５０及びフラグメントシェーダ（fragment  shader）１６０を含んでよい。また、ＧＰＵ１０は、コントローラ１７０及びバッファ１８０をさらに含んでもよい。ここで、ＧＰＵ１０内において、グラフィックスパイプライン１００を実行する前述の構成は、以下で説明する機能に基づいて分類されたものでもある。従って、グラフィックスパイプライン１００を実行する前述の構成それぞれは、以下で説明する機能それぞれを実行させるプログラムロジックまたはソフトウェアモジュールによって具現化される。それと異なり、グラフィックスパイプライン１００を実行する前述の構成は、ＧＰＵ１０内に具備されたサブ（sub）処理ユニット（または、プロセッサコア）それぞれで具現化されることもある。すなわち、グラフィックスパイプライン１００を実行する前述の構成の具現化形態は、いずれか一つによって限定されるものではない。さらに、グラフィックスパイプライン１００を実行する前述の構成の名称は、以下で説明する機能に基づいて付与されたものでもあるが、かような名称は、多様に変更されるということは、当該技術分野の当業者であるならば、理解することができるであろう。
【００４９】
ＧＰＵ１０において、グラフィックスパイプライン１００を実行する構成の名称は、説明の便宜のために、OpenＧＬ（登録商標）で定義された名称を使用したが、本構成の名称は、それらに限定されるものではない。すなわち、ＧＰＵ１０において、グラフィックスパイプライン１００を実行する構成は、Microsoft（登録商標）社のDirectＸ（登録商標）１１（ＤＸ１１）、ＣＵＤＡ６．０のような他種のＡＰＩで定義された類似の構成に対応する。例えば、テッセレーション評価シェーダ１２５は、DirectＸ（登録商標）１１で使用されるドメインシェーダに対応し、ＧＰＵ１０内の他の構成も同様に、DirectＸ（登録商標）１１またはＣＵＤＡ６．０などの他のＡＰＩで使用される構成に対応するということは、当該技術分野の当業者であるならば、理解することができるであろう。
【００５０】
入力アセンブラ１１０は、入力されたドローコール（draw  calls）に基づいて、メモリ３０（図１）に保存されたオブジェクトに係わる頂点のデータを、グラフィックスパイプライン１００に供給する。グラフィックスパイプライン１００に供給された頂点は、メッシュまたはサーフェスの表現であるパッチに係わるものでもあるが、それに限定されるものではない。ドローコールは、どのフレームにどのオブジェクトをレンダリングするかということを示すコマンドである。例えば、ドローコールは、映像またはフレームに、四角形または三角形のようなプリミティブを描くためのコマンドでもある。
【００５１】
頂点シェーダ１１５は、入力アセンブラ１１０によって供給された頂点を、制御シェーダ１２１の入力制御点として伝達する。
【００５２】
制御シェーダ１２１、テッセレータ１２３及び評価シェーダ１２５は、先に図で説明したテッセレーションパイプライン３００を実行することができる。すなわち、制御シェーダ１２１に入力された入力制御点は、テッセレーション評価シェーダ１２５によって、出力パッチに係わるテッセレーティングされた頂点として出力される。
【００５３】
プリミティブアセンブラ１３０は、テッセレーションパイプライン３００が実行された場合、テッセレーティングされた頂点をプリミティブ（すなわち、テッセレーティングされたプリミティブ）に変換する。プリミティブアセンブラ１３０は、テッセレーションパイプライン３００が実行されていない場合には、頂点シェーダ１１５から出力された頂点をプリミティブに変換する。
【００５４】
ビナ１４０は、プリミティブアセンブラ１３０から出力されたプリミティブ（または、テッセレーティングされたプリミティブ）を利用して、ビニングまたはタイリングを行う。すなわち、ビナ１４０は、深度テスト（または、タイルＺテスト）を実行し、出力プリミティブそれぞれが属するタイルの情報を示すタイルリストを生成（ビニング）する。一方で、ビナ１４０は、図８ないし図１１で説明するバウンディングボックス（bounding  box）ビットストリーム（第１ビットストリーム）、ドローコールビットストリーム（第２ビットストリーム）、プリミティブビットストリーム（第３ビットストリーム）、テッセレーションビットストリームのような可視性ビットストリーム（visibility  bitstream）を生成する。かような可視性ビットストリームについては、図８ないし図１１を参照してさらに詳細に説明することにする。
【００５５】
ラステライザ１５０は、生成されたタイルリストに基づいて、出力プリミティブを二次元空間でのピクセル値に変換する。フラグメントは、プリミティブによってカバーされるピクセルを意味し、フラグメントシェーダ１６０は、かようなフラグメントを生成し、フラグメントに対する深度値、ステンシル値、カラー値などを決定する。フラグメントシェーダ１６０のシェーディング結果は、バッファ１８０（例えば、フレームバッファ）に保存された後、動画のフレームとして表示される。
【００５６】
コントローラ１７０は、グラフィックスパイプライン１００の各構成要素（入力アセンブラ１１０ないしラスタライザ１５０）と、バッファ１８０との全般的な機能及び動作を制御する。
【００５７】
図７は、一実施形態によるグラフィックスパイプラインについて説明するための図面である。図７を参照すると、コントローラ１７０は、ビニングパイプライン１０１及びレンダリングパイプライン１０２の実行を制御する。
【００５８】
ビニングパイプライン１０１では、テッセレーションが行われない。先に図３などで説明したように、テッセレーションパイプライン３００が実行された場合、多くの三角形に係わるデータが生成されるので、それらを処理するための多くのハードウェア／ソフトウェアリソースが投入されなければならない。従って、もしビニングパイプライン１０１及びレンダリングパイプライン１０２のいずれにおいても、テッセレーションが反復的に実行され、多数のテッセレーティングされたプリミティブが生成される場合には、演算量が幾何級数的に増加し、演算処理速度が遅くなる。そのために、本実施形態によるグラフィックスパイプライン１００（図１）は、ビニングパイプライン１０１では、テッセレーションを行わず、レンダリングパイプライン１０２でのみテッセレーションを行うディファードテッセレーションを実行する。
【００５９】
一方、レンダリングパイプライン１０２は、第１サブレンダリングパイプライン１０２−１及び第２サブレンダリングパイプライン１０２−２を含む。ここで、第１サブレンダリングパイプライン１０２−１は、テッセレーションパイプライン３００を実行するパイプラインであり、第２サブレンダリングパイプライン１０２−２は、テッセレーションパイプライン３００を実行しないパイプラインである。すなわち、ビニングパイプライン１０１において、テッセレーションが行われない理由（演算量削減、処理速度向上など）と同じ理由で、レンダリングパイプライン１０２内でも、テッセレーションが行われないサブパイプラインが存在する。
【００６０】
図８は、一実施形態によるビニングパイプラインについて説明するための図面である。図８に図示されたビニングパイプライン１０１については、図６で説明されたＧＰＵ１０のハードウェア構成に連携させて説明するが、実施形態と係わる構成及びパイプラインステージについてのみ説明する。従って、図８で説明される構成及びパイプラインステージ以外に、他の汎用的な構成要素及びパイプラインステージがさらに含まれてもよいということは、当該技術分野の当業者であるならば、理解することができるであろう。
【００６１】
ビニングパイプライン１０１には、メモリ３０から提供されたドローコール８２１が入力される。ドローコール８２１は、現在イメージフレームでレンダリングされるオブジェクトに係わるドローコマンドに該当する。
【００６２】
頂点シェーダ１１５は、入力されたドローコール８２１から頂点を生成するための頂点シェーディング８０１を行う。頂点シェーダ１１５は、生成された頂点をプリミティブアセンブラ１３０に伝達する。プリミティブアセンブラ１３０は、頂点シェーダ１１５から出力された頂点を、プリミティブの集合に変換するプリミティブアセンブリング８０２を行う。ビニングパイプライン１０１においては、頂点シェーディング８０１とプリミティブアセンブリング８０２との間で、テッセレーションが行われないように設定される。従って、ビニングパイプライン１０１においては、テッセレーティングされたプリミティブが生成されない。
【００６３】
ビナ１４０は、プリミティブアセンブラ１３０から出力されたプリミティブを利用して、ビニング８０３またはタイリングを行う。すなわち、ビナ１４０は、深度テスト（または、タイルＺテスト）、カリング（culling）、クリッピング（clipping）、陰面消去（ＨＳＲ：hidden  surface  removal）などを行い、プリミティブそれぞれが属するタイルの情報を示すタイルリストを予測するビニング８０３を行う。このとき、ビニングされたタイルリストは、ビットストリーム８２２としてメモリ３０に保存される。または、ビナ１４０によるビニング８０３の結果は、さらに迅速なアクセスのために、メモリ３０の代わりに、ＧＰＵ１０のバッファ１８０内に設けられたキャッシュ１８５に保存されることも可能である。さらに、ビナ１４０は、ビニング８０３を行い、バウンディングボックスビットストリーム、ドローコールビットストリーム、プリミティブビットストリームのような可視性ビットストリームを生成する。ドローコール可視性ビットストリームは、それぞれのタイルでのドローコールそれぞれの可視性を示す情報を含み、プリミティブビットストリームは、それぞれのタイルでのプリミティブそれぞれの可視性を示す情報を含む。
【００６４】
図９は、一実施形態による、バウンディングボックスビットストリームを生成する方法のフローチャートである。図９を参照すると、段階９０１において、ビナ１４０は、入力されたドローコールのうち、テッセレーションが必要な第１タイプのドローコール、及びテッセレーションが不要な第２タイプのドローコールを判別する。
【００６５】
段階９０２において、ビナ１４０は、第１タイプのドローコールに対応するバウンディングボックスをカバーするタイルリストを識別するためのタイルビニングを行う。しかし、ビナ１４０は、テッセレーションが不要な第２タイプのドローコールに対応するバウンディングボックスについては、タイルビニングを行わない。それは、テッセレーションが不要な第２タイプのドローコールは、結局、レンダリングパイプラインでもテッセレーティングされないからである。
【００６６】
段階９０３において、ビナ１４０は、第１タイプのドローコールを示す識別情報、第２タイプのドローコールを示す識別情報、及びバウンディングボックスのタイルビニング結果に基づいたタイルリストの情報を含むバウンディングボックスビットストリームを生成する。すなわち、バウンディングボックスビットストリームは、入力されたドローコールそれぞれに係わるテッセレーションの必要性を示す情報、及びテッセレーティングされる必要がある第１タイプのドローコールに対応するバウンディングボックスをカバーするタイルリストの情報を含む。
【００６７】
一方で、段階９０１ないし段階９０３のバウンディングボックスビットストリームの生成過程は、先に図で説明したビニング８０３のステージで実行される。
【００６８】
図１０は、一実施形態による、２×２タイルによってカバーされるドローコールの例を図示した図面である。図１０を参照すると、第０ドローコール１０００、第１ドローコール１００１及び第２ドローコール１００２は、タイル０ないしタイル４の２×２タイルによってカバーされる。ただし、図１０の例は、説明の便宜のためのものであるに過ぎず、本実施形態は、それらに限定されるものではない。それぞれのドローコール１０００、１００１及び１００２は、それぞれ３個ずつのプリミティブから構成される。ここで、第０ドローコール１０００は、テッセレーションが必要なドローコールに該当し、第１ドローコール１００１及び第２ドローコール１００２は、テッセレーションが不要なドローコールに該当すると仮定する。
【００６９】
先に図９で説明された段階９０１を参照すると、ビナ１４０は、第０ドローコール１０００は第１タイプのドローコールに該当し、第１ドローコール１００１及び第２ドローコール１００２は第２タイプのドローコールに該当すると判別する。そして、先に図９で説明された段階９０２を参照すると、ビナ１４０は、第０ドローコール１０００に対応するバウンディングボックスを決定し、タイルビニングを介して、第０ドローコール１０００に対応するバウンディングボックスをカバーするタイルリスト（タイル０及びタイル２）を識別する。このように、第１タイプまたは第２タイプのドローコールを識別し、第１タイプのドローコールに対応するバウンディングボックスに対するタイルビニングを行う理由は、第１タイプのドローコールから生成されたテッセレーティングされたプリミティブに対するタイルビニングによって識別されたタイルリストは、第１タイプのドローコールに対応するバウンディングボックスに対するタイルビニングによって識別されたタイルリストに含まれるからである。言い換えれば、第１タイプのドローコールから生成されたテッセレーティングされたプリミティブから形成された空間は、第１タイプのドローコールに対応するバウンディングボックスを外れないからである。それについては、以下で図１１を参照することにする。
【００７０】
図１１は、一実施形態による、バウンディングボックスの空間と、テッセレーティングされたプリミティブから構成された空間との包含関係について説明するための図面である。図１１を参照すると、第１タイプのドローコール１１０１に対応するバウンディングボックス１１１０は、第１タイプのドローコール１１０１が形成する空間を含むように設定される。ドローコール１１０１がテッセレーティングされた後、テッセレーティングされたプリミティブ１１０２が形成する空間も、バウンディングボックス１１１０を外れない。それは、グラフィックスＡＰＩによって、バウンディングボックス１１１０が、すでにテッセレーティングされているプリミティブ１１０２が形成する空間も含むように設定されているからである。
【００７１】
ビニングパイプライン１０１（図８）でテッセレーションが行われないとしても、バウンディングボックスに対するタイルビニングを行うのであるならば、テッセレーティングされたプリミティブに対するタイルビニングを行ったものと類似した結果を得ることができる。従って、ビニングパイプライン１０１（図８）では、テッセレーションパイプライン（テッセレーションステージ）がスキップされるので、ビニングパイプライン１０１（図８）においてテッセレーションが行われるときより、ＧＰＵ１０の演算量が減って処理速度が向上する。
【００７２】
図１２は、一実施形態によって、バウンディングボックスビットストリームを生成することについて説明するための図面である。図１２を参照すると、第０ドローコール１０００は、テッセレーションが必要なドローコールに該当し、第１ドローコール１００１及び第２ドローコール１００２は、テッセレーションが不要なドローコールに該当すると仮定する。
【００７３】
図１２に図示されたバウンディングボックスビットストリームにおいて、「１０２」について説明すると、最初の「１」は、第０ドローコール１０００に対するテッセレーションが必要であるということを意味し、次の「０２」は、ドローコール１０００に対応するバウンディングボックス１２００をカバーするタイルが「タイル０」及び「タイル２」であるということを意味する。バウンディングボックスビットストリームにおいて、「１０２」に続く「００」は、第１ドローコール１００１及び第２ドローコール１００２に対するテッセレーションが不要であるということを意味する。
【００７４】
すなわち、バウンディングボックスビットストリームは、入力されたドローコール１０００、１００１及び１００２それぞれに係わるテッセレーションの必要性を示す情報、及びテッセレーティングされる必要があるドローコール１０００に対応するバウンディングボックス１２００をカバーするタイルリストの情報を含む。一方、図１２で説明された「１０２００」のようなビットストリームの形式（form）は、前述のような情報が含まれている限り、多様に変更される。
【００７５】
図１３は、一実施形態による多種の可視性ビットストリームについて説明するための図面である。図１３を参照すると、ビナ１４０は、バウンディングボックスビットストリーム、ドローコールビットストリーム、プリミティブビットストリーム及びテッセレーションビットストリームを生成することができる。ここで、バウンディングボックスビットストリームは、ビニングパイプライン１０１でのみ生成されるビットストリームであってよく、テッセレーションビットストリームは、レンダリングパイプライン１０２でのみ生成されるビットストリームであってよい。
【００７６】
バウンディングボックスビットストリームは、図１２で説明したものと同一であるので、詳しい説明は省略することにする。
【００７７】
ドローコールビットストリーム及びプリミティブビットストリームは、テッセレーションが不要な第２タイプのドローコール（例えば、第１ドローコール１００１及び第２ドローコール１００２）に対して生成される。それは、テッセレーションが必要な第１タイプのドローコール（例えば、第０ドローコール１０００）に対する可視性は、すでにバウンディングボックスビットストリームに反映されているからである。
【００７８】
ドローコールビットストリームは、それぞれのタイルで可視的な（visible）ドローコールを識別するためのビットストリームである。例えば、タイル０は、第１ドローコール１００１のみをカバーしているので、タイル０については、「１０」が割り当てられる。タイル１は、第１ドローコール１００１及び第２ドローコール１００２をいずれもカバーしているので、タイル１については、「１１」が割り当てられる。タイル２は、何もカバーしていないので、タイル２については、「００」が割り当てられる。タイル３は、第２ドローコール１００２のみをカバーしているので、タイル３については、「０１」が割り当てられる。
【００７９】
プリミティブビットストリームは、それぞれのタイルにおいて、可視的なプリミティブを識別するためのビットストリームである。例えば、タイル０は、第１ドローコール１００１のプリミティブＰ０のみをカバーしているので、タイル０については、「１０００００」が割り当てられる。タイル１は、第１ドローコール１００１及び第２ドローコール１００２の全てのプリミティブをカバーしているので、タイル１については、「１１１１１１」が割り当てられる。タイル２は、何もカバーしていないので、タイル２については、「００００００」が割り当てられる。タイル３は、第２ドローコール１００２のプリミティブＰ０、Ｐ１及びＰ３をカバーしているので、タイル３については、「０００１１１」が割り当てられる。
【００８０】
テッセレーションビットストリームは、前述のように、レンダリングパイプライン１０２においてテッセレーションが行われた後に生成される。テッセレーションビットストリームは、それぞれのタイルにおいて、可視的なテッセレーティングされたプリミティブを識別するためのビットストリームである。テッセレーションは、第０ドローコール１０００についてのみ行われ、第０ドローコール１０００に対応するバウンディングボックスは、バウンディングボックスビットストリームにおいて「０２」と定義されたので、テッセレーションビットストリームは、タイル０及びタイル２での可視性情報のみを含む。タイル０は、第０ドローコール１０００のプリミティブＰ０、Ｐ１及びＰ３をカバーしているので、タイル０については、「１１１」が割り当てられる。タイル２も、第０ドローコール１０００のプリミティブＰ０、Ｐ１及びＰ３をカバーしているので、タイル２についても、「１１１」が割り当てられる。
【００８１】
このように、多種の可視性ビットストリームに基づいて、レンダリングパイプライン１０２としては、現在処理される現在タイルにおいて、可視的なバウンディングボックス、可視的なドローコール、可視的なプリミティブだけでレンダリングを行うだけではなく、可視的な対象がないタイルの場合には、レンダリングをスキップすることができるので、ＧＰＵ１０の演算量が減り、処理速度が増大する。
【００８２】
図１４は、一実施形態によるレンダリングパイプラインについて説明するための図面である。図１４に図示されたレンダリングパイプライン１０２については、図６で説明されたＧＰＵ１０のハードウェア構成に連携させて説明することにするが、実施形態と係わる構成及びパイプラインステージについてのみ説明することにする。従って、図１４で説明される構成及びパイプラインステージ以外に、他の汎用的な構成要素及びパイプラインステージがさらに含まれてもよいことは、当該技術分野の当業者であるならば、理解することができるであろう。
【００８３】
レンダリングパイプライン１０２は、ビニングパイプライン１０１で生成されたバウンディングボックスビットストリームを利用して、テッセレーションが必要な第１タイプのドローコール、及びテッセレーションが不要な第２タイプのドローコールに対して、互いに異なるレンダリング方式でタイルをレンダリングする。ここで、第１タイプのドローコールは、テッセレーションステージを含む第１サブレンダリングパイプライン１０２−１によって処理され、第２タイプのドローコールは、テッセレーションステージを含まない第２サブレンダリングパイプライン１０２−２によって処理される。すなわち、レンダリングパイプライン１０２は、現在処理される現在タイルにおいて、バウンディングボックスビットストリームによって割り当てられたバウンディングボックスが識別された場合、識別されたバウンディングボックスに対応するドローコールについてのみテッセレーションを行い、残りのドローコールについては、テッセレーションを行わない選択的なテッセレーションを行うことにより、現在タイルをレンダリングする。
【００８４】
ＧＰＵ１０のコントローラ１７０は、バウンディングボックスビットストリームに含まれるタイルビニング結果に基づいて、バウンディングボックスをカバーするタイルに対して、高い優先順位が割り当てられるように、タイルのレンダリング順序をスケジューリングする。それによって、レンダリングパイプライン１０２では、スケジューリングされたタイルのレンダリング順序によって、タイル単位でレンダリングが行われる。
【００８５】
レンダリングパイプライン１０２には、メモリ３０から提供されたドローコール８２１が入力される。コントローラ１７０は、入力されたドローコール８２１それぞれが、第１タイプのドローコールであるか、あるいは第２タイプのドローコールであるかということを判別する。その後、コントローラ１７０は、第１タイプのドローコールについては、第１サブレンダリングパイプライン１０２−１の実行を制御し、第２タイプのドローコールについては、第２サブレンダリングパイプライン１０２−２の実行を制御する。
【００８６】
第１サブレンダリングパイプライン１０２−１は、以前タイルでテッセレーションが行われていない第１タイプのドローコールについては、段階１４１１ないし段階１４１８のレンダリングステージを実行し、以前タイルでテッセレーションが実行されることによって生成されたテッセレーションビットストリームがメモリ３０に保存された第１タイプのドローコールについては、段階１４０１、段階１４１７及び段階１４１８のレンダリングステージを実行する。それは、テッセレーションがすでに行われている第１タイプのドローコールについては、反復的なテッセレーションが行われないようにし、ＧＰＵ１０の演算量を減らすためでもある。
【００８７】
例えば、先に図１０ないし図１３で説明された２×２タイルによってカバーされる第０ドローコール１０００、第１ドローコール１００１及び第２ドローコール１００２を例として挙げて説明すると、第０ドローコール１０００については、第１サブレンダリングパイプライン１０２−１が実行され、第１ドローコール１００１及び第２ドローコール１００２については、第２サブレンダリングパイプライン１０２−２が実行される。一方、第０ドローコール１０００に対応するバウンディングボックスは、タイル０及びタイル２によってカバーされ、タイル０に対するレンダリングが、タイル２より先に行われるように、スケジューリングされると仮定することができる。タイル０には、第０ドローコール１０００の全てのプリミティブＰ０、Ｐ１及びＰ２がカバーされているので、タイル０に対するテッセレーションの実行が完了すれば、プリミティブＰ０、Ｐ１及びＰ２のいずれに対するテッセレーティングされたプリミティブが生成され、それらは、メモリ３０のビットストリーム８２２に保存される。その後、タイル２（現在タイル）に対するレンダリングが行われるとき、テッセレーションが行われる必要はない。なぜならば、タイル０（以前タイル）に対するレンダリングによって、テッセレーティングされたプリミティブがすでに生成されているからである。従って、タイル２（現在タイル）に対するレンダリングが行われるときには、テッセレーションがスキップされ、メモリ３０のビットストリーム８２２に保存されたテッセレーティングされたプリミティブに係わるデータをロード（load）し、残りのレンダリングステージが実行される。
【００８８】
以前タイルでテッセレーションが行われていない第１タイプのドローコール（すなわち、初めてテッセレーティングされるドローコール）に対して実行される段階１４１１ないし段階１４１８のレンダリングステージについて説明すると、次の通りである。
【００８９】
頂点シェーダ１１５は、ドローコール８２１のうち第１タイプのドローコールから頂点を生成するための頂点シェーディング１４１１を行う。頂点シェーダ１１５は、生成された頂点を制御シェーダ１２１に伝達する。
【００９０】
制御シェーダ１２１、テッセレータ１２３及びテッセレーション評価シェーダ１２５は、図３で説明されたように、頂点を利用して、制御シェーディング１４１２、テッセレーティング１４１３及びテッセレーション評価シェーディング１４１４を行うことにより、テッセレーティングされた頂点を生成する。
【００９１】
プリミティブアセンブラ１３０は、テッセレーティングされた頂点を、テッセレーティングされたプリミティブの集合に変換するプリミティブアセンブリング１４１５を行う。
【００９２】
ビナ１４０は、プリミティブアセンブラ１３０から出力されたテッセレーティングされたプリミティブを利用して、ビニング１４１６またはタイリングを行う。すなわち、ビナ１４０は、深度テスト（または、タイルＺテスト）、カリング、クリッピング、ＨＳＲなどを行い、テッセレーティングされたプリミティブそれぞれが属するタイルの情報を示すタイルリストを予測するビニング１４１６を行う。さらに、ビナ１４０は、ビニング１４１６を行い、テッセレーションビットストリームのような可視性ビットストリームを生成し、それを、メモリ３０のビットストリーム８２２に保存する。一方、前述のように、さらに迅速なアクセスのために、生成された可視性ビットストリームは、メモリ３０の代わりに、ＧＰＵ１０のバッファ１８０内に設けられたキャッシュ１８５（図８）に保存されることもある。テッセレーティングされたプリミティブに係わる座標情報なども、メモリ３０やキャッシュ１８５に保存される。
【００９３】
ラステライザ１５０は、メモリ３０またはキャッシュ１８５に保存された可視性ビットストリームを利用して、テッセレーティングされたプリミティブを、二次元空間でのピクセル値に変換するラスタライジング１４１７を行う。フラグメントシェーダ１６０は、フラグメントを生成し、フラグメントに係わる深度値、ステンシル値、カラー値などを決定するフラグメントシェーディング１４１８を行う。フラグメントシェーダ１６０のフラグメントシェーディング１４１８の結果は、バッファ１８０（例えば、フレームバッファ）に保存された後、動画のフレームとして表示される。
【００９４】
次に、以前タイルでテッセレーションが行われた第１タイプのドローコールに対して実行される段階１４０１、段階１４１７及び段階１４１８のレンダリングステージについて説明すると、次の通りである。
【００９５】
テッセレーションビットストリーム、及びテッセレーティングされたプリミティブの座標データなどが、メモリ３０またはキャッシュ１８５からロードされる（１４０１）。ラステライザ１５０は、ロードされたテッセレーションビットストリーム、及びテッセレーティングされたプリミティブの座標データなどを利用して、テッセレーティングされたプリミティブを、二次元空間でのピクセル値に変換するラスタライジング１４１７を行う。フラグメントシェーダ１６０は、フラグメントを生成し、フラグメントに係わる深度値、ステンシル値、カラー値などを決定するフラグメントシェーディング１４１８を行う。フラグメントシェーダ１６０のフラグメントシェーディング１４１８の結果は、バッファ１８０（例えば、フレームバッファ）に保存された後、動画のフレームとして表示される。
【００９６】
第２タイプのドローコールについては、第２サブレンダリングパイプライン１０２−２が実行される。第２タイプのドローコールは、テッセレーションを必要としないので、第２サブレンダリングパイプライン１０２−２には、段階１４１２ないし段階１４１４のようなテッセレーションパイプライン（テッセレーションステージ）が含まれない。すなわち、現在タイルで処理される前記第１タイプのドローコールに対するテッセレーティングされたプリミティブが、以前タイルですでに生成されている場合、現在タイルで処理されるドローコールに対するテッセレーションは、スキップされる。
【００９７】
頂点シェーダ１１５は、ドローコール８２１のうち第２タイプのドローコールから頂点を生成するための頂点シェーディング１４２１を行う。頂点シェーダ１１５は、生成された頂点を、プリミティブアセンブラ１３０に伝達する。
【００９８】
プリミティブアセンブラ１３０は、頂点シェーダ１１５から出力された頂点をプリミティブに変換するプリミティブアセンブリング１４２２を行う。
【００９９】
ラステライザ１５０は、メモリ３０またはキャッシュ１８５に保存された可視性ビットストリーム（ドローコールビットストリーム、プリミティブビットストリームなど）を利用して、プリミティブを二次元空間でのピクセル値に変換するラスタライジング１４２３を行う。フラグメントシェーダ１６０は、フラグメントを生成し、フラグメントに係わる深度値、ステンシル値、カラー値などを決定するフラグメントシェーディング１４２４を行う。フラグメントシェーダ１６０のフラグメントシェーディング１４２４の結果は、バッファ１８０（例えば、フレームバッファ）に保存された後、動画のフレームとして表示される。
【０１００】
一方、コントローラ１７０は、レンダリングパイプラインが実行される間、第１タイプのドローコールに対するテッセレーティングされたプリミティブが、次に処理される他のタイルで利用されない場合、テッセレーティングされたプリミティブと係わるデータをメモリ３０またはキャッシュ１８５から削除するように制御する。
【０１０１】
前述のように、レンダリングパイプライン１０２では、入力されたドローコールの種類、すなわち、第１タイプであるか、または第２タイプであるかに応じて、互いに異なる種類のサブレンダリングパイプライン１０２−１または１０２−２が実行される。すなわち、全てのドローコールに対して、無条件的にテッセレーションが行われるのではなく、テッセレーションが必要なドローコールについてのみテッセレーションが行われるので、ＧＰＵ１０の演算量を削減させながら、処理速度を増大させることができる。
【０１０２】
図１５は、一実施形態による、レンダリングパイプラインを実行する方法の詳細なフローチャートである。図１５に図示された、レンダリングパイプライン１０２の実行方法は、前述の図面で説明された実施形態に係わるので、以下、省略された内容があるとしても、先立って図面で説明された内容は、図１５の方法にも適用される。
【０１０３】
段階１５０１において、ＧＰＵ１０は、可視性ビットストリームを利用して、タイルのレンダリング順序をスケジューリングする。このとき、ＧＰＵ１０は、バウンディングボックスビットストリームを利用して、バウンディングボックスをカバーしているタイルに対して、高い優先順位が付与されるように、タイルの処理順序をスケジューリングすることができる。
【０１０４】
段階１５０２において、ＧＰＵ１０は、スケジューリング結果に基づいて、現在処理される（レンダリングされる）現在タイルを決定する。
【０１０５】
段階１５０３において、ＧＰＵ１０は、現在タイルによってカバーされるドローコールが、テッセレーションが必要なドローコール（すなわち、第１タイプのドローコール）であるか否かを判別する。現在タイルによってカバーされるドローコールが第１タイプである場合、段階１５０４に進む。一方、現在タイルによってカバーされるドローコールが第１タイプではない、テッセレーションが不要なドローコール（すなわち、第２タイプのドローコール）である場合、段階１５０５に進む。
【０１０６】
段階１５０４において、ＧＰＵ１０は、メモリ３０またはキャッシュ１８５に、テッセレーションビットストリームが存在するか否かを判定する。テッセレーションビットストリームが存在する場合、段階１５０７に進む。一方、テッセレーションビットストリームが存在しない場合（すなわち、テッセレーションが初めて実行される場合）、段階１５０６に進む。
【０１０７】
段階１５０５において、ＧＰＵ１０は、テッセレーションが不要な第２タイプのドローコールに対して、第２サブレンダリングパイプライン１０２−２を実行する。
【０１０８】
段階１５０６において、ＧＰＵ１０は、テッセレーションビットストリームが存在しない場合（すなわち、テッセレーションが初めて実行される場合）には、入力された第１タイプのドローコールに対してテッセレーションパイプライン３００を実行し、テッセレーションビットストリームを生成する。その後、生成されたテッセレーションビットストリーム、及びテッセレーティングされたプリミティブの座標データなどを、メモリ３０またはキャッシュ１８５に保存する。
【０１０９】
段階１５０７において、ＧＰＵ１０は、以前タイルのレンダリング過程で保存されたテッセレーションビットストリーム、及びテッセレーティングされたプリミティブの座標データなど、または段階１５０６で生成されたテッセレーションビットストリーム、及びテッセレーティングされたプリミティブの座標データなどを利用して、残りのレンダリングステージを実行する。
【０１１０】
段階１５０８において、ＧＰＵ１０は、テッセレーションビットストリームが次に処理される他のタイルにおいて、さらに使用されるか否かを判定する。すなわち、ＧＰＵ１０は、現在タイルで処理された第１タイプのドローコールが、次に処理される他のタイルでも使用されるか否かを判定する。もし現在タイルで処理された第１タイプのドローコールが、次の他のタイルでも使用される場合、段階１５１０に進む。一方、次の他のタイルで使用されない場合、段階１５０９に進む。
【０１１１】
段階１５０９において、ＧＰＵ１０は、現在タイルで処理された第１タイプのドローコールが、次の他のタイルで使用されない場合、テッセレーティングされたプリミティブと係わるデータを、メモリ３０またはキャッシュ１８５から削除するように制御する。
【０１１２】
段階１５１０において、ＧＰＵ１０は、現在タイルでレンダリングされていないドローコールが残っているか否かを判定する。現在タイルでレンダリングされていないドローコールが残っている場合、再び段階１５０２に戻る。一方、現在タイルでレンダリングされていないドローコールが残っていない場合、段階１５１１に進む。
【０１１３】
段階１５１１において、ＧＰＵ１０は、レンダリングされていないタイルが残っているか否かを判定する。レンダリングされていないタイルが残っている場合、再び段階１５０２に戻る。一方、レンダリングされていないタイルが残っていない場合、レンダリングパイプラインの実行は終わる。
【０１１４】
図１６は、一実施形態による、コンピューティング装置の詳細なハードウェア構成を図示したブロック図である。図１６を参照すると、コンピューティング装置１は、ＧＰＵ１０、ＣＰＵ２０、メモリ３０、バッファ３５、バス４０、表示部１６０１、入力部１６０３及び通信部１６０５を含む。図１６に図示されたコンピューティング装置１には、実施形態と係わる構成要素だけが図示されている。従って、図１６に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいことは、当該技術分野の当業者であるならば、理解することができるであろう。
【０１１５】
ＧＰＵ１０、ＣＰＵ２０及びメモリ３０は、前述の図面で説明された動作及び機能を実行する。
【０１１６】
バッファ３５は、タイルベースグラフィックスパイプライン、またはタイルベースレンダリングを介して出力されたタイル情報を保存する。例えば、バッファ３５は、タイルでの深度テスト結果を保存したり、タイルでのレンダリング結果を保存したりすることができる。図１６において、バッファ３５は、コンピューティング装置１内で、ＧＰＵ１０、ＣＰＵ２０またはメモリ３０と別個に具備されているように図示されているが、バッファ３５は、ＧＰＵ１０、ＣＰＵ２０及び／またはメモリ３０内に具備されてもよい。
【０１１７】
表示部１６０１は、コンピューティング装置１で処理された情報、または処理されるであろう情報などの各種情報をユーザに表示するための、表示インターフェース手段である。表示部１６０１は、コンピューティング装置１で処理された情報を、ユーザに視覚的に直感的に提供するためのＧＵＩ（graphic  user  interface）を表示することもできる。例えば、表示部１６０１は、ＧＰＵ１０によって処理されたグラフィックスデータを表示することができる。表示部１６０１は、ＬＣＤ（liquid  crystal  display）、ＬＥＤ（light  emitting  diode）、ＰＤＰ（plasma  display  panel）などの多様な表示パネルによって具現化される。
【０１１８】
入力部１６０３は、ユーザから情報を入力されるための、入力インターフェース手段である。入力部１６０３は、タッチパッド、トラックボール、マウス、キーボード、ゲーム用コントローラのような形態によって具現化される。表示部１６０１と入力部１６０３は、一体化されたタッチスクリーンのハードウェアによって具現化されることもある。
【０１１９】
通信部１６０５は、移動通信のための移動通信モジュール、有線／無線ＬＡＮ（local  area  network）モジュール、近距離無線通信のためのＷｉ−Ｆｉ（登録商標）（wireless  fidelity）モジュール、Bluetooth（登録商標）モジュール、ＮＦＣ（near  field  communication）モジュールなどを含んでよい。
【０１２０】
図１７は、一実施形態による、グラフィックスパイプラインを実行する方法のフローチャートである。図１７に図示された、グラフィックスパイプライン１００の実行方法は、前述の図面で説明された実施形態に係わるので、以下、省略された内容があるとしても、先立って図面で説明された内容は、図１７の方法にも適用される。
【０１２１】
段階１７０１において、ＧＰＵ１０は、テッセレーティングされる必要があるドローコールに対応するバウンディングボックスのタイルビニング結果を含むバウンディングボックスビットストリームを生成するビニングパイプライン１０１を実行する。
【０１２２】
段階１７０２において、ＧＰＵ１０は、現在処理される現在タイルにおいて、バウンディングボックスビットストリームによって割り当てられたバウンディングボックスが識別された場合、識別されたバウンディングボックスに対応するドローコールに対する選択的なテッセレーションを行うことにより、現在タイルをレンダリングするレンダリングパイプライン１０２を実行する。
【０１２３】
本実施形態による装置は、プロセッサ、プログラムデータを保存して実行するメモリ、ディスクドライブのような永続的ストレージ（permanent  storage）、外部装置と通信する通信ポート、タッチパネル、キー（key）、ボタンのようなユーザインターフェース装置などを含んでよい。ソフトウェアモジュールまたはアルゴリズムによって具現化される方法は、前記プロセッサにより実行可能なコンピュータで読み取り可能なコードまたはプログラム命令として、コンピュータで読み取り可能な記録媒体に保存される。ここで、コンピュータで読み取り可能な記録媒体として、磁気記録媒体（例えば、ＲＯＭ、ＲＡＭ、フロッピー（登録商標）ディスク、ハードディスクなど）及び光記録媒体（例えば、ＣＤ−ＲＯＭ、ＤＶＤ（digital  versatile  disc））などがある。コンピュータで読み取り可能な記録媒体は、ネットワークに接続されたコンピュータシステムに分散され、分散方式で、コンピュータで読み取り可能なコードが保存されて実行される。該媒体は、コンピュータによって読み取り可能であり、メモリに保存され、プロセッサで実行される。
【０１２４】
本実施形態は、機能的なブロック構成及び多様な処理段階で示される。かような機能ブロックは、特定の機能を実行する複数のハードウェア及び／またはソフトウェア構成によって具現化される。例えば、実施形態は、１以上のマイクロプロセッサの制御、または他の制御装置によって、多様な機能を実行することができる、メモリ、処理、ロジック（logic）、ルックアップテーブル（look-up  table）のような直接回路構成を採用することができる。構成要素が、ソフトウェアプログラミングまたはソフトウェア要素で実行されるということと類似して、本実施形態は、データ構造、プロセス、ルーチン、または他のプログラミング構成の組み合わせによって具現化される多様なアルゴリズムを含み、Ｃ、Ｃ＋＋、Ｊａｖａ（登録商標）、アセンブラ（assembler）のようなプログラミング言語またはスクリプト言語によって具現化される。機能的な側面は、１以上のプロセッサで実行されるアルゴリズムによって具現化される。また、本実施形態は、電子的な環境設定、信号処理、及び／またはデータ処理などのために、従来技術を採用することができる。「メカニズム」、「要素」、「手段」、「構成」のような用語は、広く使用され、機械的であって物理的な構成として限定されるものではない。前記用語は、プロセッサなどと連携する、ソフトウェアの一連の処理（routines）の意味を含んでよい。
【０１２５】
本実施形態で説明した特定の実行は、例示であり、いかなる方法でも、技術的範囲を限定するものではない。明細書の簡潔さのために、従来の電子的な構成、制御システム、ソフトウェア、前記システムの他の機能的な側面の記載は省略する。また、図面に図示された構成要素間の線の連結または連結部材は、機能的な連結及び／または物理的、または回路的な連結を例示的に示したものであり、実際の装置では、代替可能であったり追加されたりする多様な機能的な連結、物理的な連結または回路連結として示される。
【０１２６】
本明細書（特に、特許請求の範囲）において、「前記」という用語、及びそれと類似する指示用語の使用は、単数及び複数のいずれにも該当する。また、範囲を記載した場合、前記範囲に属する個別的な値を含み（それに反する記載がなければ）、詳細な説明に前記範囲を構成する各個別的な値を記載した通りである。最後に、方法を構成する段階について、明白に順序を記載するか、あるいはそれに反する記載がなければ、前記段階は、適切な順序で実行される。必ずしも前記段階の記載順序に限定されるものではない。
【０１２７】
以上、本発明について、その好ましい実施形態を中心に説明した。本発明が属する技術分野の当業者であるならば、本発明が本発明の本質的な特性から外れない範囲で変形された形態に具現化されるということを理解することができるであろう。従って、開示された実施形態は、限定的な観点ではなく、説明的な観点から考慮されなければならない。本発明の範囲は、前述の説明ではなく、特許請求の範囲に示されており、それと均等な範囲内にある全ての差異は、本発明に含まれるものであると解釈されなければならない。
【産業上の利用可能性】
【０１２８】
本発明のグラフィックス処理装置を含むコンピューティング装置、及びグラフィックス処理装置においてグラフィックスパイプラインを実行する方法は、例えば、グラフィックス関連の技術分野に効果的に適用可能である。
【符号の説明】
【０１２９】
１          コンピューティング装置
１０        ＧＰＵ
２０        ＣＰＵ
３０        メモリ
４０        バス
１００      グラフィックスパイプライン
１０１      ビニングパイプライン
１０２      レンダリングパイプライン
１０２−１  第１サブレンダリングパイプライン
１０２−２  第２サブレンダリングパイプライン
１１０      入力アセンブラ
１１５      頂点シェーダ
１２１      制御シェーダ
１２３      テッセレータ
１２５      テッセレーション評価シェーダ
１３０      プリミティブアセンブラ
１４０      ビナ
１５０      ラスタライザ
１６０      フラグメントシェーダ
１７０      コントローラ
１８０      バッファ
１８５      キャッシュ
２１０      タイル
２２０      三次元自動車オブジェクト
３００      テッセレーションパイプライン
４１０      パッチ
４２０      サーフェス
５００      テーブル
８２１      ドローコール
８２２      ビットストリーム
１１１０    バウンディングボックス
１６０１    表示部
１６０３    入力部
１６０５    通信部
【図１】
2017097870.tif 000003
【図２】
2017097870.tif 000004
【図３】
2017097870.tif 000005
【図４】
2017097870.tif 000006
【図５】
2017097870.tif 000007
【図６】
2017097870.tif 000008
【図７】
2017097870.tif 000009
【図８】
2017097870.tif 000010
【図９】
2017097870.tif 000011
【図１０】
2017097870.tif 000012
【図１１】
2017097870.tif 000013
【図１２】
2017097870.tif 000014
【図１３】
2017097870.tif 000015
【図１４】
2017097870.tif 000016
【図１５】
2017097870.tif 000017
【図１６】
2017097870.tif 000018
【図１７】
2017097870.tif 000019