JP2014203121A - 描画処理装置、描画処理システム、および描画処理方法 - Google Patents

描画処理装置、描画処理システム、および描画処理方法 Download PDF

Info

Publication number
JP2014203121A
JP2014203121A JP2013076188A JP2013076188A JP2014203121A JP 2014203121 A JP2014203121 A JP 2014203121A JP 2013076188 A JP2013076188 A JP 2013076188A JP 2013076188 A JP2013076188 A JP 2013076188A JP 2014203121 A JP2014203121 A JP 2014203121A
Authority
JP
Japan
Prior art keywords
data
resource
management unit
command
network
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.)
Granted
Application number
JP2013076188A
Other languages
English (en)
Other versions
JP5750133B2 (ja
Inventor
足火 岩垣
Taruhi Iwagaki
足火 岩垣
ミシェル グザビエ
Michel Xavier
ミシェル グザビエ
攻 太田
Osamu Ota
攻 太田
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.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Computer Entertainment Inc
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 Sony Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Priority to JP2013076188A priority Critical patent/JP5750133B2/ja
Priority to US14/220,568 priority patent/US9536274B2/en
Publication of JP2014203121A publication Critical patent/JP2014203121A/ja
Application granted granted Critical
Publication of JP5750133B2 publication Critical patent/JP5750133B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

【課題】ネットワークの帯域不足や通信エラーによってデータの再送が頻繁に起こると、描画処理に遅延が発生し、アプリケーションの応答性が悪くなる。【解決手段】サーバ100において、描画ライブラリ20は描画コマンドをクライアント200に送信し、データ送信管理部30は、描画コマンドの実行に利用される再利用可能なデータを、描画コマンドの送信タイミングとは時間をずらしてクライアント200に送信する。クライアント200において、データ受信管理部50は、サーバ100から描画コマンドの実行に利用される再利用可能なデータを受信する。描画ライブラリ60は、データ受信管理部50により受信された再利用可能なデータをGPU80にリソースとして設定するとともに、サーバ100サーバから描画コマンドを受信してGPU80に供給する。【選択図】図1

Description

この発明は、描画処理技術、特に描画コマンドと描画コマンドに利用されるデータを提供する技術に関する。
パーソナルコンピュータやゲーム専用機において、高品質な3次元コンピュータグラフィックスを用いたゲームやシミュレーションなどのアプリケーションを実行したり、実写とコンピュータグラフィックスを融合させた映像コンテンツの再生を行うなど、高画質のグラフィックスの利用が広がっている。
一般に、グラフィックス処理は、CPUとグラフィックスプロセッシングユニット(GPU)が連携することで実行される。CPUが汎用的な演算を行う汎用プロセッサであるのに対して、GPUは高度なグラフィックス演算を行うための専用プロセッサである。CPUはオブジェクトの3次元モデルにもとづいて投影変換などのジオメトリ演算を行い、GPUはCPUから頂点データなどを受け取ってレンダリングを実行する。GPUはラスタライザやピクセルシェーダなどの専用ハードウェアから構成され、パイプライン処理でグラフィックス処理を実行する。
最近のGPUには、プログラムシェーダと呼ばれるように、シェーダ機能がプログラム可能なものもあり、シェーダプログラミングをサポートするために、一般にグラフィックスライブラリが提供されている。オブジェクトをレンダリングする際、CPUは、GPUのハードウェアにより実行されるグラフィックスコマンドを順次生成してGPUに渡す必要がある。
特開2008−123520号公報
ネットワークを利用したアプリケーションの場合、サーバからクライアントへネットワーク経由でグラフィックスコマンドとデータが送信され、クライアント側で描画処理が行われる。ネットワークの帯域不足や通信エラーによってデータの再送が頻繁に起こると、描画処理に遅延が発生し、アプリケーションの応答性が悪くなる。特にリアルタイム性の要求されるゲームアプリケーションにおいてデータの再送が頻繁に起こると、ゲームの進行が遅延し、臨場感が損なわれることがある。
本発明はこうした課題に鑑みてなされたものであり、その目的は、ネットワークを利用して描画処理を効率的に実行することのできる技術を提供することにある。
上記課題を解決するために、本発明のある態様の描画処理装置は、描画コマンドをネットワークを介して送信する描画ライブラリ部と、描画コマンドの実行に利用される再利用可能なデータを、描画コマンドの送信タイミングとは時間をずらしてネットワークを介して送信するデータ送信管理部とを含む。
本発明の別の態様もまた、描画処理装置である。この装置は、描画コマンドの実行に利用される再利用可能なデータを、描画コマンドの受信タイミングとは時間をずらしてネットワークを介して受信するデータ受信管理部と、前記データ受信管理部により受信された再利用可能なデータをグラフィックスプロセッサにリソースとして設定するとともに、ネットワークを介して描画コマンドを受信して前記グラフィックスプロセッサに供給する描画ライブラリ部とを含む。
本発明のさらに別の態様は、描画処理システムである。この描画処理システムは、ネットワークを介して描画コマンドを送信するサーバと、前記サーバから描画コマンドを受信するクライアントとを含む描画処理システムであって、前記サーバは、描画コマンドを前記クライアントに送信するサーバ側描画ライブラリ部と、描画コマンドの実行に利用される再利用可能なデータを、描画コマンドの送信タイミングとは時間をずらして前記クライアントに送信するデータ送信管理部とを含む。前記クライアントは、前記サーバから描画コマンドの実行に利用される再利用可能なデータを受信するデータ受信管理部と、前記データ受信管理部により受信された再利用可能なデータをグラフィックスプロセッサにリソースとして設定するとともに、前記サーバから描画コマンドを受信して前記グラフィックスプロセッサに供給するクライアント側描画ライブラリ部とを含む。
本発明のさらに別の態様は、描画処理方法である。この方法は、描画コマンドをネットワークを介して送信するステップと、描画コマンドの実行に利用される再利用可能なデータを、描画コマンドの送信タイミングとは時間をずらしてネットワークを介して送信するステップと、描画コマンドの実行に利用される再利用可能なデータを受信するステップと、受信された再利用可能なデータをグラフィックスプロセッサにリソースとして設定するとともに、ネットワークを介して描画コマンドを受信してグラフィックスプロセッサに供給するステップとを含む。
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、データ構造、記録媒体などの間で変換したものもまた、本発明の態様として有効である。
本発明によれば、ネットワークを利用して描画処理を効率的に実行することができる。
実施の形態に係る描画処理システムの構成図である。 従来のグラフィックス処理装置のハードウェアの構成図である。 図1の描画処理システムによるテクスチャ登録の流れを示すシーケンス図である。 図1の描画処理システムによるテクスチャ登録の流れを示すシーケンス図である。 図1の描画処理システムによる描画処理の流れを示すシーケンス図である。 図1の描画処理システムによるテクスチャ更新の流れを示すシーケンス図である。 図5のテクスチャ更新によりテクスチャデータが置換された後の描画処理の流れを示すシーケンス図である。 図1の描画処理システムによるテクスチャ削除の流れを示すシーケンス図である。 図1のサーバの描画ライブラリの処理を示すフローチャートである。 図1のサーバの描画ライブラリの処理を示すフローチャートである。 図1のクライアントの描画ライブラリの処理を示すフローチャートである。 図1のクライアントの描画ライブラリの処理を示すフローチャートである。 図1のクライアントの描画ライブラリの処理を示すフローチャートである。 図1の描画処理システムによるテクスチャ登録の流れを示すシーケンス図である。 図1の描画処理システムによるテクスチャ登録の流れを示すシーケンス図である。 図1の描画処理システムによるテクスチャ更新の流れを示すシーケンス図である。 サーバの描画ライブラリの処理を示すフローチャートである。 クライアントの描画ライブラリの処理を示すフローチャートである。 クライアントの描画ライブラリの処理を示すフローチャートである。
図1は、実施の形態に係る描画処理システムの構成図である。サーバ100とクライアント200がネットワーク300を介して接続される。サーバ100およびクライアント200の機能ブロックはハードウエアのみ、ソフトウエアのみ、またはそれらの組み合わせによっていろいろな形で実現することができる。
サーバ100はクライアント200に描画コマンドとデータを分離して送信する。データ、特にテクスチャデータやモデルデータ、シェーダプログラムなど再利用可能な静的なデータは、描画コマンドとは分離して送信する。なお、描画コマンドを送信する際、再利用されない動的なデータを描画コマンドとともに送信することがある。
サーバ100は、アプリケーション/SDK(Software Development Kit)10、描画ライブラリ20、データ送信管理部30、低品質テクスチャ/モデルデータ記憶部40a、および高品質テクスチャ/モデルデータ記憶部40bを含む。
アプリケーション/SDK10は、描画ライブラリ20の各種描画コマンドを用いて構成されたゲームなどのアプリケーションプログラムである。低品質テクスチャ/モデルデータ記憶部40aおよび高品質テクスチャ/モデルデータ記憶部40bには、アプリケーション/SDK10が利用する、オブジェクトのポリゴンの頂点座標値、頂点カラー、法線ベクトル、UV値などのジオメトリデータ(モデルデータ)や、ポリゴン表面にマッピングするためのテクスチャが格納される。
描画ライブラリ20は、ネットワーク300を介してクライアント200に描画コマンドを送信するとともに、描画コマンドにおいて再利用可能な静的データの転送要求をデータ送信管理部30に発行する。
データ送信管理部30は、描画コマンドの実行に利用されるテクスチャデータやモデルデータなどの静的データを低品質テクスチャ/モデルデータ記憶部40aまたは高品質テクスチャ/モデルデータ記憶部40bから読み出して、クライアント200に送信する。低品質テクスチャ/モデルデータ記憶部40aには描画品質が低いテクスチャデータやモデルデータが、高品質テクスチャ/モデルデータ記憶部40bには描画品質が高いテクスチャデータやモデルデータが格納されており、データ送信管理部30は、ネットワーク300の輻輳状態やクライアント200の処理性能などに応じて、いずれかを選択することができる。たとえば、ネットワーク300が混雑している場合やクライアント200の処理性能に限界がある場合は、低解像度のテクスチャデータが選択され、ネットワーク300の帯域に余裕がある場合やクライアント200が高性能の端末である場合は、高解像度のテクスチャデータが選択される。
クライアント200は、データ受信管理部50、描画ライブラリ60、ID対応付け管理部70、グラフィックスプロセッシングユニット(GPU)80、およびテクスチャ/モデルデータキャッシュ90を含む。
描画ライブラリ60は、サーバ100から送信された描画コマンドを受信する。描画ライブラリ60は、描画コマンドの実行に利用されるテクスチャデータやモデルデータをデータ受信管理部50に要求する。
データ受信管理部50は、サーバ100から送信されたテクスチャデータやモデルデータを受信してテクスチャ/モデルデータキャッシュ90に格納する。データ受信管理部50は、描画ライブラリ60からの要求に応じて描画コマンドの実行に利用されるテクスチャデータやモデルデータを描画ライブラリ60に供給する。
ID対応付け管理部70は、描画コマンドの実行に必要なリソースの識別情報であるリソースIDを管理する。サーバ100の描画ライブラリ20は、描画コマンドの実行に利用されるリソースの仮の識別情報である仮リソースIDを生成して、クライアント200の描画ライブラリ60に送信する。クライアント200の描画ライブラリ60は、描画コマンドの実行に必要なリソースの割り当てをGPU80に要求し、GPU80によって実際に割り当てられたリソースの識別情報である実リソースIDをGPU80から受け取る。クライアント200の描画ライブラリ60は、仮リソースIDと実リソースIDを対応づけたマッピング情報をID対応付け管理部70に供給する。
ID対応付け管理部70は、仮リソースIDと実リソースIDを対応づけて管理し、描画ライブラリ60からの検索の問い合わせを受ける。描画ライブラリ60が仮リソースIDをキーとして実リソースIDの検索をID対応付け管理部70に要求すると、ID対応付け管理部70は、仮リソースIDに対応する実リソースIDを返す。
さらに、オプションとして、クライアント200の描画ライブラリ60は、サーバ100の描画ライブラリ20から、テクスチャデータやモデルデータを一意に特定する識別情報であるデータ識別IDを受信する。ID対応付け管理部70は、データ識別IDを仮リソースIDと実リソースIDに対応づけて管理する。描画ライブラリ60がデータ識別IDをキーとして仮リソースIDと実リソースIDの検索をID対応付け管理部70に要求すると、ID対応付け管理部70は、データ識別IDに対応する仮リソースIDと実リソースIDを返す。
描画ライブラリ60は、サーバ100の描画ライブラリ20から受信した仮リソースIDに対応する実リソースIDをID対応付け管理部70から取得し、テクスチャ/モデルデータキャッシュ90に格納されたテクスチャデータやモデルデータを、ID対応付け管理部70から取得した実リソースに設定することをGPU80に要求する。GPU80は、テクスチャデータやモデルデータを実リソースIDで識別されるリソースに割り当てる。
描画ライブラリ60はGPU80に描画コマンドの実行を要求し、GPU80は、実リソースIDにマッピングされたテクスチャデータやモデルデータを利用して描画コマンドを実行し、レンダリング結果をディスプレイに表示する。
図2は、従来のグラフィックス処理装置のハードウェアの構成図である。本実施の形態の描画処理システムを理解するための前提として説明する。最近のGPUは、描画命令毎にCPUが逐次データを渡して描画するのではなく、GPUのローカルメモリに事前にデータを登録して描画処理に利用することが通常である。GPU側に十分なメモリ容量があるため、事前にデータを登録しておき、描画コマンドをGPUに指定するだけでGPUのメモリに格納されたデータを読み出して利用することができるからである。
従来のグラフィックス処理装置は、ホストCPU400とGPUチップ500がバスなどのインタフェースで接続されており、ホストCPU400からGPUチップ500に描画コマンドとデータが供給される。
ホストCPU400において、アプリケーション/SDK10は、グラフィックドライバ430を通して描画コマンドをGPU510に発行するとともに、描画コマンドで利用される静的データ420をメインメモリからロードしてGPU510に供給する。GPU510は、静的データ420をGPUメモリ520に登録し、描画コマンドの実行の際にGPUメモリ520から静的データ420を読み出して利用する。
本実施の形態の描画処理システムは、GPUメモリ520に事前にデータを登録することのできるグラフィックス処理装置のアーキテクチャを前提として、ネットワーク300を介したシステムとして、ホストCPU400をサーバ100側に、GPUチップ500をクライアント200側に設けた構成である。
以下、本実施の形態の描画処理システムによるコマンドとデータを分離して送信する描画処理を説明するが、データを一意に特定するためのデータ識別IDを用いる実装と、データ識別IDを用いない実装とがあり、実施例によって両者を使い分ける必要がある。まず、[A]データ識別IDを用いる実装について説明し、その後で[B]データ識別IDを用いない実装を説明する。
[A]データ識別IDを用いる実装
図3A〜図9Cを参照して、データ識別IDを用いる実装を説明する。この場合、後述のように、仮リソースID、実リソースID、およびデータ識別IDを互いに対応づけて管理する。
図3Aおよび図3Bは、描画処理システムによるテクスチャ登録の流れを示すシーケンス図である。
図3Aを参照する。サーバ100において、アプリケーション/SDK10は、テクスチャリソース割り当て要求命令をサーバ側の描画ライブラリ20に発行する(S10)。サーバ側の描画ライブラリ20は、テクスチャリソース割り当て要求命令にしたがって仮リソースIDを生成する(S12)。
描画ライブラリ20は、テクスチャリソース割り当て要求命令の命令IDと仮リソースIDをネットワーク300を介してクライアント200に送信する(S14)。描画ライブラリ20は、アプリケーション/SDK10に仮リソースIDを返す(S16)。
このように、サーバ100の描画ライブラリ20が仮リソースIDを発行してアプリケーション/SDK10に返すことにより、クライアント200のGPU80において実リソースIDが発行されるのを待つ必要がなくなり、ネットワーク300を介することによる遅延を回避することができる。また、後述のようにリソースに割り当てるデータを差し替えるために古い実リソースIDを削除し、新しい実リソースIDを発行することから、クライアント200から返信される実リソースIDの値は変更される。このため、サーバ100の描画ライブラリ20では、変更される可能性のある実リソースIDではなく、変更されない仮リソースIDを用いてリソースを特定することが必要になる。
クライアント200において、クライアント側の描画ライブラリ60は、サーバ側の描画ライブラリ20から送信された命令IDと仮リソースIDをネットワーク300を介して受信する(S18)。描画ライブラリ60は、テクスチャリソース割り当て要求命令をGPU80に発行する(S20)。GPU80はテクスチャリソース割り当て要求命令を実行して実リソースIDを生成し、描画ライブラリ60に実リソースIDを返す(S22)。
描画ライブラリ60は、仮リソースIDと実リソースIDの対応付けを示すマッピング情報をID対応付け管理部70に供給し、ID対応付け管理部70はマッピング情報を登録する(S24)。仮リソースIDと実リソースIDを対応づけたマッピング情報は後述のステップS74、S168、およびS138において仮リソースIDをキーにして、対応する実リソースIDを検索する際に用いられる。
このように、仮リソースIDはサーバ100の描画ライブラリ20により生成され、実リソースIDはクライアント200の描画ライブラリ60の要求にしたがってGPU80により生成される。ネットワーク300による遅延を考慮すると、サーバ100の描画ライブラリ20がクライアント200の描画ライブラリ60から実リソースを受け取るように構成すると、アプリケーション/SDK10のコマンドの実行に遅れが生じる。そこで、いったんサーバ100の描画ライブラリ20が仮リソースIDをアプリケーション/SDK10に返しておき、クライアント200の描画ライブラリ60が、GPU80により発行された実リソースIDを仮リソースIDに対応づけるように構成している。
サーバ100において、アプリケーション/SDK10は、テクスチャリソースにデータを設定する命令をサーバ側の描画ライブラリ20に発行する(S26)。この命令には、仮リソースID、データ識別ID、高解像度テクスチャデータ、および低解像度テクスチャデータが引数として与えられる。
サーバ100の描画ライブラリ20は、データ識別IDをキーにしてテクスチャデータをクライアント200に送信済みであるかどうかをデータ送信管理部30に問い合わせる(S28)。データ識別IDは、テクスチャデータを一意に特定する固有情報であり、たとえば、ファイル名などである。
データ送信管理部30は、データ識別IDにもとづいて送信履歴を検索し、テクスチャデータを送信済みであるかどうかを調べる(S30)。データ送信管理部30は判定結果を描画ライブラリ20に返す(S32)。判定結果が「未送信」であれば、描画ライブラリ20は、ネットワークの送信状況をデータ送信管理部30に問い合わせる(S34)。データ送信管理部30は、判定結果を描画ライブラリ20に返す(S36)。判定結果が「帯域不足」であれば、描画ライブラリ20は、低解像度データ送信の指示をデータ送信管理部30に供給する(S38)。この送信指示には、データ識別IDと低解像度テクスチャデータが引数として与えられる。
データ送信管理部30は、低解像度データ送信を送信スレッド35に委譲する(S40)。このときもデータ識別IDと低解像度テクスチャデータが引数として与えられる。データ送信管理部30は、データ識別IDにもとづいて送信履歴を更新する(S42)。
さらに、描画ライブラリ20は、高解像データ送信の予約をデータ送信管理部30に供給する(S44)。このとき、データ識別IDと高解像度テクスチャデータが引数として与えられる。描画ライブラリ20は、命令ID、仮リソースID、およびデータ識別IDをクライアント200に送信し(S46)、命令の完了をアプリケーション/SDK10に通知する(S48)。このときデータ自体は送信されないことに留意する。実際のデータ送信は、データ送信管理部30からデータ送信を委譲された送信スレッド35が実行する。クライアント200において、描画ライブラリ60は、サーバ100から送信された命令ID、仮リソースID、およびデータ識別IDを受信する(S50)。
図3Bを参照する。サーバ100の送信スレッド35は、ネットワーク300を介してデータ識別IDと低解像度テクスチャデータをクライアント200に送信する(S52)。クライアント200の受信スレッド55はデータ識別IDと低解像度テクスチャデータを受信する(S54)。
一方、描画ライブラリ60は、データ識別IDをキーにしてデータ受信管理部50にデータの取得を要求する(S56)。データ受信管理部50は、データ識別IDにもとづいって受信履歴を検索し(S58)、判定結果を描画ライブラリ60に返す(S60)。判定の結果、データ識別IDに対応するデータが未到着であれば、データの到着を待つ(S62)。
受信スレッド55は、送信スレッド35から低解像度テクスチャデータの受信を完了すると、ローカルキャッシュへ低解像度テクスチャデータを登録し、データ識別IDにもとづいて受信履歴を更新し(S64)、描画ライブラリ60へデータの更新を通知する(S66)。
データの到着待ちであった描画ライブラリ60が再び、データ識別IDをキーにしてデータ受信管理部50にデータの取得を要求する(S68)。データ受信管理部50は、データ識別IDにもとづいて受信履歴を検索し(S70)、判定の結果、データが到着していれば、ローカルキャッシュに格納された低解像度テクスチャデータを描画ライブラリ60に供給する(S72)。
描画ライブラリ60は、仮リソースIDをキーにした実リソースIDの検索をID対応付け管理部70に要求する(S74)。ID対応付け管理部70は、仮リソースIDに対応づけられた実リソースIDを描画ライブラリ60に返す(S76)。
描画ライブラリ60は、テクスチャリソースにデータを設定する命令をGPU80に供給する(S78)。この命令には、実リソースID、低解像度テクスチャデータが引数として与えられる。これにより、実リソースIDに低解像度テクスチャデータがマッピングされる。また、描画ライブラリ60は、仮リソースID、実リソースID、およびデータ識別IDを対応づけたマッピング情報の登録をID対応付け管理部70に要求する(S80)。仮リソースID、実リソースID、およびデータ識別IDを対応づけたマッピング情報は後述のステップS102においてデータ識別IDをキーにして、対応する仮リソースIDと実リソースIDを検索する際に用いられる。
図4は、描画処理システムによる描画処理の流れを示すシーケンス図である。
サーバ100において、アプリケーション/SDK10は、仮リソースIDを引数としてテクスチャ指定命令を描画ライブラリ20に発行する(S160)。描画ライブラリ20は、テクスチャ指定命令の命令IDと仮リソースIDをクライアント200に送信し(S162)、命令の完了をアプリケーション/SDK10に通知する(S164)。
クライアント200において、描画ライブラリ60は、サーバ100から送信された命令IDと仮リソースIDを受信する(S166)。描画ライブラリ60は、仮リソースIDをキーにした実リソースIDの検索をID対応付け管理部70に要求する(S168)。ID対応付け管理部70は、仮リソースIDに対応づけられた実リソースIDを描画ライブラリ60に返す(S170)。
描画ライブラリ60は、実リソースIDを引数としたテクスチャ指定命令をGPU80に供給する(S172)。GPU80はテクスチャ指定命令を実行し、実リソースIDに割り当てられたテクスチャデータが指定される。
サーバ100において、各種描画命令を所定の引数とともに描画ライブラリ20に供給する(S174)。描画ライブラリ20は、描画命令の命令IDと引数をクライアント200に送信し(S176)、命令の完了をアプリケーション/SDK10に通知する(S178)。
クライアント200において、描画ライブラリ60は、サーバ100から送信された命令IDと引数を受信する(S180)。描画ライブラリ60は、引数とともに描画命令をGPU80に供給する(S182)。このとき、現在、GPU80において指定されている実リソースIDにマッピングされた低解像度テクスチャデータを使って描画処理が実行される。
図5は、描画処理システムによるテクスチャ更新の流れを示すシーケンス図である。図3Aで説明したように、描画ライブラリ20からデータ送信管理部30に対して、高解像度テクスチャデータ送信の予約がなされており、ネットワーク300の帯域に余裕があれば、送信スレッド35により高解像度テクスチャデータがクライアント200に送信される。
サーバ100において、送信スレッド35は、ネットワーク300の送信状況を確認する(S90)。ネットワーク300の使用可能帯域に余裕があると判定された場合、送信スレッド35は、ネットワーク300を介して、データ識別IDと高解像度テクスチャデータをクライアント200に送信する(S92)。
クライアント200において、受信スレッド55は、サーバ100から送信されたデータ識別IDと高解像度テクスチャデータを受信する(S94)。受信スレッド55は、データ識別IDをキーにして受信履歴を確認する(S96)。受信スレッド55は、データ識別IDに対して受信済みの古いデータ(ここでは低解像度テクスチャデータ)がある場合、ローカルキャッシュに格納された古いデータを高解像度テクスチャデータで更新する(S98)。受信スレッド55は、データ識別IDとともにデータの更新を描画ライブラリ60に通知する(S100)。
描画ライブラリ60は、データ識別IDをキーにした仮リソースIDと実リソースIDの検索をID対応付け管理部70に要求する(S102)。ID対応付け管理部70は、データ識別IDに対応づけられた仮リソースIDと実リソースIDを描画ライブラリ60に返す(S104)。
描画ライブラリ60は、実リソースIDを引数としてテクスチャのリソース解放命令をGPU80に供給する(S106)。これにより、GPU80は実リソースIDに対応するリソースを解放する。描画ライブラリ60は、テクスチャのリソース割り当て要求命令をGPU80に供給する(S108)。GPU80は、新しい実リソースIDを生成して描画ライブラリ60に返す(S110)。
描画ライブラリ60は、データ識別IDをキーにしてデータ受信管理部50にデータの取得を要求する(S112)。データ受信管理部50は、データ識別IDにもとづいて受信履歴を検索し(S114)、ローカルキャッシュに格納された高解像度テクスチャデータを描画ライブラリ60に供給する(S116)。
描画ライブラリ60は、テクスチャリソースにデータを設定する命令をGPU80に供給する(S118)。この命令には、新しい実リソースID、高解像度テクスチャデータが引数として与えられる。これにより、実リソースIDに高解像度テクスチャデータがマッピングされる。また、描画ライブラリ60は、仮リソースID、新しい実リソースID、およびデータ識別IDを対応づけたマッピング情報の登録をID対応付け管理部70に要求する(S120)。
上記の説明では、低解像度テクスチャデータを高解像テクスチャデータに置き換えるために、低解像度テクスチャデータがマッピングされた古い実リソースIDをいったん削除した上で、新しく生成された実リソースIDに高解像度テクスチャデータをマッピングした。GPU80の仕様によっては、実リソースIDを削除せずに、同じ実リソースIDに新しいテクスチャデータをマッピングすることでデータの置き換えが可能なものもある。その場合は、古い実リソースIDの削除、新しい実リソースIDの生成の処理は割愛することができる。
図6は、図5のテクスチャ更新によりテクスチャデータが置換された後の描画処理の流れを示すシーケンス図である。図6のテクスチャ更新後の描画処理の各ステップは図4の描画処理の対応する各ステップと同じであるが、ステップS182において、描画ライブラリ60がGPU80に描画命令を与えたとき、GPU80は、新しい実リソースIDにマッピングされた高解像度テクスチャデータを使って描画する点が異なる。
図7は、描画処理システムによるテクスチャ削除の流れを示すシーケンス図である。
サーバ100において、アプリケーション/SDK10は、仮リソースIDを引数としてテクスチャリソースの解放命令を描画ライブラリ20に発行する(S130)。描画ライブラリ20は、テクスチャリソース解放命令の命令IDと仮リソースIDをネットワーク300を介してクライアント200に送信し(S132)、描画ライブラリ20は、命令の完了をアプリケーション/SDK10に通知する(S134)。
クライアント200において、描画ライブラリ60は、サーバ100から送信された命令IDと仮リソースIDを受信する(S136)。描画ライブラリ60は、仮リソースIDをキーにした実リソースIDの検索をID対応付け管理部70に要求する(S138)。ID対応付け管理部70は、仮リソースIDに対応づけられた実リソースIDを描画ライブラリ60に返す(S140)。
描画ライブラリ60は、実リソースIDを引数としてテクスチャリソースの解放命令をGPU80に供給する(S142)。GPU80は、実リソースIDに対応づけられたテクスチャリソースを解放する。描画ライブラリ60は、仮リソースIDと実リソースIDを対応づけたマッピングの解除をID対応付け管理部70に要求する(S144)。ID対応付け管理部70は、仮リソースIDと実リソースIDのマッピングを解除する。
図8Aおよび図8Bは、サーバ100の描画ライブラリ20の処理を示すフローチャートである。
図8Aを参照する。テクスチャリソースにデータを設定する命令であれば(S200のY)、ステップS202に進み、そうでなければ(S200のN)、図8Bに示すステップS218に進む。
ステップS202において、描画ライブラリ20はデータ送信管理部30に送信履歴を問い合わせる。テクスチャデータを送信済みであれば(S204のY)、ステップS216に進む。テクスチャデータを未送信であれば(S204のN)、描画ライブラリ20はデータ送信管理部30に現在のネットワーク300の送信状況を確認する(S206)。ネットワーク300の帯域に余裕があれば(S208のY)、描画ライブラリ20はデータ送信管理部30に高解像度テクスチャデータの送信を依頼し(S210)、ステップS216に進む。ネットワーク300の帯域に余裕がなければ(S208のN)、描画ライブラリ20はデータ送信管理部30にまず低解像度テクスチャデータの送信を依頼し(S212)、さらにデータ送信管理部30に高解像度テクスチャデータのタイムシフト送信を予約し(S214)、ステップS216に進む。ここで、タイムシフト送信とは、時間をずらしてネットワーク帯域に余裕があるときにデータを送信することである。
ステップS216において、描画ライブラリ20は、クライアント200で処理を実行するために必要となる、テクスチャリソースにデータを設定する命令の命令ID、仮リソースID、およびデータ識別IDをクライアント200に送信する。
図8Bを参照する。ステップS218において、テクスチャリソース割り当て要求命令であれば(S218のY)、描画ライブラリ20は仮リソースIDを生成し(S220)、クライアント200で処理を実行するために必要となる、テクスチャリソース割り当て要求命令の命令IDおよび仮リソースIDをクライアント200に送信し(S222)、仮リソースIDをアプリケーション/SDK10に通知する(S224)。ステップS128において、テクスチャリソース割り当て要求命令でなければ(S218のN)、ステップS226に進む。
ステップS226において、テクスチャ指定命令であれば(S226のY)、描画ライブラリ20は、クライアント200で処理を実行するために必要となる、テクスチャ指定命令の命令IDおよび仮リソースIDをクライアント200に送信する(S228)。ステップS226において、テクスチャ指定命令でなければ(S226のN)、ステップS230に進む。
ステップS230において、テクスチャリソースの解放命令であれば(S230のY)、描画ライブラリ20は、クライアント200で処理を実行するために必要となる、テクスチャリソース解放命令の命令IDおよび仮リソースIDをクライアント200に送信する(S232)。ステップS230において、テクスチャリソースの解放命令以外の他の命令であれば(S230のN)、描画ライブラリ20は、その命令の命令IDおよび仮リソースIDをクライアント200に送信する(S234)。
図9A、図9Bおよび図9Cは、クライアント200の描画ライブラリ60の処理を示すフローチャートである。
図9Aを参照する。描画ライブラリ60はイベントを待ち、イベントが発生したとき、命令ID、引数等を受信する(S240)。
テクスチャリソースにデータを設定する命令であれば(S242のY)、ステップS444に進み、そうでなければ(S242のN)、ステップS258に進む。
ステップS244において、描画ライブラリ60は、データ識別IDをキーとしてデータ受信管理部50に受信履歴を問い合わせる。データを未受信であれば(S246のN)、受信待ち状態に入り(S248)、ステップS244に戻る。データを受信済みであれば(S246のY)、描画ライブラリ60はデータ識別IDに対応するデータをデータ受信管理部50から取得する(S250)。描画ライブラリ60は、ID対応付け管理部70に問い合わせて仮リソースIDを実リソースIDに変換する(S252)。描画ライブラリ60は、データ受信管理部50から取得したデータを実リソースIDを使ってGPU80に設定する(S254)。描画ライブラリ60は、仮リソースID、実リソースID、およびデータ識別IDのマッピングをID対応付け管理部70に記録し(S256)、ステップS240に戻る。
ステップS258において、テクスチャ更新イベントであれば(S258のY)、描画ライブラリ60は、テクスチャ更新処理を行う(ステップS260)。描画ライブラリ60によるテクスチャ更新処理の詳細については図9Cで説明する。ステップS258において、テクスチャ更新イベントでなければ(S258のN)、図9BのステップS262に進む。
図9Bを参照する。ステップS262において、テクスチャリソース割り当て要求命令であれば(S262のY)、描画ライブラリ60はGPU80にリソース割り当て要求を発行して実リソースIDをGPU80から取得する(S264)。描画ライブラリ60は、仮リソースIDと実リソースIDのマッピングをID対応付け管理部70に登録する(S266)。ステップS262において、テクスチャリソース割り当て要求命令でなければ(S262のN)、ステップS268に進む。
ステップS268において、テクスチャ指定命令であれば(S268のY)、描画ライブラリ60は、ID対応付け管理部70に問い合わせて仮リソースIDを実リソースIDに変換する(S270)。描画ライブラリ60は、実リソースIDを使ってGPU80に対してテクスチャを指定する(S272)。ステップS268において、テクスチャ指定命令でなければ(S268のN)、ステップS274に進む。
ステップS274において、テクスチャリソースの解放命令であれば(S274のY)、描画ライブラリ60は、ID対応付け管理部70に問い合わせて仮リソースIDを実リソースIDに変換する(S276)。描画ライブラリ60は、実リソースIDを使ってGPU80に対してリソースの解放を要求する(S278)。描画ライブラリ60は、仮リソースIDと実リソースIDのマッピングをID対応付け管理部70から削除する(S280)。
ステップS74において、テクスチャリソースの解放命令以外の他の命令であれば(S274のN)、描画ライブラリ60はGPU80にその命令IDに対応する命令を実行させる(S282)。
図9Cを参照して、ステップS260のテクスチャ更新処理を詳細に説明する。描画ライブラリ60は、データ識別IDに対応づけられた仮リソースIDと実リソースIDをID対応付け管理部70から取得する(S284)。
描画ライブラリ60は、実リソースIDを使ってGPU80に対してリソースの解放を要求する(S286)。描画ライブラリ60は、GPU80に対してリソース割り当て要求を発行して、新しい実リソースIDを取得する(S288)。
描画ライブラリ60は、データ識別IDを使ってデータ受信管理部50から更新されたデータを取得する(S290)。描画ライブラリ60は、新しい実リソースIDを使って更新されたデータをGPU80に登録する(S292)。描画ライブラリ60は、仮リソースID、実リソースID、およびデータ識別IDのマッピングをID対応付け管理部70で更新する(S294)。
[B]データ識別IDを用いない実装
図10A〜図13Bを参照して、データ識別IDを用いない実装を説明する。この場合、後述のように、仮リソースIDおよび実リソースIDを互いに対応づけて管理する。
図10Aおよび図10Bは、描画処理システムによるテクスチャ登録の流れを示すシーケンス図である。[A]データ識別IDを用いる場合の図3Aおよび図3Bに示した処理ステップと同じものには同一の符号を付している。
図10Aを参照する。サーバ100において、アプリケーション/SDK10は、テクスチャリソース割り当て要求命令をサーバ側の描画ライブラリ20に発行する(S10)。サーバ側の描画ライブラリ20は、テクスチャリソース割り当て要求命令にしたがって仮リソースIDを生成する(S12)。
描画ライブラリ20は、テクスチャリソース割り当て要求命令の命令IDと仮リソースIDをネットワーク300を介してクライアント200に送信する(S14)。描画ライブラリ20は、アプリケーション/SDK10に仮リソースIDを返す(S16)。
クライアント200において、クライアント側の描画ライブラリ60は、サーバ側の描画ライブラリ20から送信された命令IDと仮リソースIDをネットワーク300を介して受信する(S18)。描画ライブラリ60は、テクスチャリソース割り当て要求命令をGPU80に発行する(S20)。GPU80はテクスチャリソース割り当て要求命令を実行して実リソースIDを生成し、描画ライブラリ60に実リソースIDを返す(S22)。
描画ライブラリ60は、仮リソースIDと実リソースIDの対応付けを示すマッピング情報をID対応付け管理部70に供給し、ID対応付け管理部70はマッピング情報を登録する(S24)。
サーバ100において、アプリケーション/SDK10は、テクスチャリソースにデータを設定する命令をサーバ側の描画ライブラリ20に発行する(S27)。この命令には、仮リソースID、高解像度テクスチャデータ、および低解像度テクスチャデータが引数として与えられる。
描画ライブラリ20は、ネットワークの送信状況をデータ送信管理部30に問い合わせる(S34)。データ送信管理部30は、判定結果を描画ライブラリ20に返す(S36)。判定結果が「帯域不足」であれば、描画ライブラリ20は、低解像度データ送信の指示をデータ送信管理部30に供給する(S39)。この送信指示には、仮リソースIDと低解像度テクスチャデータが引数として与えられる。
データ送信管理部30は、低解像度データ送信を送信スレッド35に委譲する(S41)。このときも仮リソースIDと低解像度テクスチャデータが引数として与えられる。
さらに、描画ライブラリ20は、高解像データ送信の予約をデータ送信管理部30に供給する(S45)。このとき、仮リソースIDと高解像度テクスチャデータが引数として与えられる。描画ライブラリ20は、命令IDおよび仮リソースIDをクライアント200に送信し(S47)、命令の完了をアプリケーション/SDK10に通知する(S48)。このときデータ自体は送信されないことに留意する。実際のデータ送信は、データ送信管理部30からデータ送信を委譲された送信スレッド35が実行する。クライアント200において、描画ライブラリ60は、サーバ100から送信された命令IDおよび仮リソースIDを受信する(S51)。
図10Bを参照する。サーバ100の送信スレッド35は、ネットワーク300を介して仮リソースIDと低解像度テクスチャデータをクライアント200に送信する(S53)。クライアント200の受信スレッド55は仮リソースIDと低解像度テクスチャデータを受信する(S55)。
一方、描画ライブラリ60は、仮リソースIDをキーにしてデータ受信管理部50にデータの取得を要求する(S57)。データ受信管理部50は、仮リソースIDにもとづいて受信履歴を検索し(S59)、判定結果を描画ライブラリ60に返す(S61)。判定の結果、仮リソースIDに対応するデータが未到着であれば、データの到着を待つ(S63)。
受信スレッド55は、送信スレッド35から低解像度テクスチャデータの受信を完了すると、ローカルキャッシュへ低解像度テクスチャデータを登録し、仮リソースIDにもとづいて受信履歴を更新し(S65)、描画ライブラリ60へデータの更新を通知する(S67)。
データの到着待ちであった描画ライブラリ60が再び、仮リソースIDをキーにしてデータ受信管理部50にデータの取得を要求する(S69)。データ受信管理部50は、仮リソースIDにもとづいて受信履歴を検索し(S71)、判定の結果、データが到着していれば、ローカルキャッシュに格納された低解像度テクスチャデータを描画ライブラリ60に供給する(S73)。
描画ライブラリ60は、仮リソースIDをキーにした実リソースIDの検索をID対応付け管理部70に要求する(S74)。ID対応付け管理部70は、仮リソースIDに対応づけられた実リソースIDを描画ライブラリ60に返す(S76)。
描画ライブラリ60は、テクスチャリソースにデータを設定する命令をGPU80に供給する(S78)。この命令には、実リソースID、低解像度テクスチャデータが引数として与えられる。
描画処理システムによる描画処理の流れは図4と同じであるから説明を省略する。
図11は、描画処理システムによるテクスチャ更新の流れを示すシーケンス図である。図10Aで説明したように、描画ライブラリ20からデータ送信管理部30に対して、高解像度テクスチャデータ送信の予約がなされており、ネットワーク300の帯域に余裕があれば、送信スレッド35により高解像度テクスチャデータがクライアント200に送信される。
サーバ100において、送信スレッド35は、ネットワーク300の送信状況を確認する(S90)。ネットワーク300の使用可能帯域に余裕があると判定された場合、送信スレッド35は、ネットワーク300を介して、仮リソースIDと高解像度テクスチャデータをクライアント200に送信する(S93)。
クライアント200において、受信スレッド55は、サーバ100から送信された仮リソースIDと高解像度テクスチャデータを受信する(S95)。受信スレッド55は、仮リソースIDをキーにして受信履歴を確認する(S97)。受信スレッド55は、仮リソースIDに対して受信済みの古いデータ(ここでは低解像度テクスチャデータ)がある場合、ローカルキャッシュに格納された古いデータを高解像度テクスチャデータで更新する(S99)。受信スレッド55は、仮リソースIDとともにデータの更新を描画ライブラリ60に通知する(S101)。
描画ライブラリ60は、仮リソースIDをキーにした実リソースIDの検索をID対応付け管理部70に要求する(S103)。ID対応付け管理部70は、仮リソースIDに対応づけられた実リソースIDを描画ライブラリ60に返す(S105)。
描画ライブラリ60は、実リソースIDを引数としてテクスチャのリソース解放命令をGPU80に供給する(S106)。これにより、GPU80は実リソースIDに対応するリソースを解放する。描画ライブラリ60は、テクスチャのリソース割り当て要求命令をGPU80に供給する(S108)。GPU80は、新しい実リソースIDを生成して描画ライブラリ60に返す(S110)。
描画ライブラリ60は、仮リソースIDをキーにしてデータ受信管理部50にデータの取得を要求する(S113)。データ受信管理部50は、仮リソースIDにもとづいて受信履歴を検索し(S115)、ローカルキャッシュに格納された高解像度テクスチャデータを描画ライブラリ60に供給する(S117)。
描画ライブラリ60は、テクスチャリソースにデータを設定する命令をGPU80に供給する(S118)。この命令には、新しい実リソースID、高解像度テクスチャデータが引数として与えられる。また、描画ライブラリ60は、仮リソースIDおよび新しい実リソースIDを対応づけたマッピング情報の登録をID対応付け管理部70に要求する(S121)。
図11のテクスチャ更新によりテクスチャデータが置換された後の描画処理は図6と同じであるから説明を省略する。描画処理システムによるテクスチャ削除は図7と同じであるから説明を省略する。
図12は、サーバ100の描画ライブラリ20の処理を示すフローチャートである。テクスチャリソースにデータを設定する命令であれば(S200のY)、ステップS206に進み、そうでなければ(S200のN)、[A]データ識別IDを用いる実装の場合と同様、図8Bに示すステップS218に進む。
ステップS206において、描画ライブラリ20はデータ送信管理部30に現在のネットワーク300の送信状況を確認する。ネットワーク300の帯域に余裕があれば(S208のY)、描画ライブラリ20はデータ送信管理部30に高解像度テクスチャデータの送信を依頼し(S210)、ステップS216に進む。ネットワーク300の帯域に余裕がなければ(S208のN)、描画ライブラリ20はデータ送信管理部30にまず低解像度テクスチャデータの送信を依頼し(S212)、さらにデータ送信管理部30に高解像度テクスチャデータのタイムシフト送信を予約し(S214)、ステップS217に進む。
ステップS217において、描画ライブラリ20は、クライアント200で処理を実行するために必要となる、テクスチャリソースにデータを設定する命令の命令IDおよび仮リソースIDをクライアント200に送信する。
図13Aおよび図13Bは、クライアント200の描画ライブラリ60の処理を示すフローチャートである。
図13Aを参照する。描画ライブラリ60はイベントを待ち、イベントが発生したとき、命令ID、引数等を受信する(S240)。
テクスチャリソースにデータを設定する命令であれば(S242のY)、ステップS445に進み、そうでなければ(S242のN)、ステップS258に進む。
ステップS245において、描画ライブラリ60は、仮リソースIDをキーとしてデータ受信管理部50に受信履歴を問い合わせる。データを未受信であれば(S246のN)、受信待ち状態に入り(S248)、ステップS245に戻る。データを受信済みであれば(S246のY)、描画ライブラリ60は仮リソースIDに対応するデータをデータ受信管理部50から取得する(S251)。描画ライブラリ60は、ID対応付け管理部70に問い合わせて仮リソースIDを実リソースIDに変換する(S252)。描画ライブラリ60は、データ受信管理部50から取得したデータを実リソースIDを使ってGPU80に設定し(S254)、ステップS240に戻る。
ステップS258において、テクスチャ更新イベントであれば(S258のY)、描画ライブラリ60は、テクスチャ更新処理を行う(ステップS261)。描画ライブラリ60によるテクスチャ更新処理の詳細については図13Bで説明する。ステップS258において、テクスチャ更新イベントでなければ(S258のN)、[A]データ識別IDを用いる実装の場合と同様、図9BのステップS262に進む。
図13Bを参照して、ステップS261のテクスチャ更新処理を詳細に説明する。描画ライブラリ60は、仮リソースIDに対応づけられた実リソースIDをID対応付け管理部70から取得する(S285)。
描画ライブラリ60は、実リソースIDを使ってGPU80に対してリソースの解放を要求する(S286)。描画ライブラリ60は、GPU80に対してリソース割り当て要求を発行して、新しい実リソースIDを取得する(S288)。
描画ライブラリ60は、仮リソースIDを使ってデータ受信管理部50から更新されたデータを取得する(S291)。描画ライブラリ60は、新しい実リソースIDを使って更新されたデータをGPU80に登録する(S292)。描画ライブラリ60は、仮リソースIDおよび実リソースIDのマッピングをID対応付け管理部70で更新する(S295)。
以下、本実施の形態の描画処理システムによる実施例をいくつか説明する。
[1]実施例1 データ通信量の平均化
本実施例では、ネットワークの負荷状況を監視して、利用可能な帯域が不足する場合は、動的にデータを差し替えてデータ送信量の平均化を行う。本実施例では、リソース割り当て要求により仮リソースIDが発行された後にデータを送信するため、データ識別IDは必須ではなく、仮リソースIDと実リソースIDが対応づけられていればよいため、[A]データ識別IDを用いる実装、[B]データ識別IDを用いない実装のいずれを用いても実現することができる。
サーバ100において、ネットワーク監視装置が、送信しようとするデータによってネットワーク300の利用可能帯域を超えることが予想されると判断したとき、サーバ100のデータ送信管理部30は、データ量が少ない低解像度データを代わりにクライアント200に送信する。事前に用意された低解像度データを利用するか、もしなければ、低解像度データを動的に生成してもよい。一方、データ送信管理部30は、本来の高解像度データの送信を予約し、ネットワーク300の利用可能帯域に余裕ができたときに高解像データを送信することにより、データを更新してもよい。
クライアント200において、データ受信管理部50は、低解像度データを受信して保存し、描画ライブラリ60が低解像度データをGPU80に設定する。GPU80は、低解像度データを利用して描画処理を実行する。データ受信管理部50が、高解像データを受信したら、データを更新し、描画ライブラリ60が高解像データをGPU80に設定する。GPU80は、それ以降、高解像度データを利用して描画処理を実行する。
このように、実施例1では、サーバ100からクライアント200へコマンドとは分離して静的データを送る構成において、ネットワークの負荷が高い場合には、データ量の少ない低品質データを先に送っておき、ネットワークの負荷が低くなってから、データ量の多い高品質データを送るタイムシフト送信を行う。これにより、データ通信量を平均化してネットワークの輻輳を回避し、結果的に描画処理システム全体の応答遅延を低減することができる。特にゲームなどリアルタイム性が要求されるアプリケーションを実行する際、応答性能を高めることができる。
[2]実施例2 エラー耐性の向上
本実施例では、データ送信時にエラーが発生した場合やデータが破損した場合、クライアント200においてダミーデータを利用してアプリケーションを継続的に実行し、エラーから回復して正しいデータが送信された後、必要な描画処理を実行する。たとえば、テクスチャデータがエラーによって正しく送信されなかった場合は、クライアント200はダミーテクスチャを用いて描画処理を実行し、エラー回復後に正しいテクスチャを受信してから改めてテクスチャマッピングを行う。本実施例では、リソース割り当て要求により仮リソースIDが発行された後にデータを送信するため、データ識別IDは必須ではなく、仮リソースIDと実リソースIDが対応づけられていればよいため、上記[A]、[B]いずれの実装を用いても実現することができる。
サーバ100において、ネットワーク監視装置は、ネットワーク300のデータ送信エラーを検出する。サーバ100のデータ送信管理部30は、データの再送を予約する。
クライアント200において、描画ライブラリ60が要求するデータがデータ受信管理部50において未到着であれば、描画ライブラリ60はダミーデータをGPU80に設定する。GPU80はダミーデータを利用して描画処理を実行する。データが再送された場合、データ受信管理部50はデータを保存し、描画ライブラリ60が正しいデータをGPU80に設定する。GPU80は、それ以降、正しいデータを利用して描画処理を実行する。
このように、実施例2では、サーバ100からクライアント200へコマンドとは分離して静的データを送る構成において、ネットワーク転送によるエラーが発生した場合には、ダミーデータにより描画処理を実行し、タイムシフトさせてデータを再送する。これにより、ネットワーク転送によるエラー耐性を向上させ、結果的に描画処理システム全体の応答遅延を低減することができる。
[3]実施例3 事前のデータ転送
本実施例では、ゲームのタイトル画面表示中にテクスチャデータやモデルデータなどを事前に転送する。本実施例では、リソース割り当て要求により仮リソースIDが発行される前にデータを転送するため、データを一意に識別するデータ識別IDが必要であり、[A]データ識別IDを用いる実装により実現することができる。
サーバ100において、データ送信管理部30は、描画処理に必要なデータを事前に順次送信する。アプリケーション/SDK10が描画コマンドを発行する際、データ送信管理部30は、転送済みのデータについては送信をスキップする。
クライアント200において、データ受信管理部50は、受信したデータを保存し、描画ライブラリ60からデータを要求された場合、保存したデータを描画ライブラリ60に供給する。GPU80は、描画ライブラリ60からデータを受け取り、描画処理を実行する。
このように、実施例3では、サーバ100からクライアント200へコマンドとは分離して静的データを送る構成において、描画処理に必要なデータをタイムシフトさせて事前に送信する。これにより、ネットワーク帯域が小さくても、要求されるピーク性能が低くなるので、問題なく動作し、結果的に描画処理システム全体の応答遅延を低減することができる。
実施例1〜3では、データとコマンドとを分離して、コマンドの実行に必要なデータをタイムシフトさせて送信する。実施例1および2では、データ送信をコマンド送信の後にずらして行うが、実施例3では、データ送信をあらかじめ行う。いずれの場合であっても、データ送信のタイミングをずらすことでネットワークの輻輳時にデータ転送量の平均化を図ったり、エラー耐性の向上を図ることができる。
さらに、実施例1では、データ更新の仕組みを利用することにより、先に送信された低品質のデータを後で送信された高品質のデータで差し替えることができ、ネットワークの混雑が解消された段階で描画品質を高めることができる。実施例2においても、データ更新の仕組みにより、ネットワークの輻輳により破損した古いデータを破損していない新しいデータに差し替えることができる。
[4]実施例4 データセットの切り換え
本実施例では、クライアント性能またはネットワーク性能に応じてサーバ100からクライアント200に送信するデータセットを切り替える。本実施例では、リソース割り当て要求により仮リソースIDが発行された後にデータを送信するため、データ識別IDは必須ではなく、仮リソースIDと実リソースIDが対応づけられていればよいため、上記[A]、[B]いずれの実装を用いても実現することができる。
サーバ100において、クライアント200またはネットワーク300の性能を調べる。データ送信管理部30は、性能に応じて低解像度のデータセットまたは高解像度のデータセットを切り替えて送信する。
クライアント200において、データ受信管理部50は、サーバ100から送信されたデータを保存し、描画ライブラリ60からデータを要求された場合、保存したデータを描画ライブラリ60に供給する。GPU80は、描画ライブラリ60からデータを受け取り、描画処理を実行する。
このように、実施例4では、サーバ100からクライアント200へコマンドとは分離して静的データを送る構成において、クライアント性能またはネットワーク性能に応じてデータセットを切り替えて送信する。これにより、性能に応じてネットワーク転送量を抑えることができ、結果的に描画処理システム全体の応答遅延を低減することができる。実施例1および2とは違い、データ更新はせずに、データセットを最初から切り替えて送信するため、データ転送量をさらに抑えることができる。
[5]実施例5 データカスタマイズ
本実施例では、クライアント200が独自のテクスチャデータやモデルデータをカスタマイズして利用する。本実施例では、データの差し替えを指示するためにデータを一意に識別するデータ識別IDが必要であり、[A]データ識別IDを用いる実装により実現することができる。
クライアント200において、サーバ100からデータ受信管理部50が受信したデータに拘束されることなく、描画ライブラリ60はクライアント側で適宜カスタマイズしたデータをGPU80に設定する。GPU80は、描画ライブラリ60によって差し替えられたデータにより描画処理を実行する。
このように、実施例5では、サーバ100からクライアント200へコマンドとは分離して静的データを送る構成において、クライアント側でデータを適宜カスタマイズして利用する。これにより、ユーザがテクスチャデータやモデルデータをカスタマイズすることが許容され、柔軟な描画処理が可能になる。
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
上記の説明では、サーバ100からクライアント200へコマンドとは分離して送信するデータとして主にテクスチャデータを例に挙げて実施例を説明したが、送信するデータは頂点データなどオブジェクトのモデルデータであっても処理は同じである。
仮リソースID、実リソースID、データ識別IDのように「ID」と表記したが、APIによってはハンドル、インスタンスのポインタなどいろいろな実装形態があり、何らかの形で一意に識別可能な情報であれば、任意の識別情報を用いることができる。データ識別IDについても、ファイル名等、何らかの形でデータを一意に特定できるものであれば、任意の識別情報を用いることができる。
上記の説明では、仮リソースIDの生成はサーバ100で行われたが、クライアント200において仮リソースIDを生成してサーバ100に返すようにしてもよい。ただし、仮リソースIDを転送するための遅延が発生し、応答速度が低下する可能性がある。
10 アプリケーション/SDK、 20 描画ライブラリ、 30 データ送信管理部、 35 送信スレッド、 40a 低品質テクスチャ/モデルデータ記憶部、 40b 高品質テクスチャ/モデルデータ記憶部、 50 データ受信管理部、 55 受信スレッド、 60 描画ライブラリ、 70 ID対応付け管理部、 80 GPU、 90 テクスチャ/モデルデータキャッシュ、 100 サーバ、 200 クライアント、 300 ネットワーク、 400 ホストCPU、 410 アプリケーション/SDK、 420 静的データ、 430 グラフィックドライバ、 500 GPUチップ、 510 GPU、 520 GPUメモリ。

Claims (12)

  1. 描画コマンドをネットワークを介して送信する描画ライブラリ部と、
    描画コマンドの実行に利用される再利用可能なデータを、描画コマンドの送信タイミングとは時間をずらしてネットワークを介して送信するデータ送信管理部とを含むことを特徴とする描画処理装置。
  2. 前記データ送信管理部は、前記再利用可能なデータを描画コマンドの送信タイミングよりも後に時間をずらして送信することを特徴とする請求項1に記載の描画処理装置。
  3. 前記データ送信管理部は、描画されたときの品質が異なる2種類の前記再利用可能なデータの内、品質の低い方のデータを、前記描画コマンドの送信タイミングとは時間をずらして送信した後、ネットワークの輻輳状態に応じて前記2種類のデータの内、品質の高い方のデータを送信するかどうかを決定することを特徴とする請求項1または2に記載の描画処理装置。
  4. 前記データ送信管理部は、ネットワークの利用可能帯域または送信先の端末の処理性能に応じて、描画されたときの品質が異なる2種類の前記再利用可能なデータを切り替えて、前記描画コマンドの送信タイミングとは時間をずらして送信することを特徴とする請求項1または2に記載の描画処理装置。
  5. 描画コマンドの実行に利用される再利用可能なデータを、描画コマンドの受信タイミングとは時間をずらしてネットワークを介して受信するデータ受信管理部と、
    前記データ受信管理部により受信された再利用可能なデータをグラフィックスプロセッサにリソースとして設定するとともに、ネットワークを介して描画コマンドを受信して前記グラフィックスプロセッサに供給する描画ライブラリ部とを含むことを特徴とする描画処理装置。
  6. 前記データ受信管理部により、描画コマンドの受信タイミングよりも後に受信されるべき前記再利用可能なデータが受信されない場合、前記描画ライブラリ部は、ダミーデータをグラフィックスプロセッサにリソースとして設定することを特徴とする請求項5に記載の描画処理装置。
  7. 前記描画ライブラリ部は、描画コマンドの実行に必要なリソースを識別するための仮リソースIDを受信し、
    前記仮リソースIDと、グラフィックスプロセッサによって実際に割り当てられたリソースを識別するための実リソースIDとを対応づけて登録するID対応付け管理部をさらに含み、
    前記描画ライブラリ部は、ネットワークを介して受信した仮リソースIDに対応する実リソースIDを前記ID対応付け管理部から取得し、前記データ受信管理部が受信した再利用可能なデータを、前記ID対応付け管理部から取得した実リソースIDで識別されるリソースに設定することを前記グラフィックスプロセッサに要求することを特徴とする請求項5に記載の描画処理装置。
  8. ネットワークを介して描画コマンドを送信するサーバと、前記サーバから描画コマンドを受信するクライアントとを含む描画処理システムであって、
    前記サーバは、
    描画コマンドを前記クライアントに送信するサーバ側描画ライブラリ部と、
    描画コマンドの実行に利用される再利用可能なデータを、描画コマンドの送信タイミングとは時間をずらして前記クライアントに送信するデータ送信管理部とを含み、
    前記クライアントは、
    前記サーバから描画コマンドの実行に利用される再利用可能なデータを受信するデータ受信管理部と、
    前記データ受信管理部により受信された再利用可能なデータをグラフィックスプロセッサにリソースとして設定するとともに、前記サーバから描画コマンドを受信して前記グラフィックスプロセッサに供給するクライアント側描画ライブラリ部とを含むことを特徴とする描画処理システム。
  9. 前記サーバ側描画ライブラリ部は、描画コマンドの実行に必要なリソースを識別するための仮リソースIDを生成して前記クライアント側描画ライブラリ部に送信し、
    前記クライアント側描画ライブラリ部は、描画コマンドの実行に必要なリソースの割り当てを前記グラフィックスプロセッサに要求し、前記グラフィックスプロセッサによって実際に割り当てられたリソースを識別するための実リソースIDを前記グラフィックスプロセッサから受け取り、
    前記クライアントは、
    前記仮リソースIDと前記実リソースIDとを対応づけて登録するID対応付け管理部をさらに含み、
    前記クライアント側描画ライブラリ部は、前記サーバ側描画ライブラリ部から受信した仮リソースIDに対応する実リソースIDを前記ID対応付け管理部から取得し、前記データ受信管理部が受信した再利用可能なデータを、前記ID対応付け管理部から取得した実リソースIDで識別されるリソースに設定することを前記グラフィックスプロセッサに要求することを特徴とする請求項8に記載の描画処理システム。
  10. 描画コマンドをネットワークを介して送信するステップと、
    描画コマンドの実行に利用される再利用可能なデータを、描画コマンドの送信タイミングとは時間をずらしてネットワークを介して送信するステップと、
    描画コマンドの実行に利用される再利用可能なデータを受信するステップと、
    受信された再利用可能なデータをグラフィックスプロセッサにリソースとして設定するとともに、ネットワークを介して描画コマンドを受信してグラフィックスプロセッサに供給するステップとを含むことを特徴とする描画処理方法。
  11. 描画コマンドをネットワークを介して送信する描画ライブラリ機能と、
    描画コマンドの実行に利用される再利用可能なデータを、描画コマンドの送信タイミングとは時間をずらしてネットワークを介して送信するデータ送信管理機能とをコンピュータに実現させることを特徴とする描画処理プログラム。
  12. 描画コマンドの実行に利用される再利用可能なデータを、描画コマンドの受信タイミングとは時間をずらしてネットワークを介して受信するデータ受信管理機能と、
    前記データ受信管理機能により受信された再利用可能なデータをグラフィックスプロセッサにリソースとして設定するとともに、ネットワークを介して描画コマンドを受信して前記グラフィックスプロセッサに供給する描画ライブラリ機能とをコンピュータに実現させることを特徴とする描画処理プログラム。
JP2013076188A 2013-04-01 2013-04-01 描画処理装置、描画処理システム、および描画処理方法 Active JP5750133B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013076188A JP5750133B2 (ja) 2013-04-01 2013-04-01 描画処理装置、描画処理システム、および描画処理方法
US14/220,568 US9536274B2 (en) 2013-04-01 2014-03-20 Drawing processor, drawing processing system, and drawing processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013076188A JP5750133B2 (ja) 2013-04-01 2013-04-01 描画処理装置、描画処理システム、および描画処理方法

Publications (2)

Publication Number Publication Date
JP2014203121A true JP2014203121A (ja) 2014-10-27
JP5750133B2 JP5750133B2 (ja) 2015-07-15

Family

ID=51620342

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013076188A Active JP5750133B2 (ja) 2013-04-01 2013-04-01 描画処理装置、描画処理システム、および描画処理方法

Country Status (2)

Country Link
US (1) US9536274B2 (ja)
JP (1) JP5750133B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016212874A (ja) * 2015-05-08 2016-12-15 飛捜股▲ふん▼有限公司 アプリケーションプログラムとバーチャルマシンとの間のコミュニケーションのシステムと方法

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10065121B2 (en) * 2013-10-30 2018-09-04 Tencent Technology (Shenzhen) Company Limited Method and apparatus for recording data of network interaction protocol
US9881351B2 (en) 2015-06-15 2018-01-30 Microsoft Technology Licensing, Llc Remote translation, aggregation and distribution of computer program resources in graphics processing unit emulation
US9786026B2 (en) * 2015-06-15 2017-10-10 Microsoft Technology Licensing, Llc Asynchronous translation of computer program resources in graphics processing unit emulation
US10776979B2 (en) * 2018-05-31 2020-09-15 Microsoft Technology Licensing, Llc Virtual skeleton based on computing device capability profile

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07129783A (ja) * 1993-10-29 1995-05-19 Matsushita Electric Ind Co Ltd 画像処理装置
JP2000057370A (ja) * 1998-07-30 2000-02-25 Hewlett Packard Co <Hp> デ―タ転送速度制限環境で三次元図形デ―タを画像をレンダリングする方法および装置
JP2007006020A (ja) * 2005-06-22 2007-01-11 Konica Minolta Business Technologies Inc 画像通信装置
JP2008123520A (ja) * 2006-11-10 2008-05-29 Sony Computer Entertainment Inc グラフィックス処理装置
JP2009140378A (ja) * 2007-12-10 2009-06-25 Fujitsu Ltd データ送信装置及びデータ送信方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6167382A (en) * 1998-06-01 2000-12-26 F.A.C. Services Group, L.P. Design and production of print advertising and commercial display materials over the Internet
US20100250120A1 (en) * 2009-03-31 2010-09-30 Microsoft Corporation Managing storage and delivery of navigation images
US20100321399A1 (en) * 2009-06-18 2010-12-23 Patrik Ellren Maps from Sparse Geospatial Data Tiles
US8446411B2 (en) * 2010-06-11 2013-05-21 Microsoft Corporation Adaptive image rendering and use of imposter
US8970632B2 (en) * 2011-12-12 2015-03-03 Google Inc. Systems and methods for temporary display of map data stored in a display device high speed memory

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07129783A (ja) * 1993-10-29 1995-05-19 Matsushita Electric Ind Co Ltd 画像処理装置
JP2000057370A (ja) * 1998-07-30 2000-02-25 Hewlett Packard Co <Hp> デ―タ転送速度制限環境で三次元図形デ―タを画像をレンダリングする方法および装置
JP2007006020A (ja) * 2005-06-22 2007-01-11 Konica Minolta Business Technologies Inc 画像通信装置
JP2008123520A (ja) * 2006-11-10 2008-05-29 Sony Computer Entertainment Inc グラフィックス処理装置
JP2009140378A (ja) * 2007-12-10 2009-06-25 Fujitsu Ltd データ送信装置及びデータ送信方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016212874A (ja) * 2015-05-08 2016-12-15 飛捜股▲ふん▼有限公司 アプリケーションプログラムとバーチャルマシンとの間のコミュニケーションのシステムと方法

Also Published As

Publication number Publication date
US9536274B2 (en) 2017-01-03
JP5750133B2 (ja) 2015-07-15
US20140292783A1 (en) 2014-10-02

Similar Documents

Publication Publication Date Title
JP5750133B2 (ja) 描画処理装置、描画処理システム、および描画処理方法
CN109885377B (zh) 统一资源调度协调器及其创建虚拟机和/或容器的方法、统一资源调度系统
US10949158B2 (en) Screenshot method and apparatus
CN111522661A (zh) 一种微服务管理系统、部署方法及相关设备
CN103780679B (zh) 基于http协议的长延时远程调用方法
CN110519806A (zh) 切换方法、设备及系统
JP5049834B2 (ja) データ受信装置、データ受信方法およびデータ処理プログラム
US20150134770A1 (en) Adaptive scene complexity based on service quality
CN104079630A (zh) 一种业务服务端负载均衡方法、客户端、服务端以及系统
JP2000090027A (ja) オブジェクト管理システム、情報処理システム、オブジェクト管理プログラムを記録した記録媒体及び情報処理プログラムを記録した記録媒体
US8139074B2 (en) Memory optimized cache generation for image tiling in GIS/CAD browser applications
CN112882790A (zh) 一种基于分布式云平台的云边协同管理方法
CN111338806A (zh) 一种业务控制方法及装置
EP4177763A1 (en) Data access method and related device
CN113626192A (zh) 用于对算子节点进行扩缩容调整的方法、装置及系统
JP2006079386A (ja) ストレージエリアネットワーク管理システム及び管理装置とボリューム割当て方法並びにコンピュータ・ソフトウエア
US7350206B2 (en) Method to reduce provisioning time in shared storage systems by preemptive copying of images
CN105391755A (zh) 一种分布式系统中数据处理方法、装置及系统
WO2024027288A1 (zh) 资源渲染方法、装置、设备、计算机可读存储介质及计算机程序产品
US20110055318A1 (en) Thin client system with round trip reduction using client side code generation
CN112714146A (zh) 一种资源调度方法、装置、设备及计算机可读存储介质
CN104378396A (zh) 数据管理装置及方法
JP2018025912A (ja) 通信方法、通信プログラムおよび情報処理装置
WO2015149587A1 (zh) 一种图计算预处理的装置、方法及系统
KR20210112930A (ko) 가상 네트워크 관리 장치 및 방법

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150202

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150210

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150406

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150515

R150 Certificate of patent or registration of utility model

Ref document number: 5750133

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