特許第5763276号(P5763276)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オトイ、インコーポレイテッドの特許一覧

特許5763276クラウドソース動画レンダリングシステム
<>
  • 特許5763276-クラウドソース動画レンダリングシステム 図000002
  • 特許5763276-クラウドソース動画レンダリングシステム 図000003
  • 特許5763276-クラウドソース動画レンダリングシステム 図000004
  • 特許5763276-クラウドソース動画レンダリングシステム 図000005
  • 特許5763276-クラウドソース動画レンダリングシステム 図000006
  • 特許5763276-クラウドソース動画レンダリングシステム 図000007
  • 特許5763276-クラウドソース動画レンダリングシステム 図000008
  • 特許5763276-クラウドソース動画レンダリングシステム 図000009
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5763276
(24)【登録日】2015年6月19日
(45)【発行日】2015年8月12日
(54)【発明の名称】クラウドソース動画レンダリングシステム
(51)【国際特許分類】
   G06T 15/00 20110101AFI20150723BHJP
   G06T 15/06 20110101ALI20150723BHJP
   G06T 15/55 20110101ALI20150723BHJP
   G06T 13/20 20110101ALI20150723BHJP
【FI】
   G06T15/00 501
   G06T15/06
   G06T15/55
   G06T13/20
【請求項の数】20
【全頁数】27
(21)【出願番号】特願2014-525147(P2014-525147)
(86)(22)【出願日】2012年8月9日
(65)【公表番号】特表2014-524611(P2014-524611A)
(43)【公表日】2014年9月22日
(86)【国際出願番号】US2012050165
(87)【国際公開番号】WO2013023069
(87)【国際公開日】20130214
【審査請求日】2014年3月19日
(31)【優先権主張番号】13/208,164
(32)【優先日】2011年8月11日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】512318051
【氏名又は名称】オトイ、インコーポレイテッド
(74)【代理人】
【識別番号】110000877
【氏名又は名称】龍華国際特許業務法人
(72)【発明者】
【氏名】アルバッハ ジュリアン マイケル
【審査官】 真木 健彦
(56)【参考文献】
【文献】 特開2003−346178(JP,A)
【文献】 特開2010−092507(JP,A)
【文献】 特開平08−287290(JP,A)
【文献】 特開平08−123978(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 15/00 − 15/87
(57)【特許請求の範囲】
【請求項1】
コンピュータシステムにより、複数のクライアントへ共通のレンダリングアセットを送信する段階と、
前記コンピュータシステムにより、前記複数のクライアントのそれぞれへ、レンダー生成のための仮想眼または仮想レンズの位置を表す一意の空間位置であって、前記複数のクライアントのうちの他のクライアントに送信される空間位置とは異なる一意の空間位置を送信する段階と、
前記コンピュータシステムにより、前記複数のクライアントのそれぞれへ、前記共通のレンダリングアセットおよびそれぞれの一意の空間位置を用いてレンダーを生成するための1以上の命令を送信する段階と、
前記コンピュータシステムにより、前記複数のクライアントのそれぞれからレンダーを受信する段階と、
前記コンピュータシステムにより、受信した複数の前記レンダーから合成レンダーを生成する段階と、
前記コンピュータシステムにより、前記複数のクライアントへ前記合成レンダーを送信する段階と
を備える方法。
【請求項2】
前記複数のクライアントに送信される複数の空間位置のそれぞれはランダムに生成される、請求項1に記載の方法。
【請求項3】
前記レンダーを生成するための1以上の命令は、前記レンダリングアセットに対し前記コンピュータシステムによって送信された前記一意の空間位置からパス追跡を実行するための命令を含む、請求項1または2に記載の方法。
【請求項4】
前記レンダリングアセットは表示域状態データオブジェクト(VSDO)である、請求項1から3のいずれか1項に記載の方法。
【請求項5】
前記レンダーは、前記レンダリングアセットを含む環境の一部または全体の光マップである、請求項3または4に記載の方法。
【請求項6】
前記コンピュータシステムにより前記合成レンダーを生成する段階は、前記コンピュータシステムにより、受信した前記光マップを合成して、前記レンダリングアセットを含む前記環境の一部または全体の合成光マップを生成する段階を有する、請求項5に記載の方法。
【請求項7】
前記レンダリングアセットは表示域状態データオブジェクト(VSDO)であり、
前記レンダーは、前記パス追跡の結果として計算される拡散照明データによって補正された複数のレンダリングアセットからなるセットである、請求項3に記載の方法。
【請求項8】
前記レンダーはフレームであり、
前記1以上の命令はさらに、前記複数のクライアントが前記フレームをレンダリングするための共通の視点を含、請求項3から7のいずれか1項に記載の方法。
【請求項9】
前記コンピュータシステムにより前記合成レンダーを生成する段階は、受信した前記フレームを合成して合成フレームを生成する段階を有する、請求項8に記載の方法。
【請求項10】
複数のクライアントのうちの一のクライアントにより、サーバからレンダリングアセットと、レンダー生成のための仮想眼または仮想レンズの位置を表す一意の空間位置を受信する段階と、
前記一のクライアントにより、前記サーバから受信した前記レンダリングアセットおよび前記一意の空間位置を用いてレンダーを生成するための1以上の命令を前記サーバから受信する段階と、
前記一のクライアントにより、前記1以上の命令に従って前記レンダーを生成する段階と、
前記一のクライアントにより、生成された前記レンダーを前記サーバへ送信する段階と、
前記一のクライアントにより、合成レンダーを前記サーバから受信する段階であって、前記合成レンダーは複数のレンダーから生成され、前記複数のレンダーのそれぞれは、他のレンダーの他の空間位置とは異なるそれぞれの一意の空間位置からレンダリングされ、かつ、前記複数のレンダーのそれぞれは、共通のレンダリングアセットを含む環境の一部を有する、段階
を備える方法。
【請求項11】
前記一のクライアントにより、3D環境内における、前記サーバに依存しない、前記一のクライアントに対応する視点から、前記3D環境内における反射照明をレンダリングする段階と、
前記一のクライアントにより、レンダリングされた前記反射照明と受信した前記合成レンダーとを組み合わせる段階と、
前記一のクライアントにより、組み合わせられた前記レンダリングされた反射照明と前記受信した合成レンダーとをディスプレイへ出力する段階と
をさらに備える、請求項10に記載の方法。
【請求項12】
グラフィック処理ユニットと、
プロセッサと、
前記プロセッサにより実行されるプログラムロジックを実体的に記憶した記憶媒体と
を備え、
前記プログラムロジックは、
前記プロセッサにより実行される、複数のクライアントへ共通のレンダリングアセットを送信するための共通のレンダリングアセット送信ロジックと、
前記プロセッサにより実行される、前記複数のクライアントのそれぞれへ、レンダー生成のための仮想眼または仮想レンズの位置を表す一意の空間位置であって、前記複数のクライアントのうちの他のクライアントに送信される空間位置とは異なる一意の空間位置を送信するための空間位置送信ロジックと、
前記プロセッサにより実行される、前記複数のクライアントのそれぞれへ、前記共通のレンダリングアセットおよびそれぞれの一意の空間位置を用いてレンダーを生成するための1以上の命令を送信するための命令送信ロジックと、
前記プロセッサにより実行される、前記複数のクライアントのそれぞれからレンダーを受信するための受信ロジックと、
前記プロセッサにより実行される、受信した複数の前記レンダーから合成レンダーを生成するための合成レンダー生成ロジックと、
前記プロセッサにより実行される、前記複数のクライアントへ前記合成レンダーを送信するための合成レンダー送信ロジックと
を含む、システム。
【請求項13】
前記複数のクライアントに送信される複数の空間位置のそれぞれはランダムに生成される、請求項12に記載のシステム。
【請求項14】
前記レンダーを生成するための前記命令送信ロジックはさらに、前記レンダリングアセットに対し前記一意の空間位置からパス追跡を実行するための命令を含む、請求項12または13に記載のシステム。
【請求項15】
前記レンダリングアセットは表示域状態データオブジェクト(VSDO)である、請求項12から14のいずれか1項に記載のシステム。
【請求項16】
前記レンダーは、前記レンダリングアセットを含む環境の一部または全体の光マップである、請求項14または15に記載のシステム。
【請求項17】
前記合成レンダー生成ロジックはさらに、受信した前記光マップを合成して、前記レンダリングアセットを含む前記環境の一部または全体の合成光マップを生成する合成ロジックを含む、請求項16に記載のシステム。
【請求項18】
前記レンダリングアセットは表示域状態データオブジェクト(VSDO)であり、
前記レンダーは、前記パス追跡の結果として計算される拡散照明データによって補正された複数のレンダリングアセットからなるセットである、請求項14に記載のシステム。
【請求項19】
前記レンダーはフレームであり、
前記1以上の命令はさらに、前記複数のクライアントによって前記フレームをレンダリングするための共通の視点を含、請求項12から18のいずれか1項に記載のシステム。
【請求項20】
前記合成レンダー生成ロジックはさらに、前記プロセッサにより実行される、受信した前記フレームを合成して合成フレームを生成する合成ロジックを含む、請求項19に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は一般的に、アプリケーションの分散型クラウドソースグラフィックレンダリングに関する。本願発明はより詳細には、1以上の接続されたクライアントのグラフィック処理ユニットを利用して拡散照明レンダリングを実行し、1以上の接続されたクライアントからレンダリングされたシーンを受信し、受信したシーンから合成シーンを生成し、合成シーンを全ての接続されたクライアントに送信するサーバに関する。
【背景技術】
【0002】
クライアント−サーバアーキテクチャは一般的に、「サービスプロバイダ」として見なされ得るサーバと、「サービス要求者」または「サービス消費者」として見なされ得るクライアントとの間でタスクまたは作業負荷を分担する分散型コンピューティングアーキテクチャである。多くの場合、サーバとクライアントとはコンピュータネットワークを介して接続され、様々なタイプのデータが、個々のサーバと個々のクライアントとの間でコンピュータネットワークを介して双方向的に送信される。従来、サーバは通常、クライアントよりも多くのリソースおよび高い性能を有する。サーバは、クライアントのために特定のタスクを実行する(つまり、クライアントにサービスを提供する)など、自身のリソースを1以上のクライアントと共有し得る。典型的にはサーバはクライアントよりも多くのリソースを有するので、サーバは、タスク、特にリソースを多く要するタスクを、クライアントよりもかなり速く完了し得る。
【0003】
サーバとクライアントとの間で交換されるデータは、何らかの適したデータフォーマットで表現され得、何らかの適した通信プロトコルを用いて送信され得る。例えば、アプリケーションがサーバ上でクライアントのために実行される場合、アプリケーションの出力は、HyperText Markup Language(HTML)文書またはExtensible Markup Language(XML)文書など構造化文書を用いて表現され得る。サーバは、アプリケーションの出力を表現するデータを含むHTML文書またはXML文書を、サーバとクライアントとの間のHyperText Transfer Protocol(HTTP)接続を介してクライアントへ送信し得る。HTML文書またはXML文書を受信するとクライアントは、当該文書を実行し、クライアントが実行するウェブブラウザなどにおいて、HTML文書またはXML文書を用いてローカルにアプリケーションの出力をレンダリングし得る。
【発明の概要】
【課題を解決するための手段】
【0004】
本開示は一般的に、1以上の接続されたクライアントにレンダリングタスクを分散させるクラウドソースグラフィックレンダリングシステムに関する。1以上の接続されたクライアントはレンダリングされた出力をサーバへ送信し返し、サーバは、1つのレンダリングされた出力を形成するようクライアントからの出力を合成し、全ての接続されたクライアントへ送信し表示させる。
【0005】
サーバ側グラフィックレンダリングにおいて、1つのサーバは、グラフィックオブジェクトをレンダリングし、出力をクライアントへストリーミングするグラフィック処理ユニット(GPU)のアレイを含み得る。しかし、複雑な3D環境のレンダリングはプロセッササイクルの面でコストが高く、関連付けられたクライアントへレンダリングされたフレームまたはシーンを十分に提供するには、追加のGPUまたはサーバを追加しなければならない。よって、従来のサーバ側グラフィックレンダリングは、拡張性に関する大きな課題を有している。プロバイダがより多くの数のクライアントの要求に応えるべくサーバまたはGPUを追加することによりコストは非常に高くなり得る。反対に、サーバまたはGPUインフラストラクチャの過剰投資は、要求が能力以下となった場合に、利用されないままとなってしまう部分が多い。
【0006】
加えて、近年、比較的複雑な3Dレンダリングを迅速に実行可能なGPUを有する消費者向けのデバイスの数は劇的に増えてきている。例えば、1分足らずで3Dシーンのパス追跡を実行可能なGPUを有するパソコンの数は2000年初頭には少数に限られていたかもしれないが、現在では、4000万台のパソコンがそのような能力のGPUを有している。よって、これらのクライアント側のGPUを活用し、実質的に任意のフレームまたは環境のレンダリングをクラウドソーシングし、サーバからクライアントへグラフィックレンダリングタスクを移行することが望ましい。
【0007】
一実施形態において、コンピュータシステムは、それぞれが遠隔のクライアントのアプリケーションに対応する複数のアプリケーションインスタンスを提供する。コンピュータシステムは、アプリケーションインスタンスが提供される遠隔のクライアントのアプリケーションのそれぞれとのネットワーク接続を維持する。以下にさらに説明するように特定の実施形態において、アプリケーションインスタンスはソフトウェアスタブである。特定の実施形態において、コンピュータシステムはレンダリングアセットを、レンダリングに寄与する十分に性能の高いGPUを有するコンピュータのクライアントのアプリケーションに送信する。以下にさらに説明するように特定の実施形態において、コンピュータシステムは表示域状態データオブジェクト(VSDO)の形態のレンダリングアセットを送信する。また特定の実施形態において、コンピュータシステムは、クラウドソースレンダリング処理に参加している各クライアントへ一意の空間位置を送信し、または割り当てる。特定の実施形態において、クライアントデバイスは受信したレンダリングアセットおよび一意の視点を利用して、フレームまたは環境をレンダリングする。特定の実施形態において、クライアントデバイスはパス追跡を実行して、シーンまたは環境の拡散照明をレンダリングする。自身に割り当てられたレンダリングタスクを完了した後、参加している各クライアントデバイスは、自身からのレンダリングされた出力をコンピュータシステムへ送信し返す。特定の実施形態において、レンダリングされた出力は特定の視点からのフレームである。特定の実施形態において、レンダリングされた出力は、環境の拡散照明の光マップである。特定の実施形態において、レンダリングされた出力は修正されたVSDOである。レンダリングされた出力を受信するとコンピュータシステムはレンダリングされた合成出力を生成し、クラウドソースレンダリング処理に参加しなかったクライアントを含む、接続されたクライアントの全てに送信し返す。
【0008】
特定の実施形態において、接続された各クライアントは、全く同じ視点からシーンを見、コンピュータシステムは、特定の視点からの合成フレームを、接続された各クライアントへ送信し、表示されるようにする。特定の実施形態において、接続された各クライアントは、異なる視点からシーンを見、コンピュータシステムは個々のクライアントが自身のレンダリングエンジンで用いるよう合成レンダリングアセットを送信する。特定の実施形態において、レンダリングアセットは、環境の拡散照明を表す光マップデータを含む光マップまたはVSDOである。よって、クライアントは、高品質のラジオシティ照明(radiosity lighting)を維持しつつ、レンダリングアセットを用いて複数の異なる視点からシーンをレンダリングし得る。特定の実施形態において、クライアントは、ローカルに、環境のクラウドソーシングされた拡散照明を含む受信したレンダリングアセットに関連して、変化の速い反射照明をレンダリングする。よって、高性能のGPUを有するクライアントノードの数が多くなるにつれ、何らかの特定のシーンが、より迅速に、またはより高いグラフィック品質でレンダリングされ得る。
【0009】
実施形態において、合成レンダーを生成するための方法が開示される。方法は、プロセッサにより、共通のレンダリングアセットと、他の送信される空間位置とは異なる一意の空間位置と、共通のレンダリングアセットおよび自身の一意の空間位置を用い、または、共通のレンダリングアセット、および、1以上のクライアントのそれぞれに送信された各一意の空間位置を用いてレンダーを生成するための1以上の命令とを1以上のクライアントへ送信する段階を備える。実施形態において、各一意の空間位置はランダムに生成される。
【0010】
実施形態において、レンダーを生成するための命令は、一意の空間位置からレンダリングアセットに対してパス追跡を実行するための命令を含み、レンダーは、レンダリングアセットを含む環境の一部または全体の光マップである。実施形態において、レンダーはフレームであり、1以上の命令はさらに共通の視点を含み、当該共通の視点からフレームをレンダリングする。実施形態において、レンダリングアセットは表示域状態データオブジェクト(VSDO)であり、レンダーは、パス追跡の結果として計算される拡散照明データにより補正された複数のレンダリングアセットからなるセットである。
【0011】
方法はさらに、プロセッサにより、レンダーを1以上のクライアントのそれぞれから受信する段階と、プロセッサにより、受信したレンダーから合成レンダーを生成する段階とを備える。このように生成された合成レンダーは、プロセッサにより、1以上のクライアントへ送信される。実施形態において、プロセッサにより合成レンダーを生成する段階は、プロセッサにより、受信した光マップを合成して、レンダリングアセットを含む環境の一部または全体の合成光マップを生成する段階を有する。実施形態において、プロセッサにより合成レンダーを生成する段階はさらに、受信したフレームを合成して合成フレームを生成する段階を備える。
【0012】
合成レンダーを受信する方法が開示される。方法は、プロセッサにより、レンダリングアセットと、一意の空間位置と、受信したレンダリングアセットおよび一意の空間位置を用いてレンダーを生成するための1以上の命令とをサーバから受信する段階を備える。方法はさらに、プロセッサにより、1以上の命令に従ってレンダーを生成する段階と、プロセッサにより、生成されたレンダーをサーバへ送信する段階と、プロセッサにより、合成レンダーをサーバから受信する段階とを備える。実施形態において、方法はさらに、プロセッサにより、サーバに依存しない視点から反射照明をレンダリングする段階と、プロセッサにより、レンダリングされた反射照明と受信した合成レンダーとを組み合わせる段階と、プロセッサにより、組み合わせられレンダリングされた反射照明と受信した合成レンダーとをディスプレイへ出力する段階とを備える。
【0013】
実施形態において、合成レンダーを生成するためのシステムが開示される。システムは、グラフィック処理ユニットと、プロセッサと、プロセッサにより実行されるプログラムロジックを実体的に記憶するための記憶媒体とを備える。実施形態において、プログラムロジックは、プロセッサにより実行される、共通のレンダリングアセットを1以上のクライアントへ送信する共通のレンダリングアセット送信ロジックと、プロセッサにより実行される、他の送信される空間位置とは異なる一意の空間位置を1以上のクライアントのそれぞれへ送信する空間位置送信ロジックと、プロセッサにより実行される、共通のレンダリングアセットおよび自身の一意の空間位置を用いてレンダーを生成するための1以上の命令を1以上のクライアントのそれぞれへ送信する命令送信ロジックとを備える。実施形態において、プログラムロジックはさらに、プロセッサにより実行される、1以上のクライアントのそれぞれからレンダーを受信する受信ロジックと、プロセッサにより実行される、受信したレンダーから合成レンダーを生成する合成レンダー生成ロジックと、プロセッサにより実行される、合成レンダーを1以上のクライアントへ送信する合成レンダー送信ロジックとを備える。
【0014】
実施形態において、合成レンダーを受信するためのシステムが開示される。システムは、グラフィック処理ユニットと、プロセッサと、プロセッサにより実行されるプログラムロジックを実体的に記憶するための記憶媒体を備える。実施形態において、プログラムロジックは、プロセッサにより実行される、レンダリングアセットと、一意の空間位置と、受信したレンダリングアセットおよび一意の空間位置を用いてレンダーを生成するための1以上の命令とをサーバから受信するための受信ロジックを備える。プログラムロジックはさらに、プロセッサにより実行される、1以上の命令に従ってレンダーを生成するためのレンダー生成ロジックと、プロセッサにより実行される、生成されたレンダーをサーバに送信するための送信ロジックと、プロセッサにより実行される、サーバから合成レンダーを受信するための合成レンダー受信ロジックとを備える。実施形態において、システムはさらに、プロセッサにより実行される、サーバに依存しない視点から反射照明をレンダリングための照明レンダリングロジックを備える。またシステムは、プロセッサにより実行される、レンダリングされた反射照明と受信した合成レンダーとを組み合わせるための組み合わせロジックと、プロセッサにより実行される、組み合わせられレンダリングされた反射照明および受信した合成レンダーをディスプレイへ出力するための出力ロジックとを備える。
【0015】
実施形態において、レンダーを生成する命令送信ロジックはさらに、一意の空間位置からレンダリングアセットのパス追跡を実行するための命令を備え、レンダーは、レンダリングアセットを含む環境の一部または全体の光マップである。実施形態において、合成レンダー生成ロジックはさらに、受信した光マップを合成してレンダリングアセットを含む環境の一部または全体の合成光マップを生成する合成ロジックを備える。実施形態において、合成レンダー生成ロジックはさらに、プロセッサにより実行される、受信したフレームを合成して合成フレームを生成する合成ロジックを備える。
【0016】
それぞれの特徴が組み合わせられ得るこれらの実施形態、および他の実施形態は、以下の詳細な説明、および添付の図面を参照することにより当業者に明らかとなるであろう。
【図面の簡単な説明】
【0017】
図1】クラウドソースグラフィックレンダリングシステムを実装する例示的なクライアント−サーバシステムを示す。
図2】一定の視点からのフレームのレンダリングを複数のクライアントに分散させる方法を示す。
図3】任意のシーンの、例示的な受信されるクライアントフレームを示す。
図3A図3の受信されるクライアントフレームを合成することにより生成される合成フレームを示す。
図4】環境のレンダリングを複数のクライアントに分散させる方法を示す。
図5図4のクライアントの例示的な表示出力を示す。
図6】例示的なネットワーク環境を示す。
図7】例示的なコンピューティングシステムを示す。
【発明を実施するための形態】
【0018】
本開示について、添付の図面に示される本願発明に係るいくつかの実施形態を参照し詳細に説明する。以下の説明において、本開示を深く理解いただけるよう多数の特定的な詳細が明記される。しかし、本開示はこれらの特定的な詳細のいくつか、または全てを用いずとも実施され得ることが当業者には明らかであろう。他の例においては、本開示を不必要に曖昧にしないように、周知の処理段階および/または構造について詳細に説明していない。加えて、特定の実施形態に関連して本開示を説明するが、この説明は、説明される実施形態によって本願発明を限定するよう意図されていないことを理解されたい。むしろ説明は、代替例、変形例、および同等物を、添付の請求項により規定される本開示の思想および態様の範囲に含まれるものとして網羅するよう意図されている。
【0019】
複数のデバイス、コンポーネント、モジュールなどを含みうるシステムに関して様々な態様および特徴を説明する。様々なシステムが追加のデバイス、コンポーネント、モジュールなどを含みうる、および/または、図面と関連して説明されるデバイス、コンポーネント、モジュールなどの全ては含み得ないことを理解されたく、またそのことを認識されたい。これらのアプローチの組み合わせも用いられ得る。
【0020】
クライアント−サーバアーキテクチャによりサーバは、自身のリソースを1以上のクライアントと共有することが可能になる。そのようなアーキテクチャは様々な利点を有する。例えが、典型的にはサーバはクライアントよりも多くのリソース(例えばプロセッサまたはメモリ)およびより高い性能を有するので、サーバはクライアントよりも速くタスクを完了し得る。そのような性能差は、タスクがより多くのリソースを要求する場合、またはクライアントが限られた量のリソースしか有さない場合において特に顕著になる。同時に、サーバがクライアントの代わりに、またはクライアントのためにタスクを実行する間、クライアントのリソースが解放され得、クライアントがローカルに実行する必要があるタスク(例えば、クライアントのユーザと相互作用するタスク)など他のタスクを実行し得る。
【0021】
サーバで実行されるのに適し得るタスクのタイプとしては、クライアントへ送信される動画出力としての、サーバにより提供されるアプリケーションのレンダリングがある。コンピュータグラフィックの分野において、レンダリングは、通常コンピュータプログラムを用いて、モデルから画像を生成する処理と見なされ得る。通常、モデルは、3次元(3D)オブジェクトの記述であり、厳密に規定された言語またはデータ構造で表現され得る。モデルは、ジオメトリ、視点、テクスチャ、照明、陰影、運動、および他の適したタイプの情報を含みうる。モデルのレンダリングにより形成される画像は、ピクセルの集合により形成されるデジタル画像またはラスターグラフィック画像であり得る。本開示は、レンダリングの概念を、アプリケーションの何らかの出力を表す画像の生成にまで拡大する。レンダリングは、3Dデータと同様に2次元(2D)データを含む何らかのデータに基づいて実行され得る。3Dモデルに基づいた画像の生成に加えて、特定の実施形態においては、これらに限定される訳ではなくあくまで例としてではあるが、ウェブブラウザアプリケーション、ワード処理アプリケーション、スプレッドシートアプリケーション、マルチメディアアプリケーション、科学および医療向けアプリケーション、およびゲームアプリケーションなどのアプリケーションの出力を表す画像をレンダリングし得る。
【0022】
しかし、前述したように、グラフィックレンダリングが純粋にサーバ側で行われるアーキテクチャは、追加のサーバおよびGPUのコストのために拡張性の面で劣る。加えて、ピーク需要に対応するべく適切に追加されたサーバ/GPUインフラストラクチャを有するシステムは、オフピーク時において大幅に十分に活用されないことが多く、サーバまたはGPUのリソースが無駄になる、または無意味となる。
【0023】
ピアツーピアアーキテクチャはピア間でタスクを分担するための、当分野において周知の技術である。ピアツーピアネットワークは、より多くのノードがネットワークに参加するので、システムの能力およびリソース全体を増加させられるという利点がある。例えば、BitTorrentネットワークにおいて、より多くのノードがファイルを共有または「シード(seed)」すれば、同ファイルを要求する他のノードへのファイル送信がより速くなる。ピアツーピアネットワークはファイル共有アプリケーションおよびコンテンツストリーミング配信アプリケーションにおいて普及しているが、それらの分散的な性質により、レイテンシーが高い点で不利であり、それにより一般的に、グラフィックレンダリングなどのリアルタイム処理には適していない。本開示は、集中型サーバベースサーバモデルを提供する。集中型サーバベースサーバモデルはグラフィックレンダリングタスクをクライアントノードに移行するので、グラフィックレンダリングの分野におけるピアツーピアアーキテクチャの利点の多くを享受することが出来る。
【0024】
さらに、マルチGPUレンダリングの既存の方法は、拡張性の面で劣る。典型的には、マルチGPUシステムは、スプリットフレームレンダリング(SFR)またはオルタナティブフレームレンダリング(AFR)という2つの方法のうち一方を用いる。SFRにおいて、各GPUは各フレームの一部をレンダリングする。しかし、処理の配分が不均一であることが多く、フレームのある部分が複雑なジオメトリを含み、フレームの他の部分が比較的単純なジオメトリを含むなどといったことが起こりうる。多くの分散アルゴリズムはある部分のグラフィック的な複雑さを考慮し得るが、GPUの数が多くなるにつれ、分散アルゴリズムはより複雑になり、それ自体がプロセッサ集約的になってしまう。AFRは、完全なフレームのレンダリングをラウンドロビン式に個々のGPUに分散させることを伴う。しかしこの技術は、前のフレームに先立つ次のフレームレンダリングに起因するより大きなレイテンシーのために拡張性の面で劣る。加えて、GPUの数がフレームレートに対する大きな比率に近づくと、次のフレームがどのようなものかを次のGPUが時間的に先に知ることは論理的に不可能である。
【0025】
本開示の一実施形態は、マルチGPU拡張性に関する課題を、任意の3D環境の拡散照明のレンダリングにパス追跡を用いることにより解決する。パス追跡は、オブジェクトで幾度か跳ね返る、またはオブジェクトを通る仮想カメラからの複数の光線を追跡することにより、光の物理的挙動を可能な限り細かくシミュレートするよう試みるレンダリング技術である。パス追跡により提供される画像品質は一般的に、従来のレンダリング方法を用いて生成される画像の品質よりも優れているが、計算的な要求がかなり大きくなるというマイナス面がある。パス追跡は当然ながら、ソフトシャドウ、被写界深度、被写体ぶれ、コースティック、アンビエントオクルージョン、および間接照明など、他の方法(光線追跡またはスキャンラインレンダリング)に特定的に追加されるべき多くの効果をシミュレートする。その正確さおよび偏りのない性質により、パス追跡は、他のレンダリングアルゴリズムの品質を検証する際に基準画像を生成するのに用いられる。しかし、仮定的な照明のパスの数は限りないので、レンダリングされたシーンまたはフレームが「完全に照明が当てられた」画像に集約される前に、比較的多数のサンプルを計算する必要がある。パス追跡されたサンプルの生成を分散させることにより、本願発明の実施形態は、サーバ側で行われるグラフィックレンダリングに従来より伴っていた高いコストを生じることなく、限りない拡張性およびピアツーピアアーキテクチャの利点を提供する、つまり、クラウドソースレンダリング処理により多くのノードが参加して、より速いレンダリング速度、および出力のより高い品質を提供する分散型グラフィックレンダリングシステムを開示する。
【0026】
図1は、本願発明の特定の実施例が実施され得る例示的なネットワーク環境を示す。図1が示すように、本願発明の特定の実施例は、インターネットを含みうるネットワーククラウド60に操作可能に結合された動画送信システム(VTS)20を備えるネットワーク環境において実施され得る。ネットワーククラウド60は一般的に、1以上の相互接続されたネットワークを表し、それらネットワーク上で、本明細書において説明されるシステムおよびホストは通信を行うことが出来る。ネットワーククラウド60は、パケットベースの広域ネットワーク(インターネットなど)、プライベートネットワーク、無線ネットワーク、衛星ネットワーク、セルラーネットワーク、ページングネットワークなどを含みうる。ネットワーククラウド60内のネットワークのうちいくつかは、回線交換ネットワークでありうる。ネットワーク60を含むコンピュータネットワーク環境は、(例えば)TCP/IPプロトコル、および/または他の適したプロトコルを採用するパケットベースの通信環境であり得、複数の相互接続されたデジタルパケット送信局またはルーティングノードを有する。クライアントノード82、84は、ネットワークサービスプロバイダまたは他の何らかの適した手段を介してネットワーク環境に操作可能に接続されている。クライアントノード82、84は、パソコンまたは携帯電話、或いは、ラップトップコンピュータ、パーソナルデジタルアシスタント(PDA)など他のタイプのモバイルデバイスでありうる。クライアントノード82は、任意のフレームまたはシーンをレンダリングすることが要求されるレンダリングタスクのいくつか、または全てを実行可能なGPUを含む。クライアントノード84はPDA、携帯電話、タブレットPC、ポータブルゲームシステムなど低電力デバイスを含み得、シンクライアントを有し得、クラウドソースレンダリングシステムに参加するのに十分なグラフィック処理能力が不足している。
【0027】
動画送信システム20は、1以上の仮想世界、1以上の動画またはムービー、またはクライアントノード82、84上での表示のためにレンダリングされ得る何らかの3D環境を提供するネットワークアドレス可能なシステムである。動画送信システム20はウェブサイトおよびサーバ機能を含み得る。ユーザはそこから、特定されたウェブページ、動画、および他のコンテンツをコンピュータネットワークを介して要求および受信し得る。
【0028】
特定の実施例において、動画送信システム20は1以上の物理サーバ22および1以上のデータ記憶部24を備える。1以上の物理サーバ22は、ルーター26を介してコンピュータネットワーク60に操作可能に接続されている。1以上の物理サーバ22は、クライアントノード82、84から要求を受信する、および、それに応答してクライアントノード82、84へデータを送信するなど、利用可能なコンテンツをユーザがブラウジング出来るようにする機能を提供する。ルーター26からネットワーククラウド60への接続は、レンダリングされた出力の複数のクライアントノード82、84からの受信、およびレンダリングされた合成出力のクライアントノード82、84への送信を同時に行うことをサポートするのに十分な帯域幅を有しているべきである。動画送信システム20は受信機および放送機の両方として動作し、ルーター26におけるパイプ(pipe)はそのような機能をサポートするのに十分に大きくなくてはならず、つまり高帯域幅でなくてはならない。一実施例において、1以上の物理サーバにより提供される機能は、ウェブまたはHTTPサーバ、RTSPサーバなどを含みうる。
【0029】
上述した物理サーバ22は、動画送信システム20をサポートし実装するための機能を提供する。 一実施例において、データ記憶部24はデジタルコンテンツデータオブジェクト、ユーザ情報、および他のメディアアセットなど動画コンテンツを記憶し得る。コンテンツデータオブジェクトまたはコンテンツオブジェクトは特定の実施例において、典型的にはデータファイルまたは記録に記憶される、または具体化されるデジタル情報の個別のアイテムである。コンテンツオブジェクトは、テキスト(例えば、ASCII、SGML、HTML)、画像(例えば、jpeg、tif、およびgif)、グラフィック(ベクトルベース、またはビットマップ)、音声、動画(例えばmpeg)、または他のマルチメディア、およびこれらの組み合わせを含む多くの形態をとりうる。コンテンツオブジェクトデータも、実行可能コードオブジェクト、オブジェクト、またはアセット定義などを含みうる。構造的には、コンテンツデータ記憶部24には、大きな区分のデータ記憶装置および制御システムが付随し得る。特定の実施例において、コンテンツデータ記憶部24は、データベースサーバ、大容量記憶媒体、メディアライブラリーシステムなどのコンポーネントを含む何らかの適した物理システムにより実装され得る。
【0030】
特定の実施形態において、クラウドソースレンダリングシステムはソフトウェアプログラムを介して実装される。特定の実施形態において、以下において「ソフトウェアスタブ」、または単に「スタブ」と呼ぶソフトウェアプログラムは、クライアントノード82、84においてインストールされ実行され得る。特定の実施形態において、スタブはクライアントノード82、84と動画送信システム20との間にネットワーク接続を確立し、クライアントノード82、84へのネットワーク接続を介して動画送信システム20からコンピュータソフトウェアプログラムをダウンロードし得る。特定の実施形態において、動画送信システム20からクライアントノード82/84へダウンロードされた1つのソフトウェアの実行可能コードは、ネットワーク接続を介してVTS20からクライアント82/84に送信されるデータストリームに埋め込まれ得る。データストリームを受信すると、スタブは当該1つのソフトウェアの実行可能コードを抽出し、クライアントで実行するためにクライアント82/84のランダムアクセスメモリ(RAM)へ直接ロードし得る。当該1つのソフトウェアはクライアントの永続的な記憶装置(例えばハードドライブ)には保存またはインストールされない。当該1つのソフトウェアがクライアント82/84上でのその実行を完了すると、当該1つのソフトウェアの実行可能コードがロードされたRAMスペースが解放され、当該1つのソフトウェアはもはやクライアント82/84上には存在しなくなり得る。特定の実施形態において、スタブプログラムは、クラウドソースグラフィックレンダリングシステムに参加可能なクライアントノード82にレンダリングエンジンまたはアプリケーションをインストールし、クラウドソースレンダリングに参加するために要求される処理能力が不足するクライアントノード84にはビュアーアプリケーションのみをインストールする。
【0031】
特定の実施形態において、スタブは、クライアント82/84上に保存またはインストールされるスタンドアロン型のソフトウェアプログラムであり得、または、クライアント82/84にインストールされる、ウェブブラウザへのプラグインまたはアドオンでありうる。スタブは、コンピュータソフトウェアプログラムを個々のコンピュータシステムに分散させるための既存の何らかの適した方法(例えばCD、DVD、ネットワークダウンロードなど)を用いてクライアント82/84に保存またはインストールされ得る。特定の実施形態において、スタブは、小さな(つまりサイズが小さい)ソフトウェアであり得、クライアントノード82/84の記憶容量をそれ程使わない。スタブがスタンドアロン型のソフトウェアプログラムの場合には自身で実行することが出来、スタブがプラグインまたはアドオンソフトウェアの場合にはウェブブラウザを介して実行され得る。
【0032】
クライアント82/84上でコンピュータソフトウェアプログラムをダウンロードおよび起動するのにスタブを用いることにより、スタブだけがクライアント82/84上に保存またはインストールされる必要があることになる。他のソフトウェアは、クライアント82/84上で保存またはインストールされる必要なくクライアント82/84上でダウンロードおよび起動され得、このことにより、クライアント82/84の利用される記憶容量を低減し得る。さらに、1つのソフトウェアが、クライアントノード82/84のうち1つでの実行の直前にダウンロードされるので、特定の実施形態においては、当該1つのソフトウェアがダウンロードおよび起動される度に、当該ソフトウェアの最新のバージョン(または何らかの所望されるバージョン)を提供することが可能となる。
【0033】
ソフトウェアスタブに関する詳細な説明については、2009年11月23日に提出された、発明の名称が「Stream−Based Software Application Delivery and Launching System」である、出願人が共通する米国の一般の特許出願、米国特許出願第12/624,133号を参照されたい。当該特許出願はその全体が参照により本明細書に組み込まれる。
【0034】
図1は集中型のクライアント−サーバアーキテクチャを示しているが、本開示は、複数のクライアントノード間で通信を行うためのネットワークトポロジーの何れの方式もその範囲に含む。特定の実施形態において、クライアントノードはピアツーピアネットワークとして構成され得、この場合、ある特定のノードが中心ノードとして指定され、VTS20と同じ機能を実質的に実行する。特定の実施形態において、リングトポロジーが利用され得、特定のピアが、VTS20と実質的に同じ機能を実行するリングリーダとして指定され得る。本開示は、バス、スター、メッシュ、およびツリーネットワークトポロジーを含むがこれらに限定されない、グラフィック処理をピアノードに分散させるための何れの適したネットワークトポロジーもその範囲に含む。
【0035】
図2は、1つのフレームの同じ視点からのレンダリングを各クライアントにクラウドソースする例示的な方法を示す。例えば、図2の方法は、例えばトイストーリー3などコンピュータにより生成されたムービーなどの同じムービーまたは動画を接続されたクライアントノード82、84の全てが見ている場合に利用され得る。VTS20により実行される動作は図2の左半分に示されており、参加しているノード82の動作は、右半分の上側に示されており、全てのクライアントノード82、84の動作は、右半分の下側に示されている。
【0036】
段階201において、VTS20はフレームをレンダリングするために必要なレンダリングアセットにアクセスする。特定の実施形態において、レンダリングアセットは、データ記憶部24に記憶され得、後に、データ記憶部24から読み取られ得る。特定の実施形態において、レンダリングアセットはVTS20により動的に生成され得る。特定の実施形態において、レンダリングアセットは任意の環境、シーン、またはフレーム内の実際の3Dワイヤフレームモデルであり得る。しかし、この方法は帯域幅を多く要し、3Dオブジェクトの圧縮を活用しない。特定のオブジェクトにおいて、レンダリングアセットはカメラ視点からの立方体マップである。特定の実施形態において、レンダリングアセットはVSDOと呼ばれる、ピクセルまたはフラグメントシェーダを用いて任意のフレームに関してピクセル値にレンダリングされ得る層状の立方体マップを備える。
【0037】
立方体マップは実質的に、立方体に形成された6つのテクスチャマップである。各テクスチャマップは、共通の基準点と相対的な、シーンに関するピクセル情報であるテクセルを含む。立方体の面のテクスチャマップは、ウィンドウレクタングル(window rectangle)として同立方体の面を用い、共通の基準点からシーンをレンダリングすることにより生成され得る。各テクセルは、物質の性質(屈折率、色など)、基準点からの距離、および表面法線ベクトルを含みうる。シーンを表す複数の層状のテクスチャマップからなるセットは、深度剥離を用いて得られ得る。剥離の回数(number of peeling passes)を制限することにより、層の数を制御することが出来る。VSDOは最初にレンダリングデバイスにおいてオンザフライで生成され得、または、動画の要求に応答した後の送信のために記憶され得る。レンダリングデバイスは、深度剥離または他の何らかの適した処理と共に立方体マップおよび複数のレンダーターゲットを用いて、GPU上でVSDOを効率的に生成し得る。
【0038】
層状の(あるシーンの、深さで分類された層から成る)テクセルアレイの各テクセルは、テクセルの深度剥離層内の基準点と最も遠いオブジェクト地点との間の全てのオブジェクト地点に関する情報を記憶する。層状の立方体マップに対応するシーンのレンダリングされた表現を生成するために、グラフィック処理ユニットは、共通の原点から光線を追跡して、フラグメントシェーダユニットを用いてシーン内の原点とオブジェクトとの間の距離を判断し、原点から見える地点における輝度を計算する。典型的には、レンダー処理は、シーンのジオメトリをラスタライズすること、および、光線がピクセルを通過する最初の衝突を見つけることを伴う。VSDOおよびVSDOレンダリングに関する詳細な説明については、2009年6月15日に提出された、発明の名称が「Re−Utilization of Render assets for Video compression」である、出願人が共通する米国の一般の特許出願、米国特許出願第12/484,462号を参照されたい。当該特許出願はその全体が参照により本明細書に組み込まれる。
【0039】
段階202において、VTS20は、レンダリングアセット、本例においてはシーンまたは環境のVSDOを、クラウドソースレンダリング処理に参加可能であるGPUを有する何れかのクライアントノード82へ送信する。特定の実施形態において、任意のシーンの最初のフレームのみがVSDOのクライアントへの送信を要求し、後続のフレームは、カメラまたは個々のオブジェクトがどのように変化したかを示す描画命令のみを要求する。特定の実施形態において、特的のシーンの静的な要素は、1つのVSDOとして送信され得、シーンの動的な要素は別個のVSDOとして送信される。よって、動きのあるシーンであっても、動的なVSDOだけが更新または送信される必要がある。本開示は、動画データを圧縮する、または以前に送信されたVSDOの再利用による帯域幅を節約する何れの適した方式もその範囲に含む。
【0040】
VTS20は、クラウドソースレンダリング処理に参加している各クライアントノード82に一意の空間位置も送信する。一意の空間位置は、パス追跡のための仮想眼またはレンズの位置を表す。各クライアントノード82は、仮定的な光線が光源に当たるまで(場合によってはいつまでも当たらない)自身の一意の空間位置から逆方向に追跡する。特定の実施形態において、各クライアントノード82に割り当てられる一意の空間位置は、VTS20によりランダムに割り当てられる。特定の実施形態において、一意の位置は、光源に衝突する可能性が高い光線を特定することを試みるパス追跡アルゴリズムに基づく。特定の実施形態において、パス追跡アルゴリズムは以前に追跡して成功したパスを僅かに修正する。特定の実施形態において、一意の空間位置を選択するパス追跡アルゴリズムは(Metropolis Light Transportに記載される)Metropolis−Hastings、Kajiya、またはMonte Carloアルゴリズムである。本開示は、一意の空間位置をクラウドソースレンダリング処理に参加しているクライアントノードに割り当てる何れの適したパス追跡アルゴリズムまたは方法もその範囲に含む。
【0041】
段階203において、クライアントノード82は、一意の空間位置から、受信したレンダリングアセットのパス追跡を実行する。前述したように、レンダリングアセットは、1以上のVSDOであり得、以前に送信されたVSDOの変換または描画命令であり得、或いは、これら2つの何らかの組み合わせでありうる。特定の実施形態において、クライアントノード82は2方向のパス追跡を実行する。本開示は、パス追跡サンプルを得る何れの適した方式もその範囲に含む。パス追跡処理の結果として、クライアントデバイス82は、フレームの拡散照明の大まかな推定であるサンプルフレームを生成する。クライアントノード82は、シーンの照明に関する質が悪い推定であり、ノイズが多く含まれてはいるもののこれらのサンプルフレームを比較的迅速に生成可能である。
【0042】
段階204において、クラウドソースレンダリング処理に参加している各クライアントノード82は、自身のレンダリングされたフレームをVTS20に送信し返す。特定の実施形態において、照明データがVSDOに合成され得、クライアントノード82は、照明データにより補正されたVSDOを送信し返し得る。特定の実施形態において、光マップ、またはVSDOにマッピングされた照明情報を含むテクスチャのみがVTS20に返される。本開示は、帯域幅最適化または動画圧縮の何れの適した方式もその範囲に含む。
【0043】
段階205において、VTS20は受信したフレームから合成フレームを生成する。光の相加的(additive)な性質のために、VTS20は、全ての受信したフレームを合成し、受信したフレームの数で除算することにより、合成フレームを迅速に生成し得る。特定の実施形態において、VTS20は、大きな浮動小数点バッファを用いて合計の結果を記憶する。特定の実施形態において、VTS20は、受信した光マップから合成光マップを生成し、合成マップをVSDOにマッピングする。本開示は、合成フレームを生成する何れの適した方式もその範囲に含む。シーンの複雑さ、および、サンプルの数に応じて、合成フレームは完全なラジオシティ照明(perfect radiosity lighting)へと集約されるべきである。例えば、別個の8つサンプルを生成する8つのクライアントノードは、フレームのかなり良好な表現を生成し得、64個のサンプルはノイズを殆ど含まない合成フレームを生成し得、1000個のサンプルは、完全な拡散照明のフレームを生成し得る。
【0044】
段階206において、VTS20は、動画ストリームを見ている全てのクライアントノード(参加しているノード82、および参加していないノード84の両方)へ合成フレームを送信し、段階207において、個々のクライアントノード82/84は、それぞれのディスプレイに受信した合成フレームを表示する。段階208において、処理が終了し、VTSは、動画シーケンスの次のフレームのために、レンダリングアセット、変換および描画命令、またはこれらの2つの混合物を送信する。
【0045】
図3は、クライアントノード82により受信されるレンダリングされたフレームの例を示す。各フレーム301〜320は、任意のシーンに関して、一意の空間位置からパス追跡を実行することにより得られる、個々のクライアントノード82からの出力を表す。フレーム301〜320はそれぞれ明瞭さが異なる。例えば、フレーム301、302は、シーン内のオブジェクトの詳細を殆ど表さず、フレーム320は、ノイズを多く含むが、シーンのかなり良好な表現をビュアーに提供する。図3Aは、フレーム301〜320を合成することにより生成される例示的な合成フレーム321を表す。まだ幾分ノイズを含んではいるが、当該合成フレームは、シーンの明瞭な画像を提供し、柔らかな反射、影、透明度、および、コースティックを含む正確性の高い拡散照明を含む。図3および3Aは、光の相加的な性質、および、パス追跡により生成される20のフレームの組み合わせにより得られる品質の表現を示す。よって、本願発明は、BitTorrentにおける「シーディング」などピアツーピアファイル共有と類似している。参加しているクライアントノード82の数が多ければ多い程、レンダリングのスピードはより速くなり、出力を要求する全てのノードに配信されるレンダリングされた出力の品質はより高くなる。例えば、あるシーンのために合成されなければならないサンプルの数が参加しているノードの数より多い特定の実施形態において、中心サーバまたは参加しているノードは、複数のレンダリングを実行しなければならず、よって、レンダリング時間全体が長くなる。より多くのクライアントノードが処理を行い、互換性のあるGPUがシーンを「シード」することより、レンダリング速度は速くなる。
【0046】
図4は、本願発明の一実施形態に係る、環境のレンダリングを複数のクライアントに分散させる例示的な方法を示す。特定の実施形態において、VTS20の複数のユーザは、インタラクティブなプログラムを利用し得、この場合、各クライアントノード82/84のディスプレイは、特定のカメラ視点に固定されていない。例えば、複数のユーザは、Mayaまたは3D Studio Maxなどのコンピュータ支援設計(CAD)プログラムを用いて、異なる様々な角度から特定の環境を独立して見得る。他の例として、複数のクライアントノードがビデオゲームで遊んでいるかもしれず、複数のユーザが同じ環境内で相互作用し合っているかもしれない。例えば、複数のユーザの全てが、異なる処理能力を有するデバイスを介して、World of Warcraftの特定の部屋にいるかもしれない。
【0047】
図5は、そのようなシナリオの例を示す。図5において、3D環境500は、いくつかの光源503および光を反射するプール504を含む。光を反射するプール504は、レンダリングされると、拡散照明と反射照明との両方を含みうる。2人のユーザにより制御されるキャラクタ501、502が環境500にいる。ユーザはそれぞれ、特定のカメラ視野および表示域501a、502aを有する。光源503から環境500への反射を含む反射照明は、光線のパスと各ユーザの表示域501a、502bとの両方に関する知識を要する。よって、特にアクションゲームまたはファーストパーソンシューティングゲームなどの動きの速い、リアルタイムのアプリケーションにおいて、反射照明と比較し、拡散照明は動きが遅く、静的である。この例の目的において、ユーザ501は、高性能のGPUを有するパソコンなど、またはネットワーク接続されたゲーミングコンソールなどクラウドソースレンダリング処理に参加可能なデバイス(クライアントノード82)を利用しており、ユーザ502は、携帯電話またはタブレットコンピュータなどの、自身の反射照明さえもレンダリングするグラフィック処理能力を有さないシンクライアントデバイスを利用している。
【0048】
図4に戻ると、段階401において、VTS20は特定の環境500のためのVSDOを生成し、またはVSDOにアクセスする。VTS20は、クライアントノード82、84で実行するソフトウェアスタブからの要求に応答してVSDOを生成し得る。例えば、クライアントノード82/84のユーザがゲームアプリケーションを起動させる、またはユーザのプレーヤが特定の環境に入るよう移動していること、または特定の方向に向いていることを示すコマンドをVTSへ送信した場合、VTS20は動的に、ユーザのキャラクタの周囲の環境内のオブジェクトのためにVSDOを生成する。
【0049】
段階402において、VTS20は、VSDOおよび一意の空間位置を各参加しているクライアントノード82に送信する。特定の実施形態において、VTS20は、クライアントのユーザが新たな環境に入った場合のみ、VSDOを送信する。加えて段階402において、VTS20は、一意の位置のインジケータを参加しているクライアントノード82へ送信する。この一意の位置のインジケータは、クライアントノード82により表されるユーザの表示域501aに依存しないが、むしろ、拡散照明の計算のためにパス追跡を開始するランダムな地点である。特定の実施形態において、各クライアントノード82に割り当てられる一意の空間位置は、VTS20によりランダムに割り当てられる。特定の実施形態において、一意の位置は、光源に衝突する可能性が高い光線を特定することを試みるパス追跡アルゴリズムに基づく。特定の実施形態において、パス追跡アルゴリズムは以前に追跡して成功したパスを僅かに修正する。特定の実施形態において、一意の空間位置を選択するパス追跡アルゴリズムは(Metropolis Light Transportに記載される)Metropolis−Hastings、Kajiya、またはMonte Carloアルゴリズムである。本開示は、一意の空間位置をクラウドソースレンダリング処理に参加しているクライアントノードに割り当てる何れの適したパス追跡アルゴリズムまたは方法もその範囲に含む。
【0050】
段階403において、クライアントノード82はパス追跡を実行し、環境500のために光マップを生成する。光マップは単に、VSDOにマッピングされる、またはスキンされ得る周囲または拡散照明データを含むテクスチャである。光マップがVSDOにマッピングされ、VSDOがレンダリングエンジンによりレンダリングされた場合、シーンまたは環境はユーザにとって、正確に照明が当てられたように見える。特定の実施形態において、光マップは単に、VSDOの追加の層である。特定の実施形態において、光マップは、VSDOとは別に送信され得る。特定の実施形態において、光マップは、JPGまたは離散コサイン変換(DCT)など2D圧縮アルゴリズムを用いて圧縮され得る。
【0051】
段階404において、参加している各クライアントノード82は、自身の光マップをVTS20へ送信する。特定の実施形態において、各クライアントノード82は、補正されたVSDOを送信し返す。特定の実施形態において、各クライアントノード82は、送信の前に、自身が生成した光マップを圧縮する。本開示は、レンダリングされた拡散照明情報をVTS20へ返す何れの適した方式もその範囲に含む。
【0052】
段階405において、VTS20は、クライアントノード82から受信した光マップに基づき合成光マップを生成する。光の相加的な性質は、個々のフレームに対して当てはまるように光マップにも等しく当てはまる。特定の実施形態において、VTS20は、全ての受信した光マップの合計の結果を大きな浮動小数点バッファに記憶し、受信した光マップの数で同結果を除算することにより合成光マップを生成する。特定の実施形態において、閾値の時間、または受信したクライアントの光マップの閾値の数に達した場合、VTSは自動的に合成光マップを生成する。各クライアントノードの光マップは所定の閾値より拡散照明の品質を僅かにしか向上させないので、VTS20は、レイテンシーのために到着が遅いクライアントの光マップを待つことなく、合成光マップを生成することを選択してもよい。特定の実施形態において、VTS20は、リフレッシュ毎に最高の品質の光マップを得るべく、合成光マップを生成する前に、全てのクライアントノードの光マップが受信されるまで待つ。拡散照明は視点に依存せず、(光源が移動しない場合)環境と共に急激に変化しないので、視点を変化させてパンしているユーザが、環境の拡散照明をリフレッシュする際のレイテンシーに気付く可能性は低い。他方、ユーザの視点と直接的に関連する反射照明をレンダリングする際のレイテンシーには非常に気付きやすい。
【0053】
段階406において、VTS20は、合成光マップを参加しているクライアントノード82へ送信し返す。特定の実施形態において、VTS20は合成光マップを備える層により補正された環境500のための1以上のVSDOを送信し返す。特定の実施形態において、VTS20は、合成光マップのみを送信する。特定の実施形態において、合成光マップは、2D圧縮技術を用いて圧縮され得る。特定の実施形態において、VTS20は、クライアントノード82へ送信された同じVSDOのための前の光マップと、合成光マップとの間の変化のみを送信する。本開示は、拡散照明データをクライアントノード82へ送信する際に帯域幅を節約するのに適した何れのメカニズムもその範囲に含む。
【0054】
段階407において、参加しているクライアントノード82は、自身の視点(視点501aなど)に基づき、環境のための反射照明をレンダリングする。参加しているクライアントノード82は拡散照明のためにパス追跡を実行するのに十分な程高性能のGPUを有するので、それらは反射照明をレンダリングするのに十分な程高性能であるはずである。段階407における反射照明の生成と同時に、各クライアントノード82のためのユーザの表示域(501aなど)は、クライアントノード82のディスプレイ上でレンダリングされる。
【0055】
ユーザ502は、パス追跡を実行するのに十分な程高性能なGPUを有さない参加していないクライアントノード84を利用しているので、特定の実施形態において、VTS20は、クライアントデバイス84が自身の視点に依存した反射照明を実行する処理能力を有していないものと想定する。よって、VTS20は、サーバーサイドでクライアントノード84のための表示域全体(表示域502aなど)をレンダリングする。
【0056】
段階409において、VTS20は、環境のためのVSDO、合成光マップ、および、接続された各クライアントノード84から受信したカメラ情報に基づき、シンクライアントノード84の表示域をレンダリングする。特定の実施形態において、VTS20は、VSDOの原点と、各クライアント84の基準点(カメラ表示域)との間の差を補正するためにヒット機能(hit function)を利用する。
【0057】
段階410において、VTS20は、各シンクライアント84のためのレンダリングされた表示域フレームを、各クライアントへ送信する。特定の実施形態において、フレームは、2D圧縮技術を用いて圧縮され得る。段階411において、クライアントデバイス84は、それぞれのディスプレイ上に、各自受信したフレームを表示する。
【0058】
よって、本願発明の特定の実施例は、ピアツーピアのような性質を有する、完全に拡張可能な分散型レンダリングアーキテクチャを提供する。最終的なレンダリングされた画像の品質は、分散型レンダリングシステムに参加しているクライアントノードの数に直接的に関連している。
【0059】
特定の実施形態は、ネットワーク環境で実装され得る。図6は、例示的なネットワーク環境600を示す。ネットワーク環境600は、1以上のサーバ620と1以上のクライアント630とを互いに結合するネットワーク610を含む。特定の実施形態において、ネットワーク610はイントラネット、エクストラネット、仮想プライベートネットワーク(VPN)、ローカルエリアネットワーク(LAN)、無線LAN(WLAN)、広域ネットワーク(WAN)、メトロポリタンエリアネットワーク(MAN)、通信網、衛星ネットワーク、インターネットの一部、他のネットワーク610、または2以上のそのようなネットワーク610の組み合わせである。本開示は、何れの適したネットワーク610もその範囲に含む。
【0060】
1以上のリンク650が、サーバ620またはクライアント630をネットワーク610に結合する。特定の実施形態において、1以上のリンク650はそれぞれ、1以上の有線、無線、または光リンク650を含む。特定の実施形態において、1以上のリンク650はそれぞれ、イントラネット、エクストラネット、VPN、LAN、WLAN、WAN、MAN、通信網、衛星ネットワーク、インターネットの一部、他のリンク650、または2以上のそのようなリンク650の組み合わせである。本開示は、サーバ620およびクライアント630をネットワーク610に結合する何れの適したリンク650もその範囲に含む。
【0061】
特定の実施形態において、各サーバ620は、統合型(unitary)サーバであり得、または、複数のコンピュータまたは複数のデータセンターに亘る、分散型サーバでありうる。サーバ620は、これらに限定される訳ではなくあくまで例としてではあるが、ウェブサーバ、ニュースサーバ、メールサーバ、メッセージサーバ、広告サーバ、ファイルサーバ、アプリケーションサーバ、エクスチェンジサーバ(exchange server)、データベースサーバ、またはプロキシサーバなど様々なタイプのサーバであり得る。特定の実施形態において、各サーバ620は、サーバ620により実装またはサポートされる適切な機能を実行するための、ハードウェア、ソフトウェア、埋め込みロジックコンポーネント、または2以上のそのようなコンポーネントの組み合わせを含みうる。例えば、ウェブサーバは一般的に、ウェブページまたはウェブページの特定の要素を含むウェブサイトを提供可能である。より詳細には、ウェブサーバは、HTMLファイル、または他のファイルタイプを提供し得、或いは、要求に応じて動的にファイルを作成または構成し得、クライアント630からのHTTPまたは他の要求に応答してそれらのファイルをクライアント630へ通信し得る。メールサーバは一般的に、電子メールサービスを様々なクライアント630に提供可能である。データベースサーバは一般的に、1以上のデータ記憶部に記憶されたデータを管理するためのインタフェースを提供可能である。
【0062】
特定の実施形態において、各クライアント630は、ハードウェア、ソフトウェア、埋め込みロジックコンポーネント、または2以上のそのようなコンポーネントの組み合わせを含む、クライアント630により実装またはサポートされる適切な機能を実行可能である電子デバイスであり得る。これらに限定される訳ではなくあくまで例としてではあるが、クライアント630は、デスクトップコンピュータシステム、ノートブックコンピュータシステム、ネットブックコンピュータシステム、ハンドヘルド電子デバイス、または携帯電話であり得る。クライアント630は、クライアント630におけるネットワークユーザがネットワーク610にアクセスすることを可能とし得る。クライアント630は、Microsoft Internet ExplorerまたはMozilla Firefoxなどのウェブブラウザを有し得、1以上のアドオン、プラグイン、またはGoogle ToolbarまたはYahoo Toolbarなどの拡張機能を有し得る。クライアント630は、そのユーザが他のクライアント630における他のユーザとの通信を行うことを可能とする。本開示は、何れの適したクライアント630もその範囲に含む。
【0063】
特定の実施形態において、1以上のデータ記憶装置640は、1以上のリンク650を介して1以上のサーバ620に通信可能にリンクされ得る。特定の実施形態において、データ記憶装置640を用いて、様々なタイプの情報を記憶し得る。特定の実施形態において、データ記憶装置640に記憶された情報は、特定のデータ構造に従って整理され得る。特定の実施形態においては、サーバ620またはクライアント630が、データ記憶装置640に記憶された情報を管理する(例えば、読み取る、修正する、追加する、削除するなど)ことを可能とするインタフェースが提供され得る。
【0064】
特定の実施形態において、各サーバ620は、1以上のクライアント630に同時にサービスし得、自身がサポートするクライアント630のためにレンダリングを実行し得る。サーバ620は、動画ストリーム内のレンダリングされた画像をそれぞれ特定のフレームとしてエンコードすることにより、自身がサポートする特定のクライアント630のためにレンダリングされた画像を送信し得、動画ストリームをクライアント630へ送信する。動画ストリームを受信するとクライアント630は、画像フレームを表示するために抽出するべく動画ストリームをデコードし得る。
【0065】
特定の実施形態は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアとの組み合わせとして実装され得る。これらに限定される訳ではなくあくまで例としてではあるが、1以上のコンピュータシステムは、本明細書に説明される、または示される1以上の処理の1以上の段階を実行する特定のロジックまたはソフトウェアを実行し得る。コンピュータシステムのうち1以上は、統合型であり、または適宜、複数のコンピュータシステムまたは複数のデータセンターに亘る分散型であり得る。本開示は、何れの適したコンピュータシステムもその範囲に含む。特定の実施形態において、本明細書に説明される、または示される1以上の処理の1以上の段階の実行は、1以上の特定の地理的位置に限定される必要はなく、時間的な制約を受ける必要もない。このことに限定される訳ではなくあくまで例としてではあるが、1以上のコンピュータシステムは、「リアルタイムで」、「オフラインで」、「バッチモードで」、または適宜、これらの適した組み合わせにより、自身の機能を実行し得る。コンピュータシステムのうち1以上は、適宜、異なる時間に、異なる位置で、異なる処理を用いて自身の機能の1以上の部分を実行し得る。本明細書において、ロジックについて言及した場合、適宜、そのことはソフトウェアを包含し得、その逆のことも言える。ソフトウェアについて言及した場合、適宜、そのことは1以上のコンピュータプログラムを包含し得、その逆のことも言える。ソフトウェアについて言及した場合、適宜、そのことはデータ、命令、またはそれら両方を包含し得、その逆のことも言える。同様に、データについて言及した場合、適宜、そのことは命令を包含し得、その逆のことも言える。
【0066】
1以上のコンピュータ可読記憶媒体は、特定の実施形態を実装するソフトウェアを記憶し得、または、そのようなソフトウェアを具体化し得る。コンピュータ可読媒体は適宜、ソフトウェアを運搬する、伝達する、含む、保持する、維持する、伝搬する、保有する、記憶する、送信する、運ぶ、または具体化することが可能な何らかの媒体でありうる。コンピュータ可読媒体は適宜、生体媒体、化学媒体、電子媒体、電磁媒体、赤外線媒体、磁気媒体、光学媒体、量子媒体、他の適した媒体、またはそのような媒体の2以上の組み合わせでありうる。コンピュータ可読媒体は、1以上のナノメートルスケールのコンポーネントを含み得、または、ナノメートルスケールのデザインまたは生成物(fabrication)を具体化し得る。例示的なコンピュータ可読記憶媒体は、コンパクトディスク(CD)、フィールドプログラマブルゲートアレイ(FPGA)、フロッピー(登録商標)ディスク、フロプティカルディスク、ハードディスク、ホログラフィック記憶デバイス、集積回路(IC)(特定用途向け集積回路(ASIC)など)磁気テープ、キャッシュ、プログラマブルロジックデバイス(PLD)、ランダムアクセスメモリ(RAM)デバイス、読取専用メモリ(ROM)デバイス、半導体記憶デバイス、および他の適したコンピュータ可読記憶媒体を含みうるがこれらに限定されない。
【0067】
特定の実施形態を実装するソフトウェアは適宜、何らかの適した(手続き指向、またはオブジェクト指向であり得る)プログラミング言語、またはプログラミング言語の組み合わせで書かれ得る。何らかの適したタイプの(シングルまたはマルチプロセッサコンピュータシステムなどの)1または複数のコンピュータシステムが適宜、特定の実施形態を実装するソフトウェアを実行し得る。汎用コンピュータシステムが適宜、特定の実施形態を実装するソフトウェアを実行し得る。
【0068】
例えば、図7は、特定の実施形態の1以上の部分を実装するのに適した例示的なコンピュータシステム700を示す。本開示においては、特定の構成を有する特定のコンポーネントを備えた特定のコンピュータシステム700が説明され示されるが、本開示は、何らかの適した構成を有する何らかの適したコンポーネントを備えた何れの適したコンピュータシステムもその範囲に含む。さらに、コンピュータシステム700は、例えば、1以上の集積回路(IC)、1以上のプリント基板(PCB)、1以上のハンドヘルドデバイスまたは他の(携帯電話またはPDAなどの)デバイス、1以上のパソコン、または1以上のスーパーコンピュータなど何らかの適した物理形態をとり得る。
【0069】
システムバス710は、コンピュータシステム700のサブシステムを互いに結合する。本明細書において、バスについて言及した場合、そのことは、共通の機能に資する1以上のデジタル信号線を包含する。本開示は、何らかの適したバスアーキテクチャを有する、何らかの適した(1以上のバスメモリ、1以上の周辺機器用バス、1以上のローカルバス、またはこれらの組み合わせなど)バス構造を含む何れかの適したシステムバス710もその範囲に含む。例示的なバスアーキテクチャには、Industry Standard Architecture(ISA)バス、Enhanced ISA(EISA)バス、Micro Channel Architecture(MCA)バス、Video Electronics Standards Association local(VLB)バス、Peripheral Component Interconnect(PCI)バス、PCI−Expressバス(PCI−X)、およびAccelerated Graphics Port(AGP)バスが含まれるがこれらに限定される訳ではない。
【0070】
コンピュータシステム700は、1以上のプロセッサ720(または中央処理装置(CPU))を含む。プロセッサ720は、命令、データ、またはコンピュータアドレスの一時的かつローカルな記憶のためにキャッシュ722を含みうる。プロセッサ720は、メモリ730を含む1以上の記憶デバイスに結合される。メモリ730は、ランダムアクセスメモリ(RAM)732、および読取専用メモリ(ROM)734を含みうる。データおよび命令は、プロセッサ720とRAM732との間を2方向に転送され得る。データおよび命令は、ROM734からプロセッサ720に1方向に転送され得る。RAM732およびROM734は、何らかの適したコンピュータ可読記憶媒体を含みうる。
【0071】
コンピュータシステム700は、プロセッサ720に対して双方向に結合された固定型記憶装置740を含む。記憶制御ユニット752を介して、固定型記憶装置740がプロセッサ720に結合され得る。固定型記憶装置740は、追加のデータ記憶容量を提供し得、何らかの適したコンピュータ可読記憶媒体を含みうる。固定型記憶装置740は、オペレーティングシステム(OS)742、1以上の実行ファイル744、1以上のアプリケーションまたはプログラム746、データ748などを記憶し得る。典型的には固定型記憶装置740は、主記憶装置よりも処理速度が遅い(ハードディスクなど)二次記憶媒体である。適切な場合には、固定型記憶装置740により記憶された情報は、メモリ730内に仮想メモリとして含まれ得る。
【0072】
プロセッサ720は、例えば、グラフィック制御装置754、動画インタフェース758、入力インタフェース760、出力インタフェース762、および記憶インタフェース764など様々なインタフェースに結合され得、またそれらのインタフェースはそれぞれさらに、適切なデバイスに結合され得る。例示的な入出力デバイスには、動画ディスプレイ、トラックボール、マウス、キーボード、マイク、タッチセンサー式ディスプレイ、トランスデューサ―カードリーダー、磁気または紙テープ読み取り装置、タブレット、スタイラス、音声または手書き文字認識装置、生体情報読み取り装置、またはコンピュータシステムなどが含まれるがこれらに限定されない。ネットワークインタフェース756は、プロセッサ720を他のコンピュータシステムまたはネットワーク780に結合し得る。ネットワークインタフェース756により、プロセッサ720は、特定の実施形態の段階を実行する過程で、ネットワーク780から情報を受信し得、ネットワーク780へ情報を送信し得る。特定の実施形態は、プロセッサ720のみで実行され得る。特定の実施形態は、プロセッサ720と1以上の遠隔のプロセッサとが協働して動作し、実行され得る。
【0073】
コンピュータシステム700がネットワーク780に接続されたネットワーク環境において、コンピュータシステム700は、ネットワーク780に接続された他のデバイスと通信を行いうる。コンピュータシステム700は、ネットワークインタフェース756を介してネットワーク780と通信を行い得る。例えば、コンピュータシステム700は、ネットワークインタフェース756において1以上の受信パケットの形態でネットワーク780から(他のデバイスからの要求または応答などの)情報を受信し得、メモリ730は次の処理のために受信パケットを記憶し得る。コンピュータシステム700は、ネットワークインタフェース756から1以上の送信パケットの形態でネットワーク780へ(他のデバイスへの要求または応答などの)情報を送信し得、メモリ730は送信パケットを、送信されるまで記憶し得る。プロセッサ720は、特定の必要性に応じて、処理すべく、メモリ730内の受信パケットまたは送信パケットにアクセスし得る。
【0074】
コンピュータシステム700は、(キーパッド、キーボード、マウス、スタイラスなどを含みうる)1以上の入力デバイス766、(1以上のディスプレイ、1以上のスピーカ、1以上のプリンタなどを含みうる)1以上の出力デバイス768、1以上の記憶デバイス770、および1以上の記憶媒体772を有し得る。入力デバイス766は、コンピュータシステム700の外部または内部であり得る。出力デバイス768は、コンピュータシステム700の外部または内部であり得る。記憶デバイス770は、コンピュータシステム700の外部または内部であり得る。記憶媒体772は、コンピュータシステム700の外部または内部であり得る。
【0075】
特定の実施形態は、本明細書において説明された、または示された1以上の処理の1以上の段階を実行するためのソフトウェアを具体化する1以上のコンピュータ可読記憶媒体を含む1以上のコンピュータ記憶装置製品に関する。特定の実施形態において、媒体、ソフトウェア、またはこれら両方の1以上の部分は、本明細書において説明された、または示された1以上の処理の1以上の段階を特に実行するように設計され製造され得る。加えて、または代替的に、特定の実施形態において、媒体、ソフトウェア、またはこれら両方の1以上の部分は、本明細書において説明された、または示された処理に関して特定的に設計または製造されておらず、一般的に利用可能であり得る。例示的なコンピュータ可読記憶媒体には、(CD−ROMなどの)CD、FPGA、フロッピー(登録商標)ディスク、フロプティカルディスク、ハードディスク、ホログラフィック記憶デバイス、(ASICなどの)IC、磁気テープ、キャッシュ、PLD、RAMデバイス、ROMデバイス、半導体記憶デバイス、および他の適したコンピュータ可読記憶媒体が含まれるがこれらに限定されない。特定の実施形態において、ソフトウェアは、コンパイラが生成し得る機械コード、または、コンピュータがインタープリターを用いて実行し得る高レベルコードを含む1以上のファイルであり得る。
【0076】
このことに限定される訳ではなくあくまで例としてではあるが、メモリ730は、ソフトウェアを具体化する1以上のコンピュータ可読記憶媒体を含み得、コンピュータシステム700は、プロセッサ720がソフトウェアを実行した結果、本明細書に説明される、または示される特定の機能を提供し得る。メモリ730はソフトウェアを記憶し得、プロセッサ720はソフトウェアを実行し得る。メモリ730は、ソフトウェアを具体化する、大容量記憶デバイス730内のコンピュータ可読記憶媒体から、または、ネットワークインタフェース756を介して1以上の他のソースからソフトウェアを読み取り得る。ソフトウェアを実行する際、プロセッサ720は、本明細書において説明された、または示された1以上の処理のうち1以上の段階を実行し得る。それら1以上の段階は、メモリ730内で記憶するために1以上のデータ構造を規定する段階、および、特定の必要性に応じて、ソフトウェア内の1以上の部分により指示されるように、データ構造の1以上を修正する段階を含み得る。加えて、または代替的に、コンピュータシステム700は、回路内で配線接続された、または回路内で具体化されたロジックの結果として、本明細書に説明される、または示される特定の機能を提供し得る。当該ロジックはソフトウェアの代わりに、またはソフトウェアと協働して動作して、本明細書に説明される、または示される1以上の処理の1以上の段階を実行し得る。本開示は、特定の必要性に応じて、ハードウェアとソフトウェアとの何らかの適した組み合わせも包含する。
【0077】
特定の実施形態において、コンピュータシステム700は、1以上のグラフィック処理ユニット(GPU)724を含み得る。特定の実施形態において、GPU724は、グラフィックレンダリングで一般的に用いられる数学演算のための1以上の集積回路および/または処理コアを含み得る。いくつかの実施形態において、GPU724は、特定のグラフィックユニット命令セットを用い得、他の実施例においては、GPUは、CPUのような(例えば修正されたx86の)命令セットを利用し得る。グラフィック処理ユニット724は、ブリット、テクスチャマッピング、ピクセルシェーディング、フレームバッファリングなどの複数のグラフィック基本処理を実装し得る。特定の実施形態において、GPU724は、グラフィックアクセラレータ、汎用GPU(GPGPU)、または他の何らかの適した処理ユニットであり得る。
【0078】
特定の実施形態において、GPU724は、カードスロットを介してハードウェアシステムアーキテクチャに取り付けられるグラフィックカードまたはディスプレイカードにより具体化され得る。他の実施例において、GPU724は、コンピュータシステムアーキテクチャのマザーボードに一体化され得る。適したグラフィック処理ユニットには、Advanced Micro Devices(登録商標)AMD R7XXベースのGPUデバイス(Radeon(登録商標)HD 4XXX)、AMD R8XXベースのGPUデバイス(Radeon(登録商標)HD 7XXX)、Intel(登録商標)LarabeeベースのGPUデバイス(未販売)、nVidia(登録商標)8シリーズのGPU、nVidia(登録商標)9シリーズのGPU、nVidia(登録商標)100シリーズのGPU、nVidia(登録商標)200シリーズのGPUs、および他の何らかのDX11が可能なGPUが含まれ得る。
【0079】
本開示は、特定の動作が特定の順序で行われるものとして説明し、または示しているが、本開示は、適した動作が何らかの適した順序で行われることをその範囲として含む。さらに、本開示は、適した動作が何らかの適した順序で1以上の回数繰り返されることをその範囲として含む。本開示は、特定の動作が順に行われるものとして説明し、または示しているが、本開示は適宜、適した動作が実質的に同時に行われることをその範囲として含む。本明細書において説明された、または示された適した動作、または一連の動作は適宜、オペレーティングシステムおよびカーネルなど他の処理により割り込まれ、中断させられ、または制御され得る。処理はオペレーティングシステム環境において行われ得、または、システム処理の全てを占有する、または一部を占有するスタンドアロン型のルーチンとして行われ得る。
【0080】
本開示は、当業者が理解するであろう、本明細書に示された例示的な実施形態の変更、置換、変形、改造、および修正の全てを包含する。同様に、添付の請求項は適宜、当業者が理解するであろう、本明細書に示された例示的な実施形態の変更、置換、変形、改造、および修正の全てを包含する。
[項目1]
プロセッサにより、1以上のクライアントへ共通のレンダリングアセットを送信する段階と、
前記プロセッサにより、前記1以上のクライアントのそれぞれへ、他の送信される空間位置とは異なる一意の空間位置を送信する段階と、
前記プロセッサにより、前記1以上のクライアントのそれぞれへ、前記共通のレンダリングアセットおよび自身の一意の空間位置を用いてレンダーを生成するための1以上の命令を送信する段階と、
前記プロセッサにより、前記1以上のクライアントのそれぞれからレンダーを受信する段階と、
前記プロセッサにより、受信した前記レンダーから合成レンダーを生成する段階と、
前記プロセッサにより、前記1以上のクライアントへ前記合成レンダーを送信する段階と
を備える方法。
[項目2]
各一意の空間位置はランダムに生成される、項目1に記載の方法。
[項目3]
前記レンダーを生成するための1以上の命令は、前記レンダリングアセットに対し前記一意の空間位置からパス追跡を実行するための命令を含む、項目1または2に記載の方法。
[項目4]
前記レンダリングアセットは表示域状態データオブジェクト(VSDO)である、項目1から3のいずれか1項に記載の方法。
[項目5]
前記レンダーは、前記レンダリングアセットを含む環境の一部または全体の光マップである、項目3または4に記載の方法。
[項目6]
前記プロセッサにより、前記合成レンダーを生成する段階は、前記プロセッサにより、受信した前記光マップを合成して、前記レンダリングアセットを含む前記環境の一部または全体の合成光マップを生成する段階を有する、項目5に記載の方法。
[項目7]
前記レンダリングアセットは表示域状態データオブジェクト(VSDO)であり、
前記レンダーは、前記パス追跡の結果として計算される拡散照明データによって補正された複数のレンダリングアセットからなるセットである、項目3に記載の方法。
[項目8]
前記レンダーはフレームであり、
前記1以上の命令はさらに、共通の視点を含み、
前記フレームは前記共通の視点からレンダリングされる、項目3から7のいずれか1項に記載の方法。
[項目9]
前記プロセッサにより、前記合成レンダーを生成する段階は、受信した前記フレームを合成して合成フレームを生成する段階を有する、項目8に記載の方法。
[項目10]
プロセッサにより、サーバからレンダリングアセットおよび一意の空間位置を受信する段階と、
前記プロセッサにより、受信した前記レンダリングアセットおよび前記一意の空間位置を用いてレンダーを生成するための1以上の命令を前記サーバから受信する段階と、
前記プロセッサにより、前記1以上の命令に従って前記レンダーを生成する段階と、
前記プロセッサにより、生成された前記レンダーを前記サーバへ送信する段階と、
前記プロセッサにより、合成レンダーを前記サーバから受信する段階と
を備える方法。
[項目11]
前記プロセッサにより、サーバに依存しない視点から反射照明をレンダリングする段階と、
前記プロセッサにより、レンダリングされた前記反射照明と受信した前記合成レンダーとを組み合わせる段階と、
前記プロセッサにより、組み合わせられた前記レンダリングされた反射照明と前記受信した合成レンダーとをディスプレイへ出力する段階と
をさらに備える、項目10に記載の方法。
[項目12]
グラフィック処理ユニットと、
プロセッサと、
前記プロセッサにより実行されるプログラムロジックを実体的に記憶した記憶媒体と
を備え、
前記プログラムロジックは、
前記プロセッサにより実行される、1以上のクライアントへ共通のレンダリングアセットを送信するための共通のレンダリングアセット送信ロジックと、
前記プロセッサにより実行される、前記1以上のクライアントのそれぞれへ、他の送信される空間位置とは異なる一意の空間位置を送信するための空間位置送信ロジックと、
前記プロセッサにより実行される、前記1以上のクライアントのそれぞれへ、前記共通のレンダリングアセットおよび自身の一意の空間位置を用いてレンダーを生成するための1以上の命令を送信するための命令送信ロジックと、
前記プロセッサにより実行される、前記1以上のクライアントのそれぞれからレンダーを受信するための受信ロジックと、
前記プロセッサにより実行される、受信した前記レンダーから合成レンダーを生成するための合成レンダー生成ロジックと、
前記プロセッサにより実行される、前記1以上のクライアントへ前記合成レンダーを送信するための合成レンダー送信ロジックと
を含む、システム。
[項目13]
各一意の空間位置はランダムに生成される、項目12に記載のシステム。
[項目14]
前記レンダーを生成するための前記命令送信ロジックはさらに、前記レンダリングアセットに対し前記一意の空間位置からパス追跡を実行するための命令を含む、項目12または13に記載のシステム。
[項目15]
前記レンダリングアセットは表示域状態データオブジェクト(VSDO)である、項目12から14のいずれか1項に記載のシステム。
[項目16]
前記レンダーは、前記レンダリングアセットを含む環境の一部または全体の光マップである、項目14または15に記載のシステム。
[項目17]
前記合成レンダー生成ロジックはさらに、受信した前記光マップを合成して、前記レンダリングアセットを含む前記環境の一部または全体の合成光マップを生成する合成ロジックを含む、項目16に記載のシステム。
[項目18]
前記レンダリングアセットは表示域状態データオブジェクト(VSDO)であり、
前記レンダーは、前記パス追跡の結果として計算される拡散照明データによって補正された複数のレンダリングアセットからなるセットである、項目14に記載のシステム。
[項目19]
前記レンダーはフレームであり、
前記1以上の命令はさらに、共通の視点を含み、
前記フレームは前記共通の視点からレンダリングされる、項目12から18のいずれか1項に記載のシステム。
[項目20]
前記合成レンダー生成ロジックはさらに、前記プロセッサにより実行される、受信した前記フレームを合成して合成フレームを生成する合成ロジックを含む、項目19に記載のシステム。
図1
図2
図3
図3A
図4
図5
図6
図7