(57)【特許請求の範囲】
【請求項１】
コンピュータシステムにより、複数のクライアントのうちの参加しているクライアントのそれぞれへ３Ｄ環境の共通のレンダリングアセットと、他に送信される複数の空間位置とは異なる一意の空間位置とを送信する段階であって、前記一意の空間位置は、前記３Ｄ環境のそれぞれのレンダーを生成するための位置を表す、段階と、
前記コンピュータシステムにより、前記参加しているクライアントのそれぞれへ、前記共通のレンダリングアセットおよびそれぞれの一意の空間位置を用いてそれぞれのレンダーを生成するための複数の命令を送信する段階と、
前記コンピュータシステムにより、前記参加しているクライアントのそれぞれから、前記共通のレンダリングアセットを有する環境の一部のための前記それぞれのレンダーを受信する段階と、
前記コンピュータシステムにより、前記３Ｄ環境を有するあるシーンのために合成されることが必要なサンプルの数が、前記参加しているクライアントの数を超えているか否かを判断する段階と、
前記コンピュータシステムにより、前記必要なサンプルの数が前記参加しているクライアントの数を超えている場合に、複数のレンダリングの実行を介して、前記必要なサンプルの数を取得する段階と、
前記コンピュータシステムにより、前記必要なサンプルの数を取得したときに、前記それぞれのレンダーから合成レンダーを生成する段階であって、前記それぞれのレンダーは前記共通のレンダリングアセットを有し、前記それぞれのレンダーは、前記送信された複数の空間位置のうちの１つからレンダリングされる、段階と、
前記コンピュータシステムにより、少なくとも前記参加しているクライアントへ前記合成レンダーを送信する段階と
を備える方法。
【請求項２】
前記複数のレンダリングを実行することは、前記コンピュータシステムにより、前記参加しているクライアントに、前記複数のレンダリングの少なくともサブセットを実行させることをさらに含む、請求項１に記載の方法。
【請求項３】
前記コンピュータシステムにより、前記複数のクライアントのうちの参加していないクライアントのサブセットのためのそれぞれの表示域をレンダリングする段階
をさらに備える、請求項１に記載の方法。
【請求項４】
前記それぞれの表示域をレンダリングする段階はさらに、前記コンピュータシステムにより、前記３Ｄ環境のための複数のＶＳＤＯ（表示域状態データオブジェクト）と、前記それぞれのレンダーから生成された合成光マップと、前記参加しているクライアントによって受信されたカメラ情報とに基づいて、前記参加していないクライアントのための前記それぞれの表示域をレンダリングする段階を有する、請求項３に記載の方法。
【請求項５】
前記それぞれの表示域をレンダリングする段階はさらに、前記コンピュータシステムにより、ヒット機能を介して、前記複数のＶＳＤＯのうちの１つの原点と前記参加していないクライアントのそれぞれの基準点との差を補正する段階を有する、請求項４に記載の方法。
【請求項６】
前記合成レンダーを送信する段階は、前記コンピュータシステムにより、前記レンダリングされた複数の表示域の複数のフレームを圧縮する段階をさらに有する、請求項３から５のいずれか一項に記載の方法。
【請求項７】
前記一意の空間位置のそれぞれはランダムに生成される、請求項１から６のいずれか一項に記載の方法。
【請求項８】
前記レンダーを生成するための複数の命令は、前記共通のレンダリングアセットに対し前記一意の空間位置からパス追跡を実行するための命令を含む、請求項１から７のいずれか一項に記載の方法。
【請求項９】
前記合成レンダーは、前記共通のレンダリングアセットを含む前記３Ｄ環境の全体の一部のための光マップである、請求項１から８のいずれか一項に記載の方法。
【請求項１０】
前記共通のレンダリングアセットは複数のＶＳＤＯ（表示域状態データオブジェクト）である、請求項１に記載の方法。
【請求項１１】
前記合成レンダーを送信する段階はさらに、
前記コンピュータシステムにより、複数の光マップを有する前記それぞれのレンダーを合成して前記共通のレンダリングアセットを含む前記環境の合成光マップを生成する段階と、
前記コンピュータシステムにより、前記合成光マップを含む層によって補正された前記複数のＶＳＤＯを送信する段階と
を有する、請求項１０に記載の方法。
【請求項１２】
前記合成レンダーを送信する段階はさらに、前記コンピュータシステムにより、前記複数のクライアントに送信された前記複数のＶＳＤＯのための前の光マップと、前記合成光マップとの間の変化のみを送信する段階を有する、請求項１１に記載の方法。
【請求項１３】
グラフィック処理ユニットと、
プロセッサと、
前記プロセッサにより実行されるプログラムロジックを実体的に記憶した記憶媒体と
を備え、
前記プログラムロジックは、
前記プロセッサにより実行される、複数のクライアントへ３Ｄ環境の共通のレンダリングアセットを送信するための共通のレンダリングアセット送信ロジックと、
前記プロセッサにより実行される、前記複数のクライアントのうちの参加しているクライアントのそれぞれへ、それぞれのレンダーを生成するための位置を表す一意の空間位置であって、他に送信される複数の空間位置とは異なる一意の空間位置を送信するための空間位置送信ロジックと、
前記プロセッサにより実行される、前記参加しているクライアントのそれぞれへ、前記共通のレンダリングアセットおよびそれぞれの一意の空間位置を用いて前記それぞれのレンダーを生成するための複数の命令を送信するための命令送信ロジックと、
前記プロセッサにより実行される、前記参加しているクライアントのそれぞれから前記それぞれのレンダーを受信するための受信ロジックと、
前記プロセッサにより実行される、前記３Ｄ環境を有するあるシーンのために合成されることが必要なサンプルの数が、前記参加しているクライアントの数を超えているか否かを判断するための判断ロジックと、
前記プロセッサにより実行される、前記必要なサンプルの数が前記参加しているクライアントの数を超えている場合に、複数のレンダーの実行を介して、前記プロセッサによって、前記必要なサンプルの数を取得するための取得ロジックと、
前記プロセッサにより実行される、前記必要なサンプルの数を取得したときに、前記それぞれのレンダーから合成レンダーを生成するための合成レンダー生成ロジックであって、前記それぞれのレンダーは前記共通のレンダリングアセットを有し、前記送信された複数の空間位置のうちの１つからレンダリングされる、合成レンダー生成ロジックと、
前記プロセッサにより実行される、前記複数のクライアントへ前記合成レンダーを送信するための合成レンダー送信ロジックと
を含む、システム。
【請求項１４】
前記複数のレンダーを実行することは、前記プロセッサによって実行される、前記参加しているクライアントに、前記複数のレンダーの少なくともサブセットを実行させるためのロジックをさらに有する、請求項１３に記載のシステム。
【請求項１５】
前記プロセッサにより実行される、前記複数のクライアントのうちの参加していないクライアントのサブセットのためのそれぞれの表示域をレンダリングするための表示域レンダリングロジックをさらに備える、請求項１３に記載のシステム。
【請求項１６】
前記表示域レンダリングロジックはさらに、前記プロセッサにより、前記３Ｄ環境のための複数のＶＳＤＯ（表示域状態データオブジェクト）と、前記それぞれのレンダーから生成された合成光マップと、前記参加しているクライアントによって受信されたカメラ情報とに基づいて、前記参加していないクライアントのための前記それぞれの表示域をレンダリングするためのロジックを有する、請求項１５に記載のシステム。
【請求項１７】
前記それぞれの表示域をレンダリングするための前記ロジックはさらに、前記プロセッサにより実行される、前記複数のＶＳＤＯのうちの１つの原点と前記参加していないクライアントのそれぞれの基準点との差をヒット機能を介して補正するための補正ロジックを有する、請求項１６に記載のシステム。
【請求項１８】
前記合成レンダー送信ロジックはさらに、前記プロセッサにより実行される、前記レンダリングされた複数の表示域の複数のフレームを圧縮するための圧縮ロジックを有する、請求項１３から１７のいずれか一項に記載のシステム。
【請求項１９】
コンピュータに、
複数のクライアントのうちの参加しているクライアントのサブセットへ３Ｄ環境の共通のレンダリングアセットと、他に送信される複数の空間位置とは異なる一意の空間位置とを送信する段階であって、前記一意の空間位置は、前記３Ｄ環境のそれぞれのレンダーを生成するための位置を表す、段階、
前記参加しているクライアントのそれぞれへ、前記共通のレンダリングアセットおよびそれぞれの一意の空間位置を用いて前記それぞれのレンダーを生成するための複数の命令を送信する段階、
前記参加しているクライアントのそれぞれから、前記共通のレンダリングアセットを有する環境の一部のための前記それぞれのレンダーを受信する段階、
前記３Ｄ環境を有するあるシーンのために合成されることが必要なサンプルの数が、前記参加しているクライアントの数を超えているか否かを判断する段階、
前記必要なサンプルの数が前記参加しているクライアントの数を超えている場合に、複数のレンダリングの実行を介して、前記必要なサンプルの数を取得する段階、
前記必要なサンプルの数を取得したときに、前記それぞれのレンダーから合成レンダーを生成する段階であって、前記それぞれのレンダーは前記共通のレンダリングアセットを有し、前記それぞれのレンダーは、前記送信された複数の空間位置のうちの１つからレンダリングされる、段階、および
少なくとも前記参加しているクライアントへ前記合成レンダーを送信する段階
を実行させるためのプログラム。
【請求項２０】
前記コンピュータに、
前記複数のクライアントのうちの参加していないクライアントのサブセットのためのそれぞれの表示域をレンダリングする段階と、
前記合成レンダーを有する複数の前記表示域を、前記参加していないクライアントに送信する段階と
をさらに実行させるための、請求項１９に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は一般的に、アプリケーションの分散型クラウドソースグラフィックレンダリングに関する。本願発明はより詳細には、１以上の接続されたクライアントのグラフィック処理ユニットを利用して拡散照明レンダリングを実行し、１以上の接続されたクライアントからレンダリングされたシーンを受信し、受信したシーンから合成シーンを生成し、合成シーンを全ての接続されたクライアントに送信するサーバに関する。
【背景技術】
【０００２】
クライアント−サーバアーキテクチャは一般的に、「サービスプロバイダ」として見なされ得るサーバと、「サービス要求者」または「サービス消費者」として見なされ得るクライアントとの間でタスクまたは作業負荷を分担する分散型コンピューティングアーキテクチャである。多くの場合、サーバとクライアントとはコンピュータネットワークを介して接続され、様々なタイプのデータが、個々のサーバと個々のクライアントとの間でコンピュータネットワークを介して双方向的に送信される。従来、サーバは通常、クライアントよりも多くのリソースおよび高い性能を有する。サーバは、クライアントのために特定のタスクを実行する（つまり、クライアントにサービスを提供する）など、自身のリソースを１以上のクライアントと共有し得る。典型的にはサーバはクライアントよりも多くのリソースを有するので、サーバは、タスク、特にリソースを多く要するタスクを、クライアントよりもかなり速く完了し得る。
【０００３】
サーバとクライアントとの間で交換されるデータは、何らかの適したデータフォーマットで表現され得、何らかの適した通信プロトコルを用いて送信され得る。例えば、アプリケーションがサーバ上でクライアントのために実行される場合、アプリケーションの出力は、ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ（ＨＴＭＬ）文書またはＥｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ（ＸＭＬ）文書など構造化文書を用いて表現され得る。サーバは、アプリケーションの出力を表現するデータを含むＨＴＭＬ文書またはＸＭＬ文書を、サーバとクライアントとの間のＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ（ＨＴＴＰ）接続を介してクライアントへ送信し得る。ＨＴＭＬ文書またはＸＭＬ文書を受信するとクライアントは、当該文書を実行し、クライアントが実行するウェブブラウザなどにおいて、ＨＴＭＬ文書またはＸＭＬ文書を用いてローカルにアプリケーションの出力をレンダリングし得る。
【発明の概要】
【課題を解決するための手段】
【０００４】
本開示は一般的に、１以上の接続されたクライアントにレンダリングタスクを分散させるクラウドソースグラフィックレンダリングシステムに関する。１以上の接続されたクライアントはレンダリングされた出力をサーバへ送信し返し、サーバは、１つのレンダリングされた出力を形成するようクライアントからの出力を合成し、全ての接続されたクライアントへ送信し表示させる。
【０００５】
サーバ側グラフィックレンダリングにおいて、１つのサーバは、グラフィックオブジェクトをレンダリングし、出力をクライアントへストリーミングするグラフィック処理ユニット（ＧＰＵ）のアレイを含み得る。しかし、複雑な３Ｄ環境のレンダリングはプロセッササイクルの面でコストが高く、関連付けられたクライアントへレンダリングされたフレームまたはシーンを十分に提供するには、追加のＧＰＵまたはサーバを追加しなければならない。よって、従来のサーバ側グラフィックレンダリングは、拡張性に関する大きな課題を有している。プロバイダがより多くの数のクライアントの要求に応えるべくサーバまたはＧＰＵを追加することによりコストは非常に高くなり得る。反対に、サーバまたはＧＰＵインフラストラクチャの過剰投資は、要求が能力以下となった場合に、利用されないままとなってしまう部分が多い。
【０００６】
加えて、近年、比較的複雑な３Ｄレンダリングを迅速に実行可能なＧＰＵを有する消費者向けのデバイスの数は劇的に増えてきている。例えば、１分足らずで３Ｄシーンのパス追跡を実行可能なＧＰＵを有するパソコンの数は２０００年初頭には少数に限られていたかもしれないが、現在では、４０００万台のパソコンがそのような能力のＧＰＵを有している。よって、これらのクライアント側のＧＰＵを活用し、実質的に任意のフレームまたは環境のレンダリングをクラウドソーシングし、サーバからクライアントへグラフィックレンダリングタスクを移行することが望ましい。
【０００７】
一実施形態において、コンピュータシステムは、それぞれが遠隔のクライアントのアプリケーションに対応する複数のアプリケーションインスタンスを提供する。コンピュータシステムは、アプリケーションインスタンスが提供される遠隔のクライアントのアプリケーションのそれぞれとのネットワーク接続を維持する。以下にさらに説明するように特定の実施形態において、アプリケーションインスタンスはソフトウェアスタブである。特定の実施形態において、コンピュータシステムはレンダリングアセットを、レンダリングに寄与する十分に性能の高いＧＰＵを有するコンピュータのクライアントのアプリケーションに送信する。以下にさらに説明するように特定の実施形態において、コンピュータシステムは表示域状態データオブジェクト（ＶＳＤＯ）の形態のレンダリングアセットを送信する。また特定の実施形態において、コンピュータシステムは、クラウドソースレンダリング処理に参加している各クライアントへ一意の空間位置を送信し、または割り当てる。特定の実施形態において、クライアントデバイスは受信したレンダリングアセットおよび一意の視点を利用して、フレームまたは環境をレンダリングする。特定の実施形態において、クライアントデバイスはパス追跡を実行して、シーンまたは環境の拡散照明をレンダリングする。自身に割り当てられたレンダリングタスクを完了した後、参加している各クライアントデバイスは、自身からのレンダリングされた出力をコンピュータシステムへ送信し返す。特定の実施形態において、レンダリングされた出力は特定の視点からのフレームである。特定の実施形態において、レンダリングされた出力は、環境の拡散照明の光マップである。特定の実施形態において、レンダリングされた出力は修正されたＶＳＤＯである。レンダリングされた出力を受信するとコンピュータシステムはレンダリングされた合成出力を生成し、クラウドソースレンダリング処理に参加しなかったクライアントを含む、接続されたクライアントの全てに送信し返す。
【０００８】
特定の実施形態において、接続された各クライアントは、全く同じ視点からシーンを見、コンピュータシステムは、特定の視点からの合成フレームを、接続された各クライアントへ送信し、表示されるようにする。特定の実施形態において、接続された各クライアントは、異なる視点からシーンを見、コンピュータシステムは個々のクライアントが自身のレンダリングエンジンで用いるよう合成レンダリングアセットを送信する。特定の実施形態において、レンダリングアセットは、環境の拡散照明を表す光マップデータを含む光マップまたはＶＳＤＯである。よって、クライアントは、高品質のラジオシティ照明（ｒａｄｉｏｓｉｔｙ  ｌｉｇｈｔｉｎｇ）を維持しつつ、レンダリングアセットを用いて複数の異なる視点からシーンをレンダリングし得る。特定の実施形態において、クライアントは、ローカルに、環境のクラウドソーシングされた拡散照明を含む受信したレンダリングアセットに関連して、変化の速い反射照明をレンダリングする。よって、高性能のＧＰＵを有するクライアントノードの数が多くなるにつれ、何らかの特定のシーンが、より迅速に、またはより高いグラフィック品質でレンダリングされ得る。
【０００９】
実施形態において、合成レンダーを生成するための方法が開示される。方法は、プロセッサにより、共通のレンダリングアセットと、他の送信される空間位置とは異なる一意の空間位置と、共通のレンダリングアセットおよび自身の一意の空間位置を用い、または、共通のレンダリングアセット、および、１以上のクライアントのそれぞれに送信された各一意の空間位置を用いてレンダーを生成するための１以上の命令とを１以上のクライアントへ送信する段階を備える。実施形態において、各一意の空間位置はランダムに生成される。
【００１０】
実施形態において、レンダーを生成するための命令は、一意の空間位置からレンダリングアセットに対してパス追跡を実行するための命令を含み、レンダーは、レンダリングアセットを含む環境の一部または全体の光マップである。実施形態において、レンダーはフレームであり、１以上の命令はさらに共通の視点を含み、当該共通の視点からフレームをレンダリングする。実施形態において、レンダリングアセットは表示域状態データオブジェクト（ＶＳＤＯ）であり、レンダーは、パス追跡の結果として計算される拡散照明データにより補正された複数のレンダリングアセットからなるセットである。
【００１１】
方法はさらに、プロセッサにより、レンダーを１以上のクライアントのそれぞれから受信する段階と、プロセッサにより、受信したレンダーから合成レンダーを生成する段階とを備える。このように生成された合成レンダーは、プロセッサにより、１以上のクライアントへ送信される。実施形態において、プロセッサにより合成レンダーを生成する段階は、プロセッサにより、受信した光マップを合成して、レンダリングアセットを含む環境の一部または全体の合成光マップを生成する段階を有する。実施形態において、プロセッサにより合成レンダーを生成する段階はさらに、受信したフレームを合成して合成フレームを生成する段階を備える。
【００１２】
合成レンダーを受信する方法が開示される。方法は、プロセッサにより、レンダリングアセットと、一意の空間位置と、受信したレンダリングアセットおよび一意の空間位置を用いてレンダーを生成するための１以上の命令とをサーバから受信する段階を備える。方法はさらに、プロセッサにより、１以上の命令に従ってレンダーを生成する段階と、プロセッサにより、生成されたレンダーをサーバへ送信する段階と、プロセッサにより、合成レンダーをサーバから受信する段階とを備える。実施形態において、方法はさらに、プロセッサにより、サーバに依存しない視点から反射照明をレンダリングする段階と、プロセッサにより、レンダリングされた反射照明と受信した合成レンダーとを組み合わせる段階と、プロセッサにより、組み合わせられレンダリングされた反射照明と受信した合成レンダーとをディスプレイへ出力する段階とを備える。
【００１３】
実施形態において、合成レンダーを生成するためのシステムが開示される。システムは、グラフィック処理ユニットと、プロセッサと、プロセッサにより実行されるプログラムロジックを実体的に記憶するための記憶媒体とを備える。実施形態において、プログラムロジックは、プロセッサにより実行される、共通のレンダリングアセットを１以上のクライアントへ送信する共通のレンダリングアセット送信ロジックと、プロセッサにより実行される、他の送信される空間位置とは異なる一意の空間位置を１以上のクライアントのそれぞれへ送信する空間位置送信ロジックと、プロセッサにより実行される、共通のレンダリングアセットおよび自身の一意の空間位置を用いてレンダーを生成するための１以上の命令を１以上のクライアントのそれぞれへ送信する命令送信ロジックとを備える。実施形態において、プログラムロジックはさらに、プロセッサにより実行される、１以上のクライアントのそれぞれからレンダーを受信する受信ロジックと、プロセッサにより実行される、受信したレンダーから合成レンダーを生成する合成レンダー生成ロジックと、プロセッサにより実行される、合成レンダーを１以上のクライアントへ送信する合成レンダー送信ロジックとを備える。
【００１４】
実施形態において、合成レンダーを受信するためのシステムが開示される。システムは、グラフィック処理ユニットと、プロセッサと、プロセッサにより実行されるプログラムロジックを実体的に記憶するための記憶媒体を備える。実施形態において、プログラムロジックは、プロセッサにより実行される、レンダリングアセットと、一意の空間位置と、受信したレンダリングアセットおよび一意の空間位置を用いてレンダーを生成するための１以上の命令とをサーバから受信するための受信ロジックを備える。プログラムロジックはさらに、プロセッサにより実行される、１以上の命令に従ってレンダーを生成するためのレンダー生成ロジックと、プロセッサにより実行される、生成されたレンダーをサーバに送信するための送信ロジックと、プロセッサにより実行される、サーバから合成レンダーを受信するための合成レンダー受信ロジックとを備える。実施形態において、システムはさらに、プロセッサにより実行される、サーバに依存しない視点から反射照明をレンダリングための照明レンダリングロジックを備える。またシステムは、プロセッサにより実行される、レンダリングされた反射照明と受信した合成レンダーとを組み合わせるための組み合わせロジックと、プロセッサにより実行される、組み合わせられレンダリングされた反射照明および受信した合成レンダーをディスプレイへ出力するための出力ロジックとを備える。
【００１５】
実施形態において、レンダーを生成する命令送信ロジックはさらに、一意の空間位置からレンダリングアセットのパス追跡を実行するための命令を備え、レンダーは、レンダリングアセットを含む環境の一部または全体の光マップである。実施形態において、合成レンダー生成ロジックはさらに、受信した光マップを合成してレンダリングアセットを含む環境の一部または全体の合成光マップを生成する合成ロジックを備える。実施形態において、合成レンダー生成ロジックはさらに、プロセッサにより実行される、受信したフレームを合成して合成フレームを生成する合成ロジックを備える。
【００１６】
それぞれの特徴が組み合わせられ得るこれらの実施形態、および他の実施形態は、以下の詳細な説明、および添付の図面を参照することにより当業者に明らかとなるであろう。
【図面の簡単な説明】
【００１７】
【図１】クラウドソースグラフィックレンダリングシステムを実装する例示的なクライアント−サーバシステムを示す。
【図２】一定の視点からのフレームのレンダリングを複数のクライアントに分散させる方法を示す。
【図３】任意のシーンの、例示的な受信されるクライアントフレームを示す。
【図３Ａ】図３の受信されるクライアントフレームを合成することにより生成される合成フレームを示す。
【図４】環境のレンダリングを複数のクライアントに分散させる方法を示す。
【図５】図４のクライアントの例示的な表示出力を示す。
【図６】例示的なネットワーク環境を示す。
【図７】例示的なコンピューティングシステムを示す。
【発明を実施するための形態】
【００１８】
本開示について、添付の図面に示される本願発明に係るいくつかの実施形態を参照し詳細に説明する。以下の説明において、本開示を深く理解いただけるよう多数の特定的な詳細が明記される。しかし、本開示はこれらの特定的な詳細のいくつか、または全てを用いずとも実施され得ることが当業者には明らかであろう。他の例においては、本開示を不必要に曖昧にしないように、周知の処理段階および／または構造について詳細に説明していない。加えて、特定の実施形態に関連して本開示を説明するが、この説明は、説明される実施形態によって本願発明を限定するよう意図されていないことを理解されたい。むしろ説明は、代替例、変形例、および同等物を、添付の請求項により規定される本開示の思想および態様の範囲に含まれるものとして網羅するよう意図されている。
【００１９】
複数のデバイス、コンポーネント、モジュールなどを含みうるシステムに関して様々な態様および特徴を説明する。様々なシステムが追加のデバイス、コンポーネント、モジュールなどを含みうる、および／または、図面と関連して説明されるデバイス、コンポーネント、モジュールなどの全ては含み得ないことを理解されたく、またそのことを認識されたい。これらのアプローチの組み合わせも用いられ得る。
【００２０】
クライアント−サーバアーキテクチャによりサーバは、自身のリソースを１以上のクライアントと共有することが可能になる。そのようなアーキテクチャは様々な利点を有する。例えが、典型的にはサーバはクライアントよりも多くのリソース（例えばプロセッサまたはメモリ）およびより高い性能を有するので、サーバはクライアントよりも速くタスクを完了し得る。そのような性能差は、タスクがより多くのリソースを要求する場合、またはクライアントが限られた量のリソースしか有さない場合において特に顕著になる。同時に、サーバがクライアントの代わりに、またはクライアントのためにタスクを実行する間、クライアントのリソースが解放され得、クライアントがローカルに実行する必要があるタスク（例えば、クライアントのユーザと相互作用するタスク）など他のタスクを実行し得る。
【００２１】
サーバで実行されるのに適し得るタスクのタイプとしては、クライアントへ送信される動画出力としての、サーバにより提供されるアプリケーションのレンダリングがある。コンピュータグラフィックの分野において、レンダリングは、通常コンピュータプログラムを用いて、モデルから画像を生成する処理と見なされ得る。通常、モデルは、３次元（３Ｄ）オブジェクトの記述であり、厳密に規定された言語またはデータ構造で表現され得る。モデルは、ジオメトリ、視点、テクスチャ、照明、陰影、運動、および他の適したタイプの情報を含みうる。モデルのレンダリングにより形成される画像は、ピクセルの集合により形成されるデジタル画像またはラスターグラフィック画像であり得る。本開示は、レンダリングの概念を、アプリケーションの何らかの出力を表す画像の生成にまで拡大する。レンダリングは、３Ｄデータと同様に２次元（２Ｄ）データを含む何らかのデータに基づいて実行され得る。３Ｄモデルに基づいた画像の生成に加えて、特定の実施形態においては、これらに限定される訳ではなくあくまで例としてではあるが、ウェブブラウザアプリケーション、ワード処理アプリケーション、スプレッドシートアプリケーション、マルチメディアアプリケーション、科学および医療向けアプリケーション、およびゲームアプリケーションなどのアプリケーションの出力を表す画像をレンダリングし得る。
【００２２】
しかし、前述したように、グラフィックレンダリングが純粋にサーバ側で行われるアーキテクチャは、追加のサーバおよびＧＰＵのコストのために拡張性の面で劣る。加えて、ピーク需要に対応するべく適切に追加されたサーバ／ＧＰＵインフラストラクチャを有するシステムは、オフピーク時において大幅に十分に活用されないことが多く、サーバまたはＧＰＵのリソースが無駄になる、または無意味となる。
【００２３】
ピアツーピアアーキテクチャはピア間でタスクを分担するための、当分野において周知の技術である。ピアツーピアネットワークは、より多くのノードがネットワークに参加するので、システムの能力およびリソース全体を増加させられるという利点がある。例えば、ＢｉｔＴｏｒｒｅｎｔネットワークにおいて、より多くのノードがファイルを共有または「シード（ｓｅｅｄ）」すれば、同ファイルを要求する他のノードへのファイル送信がより速くなる。ピアツーピアネットワークはファイル共有アプリケーションおよびコンテンツストリーミング配信アプリケーションにおいて普及しているが、それらの分散的な性質により、レイテンシーが高い点で不利であり、それにより一般的に、グラフィックレンダリングなどのリアルタイム処理には適していない。本開示は、集中型サーバベースサーバモデルを提供する。集中型サーバベースサーバモデルはグラフィックレンダリングタスクをクライアントノードに移行するので、グラフィックレンダリングの分野におけるピアツーピアアーキテクチャの利点の多くを享受することが出来る。
【００２４】
さらに、マルチＧＰＵレンダリングの既存の方法は、拡張性の面で劣る。典型的には、マルチＧＰＵシステムは、スプリットフレームレンダリング（ＳＦＲ）またはオルタナティブフレームレンダリング（ＡＦＲ）という２つの方法のうち一方を用いる。ＳＦＲにおいて、各ＧＰＵは各フレームの一部をレンダリングする。しかし、処理の配分が不均一であることが多く、フレームのある部分が複雑なジオメトリを含み、フレームの他の部分が比較的単純なジオメトリを含むなどといったことが起こりうる。多くの分散アルゴリズムはある部分のグラフィック的な複雑さを考慮し得るが、ＧＰＵの数が多くなるにつれ、分散アルゴリズムはより複雑になり、それ自体がプロセッサ集約的になってしまう。ＡＦＲは、完全なフレームのレンダリングをラウンドロビン式に個々のＧＰＵに分散させることを伴う。しかしこの技術は、前のフレームに先立つ次のフレームレンダリングに起因するより大きなレイテンシーのために拡張性の面で劣る。加えて、ＧＰＵの数がフレームレートに対する大きな比率に近づくと、次のフレームがどのようなものかを次のＧＰＵが時間的に先に知ることは論理的に不可能である。
【００２５】
本開示の一実施形態は、マルチＧＰＵ拡張性に関する課題を、任意の３Ｄ環境の拡散照明のレンダリングにパス追跡を用いることにより解決する。パス追跡は、オブジェクトで幾度か跳ね返る、またはオブジェクトを通る仮想カメラからの複数の光線を追跡することにより、光の物理的挙動を可能な限り細かくシミュレートするよう試みるレンダリング技術である。パス追跡により提供される画像品質は一般的に、従来のレンダリング方法を用いて生成される画像の品質よりも優れているが、計算的な要求がかなり大きくなるというマイナス面がある。パス追跡は当然ながら、ソフトシャドウ、被写界深度、被写体ぶれ、コースティック、アンビエントオクルージョン、および間接照明など、他の方法（光線追跡またはスキャンラインレンダリング）に特定的に追加されるべき多くの効果をシミュレートする。その正確さおよび偏りのない性質により、パス追跡は、他のレンダリングアルゴリズムの品質を検証する際に基準画像を生成するのに用いられる。しかし、仮定的な照明のパスの数は限りないので、レンダリングされたシーンまたはフレームが「完全に照明が当てられた」画像に集約される前に、比較的多数のサンプルを計算する必要がある。パス追跡されたサンプルの生成を分散させることにより、本願発明の実施形態は、サーバ側で行われるグラフィックレンダリングに従来より伴っていた高いコストを生じることなく、限りない拡張性およびピアツーピアアーキテクチャの利点を提供する、つまり、クラウドソースレンダリング処理により多くのノードが参加して、より速いレンダリング速度、および出力のより高い品質を提供する分散型グラフィックレンダリングシステムを開示する。
【００２６】
図１は、本願発明の特定の実施例が実施され得る例示的なネットワーク環境を示す。図１が示すように、本願発明の特定の実施例は、インターネットを含みうるネットワーククラウド６０に操作可能に結合された動画送信システム（ＶＴＳ）２０を備えるネットワーク環境において実施され得る。ネットワーククラウド６０は一般的に、１以上の相互接続されたネットワークを表し、それらネットワーク上で、本明細書において説明されるシステムおよびホストは通信を行うことが出来る。ネットワーククラウド６０は、パケットベースの広域ネットワーク（インターネットなど）、プライベートネットワーク、無線ネットワーク、衛星ネットワーク、セルラーネットワーク、ページングネットワークなどを含みうる。ネットワーククラウド６０内のネットワークのうちいくつかは、回線交換ネットワークでありうる。ネットワーク６０を含むコンピュータネットワーク環境は、（例えば）ＴＣＰ／ＩＰプロトコル、および／または他の適したプロトコルを採用するパケットベースの通信環境であり得、複数の相互接続されたデジタルパケット送信局またはルーティングノードを有する。クライアントノード８２、８４は、ネットワークサービスプロバイダまたは他の何らかの適した手段を介してネットワーク環境に操作可能に接続されている。クライアントノード８２、８４は、パソコンまたは携帯電話、或いは、ラップトップコンピュータ、パーソナルデジタルアシスタント（ＰＤＡ）など他のタイプのモバイルデバイスでありうる。クライアントノード８２は、任意のフレームまたはシーンをレンダリングすることが要求されるレンダリングタスクのいくつか、または全てを実行可能なＧＰＵを含む。クライアントノード８４はＰＤＡ、携帯電話、タブレットＰＣ、ポータブルゲームシステムなど低電力デバイスを含み得、シンクライアントを有し得、クラウドソースレンダリングシステムに参加するのに十分なグラフィック処理能力が不足している。
【００２７】
動画送信システム２０は、１以上の仮想世界、１以上の動画またはムービー、またはクライアントノード８２、８４上での表示のためにレンダリングされ得る何らかの３Ｄ環境を提供するネットワークアドレス可能なシステムである。動画送信システム２０はウェブサイトおよびサーバ機能を含み得る。ユーザはそこから、特定されたウェブページ、動画、および他のコンテンツをコンピュータネットワークを介して要求および受信し得る。
【００２８】
特定の実施例において、動画送信システム２０は１以上の物理サーバ２２および１以上のデータ記憶部２４を備える。１以上の物理サーバ２２は、ルーター２６を介してコンピュータネットワーク６０に操作可能に接続されている。１以上の物理サーバ２２は、クライアントノード８２、８４から要求を受信する、および、それに応答してクライアントノード８２、８４へデータを送信するなど、利用可能なコンテンツをユーザがブラウジング出来るようにする機能を提供する。ルーター２６からネットワーククラウド６０への接続は、レンダリングされた出力の複数のクライアントノード８２、８４からの受信、およびレンダリングされた合成出力のクライアントノード８２、８４への送信を同時に行うことをサポートするのに十分な帯域幅を有しているべきである。動画送信システム２０は受信機および放送機の両方として動作し、ルーター２６におけるパイプ（ｐｉｐｅ）はそのような機能をサポートするのに十分に大きくなくてはならず、つまり高帯域幅でなくてはならない。一実施例において、１以上の物理サーバにより提供される機能は、ウェブまたはＨＴＴＰサーバ、ＲＴＳＰサーバなどを含みうる。
【００２９】
上述した物理サーバ２２は、動画送信システム２０をサポートし実装するための機能を提供する。  一実施例において、データ記憶部２４はデジタルコンテンツデータオブジェクト、ユーザ情報、および他のメディアアセットなど動画コンテンツを記憶し得る。コンテンツデータオブジェクトまたはコンテンツオブジェクトは特定の実施例において、典型的にはデータファイルまたは記録に記憶される、または具体化されるデジタル情報の個別のアイテムである。コンテンツオブジェクトは、テキスト（例えば、ＡＳＣＩＩ、ＳＧＭＬ、ＨＴＭＬ）、画像（例えば、ｊｐｅｇ、ｔｉｆ、およびｇｉｆ）、グラフィック（ベクトルベース、またはビットマップ）、音声、動画（例えばｍｐｅｇ）、または他のマルチメディア、およびこれらの組み合わせを含む多くの形態をとりうる。コンテンツオブジェクトデータも、実行可能コードオブジェクト、オブジェクト、またはアセット定義などを含みうる。構造的には、コンテンツデータ記憶部２４には、大きな区分のデータ記憶装置および制御システムが付随し得る。特定の実施例において、コンテンツデータ記憶部２４は、データベースサーバ、大容量記憶媒体、メディアライブラリーシステムなどのコンポーネントを含む何らかの適した物理システムにより実装され得る。
【００３０】
特定の実施形態において、クラウドソースレンダリングシステムはソフトウェアプログラムを介して実装される。特定の実施形態において、以下において「ソフトウェアスタブ」、または単に「スタブ」と呼ぶソフトウェアプログラムは、クライアントノード８２、８４においてインストールされ実行され得る。特定の実施形態において、スタブはクライアントノード８２、８４と動画送信システム２０との間にネットワーク接続を確立し、クライアントノード８２、８４へのネットワーク接続を介して動画送信システム２０からコンピュータソフトウェアプログラムをダウンロードし得る。特定の実施形態において、動画送信システム２０からクライアントノード８２／８４へダウンロードされた１つのソフトウェアの実行可能コードは、ネットワーク接続を介してＶＴＳ２０からクライアント８２／８４に送信されるデータストリームに埋め込まれ得る。データストリームを受信すると、スタブは当該１つのソフトウェアの実行可能コードを抽出し、クライアントで実行するためにクライアント８２／８４のランダムアクセスメモリ（ＲＡＭ）へ直接ロードし得る。当該１つのソフトウェアはクライアントの永続的な記憶装置（例えばハードドライブ）には保存またはインストールされない。当該１つのソフトウェアがクライアント８２／８４上でのその実行を完了すると、当該１つのソフトウェアの実行可能コードがロードされたＲＡＭスペースが解放され、当該１つのソフトウェアはもはやクライアント８２／８４上には存在しなくなり得る。特定の実施形態において、スタブプログラムは、クラウドソースグラフィックレンダリングシステムに参加可能なクライアントノード８２にレンダリングエンジンまたはアプリケーションをインストールし、クラウドソースレンダリングに参加するために要求される処理能力が不足するクライアントノード８４にはビュアーアプリケーションのみをインストールする。
【００３１】
特定の実施形態において、スタブは、クライアント８２／８４上に保存またはインストールされるスタンドアロン型のソフトウェアプログラムであり得、または、クライアント８２／８４にインストールされる、ウェブブラウザへのプラグインまたはアドオンでありうる。スタブは、コンピュータソフトウェアプログラムを個々のコンピュータシステムに分散させるための既存の何らかの適した方法（例えばＣＤ、ＤＶＤ、ネットワークダウンロードなど）を用いてクライアント８２／８４に保存またはインストールされ得る。特定の実施形態において、スタブは、小さな（つまりサイズが小さい）ソフトウェアであり得、クライアントノード８２／８４の記憶容量をそれ程使わない。スタブがスタンドアロン型のソフトウェアプログラムの場合には自身で実行することが出来、スタブがプラグインまたはアドオンソフトウェアの場合にはウェブブラウザを介して実行され得る。
【００３２】
クライアント８２／８４上でコンピュータソフトウェアプログラムをダウンロードおよび起動するのにスタブを用いることにより、スタブだけがクライアント８２／８４上に保存またはインストールされる必要があることになる。他のソフトウェアは、クライアント８２／８４上で保存またはインストールされる必要なくクライアント８２／８４上でダウンロードおよび起動され得、このことにより、クライアント８２／８４の利用される記憶容量を低減し得る。さらに、１つのソフトウェアが、クライアントノード８２／８４のうち１つでの実行の直前にダウンロードされるので、特定の実施形態においては、当該１つのソフトウェアがダウンロードおよび起動される度に、当該ソフトウェアの最新のバージョン（または何らかの所望されるバージョン）を提供することが可能となる。
【００３３】
ソフトウェアスタブに関する詳細な説明については、２００９年１１月２３日に提出された、発明の名称が「Ｓｔｒｅａｍ−Ｂａｓｅｄ  Ｓｏｆｔｗａｒｅ  Ａｐｐｌｉｃａｔｉｏｎ  Ｄｅｌｉｖｅｒｙ  ａｎｄ  Ｌａｕｎｃｈｉｎｇ  Ｓｙｓｔｅｍ」である、出願人が共通する米国の一般の特許出願、米国特許出願第１２／６２４，１３３号を参照されたい。当該特許出願はその全体が参照により本明細書に組み込まれる。
【００３４】
図１は集中型のクライアント−サーバアーキテクチャを示しているが、本開示は、複数のクライアントノード間で通信を行うためのネットワークトポロジーの何れの方式もその範囲に含む。特定の実施形態において、クライアントノードはピアツーピアネットワークとして構成され得、この場合、ある特定のノードが中心ノードとして指定され、ＶＴＳ２０と同じ機能を実質的に実行する。特定の実施形態において、リングトポロジーが利用され得、特定のピアが、ＶＴＳ２０と実質的に同じ機能を実行するリングリーダとして指定され得る。本開示は、バス、スター、メッシュ、およびツリーネットワークトポロジーを含むがこれらに限定されない、グラフィック処理をピアノードに分散させるための何れの適したネットワークトポロジーもその範囲に含む。
【００３５】
図２は、１つのフレームの同じ視点からのレンダリングを各クライアントにクラウドソースする例示的な方法を示す。例えば、図２の方法は、例えばトイストーリー３などコンピュータにより生成されたムービーなどの同じムービーまたは動画を接続されたクライアントノード８２、８４の全てが見ている場合に利用され得る。ＶＴＳ２０により実行される動作は図２の左半分に示されており、参加しているノード８２の動作は、右半分の上側に示されており、全てのクライアントノード８２、８４の動作は、右半分の下側に示されている。
【００３６】
段階２０１において、ＶＴＳ２０はフレームをレンダリングするために必要なレンダリングアセットにアクセスする。特定の実施形態において、レンダリングアセットは、データ記憶部２４に記憶され得、後に、データ記憶部２４から読み取られ得る。特定の実施形態において、レンダリングアセットはＶＴＳ２０により動的に生成され得る。特定の実施形態において、レンダリングアセットは任意の環境、シーン、またはフレーム内の実際の３Ｄワイヤフレームモデルであり得る。しかし、この方法は帯域幅を多く要し、３Ｄオブジェクトの圧縮を活用しない。特定のオブジェクトにおいて、レンダリングアセットはカメラ視点からの立方体マップである。特定の実施形態において、レンダリングアセットはＶＳＤＯと呼ばれる、ピクセルまたはフラグメントシェーダを用いて任意のフレームに関してピクセル値にレンダリングされ得る層状の立方体マップを備える。
【００３７】
立方体マップは実質的に、立方体に形成された６つのテクスチャマップである。各テクスチャマップは、共通の基準点と相対的な、シーンに関するピクセル情報であるテクセルを含む。立方体の面のテクスチャマップは、ウィンドウレクタングル（ｗｉｎｄｏｗ  ｒｅｃｔａｎｇｌｅ）として同立方体の面を用い、共通の基準点からシーンをレンダリングすることにより生成され得る。各テクセルは、物質の性質（屈折率、色など）、基準点からの距離、および表面法線ベクトルを含みうる。シーンを表す複数の層状のテクスチャマップからなるセットは、深度剥離を用いて得られ得る。剥離の回数（ｎｕｍｂｅｒ  ｏｆ  ｐｅｅｌｉｎｇ  ｐａｓｓｅｓ）を制限することにより、層の数を制御することが出来る。ＶＳＤＯは最初にレンダリングデバイスにおいてオンザフライで生成され得、または、動画の要求に応答した後の送信のために記憶され得る。レンダリングデバイスは、深度剥離または他の何らかの適した処理と共に立方体マップおよび複数のレンダーターゲットを用いて、ＧＰＵ上でＶＳＤＯを効率的に生成し得る。
【００３８】
層状の（あるシーンの、深さで分類された層から成る）テクセルアレイの各テクセルは、テクセルの深度剥離層内の基準点と最も遠いオブジェクト地点との間の全てのオブジェクト地点に関する情報を記憶する。層状の立方体マップに対応するシーンのレンダリングされた表現を生成するために、グラフィック処理ユニットは、共通の原点から光線を追跡して、フラグメントシェーダユニットを用いてシーン内の原点とオブジェクトとの間の距離を判断し、原点から見える地点における輝度を計算する。典型的には、レンダー処理は、シーンのジオメトリをラスタライズすること、および、光線がピクセルを通過する最初の衝突を見つけることを伴う。ＶＳＤＯおよびＶＳＤＯレンダリングに関する詳細な説明については、２００９年６月１５日に提出された、発明の名称が「Ｒｅ−Ｕｔｉｌｉｚａｔｉｏｎ  ｏｆ  Ｒｅｎｄｅｒ  ａｓｓｅｔｓ  ｆｏｒ  Ｖｉｄｅｏ  ｃｏｍｐｒｅｓｓｉｏｎ」である、出願人が共通する米国の一般の特許出願、米国特許出願第１２／４８４，４６２号を参照されたい。当該特許出願はその全体が参照により本明細書に組み込まれる。
【００３９】
段階２０２において、ＶＴＳ２０は、レンダリングアセット、本例においてはシーンまたは環境のＶＳＤＯを、クラウドソースレンダリング処理に参加可能であるＧＰＵを有する何れかのクライアントノード８２へ送信する。特定の実施形態において、任意のシーンの最初のフレームのみがＶＳＤＯのクライアントへの送信を要求し、後続のフレームは、カメラまたは個々のオブジェクトがどのように変化したかを示す描画命令のみを要求する。特定の実施形態において、特的のシーンの静的な要素は、１つのＶＳＤＯとして送信され得、シーンの動的な要素は別個のＶＳＤＯとして送信される。よって、動きのあるシーンであっても、動的なＶＳＤＯだけが更新または送信される必要がある。本開示は、動画データを圧縮する、または以前に送信されたＶＳＤＯの再利用による帯域幅を節約する何れの適した方式もその範囲に含む。
【００４０】
ＶＴＳ２０は、クラウドソースレンダリング処理に参加している各クライアントノード８２に一意の空間位置も送信する。一意の空間位置は、パス追跡のための仮想眼またはレンズの位置を表す。各クライアントノード８２は、仮定的な光線が光源に当たるまで（場合によってはいつまでも当たらない）自身の一意の空間位置から逆方向に追跡する。特定の実施形態において、各クライアントノード８２に割り当てられる一意の空間位置は、ＶＴＳ２０によりランダムに割り当てられる。特定の実施形態において、一意の位置は、光源に衝突する可能性が高い光線を特定することを試みるパス追跡アルゴリズムに基づく。特定の実施形態において、パス追跡アルゴリズムは以前に追跡して成功したパスを僅かに修正する。特定の実施形態において、一意の空間位置を選択するパス追跡アルゴリズムは（Ｍｅｔｒｏｐｏｌｉｓ  Ｌｉｇｈｔ  Ｔｒａｎｓｐｏｒｔに記載される）Ｍｅｔｒｏｐｏｌｉｓ−Ｈａｓｔｉｎｇｓ、Ｋａｊｉｙａ、またはＭｏｎｔｅ  Ｃａｒｌｏアルゴリズムである。本開示は、一意の空間位置をクラウドソースレンダリング処理に参加しているクライアントノードに割り当てる何れの適したパス追跡アルゴリズムまたは方法もその範囲に含む。
【００４１】
段階２０３において、クライアントノード８２は、一意の空間位置から、受信したレンダリングアセットのパス追跡を実行する。前述したように、レンダリングアセットは、１以上のＶＳＤＯであり得、以前に送信されたＶＳＤＯの変換または描画命令であり得、或いは、これら２つの何らかの組み合わせでありうる。特定の実施形態において、クライアントノード８２は２方向のパス追跡を実行する。本開示は、パス追跡サンプルを得る何れの適した方式もその範囲に含む。パス追跡処理の結果として、クライアントデバイス８２は、フレームの拡散照明の大まかな推定であるサンプルフレームを生成する。クライアントノード８２は、シーンの照明に関する質が悪い推定であり、ノイズが多く含まれてはいるもののこれらのサンプルフレームを比較的迅速に生成可能である。
【００４２】
段階２０４において、クラウドソースレンダリング処理に参加している各クライアントノード８２は、自身のレンダリングされたフレームをＶＴＳ２０に送信し返す。特定の実施形態において、照明データがＶＳＤＯに合成され得、クライアントノード８２は、照明データにより補正されたＶＳＤＯを送信し返し得る。特定の実施形態において、光マップ、またはＶＳＤＯにマッピングされた照明情報を含むテクスチャのみがＶＴＳ２０に返される。本開示は、帯域幅最適化または動画圧縮の何れの適した方式もその範囲に含む。
【００４３】
段階２０５において、ＶＴＳ２０は受信したフレームから合成フレームを生成する。光の相加的（ａｄｄｉｔｉｖｅ）な性質のために、ＶＴＳ２０は、全ての受信したフレームを合成し、受信したフレームの数で除算することにより、合成フレームを迅速に生成し得る。特定の実施形態において、ＶＴＳ２０は、大きな浮動小数点バッファを用いて合計の結果を記憶する。特定の実施形態において、ＶＴＳ２０は、受信した光マップから合成光マップを生成し、合成マップをＶＳＤＯにマッピングする。本開示は、合成フレームを生成する何れの適した方式もその範囲に含む。シーンの複雑さ、および、サンプルの数に応じて、合成フレームは完全なラジオシティ照明（ｐｅｒｆｅｃｔ  ｒａｄｉｏｓｉｔｙ  ｌｉｇｈｔｉｎｇ）へと集約されるべきである。例えば、別個の８つサンプルを生成する８つのクライアントノードは、フレームのかなり良好な表現を生成し得、６４個のサンプルはノイズを殆ど含まない合成フレームを生成し得、１０００個のサンプルは、完全な拡散照明のフレームを生成し得る。
【００４４】
段階２０６において、ＶＴＳ２０は、動画ストリームを見ている全てのクライアントノード（参加しているノード８２、および参加していないノード８４の両方）へ合成フレームを送信し、段階２０７において、個々のクライアントノード８２／８４は、それぞれのディスプレイに受信した合成フレームを表示する。段階２０８において、処理が終了し、ＶＴＳは、動画シーケンスの次のフレームのために、レンダリングアセット、変換および描画命令、またはこれらの２つの混合物を送信する。
【００４５】
図３は、クライアントノード８２により受信されるレンダリングされたフレームの例を示す。各フレーム３０１〜３２０は、任意のシーンに関して、一意の空間位置からパス追跡を実行することにより得られる、個々のクライアントノード８２からの出力を表す。フレーム３０１〜３２０はそれぞれ明瞭さが異なる。例えば、フレーム３０１、３０２は、シーン内のオブジェクトの詳細を殆ど表さず、フレーム３２０は、ノイズを多く含むが、シーンのかなり良好な表現をビュアーに提供する。図３Ａは、フレーム３０１〜３２０を合成することにより生成される例示的な合成フレーム３２１を表す。まだ幾分ノイズを含んではいるが、当該合成フレームは、シーンの明瞭な画像を提供し、柔らかな反射、影、透明度、および、コースティックを含む正確性の高い拡散照明を含む。図３および３Ａは、光の相加的な性質、および、パス追跡により生成される２０のフレームの組み合わせにより得られる品質の表現を示す。よって、本願発明は、ＢｉｔＴｏｒｒｅｎｔにおける「シーディング」などピアツーピアファイル共有と類似している。参加しているクライアントノード８２の数が多ければ多い程、レンダリングのスピードはより速くなり、出力を要求する全てのノードに配信されるレンダリングされた出力の品質はより高くなる。例えば、あるシーンのために合成されなければならないサンプルの数が参加しているノードの数より多い特定の実施形態において、中心サーバまたは参加しているノードは、複数のレンダリングを実行しなければならず、よって、レンダリング時間全体が長くなる。より多くのクライアントノードが処理を行い、互換性のあるＧＰＵがシーンを「シード」することより、レンダリング速度は速くなる。
【００４６】
図４は、本願発明の一実施形態に係る、環境のレンダリングを複数のクライアントに分散させる例示的な方法を示す。特定の実施形態において、ＶＴＳ２０の複数のユーザは、インタラクティブなプログラムを利用し得、この場合、各クライアントノード８２／８４のディスプレイは、特定のカメラ視点に固定されていない。例えば、複数のユーザは、Ｍａｙａまたは３Ｄ  Ｓｔｕｄｉｏ  Ｍａｘなどのコンピュータ支援設計（ＣＡＤ）プログラムを用いて、異なる様々な角度から特定の環境を独立して見得る。他の例として、複数のクライアントノードがビデオゲームで遊んでいるかもしれず、複数のユーザが同じ環境内で相互作用し合っているかもしれない。例えば、複数のユーザの全てが、異なる処理能力を有するデバイスを介して、Ｗｏｒｌｄ  ｏｆ  Ｗａｒｃｒａｆｔの特定の部屋にいるかもしれない。
【００４７】
図５は、そのようなシナリオの例を示す。図５において、３Ｄ環境５００は、いくつかの光源５０３および光を反射するプール５０４を含む。光を反射するプール５０４は、レンダリングされると、拡散照明と反射照明との両方を含みうる。２人のユーザにより制御されるキャラクタ５０１、５０２が環境５００にいる。ユーザはそれぞれ、特定のカメラ視野および表示域５０１ａ、５０２ａを有する。光源５０３から環境５００への反射を含む反射照明は、光線のパスと各ユーザの表示域５０１ａ、５０２ｂとの両方に関する知識を要する。よって、特にアクションゲームまたはファーストパーソンシューティングゲームなどの動きの速い、リアルタイムのアプリケーションにおいて、反射照明と比較し、拡散照明は動きが遅く、静的である。この例の目的において、ユーザ５０１は、高性能のＧＰＵを有するパソコンなど、またはネットワーク接続されたゲーミングコンソールなどクラウドソースレンダリング処理に参加可能なデバイス（クライアントノード８２）を利用しており、ユーザ５０２は、携帯電話またはタブレットコンピュータなどの、自身の反射照明さえもレンダリングするグラフィック処理能力を有さないシンクライアントデバイスを利用している。
【００４８】
図４に戻ると、段階４０１において、ＶＴＳ２０は特定の環境５００のためのＶＳＤＯを生成し、またはＶＳＤＯにアクセスする。ＶＴＳ２０は、クライアントノード８２、８４で実行するソフトウェアスタブからの要求に応答してＶＳＤＯを生成し得る。例えば、クライアントノード８２／８４のユーザがゲームアプリケーションを起動させる、またはユーザのプレーヤが特定の環境に入るよう移動していること、または特定の方向に向いていることを示すコマンドをＶＴＳへ送信した場合、ＶＴＳ２０は動的に、ユーザのキャラクタの周囲の環境内のオブジェクトのためにＶＳＤＯを生成する。
【００４９】
段階４０２において、ＶＴＳ２０は、ＶＳＤＯおよび一意の空間位置を各参加しているクライアントノード８２に送信する。特定の実施形態において、ＶＴＳ２０は、クライアントのユーザが新たな環境に入った場合のみ、ＶＳＤＯを送信する。加えて段階４０２において、ＶＴＳ２０は、一意の位置のインジケータを参加しているクライアントノード８２へ送信する。この一意の位置のインジケータは、クライアントノード８２により表されるユーザの表示域５０１ａに依存しないが、むしろ、拡散照明の計算のためにパス追跡を開始するランダムな地点である。特定の実施形態において、各クライアントノード８２に割り当てられる一意の空間位置は、ＶＴＳ２０によりランダムに割り当てられる。特定の実施形態において、一意の位置は、光源に衝突する可能性が高い光線を特定することを試みるパス追跡アルゴリズムに基づく。特定の実施形態において、パス追跡アルゴリズムは以前に追跡して成功したパスを僅かに修正する。特定の実施形態において、一意の空間位置を選択するパス追跡アルゴリズムは（Ｍｅｔｒｏｐｏｌｉｓ  Ｌｉｇｈｔ  Ｔｒａｎｓｐｏｒｔに記載される）Ｍｅｔｒｏｐｏｌｉｓ−Ｈａｓｔｉｎｇｓ、Ｋａｊｉｙａ、またはＭｏｎｔｅ  Ｃａｒｌｏアルゴリズムである。本開示は、一意の空間位置をクラウドソースレンダリング処理に参加しているクライアントノードに割り当てる何れの適したパス追跡アルゴリズムまたは方法もその範囲に含む。
【００５０】
段階４０３において、クライアントノード８２はパス追跡を実行し、環境５００のために光マップを生成する。光マップは単に、ＶＳＤＯにマッピングされる、またはスキンされ得る周囲または拡散照明データを含むテクスチャである。光マップがＶＳＤＯにマッピングされ、ＶＳＤＯがレンダリングエンジンによりレンダリングされた場合、シーンまたは環境はユーザにとって、正確に照明が当てられたように見える。特定の実施形態において、光マップは単に、ＶＳＤＯの追加の層である。特定の実施形態において、光マップは、ＶＳＤＯとは別に送信され得る。特定の実施形態において、光マップは、ＪＰＧまたは離散コサイン変換（ＤＣＴ）など２Ｄ圧縮アルゴリズムを用いて圧縮され得る。
【００５１】
段階４０４において、参加している各クライアントノード８２は、自身の光マップをＶＴＳ２０へ送信する。特定の実施形態において、各クライアントノード８２は、補正されたＶＳＤＯを送信し返す。特定の実施形態において、各クライアントノード８２は、送信の前に、自身が生成した光マップを圧縮する。本開示は、レンダリングされた拡散照明情報をＶＴＳ２０へ返す何れの適した方式もその範囲に含む。
【００５２】
段階４０５において、ＶＴＳ２０は、クライアントノード８２から受信した光マップに基づき合成光マップを生成する。光の相加的な性質は、個々のフレームに対して当てはまるように光マップにも等しく当てはまる。特定の実施形態において、ＶＴＳ２０は、全ての受信した光マップの合計の結果を大きな浮動小数点バッファに記憶し、受信した光マップの数で同結果を除算することにより合成光マップを生成する。特定の実施形態において、閾値の時間、または受信したクライアントの光マップの閾値の数に達した場合、ＶＴＳは自動的に合成光マップを生成する。各クライアントノードの光マップは所定の閾値より拡散照明の品質を僅かにしか向上させないので、ＶＴＳ２０は、レイテンシーのために到着が遅いクライアントの光マップを待つことなく、合成光マップを生成することを選択してもよい。特定の実施形態において、ＶＴＳ２０は、リフレッシュ毎に最高の品質の光マップを得るべく、合成光マップを生成する前に、全てのクライアントノードの光マップが受信されるまで待つ。拡散照明は視点に依存せず、（光源が移動しない場合）環境と共に急激に変化しないので、視点を変化させてパンしているユーザが、環境の拡散照明をリフレッシュする際のレイテンシーに気付く可能性は低い。他方、ユーザの視点と直接的に関連する反射照明をレンダリングする際のレイテンシーには非常に気付きやすい。
【００５３】
段階４０６において、ＶＴＳ２０は、合成光マップを参加しているクライアントノード８２へ送信し返す。特定の実施形態において、ＶＴＳ２０は合成光マップを備える層により補正された環境５００のための１以上のＶＳＤＯを送信し返す。特定の実施形態において、ＶＴＳ２０は、合成光マップのみを送信する。特定の実施形態において、合成光マップは、２Ｄ圧縮技術を用いて圧縮され得る。特定の実施形態において、ＶＴＳ２０は、クライアントノード８２へ送信された同じＶＳＤＯのための前の光マップと、合成光マップとの間の変化のみを送信する。本開示は、拡散照明データをクライアントノード８２へ送信する際に帯域幅を節約するのに適した何れのメカニズムもその範囲に含む。
【００５４】
段階４０７において、参加しているクライアントノード８２は、自身の視点（視点５０１ａなど）に基づき、環境のための反射照明をレンダリングする。参加しているクライアントノード８２は拡散照明のためにパス追跡を実行するのに十分な程高性能のＧＰＵを有するので、それらは反射照明をレンダリングするのに十分な程高性能であるはずである。段階４０７における反射照明の生成と同時に、各クライアントノード８２のためのユーザの表示域（５０１ａなど）は、クライアントノード８２のディスプレイ上でレンダリングされる。
【００５５】
ユーザ５０２は、パス追跡を実行するのに十分な程高性能なＧＰＵを有さない参加していないクライアントノード８４を利用しているので、特定の実施形態において、ＶＴＳ２０は、クライアントデバイス８４が自身の視点に依存した反射照明を実行する処理能力を有していないものと想定する。よって、ＶＴＳ２０は、サーバーサイドでクライアントノード８４のための表示域全体（表示域５０２ａなど）をレンダリングする。
【００５６】
段階４０９において、ＶＴＳ２０は、環境のためのＶＳＤＯ、合成光マップ、および、接続された各クライアントノード８４から受信したカメラ情報に基づき、シンクライアントノード８４の表示域をレンダリングする。特定の実施形態において、ＶＴＳ２０は、ＶＳＤＯの原点と、各クライアント８４の基準点（カメラ表示域）との間の差を補正するためにヒット機能（ｈｉｔ  ｆｕｎｃｔｉｏｎ）を利用する。
【００５７】
段階４１０において、ＶＴＳ２０は、各シンクライアント８４のためのレンダリングされた表示域フレームを、各クライアントへ送信する。特定の実施形態において、フレームは、２Ｄ圧縮技術を用いて圧縮され得る。段階４１１において、クライアントデバイス８４は、それぞれのディスプレイ上に、各自受信したフレームを表示する。
【００５８】
よって、本願発明の特定の実施例は、ピアツーピアのような性質を有する、完全に拡張可能な分散型レンダリングアーキテクチャを提供する。最終的なレンダリングされた画像の品質は、分散型レンダリングシステムに参加しているクライアントノードの数に直接的に関連している。
【００５９】
特定の実施形態は、ネットワーク環境で実装され得る。図６は、例示的なネットワーク環境６００を示す。ネットワーク環境６００は、１以上のサーバ６２０と１以上のクライアント６３０とを互いに結合するネットワーク６１０を含む。特定の実施形態において、ネットワーク６１０はイントラネット、エクストラネット、仮想プライベートネットワーク（ＶＰＮ）、ローカルエリアネットワーク（ＬＡＮ）、無線ＬＡＮ（ＷＬＡＮ）、広域ネットワーク（ＷＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、通信網、衛星ネットワーク、インターネットの一部、他のネットワーク６１０、または２以上のそのようなネットワーク６１０の組み合わせである。本開示は、何れの適したネットワーク６１０もその範囲に含む。
【００６０】
１以上のリンク６５０が、サーバ６２０またはクライアント６３０をネットワーク６１０に結合する。特定の実施形態において、１以上のリンク６５０はそれぞれ、１以上の有線、無線、または光リンク６５０を含む。特定の実施形態において、１以上のリンク６５０はそれぞれ、イントラネット、エクストラネット、ＶＰＮ、ＬＡＮ、ＷＬＡＮ、ＷＡＮ、ＭＡＮ、通信網、衛星ネットワーク、インターネットの一部、他のリンク６５０、または２以上のそのようなリンク６５０の組み合わせである。本開示は、サーバ６２０およびクライアント６３０をネットワーク６１０に結合する何れの適したリンク６５０もその範囲に含む。
【００６１】
特定の実施形態において、各サーバ６２０は、統合型（ｕｎｉｔａｒｙ）サーバであり得、または、複数のコンピュータまたは複数のデータセンターに亘る、分散型サーバでありうる。サーバ６２０は、これらに限定される訳ではなくあくまで例としてではあるが、ウェブサーバ、ニュースサーバ、メールサーバ、メッセージサーバ、広告サーバ、ファイルサーバ、アプリケーションサーバ、エクスチェンジサーバ（ｅｘｃｈａｎｇｅ  ｓｅｒｖｅｒ）、データベースサーバ、またはプロキシサーバなど様々なタイプのサーバであり得る。特定の実施形態において、各サーバ６２０は、サーバ６２０により実装またはサポートされる適切な機能を実行するための、ハードウェア、ソフトウェア、埋め込みロジックコンポーネント、または２以上のそのようなコンポーネントの組み合わせを含みうる。例えば、ウェブサーバは一般的に、ウェブページまたはウェブページの特定の要素を含むウェブサイトを提供可能である。より詳細には、ウェブサーバは、ＨＴＭＬファイル、または他のファイルタイプを提供し得、或いは、要求に応じて動的にファイルを作成または構成し得、クライアント６３０からのＨＴＴＰまたは他の要求に応答してそれらのファイルをクライアント６３０へ通信し得る。メールサーバは一般的に、電子メールサービスを様々なクライアント６３０に提供可能である。データベースサーバは一般的に、１以上のデータ記憶部に記憶されたデータを管理するためのインタフェースを提供可能である。
【００６２】
特定の実施形態において、各クライアント６３０は、ハードウェア、ソフトウェア、埋め込みロジックコンポーネント、または２以上のそのようなコンポーネントの組み合わせを含む、クライアント６３０により実装またはサポートされる適切な機能を実行可能である電子デバイスであり得る。これらに限定される訳ではなくあくまで例としてではあるが、クライアント６３０は、デスクトップコンピュータシステム、ノートブックコンピュータシステム、ネットブックコンピュータシステム、ハンドヘルド電子デバイス、または携帯電話であり得る。クライアント６３０は、クライアント６３０におけるネットワークユーザがネットワーク６１０にアクセスすることを可能とし得る。クライアント６３０は、Ｍｉｃｒｏｓｏｆｔ  Ｉｎｔｅｒｎｅｔ  ＥｘｐｌｏｒｅｒまたはＭｏｚｉｌｌａ  Ｆｉｒｅｆｏｘなどのウェブブラウザを有し得、１以上のアドオン、プラグイン、またはＧｏｏｇｌｅ  ＴｏｏｌｂａｒまたはＹａｈｏｏ  Ｔｏｏｌｂａｒなどの拡張機能を有し得る。クライアント６３０は、そのユーザが他のクライアント６３０における他のユーザとの通信を行うことを可能とする。本開示は、何れの適したクライアント６３０もその範囲に含む。
【００６３】
特定の実施形態において、１以上のデータ記憶装置６４０は、１以上のリンク６５０を介して１以上のサーバ６２０に通信可能にリンクされ得る。特定の実施形態において、データ記憶装置６４０を用いて、様々なタイプの情報を記憶し得る。特定の実施形態において、データ記憶装置６４０に記憶された情報は、特定のデータ構造に従って整理され得る。特定の実施形態においては、サーバ６２０またはクライアント６３０が、データ記憶装置６４０に記憶された情報を管理する（例えば、読み取る、修正する、追加する、削除するなど）ことを可能とするインタフェースが提供され得る。
【００６４】
特定の実施形態において、各サーバ６２０は、１以上のクライアント６３０に同時にサービスし得、自身がサポートするクライアント６３０のためにレンダリングを実行し得る。サーバ６２０は、動画ストリーム内のレンダリングされた画像をそれぞれ特定のフレームとしてエンコードすることにより、自身がサポートする特定のクライアント６３０のためにレンダリングされた画像を送信し得、動画ストリームをクライアント６３０へ送信する。動画ストリームを受信するとクライアント６３０は、画像フレームを表示するために抽出するべく動画ストリームをデコードし得る。
【００６５】
特定の実施形態は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアとの組み合わせとして実装され得る。これらに限定される訳ではなくあくまで例としてではあるが、１以上のコンピュータシステムは、本明細書に説明される、または示される１以上の処理の１以上の段階を実行する特定のロジックまたはソフトウェアを実行し得る。コンピュータシステムのうち１以上は、統合型であり、または適宜、複数のコンピュータシステムまたは複数のデータセンターに亘る分散型であり得る。本開示は、何れの適したコンピュータシステムもその範囲に含む。特定の実施形態において、本明細書に説明される、または示される１以上の処理の１以上の段階の実行は、１以上の特定の地理的位置に限定される必要はなく、時間的な制約を受ける必要もない。このことに限定される訳ではなくあくまで例としてではあるが、１以上のコンピュータシステムは、「リアルタイムで」、「オフラインで」、「バッチモードで」、または適宜、これらの適した組み合わせにより、自身の機能を実行し得る。コンピュータシステムのうち１以上は、適宜、異なる時間に、異なる位置で、異なる処理を用いて自身の機能の１以上の部分を実行し得る。本明細書において、ロジックについて言及した場合、適宜、そのことはソフトウェアを包含し得、その逆のことも言える。ソフトウェアについて言及した場合、適宜、そのことは１以上のコンピュータプログラムを包含し得、その逆のことも言える。ソフトウェアについて言及した場合、適宜、そのことはデータ、命令、またはそれら両方を包含し得、その逆のことも言える。同様に、データについて言及した場合、適宜、そのことは命令を包含し得、その逆のことも言える。
【００６６】
１以上のコンピュータ可読記憶媒体は、特定の実施形態を実装するソフトウェアを記憶し得、または、そのようなソフトウェアを具体化し得る。コンピュータ可読媒体は適宜、ソフトウェアを運搬する、伝達する、含む、保持する、維持する、伝搬する、保有する、記憶する、送信する、運ぶ、または具体化することが可能な何らかの媒体でありうる。コンピュータ可読媒体は適宜、生体媒体、化学媒体、電子媒体、電磁媒体、赤外線媒体、磁気媒体、光学媒体、量子媒体、他の適した媒体、またはそのような媒体の２以上の組み合わせでありうる。コンピュータ可読媒体は、１以上のナノメートルスケールのコンポーネントを含み得、または、ナノメートルスケールのデザインまたは生成物（ｆａｂｒｉｃａｔｉｏｎ）を具体化し得る。例示的なコンピュータ可読記憶媒体は、コンパクトディスク（ＣＤ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、フロッピー（登録商標）ディスク、フロプティカルディスク、ハードディスク、ホログラフィック記憶デバイス、集積回路（ＩＣ）（特定用途向け集積回路（ＡＳＩＣ）など）磁気テープ、キャッシュ、プログラマブルロジックデバイス（ＰＬＤ）、ランダムアクセスメモリ（ＲＡＭ）デバイス、読取専用メモリ（ＲＯＭ）デバイス、半導体記憶デバイス、および他の適したコンピュータ可読記憶媒体を含みうるがこれらに限定されない。
【００６７】
特定の実施形態を実装するソフトウェアは適宜、何らかの適した（手続き指向、またはオブジェクト指向であり得る）プログラミング言語、またはプログラミング言語の組み合わせで書かれ得る。何らかの適したタイプの（シングルまたはマルチプロセッサコンピュータシステムなどの）１または複数のコンピュータシステムが適宜、特定の実施形態を実装するソフトウェアを実行し得る。汎用コンピュータシステムが適宜、特定の実施形態を実装するソフトウェアを実行し得る。
【００６８】
例えば、図７は、特定の実施形態の１以上の部分を実装するのに適した例示的なコンピュータシステム７００を示す。本開示においては、特定の構成を有する特定のコンポーネントを備えた特定のコンピュータシステム７００が説明され示されるが、本開示は、何らかの適した構成を有する何らかの適したコンポーネントを備えた何れの適したコンピュータシステムもその範囲に含む。さらに、コンピュータシステム７００は、例えば、１以上の集積回路（ＩＣ）、１以上のプリント基板（ＰＣＢ）、１以上のハンドヘルドデバイスまたは他の（携帯電話またはＰＤＡなどの）デバイス、１以上のパソコン、または１以上のスーパーコンピュータなど何らかの適した物理形態をとり得る。
【００６９】
システムバス７１０は、コンピュータシステム７００のサブシステムを互いに結合する。本明細書において、バスについて言及した場合、そのことは、共通の機能に資する１以上のデジタル信号線を包含する。本開示は、何らかの適したバスアーキテクチャを有する、何らかの適した（１以上のバスメモリ、１以上の周辺機器用バス、１以上のローカルバス、またはこれらの組み合わせなど）バス構造を含む何れかの適したシステムバス７１０もその範囲に含む。例示的なバスアーキテクチャには、Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＳＡ）バス、Ｅｎｈａｎｃｅｄ  ＩＳＡ（ＥＩＳＡ）バス、Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＭＣＡ）バス、Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ  ｌｏｃａｌ（ＶＬＢ）バス、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）バス、ＰＣＩ−Ｅｘｐｒｅｓｓバス（ＰＣＩ−Ｘ）、およびＡｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ（ＡＧＰ）バスが含まれるがこれらに限定される訳ではない。
【００７０】
コンピュータシステム７００は、１以上のプロセッサ７２０（または中央処理装置（ＣＰＵ））を含む。プロセッサ７２０は、命令、データ、またはコンピュータアドレスの一時的かつローカルな記憶のためにキャッシュ７２２を含みうる。プロセッサ７２０は、メモリ７３０を含む１以上の記憶デバイスに結合される。メモリ７３０は、ランダムアクセスメモリ（ＲＡＭ）７３２、および読取専用メモリ（ＲＯＭ）７３４を含みうる。データおよび命令は、プロセッサ７２０とＲＡＭ７３２との間を２方向に転送され得る。データおよび命令は、ＲＯＭ７３４からプロセッサ７２０に１方向に転送され得る。ＲＡＭ７３２およびＲＯＭ７３４は、何らかの適したコンピュータ可読記憶媒体を含みうる。
【００７１】
コンピュータシステム７００は、プロセッサ７２０に対して双方向に結合された固定型記憶装置７４０を含む。記憶制御ユニット７５２を介して、固定型記憶装置７４０がプロセッサ７２０に結合され得る。固定型記憶装置７４０は、追加のデータ記憶容量を提供し得、何らかの適したコンピュータ可読記憶媒体を含みうる。固定型記憶装置７４０は、オペレーティングシステム（ＯＳ）７４２、１以上の実行ファイル７４４、１以上のアプリケーションまたはプログラム７４６、データ７４８などを記憶し得る。典型的には固定型記憶装置７４０は、主記憶装置よりも処理速度が遅い（ハードディスクなど）二次記憶媒体である。適切な場合には、固定型記憶装置７４０により記憶された情報は、メモリ７３０内に仮想メモリとして含まれ得る。
【００７２】
プロセッサ７２０は、例えば、グラフィック制御装置７５４、動画インタフェース７５８、入力インタフェース７６０、出力インタフェース７６２、および記憶インタフェース７６４など様々なインタフェースに結合され得、またそれらのインタフェースはそれぞれさらに、適切なデバイスに結合され得る。例示的な入出力デバイスには、動画ディスプレイ、トラックボール、マウス、キーボード、マイク、タッチセンサー式ディスプレイ、トランスデューサ―カードリーダー、磁気または紙テープ読み取り装置、タブレット、スタイラス、音声または手書き文字認識装置、生体情報読み取り装置、またはコンピュータシステムなどが含まれるがこれらに限定されない。ネットワークインタフェース７５６は、プロセッサ７２０を他のコンピュータシステムまたはネットワーク７８０に結合し得る。ネットワークインタフェース７５６により、プロセッサ７２０は、特定の実施形態の段階を実行する過程で、ネットワーク７８０から情報を受信し得、ネットワーク７８０へ情報を送信し得る。特定の実施形態は、プロセッサ７２０のみで実行され得る。特定の実施形態は、プロセッサ７２０と１以上の遠隔のプロセッサとが協働して動作し、実行され得る。
【００７３】
コンピュータシステム７００がネットワーク７８０に接続されたネットワーク環境において、コンピュータシステム７００は、ネットワーク７８０に接続された他のデバイスと通信を行いうる。コンピュータシステム７００は、ネットワークインタフェース７５６を介してネットワーク７８０と通信を行い得る。例えば、コンピュータシステム７００は、ネットワークインタフェース７５６において１以上の受信パケットの形態でネットワーク７８０から（他のデバイスからの要求または応答などの）情報を受信し得、メモリ７３０は次の処理のために受信パケットを記憶し得る。コンピュータシステム７００は、ネットワークインタフェース７５６から１以上の送信パケットの形態でネットワーク７８０へ（他のデバイスへの要求または応答などの）情報を送信し得、メモリ７３０は送信パケットを、送信されるまで記憶し得る。プロセッサ７２０は、特定の必要性に応じて、処理すべく、メモリ７３０内の受信パケットまたは送信パケットにアクセスし得る。
【００７４】
コンピュータシステム７００は、（キーパッド、キーボード、マウス、スタイラスなどを含みうる）１以上の入力デバイス７６６、（１以上のディスプレイ、１以上のスピーカ、１以上のプリンタなどを含みうる）１以上の出力デバイス７６８、１以上の記憶デバイス７７０、および１以上の記憶媒体７７２を有し得る。入力デバイス７６６は、コンピュータシステム７００の外部または内部であり得る。出力デバイス７６８は、コンピュータシステム７００の外部または内部であり得る。記憶デバイス７７０は、コンピュータシステム７００の外部または内部であり得る。記憶媒体７７２は、コンピュータシステム７００の外部または内部であり得る。
【００７５】
特定の実施形態は、本明細書において説明された、または示された１以上の処理の１以上の段階を実行するためのソフトウェアを具体化する１以上のコンピュータ可読記憶媒体を含む１以上のコンピュータ記憶装置製品に関する。特定の実施形態において、媒体、ソフトウェア、またはこれら両方の１以上の部分は、本明細書において説明された、または示された１以上の処理の１以上の段階を特に実行するように設計され製造され得る。加えて、または代替的に、特定の実施形態において、媒体、ソフトウェア、またはこれら両方の１以上の部分は、本明細書において説明された、または示された処理に関して特定的に設計または製造されておらず、一般的に利用可能であり得る。例示的なコンピュータ可読記憶媒体には、（ＣＤ−ＲＯＭなどの）ＣＤ、ＦＰＧＡ、フロッピー（登録商標）ディスク、フロプティカルディスク、ハードディスク、ホログラフィック記憶デバイス、（ＡＳＩＣなどの）ＩＣ、磁気テープ、キャッシュ、ＰＬＤ、ＲＡＭデバイス、ＲＯＭデバイス、半導体記憶デバイス、および他の適したコンピュータ可読記憶媒体が含まれるがこれらに限定されない。特定の実施形態において、ソフトウェアは、コンパイラが生成し得る機械コード、または、コンピュータがインタープリターを用いて実行し得る高レベルコードを含む１以上のファイルであり得る。
【００７６】
このことに限定される訳ではなくあくまで例としてではあるが、メモリ７３０は、ソフトウェアを具体化する１以上のコンピュータ可読記憶媒体を含み得、コンピュータシステム７００は、プロセッサ７２０がソフトウェアを実行した結果、本明細書に説明される、または示される特定の機能を提供し得る。メモリ７３０はソフトウェアを記憶し得、プロセッサ７２０はソフトウェアを実行し得る。メモリ７３０は、ソフトウェアを具体化する、大容量記憶デバイス７３０内のコンピュータ可読記憶媒体から、または、ネットワークインタフェース７５６を介して１以上の他のソースからソフトウェアを読み取り得る。ソフトウェアを実行する際、プロセッサ７２０は、本明細書において説明された、または示された１以上の処理のうち１以上の段階を実行し得る。それら１以上の段階は、メモリ７３０内で記憶するために１以上のデータ構造を規定する段階、および、特定の必要性に応じて、ソフトウェア内の１以上の部分により指示されるように、データ構造の１以上を修正する段階を含み得る。加えて、または代替的に、コンピュータシステム７００は、回路内で配線接続された、または回路内で具体化されたロジックの結果として、本明細書に説明される、または示される特定の機能を提供し得る。当該ロジックはソフトウェアの代わりに、またはソフトウェアと協働して動作して、本明細書に説明される、または示される１以上の処理の１以上の段階を実行し得る。本開示は、特定の必要性に応じて、ハードウェアとソフトウェアとの何らかの適した組み合わせも包含する。
【００７７】
特定の実施形態において、コンピュータシステム７００は、１以上のグラフィック処理ユニット（ＧＰＵ）７２４を含み得る。特定の実施形態において、ＧＰＵ７２４は、グラフィックレンダリングで一般的に用いられる数学演算のための１以上の集積回路および／または処理コアを含み得る。いくつかの実施形態において、ＧＰＵ７２４は、特定のグラフィックユニット命令セットを用い得、他の実施例においては、ＧＰＵは、ＣＰＵのような（例えば修正されたｘ８６の）命令セットを利用し得る。グラフィック処理ユニット７２４は、ブリット、テクスチャマッピング、ピクセルシェーディング、フレームバッファリングなどの複数のグラフィック基本処理を実装し得る。特定の実施形態において、ＧＰＵ７２４は、グラフィックアクセラレータ、汎用ＧＰＵ（ＧＰＧＰＵ）、または他の何らかの適した処理ユニットであり得る。
【００７８】
特定の実施形態において、ＧＰＵ７２４は、カードスロットを介してハードウェアシステムアーキテクチャに取り付けられるグラフィックカードまたはディスプレイカードにより具体化され得る。他の実施例において、ＧＰＵ７２４は、コンピュータシステムアーキテクチャのマザーボードに一体化され得る。適したグラフィック処理ユニットには、Ａｄｖａｎｃｅｄ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ（登録商標）ＡＭＤ  Ｒ７ＸＸベースのＧＰＵデバイス（Ｒａｄｅｏｎ（登録商標）ＨＤ  ４ＸＸＸ）、ＡＭＤ  Ｒ８ＸＸベースのＧＰＵデバイス（Ｒａｄｅｏｎ（登録商標）ＨＤ  ７ＸＸＸ）、Ｉｎｔｅｌ（登録商標）ＬａｒａｂｅｅベースのＧＰＵデバイス（未販売）、ｎＶｉｄｉａ（登録商標）８シリーズのＧＰＵ、ｎＶｉｄｉａ（登録商標）９シリーズのＧＰＵ、ｎＶｉｄｉａ（登録商標）１００シリーズのＧＰＵ、ｎＶｉｄｉａ（登録商標）２００シリーズのＧＰＵｓ、および他の何らかのＤＸ１１が可能なＧＰＵが含まれ得る。
【００７９】
本開示は、特定の動作が特定の順序で行われるものとして説明し、または示しているが、本開示は、適した動作が何らかの適した順序で行われることをその範囲として含む。さらに、本開示は、適した動作が何らかの適した順序で１以上の回数繰り返されることをその範囲として含む。本開示は、特定の動作が順に行われるものとして説明し、または示しているが、本開示は適宜、適した動作が実質的に同時に行われることをその範囲として含む。本明細書において説明された、または示された適した動作、または一連の動作は適宜、オペレーティングシステムおよびカーネルなど他の処理により割り込まれ、中断させられ、または制御され得る。処理はオペレーティングシステム環境において行われ得、または、システム処理の全てを占有する、または一部を占有するスタンドアロン型のルーチンとして行われ得る。
【００８０】
本開示は、当業者が理解するであろう、本明細書に示された例示的な実施形態の変更、置換、変形、改造、および修正の全てを包含する。同様に、添付の請求項は適宜、当業者が理解するであろう、本明細書に示された例示的な実施形態の変更、置換、変形、改造、および修正の全てを包含する。
［項目１］
プロセッサにより、１以上のクライアントへ共通のレンダリングアセットを送信する段階と、
前記プロセッサにより、前記１以上のクライアントのそれぞれへ、他の送信される空間位置とは異なる一意の空間位置を送信する段階と、
前記プロセッサにより、前記１以上のクライアントのそれぞれへ、前記共通のレンダリングアセットおよび自身の一意の空間位置を用いてレンダーを生成するための１以上の命令を送信する段階と、
前記プロセッサにより、前記１以上のクライアントのそれぞれからレンダーを受信する段階と、
前記プロセッサにより、受信した前記レンダーから合成レンダーを生成する段階と、
前記プロセッサにより、前記１以上のクライアントへ前記合成レンダーを送信する段階と
を備える方法。
［項目２］
各一意の空間位置はランダムに生成される、項目１に記載の方法。
［項目３］
前記レンダーを生成するための１以上の命令は、前記レンダリングアセットに対し前記一意の空間位置からパス追跡を実行するための命令を含む、項目１または２に記載の方法。
［項目４］
前記レンダリングアセットは表示域状態データオブジェクト（ＶＳＤＯ）である、項目１から３のいずれか１項に記載の方法。
［項目５］
前記レンダーは、前記レンダリングアセットを含む環境の一部または全体の光マップである、項目３または４に記載の方法。
［項目６］
前記プロセッサにより、前記合成レンダーを生成する段階は、前記プロセッサにより、受信した前記光マップを合成して、前記レンダリングアセットを含む前記環境の一部または全体の合成光マップを生成する段階を有する、項目５に記載の方法。
［項目７］
前記レンダリングアセットは表示域状態データオブジェクト（ＶＳＤＯ）であり、
前記レンダーは、前記パス追跡の結果として計算される拡散照明データによって補正された複数のレンダリングアセットからなるセットである、項目３に記載の方法。
［項目８］
前記レンダーはフレームであり、
前記１以上の命令はさらに、共通の視点を含み、
前記フレームは前記共通の視点からレンダリングされる、項目３から７のいずれか１項に記載の方法。
［項目９］
前記プロセッサにより、前記合成レンダーを生成する段階は、受信した前記フレームを合成して合成フレームを生成する段階を有する、項目８に記載の方法。
［項目１０］
プロセッサにより、サーバからレンダリングアセットおよび一意の空間位置を受信する段階と、
前記プロセッサにより、受信した前記レンダリングアセットおよび前記一意の空間位置を用いてレンダーを生成するための１以上の命令を前記サーバから受信する段階と、
前記プロセッサにより、前記１以上の命令に従って前記レンダーを生成する段階と、
前記プロセッサにより、生成された前記レンダーを前記サーバへ送信する段階と、
前記プロセッサにより、合成レンダーを前記サーバから受信する段階と
を備える方法。
［項目１１］
前記プロセッサにより、サーバに依存しない視点から反射照明をレンダリングする段階と、
前記プロセッサにより、レンダリングされた前記反射照明と受信した前記合成レンダーとを組み合わせる段階と、
前記プロセッサにより、組み合わせられた前記レンダリングされた反射照明と前記受信した合成レンダーとをディスプレイへ出力する段階と
をさらに備える、項目１０に記載の方法。
［項目１２］
グラフィック処理ユニットと、
プロセッサと、
前記プロセッサにより実行されるプログラムロジックを実体的に記憶した記憶媒体と
を備え、
前記プログラムロジックは、
前記プロセッサにより実行される、１以上のクライアントへ共通のレンダリングアセットを送信するための共通のレンダリングアセット送信ロジックと、
前記プロセッサにより実行される、前記１以上のクライアントのそれぞれへ、他の送信される空間位置とは異なる一意の空間位置を送信するための空間位置送信ロジックと、
前記プロセッサにより実行される、前記１以上のクライアントのそれぞれへ、前記共通のレンダリングアセットおよび自身の一意の空間位置を用いてレンダーを生成するための１以上の命令を送信するための命令送信ロジックと、
前記プロセッサにより実行される、前記１以上のクライアントのそれぞれからレンダーを受信するための受信ロジックと、
前記プロセッサにより実行される、受信した前記レンダーから合成レンダーを生成するための合成レンダー生成ロジックと、
前記プロセッサにより実行される、前記１以上のクライアントへ前記合成レンダーを送信するための合成レンダー送信ロジックと
を含む、システム。
［項目１３］
各一意の空間位置はランダムに生成される、項目１２に記載のシステム。
［項目１４］
前記レンダーを生成するための前記命令送信ロジックはさらに、前記レンダリングアセットに対し前記一意の空間位置からパス追跡を実行するための命令を含む、項目１２または１３に記載のシステム。
［項目１５］
前記レンダリングアセットは表示域状態データオブジェクト（ＶＳＤＯ）である、項目１２から１４のいずれか１項に記載のシステム。
［項目１６］
前記レンダーは、前記レンダリングアセットを含む環境の一部または全体の光マップである、項目１４または１５に記載のシステム。
［項目１７］
前記合成レンダー生成ロジックはさらに、受信した前記光マップを合成して、前記レンダリングアセットを含む前記環境の一部または全体の合成光マップを生成する合成ロジックを含む、項目１６に記載のシステム。
［項目１８］
前記レンダリングアセットは表示域状態データオブジェクト（ＶＳＤＯ）であり、
前記レンダーは、前記パス追跡の結果として計算される拡散照明データによって補正された複数のレンダリングアセットからなるセットである、項目１４に記載のシステム。
［項目１９］
前記レンダーはフレームであり、
前記１以上の命令はさらに、共通の視点を含み、
前記フレームは前記共通の視点からレンダリングされる、項目１２から１８のいずれか１項に記載のシステム。
［項目２０］
前記合成レンダー生成ロジックはさらに、前記プロセッサにより実行される、受信した前記フレームを合成して合成フレームを生成する合成ロジックを含む、項目１９に記載のシステム。
【図１】
0005943330.tif 000002
【図２】
0005943330.tif 000003
【図３】
0005943330.tif 000004
【図３Ａ】
0005943330.tif 000005
【図４】
0005943330.tif 000006
【図５】
0005943330.tif 000007
【図６】
0005943330.tif 000008
【図７】
0005943330.tif 000009