- ベストアンサー
フレームロック
グラフィックボードにあるフレームロックについて教えてください。 NVIDIAのQuadro等にあるフレームロックの説明には、 『複数のシステムをマルチディスプレイでフレームレンダリングし、 1台以上のシステムを共通のソースに同期化することができるようになります。』 とありまして、複数のシステム間で ・どのように通信をしていて何で同期を取っているのか? ・60fps等ディスプレイに表示する全てのフレームで同期が取れるのか? ご存知の方どうか教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>1点目: >GPU間だけで同期するにはどうしたらよいのでしょうか? フレームロックを利用するには、こういうものが追加で必要なのですがご存知ですか? (同等機能が内蔵されているモデルもあります) http://www.nvidia.co.jp/page/quadrofx_gsync.html >2点目: その解釈は、目的と手段とを取り違えています。 現実の世界(場面B)をデジカメで動画撮影すると、 ディスプレイ上に現実世界のビデオ(画面B0)を表示できますよね。 2台のデジカメを利用して、並びをうまく調整すれば、 2台のディスプレイ上に現実世界のビデオ2画面分(画面B0と画面B1)が切れ目なく表示できますよね。 3Dグラフィックスとは、これを仮想の世界で行っているだけです。つまり。。。 仮想の世界(場面A)を仮想デジカメで動画撮影すると、 ディスプレイ上に仮想世界のビデオ(画面A0)が表示されます。 2台の仮想デジカメを利用して、並びをうまく調整すれば、 2台のディスプレイ上に仮想世界のビデオ2画面分(画面A0と画面A1)を切れ目なく表示できます。 >アプリケーションが、 >"A0"と"A1"は元は同じ画面Aと判断する為に >何か"しるし"を付けたりするのでしょうか? 前述のとおり、仮想世界(場面A)が最初にあって 場面Aから画面A0と画面A1を撮影するので、"しるし"を付ける必要がありません。 あえて"しるし"的なものを挙げると、仮想現実内での時刻ですかね。 # 同じ場所でも12:00の場面と、12:30の場面では、違う撮影結果になりますよね? なお、仮想現実内での時刻は、回答#1で書いている「現在の積算描画フレーム数」から簡単に計算できます。 # 60fpsなら、今の時刻は「スタート時刻」+「(現在の積算描画フレーム数)/60」秒。
その他の回答 (2)
- onosuke
- ベストアンサー率67% (310/456)
>ゲンロックは下記資料を見て概要は知っているつもりなのですが、 >フレームロックとの違いが、恥ずかしながら、わかっておりません。 外部ソースからGENLOCK同期クロックを受信する場合は、機能面でゲンロック=フレームロック。 外部ソースからGENLOCK同期クロックを受信しない、GPU間だけで同期している場合は、フレームロックはゲンロックしていない。 となるように思います。 >例えば分割した画面にどうやって元が同じ1つの画面と判断して この判断はアプリケーションで実装します。つまり、 シーン同期(同一シーンのデータ共有)はアプリケーションが保証する必要があります。 画面分割は同一シーンに対する射影変換を差し替えるだけですよね? >レンダリング等の同期を行っているのか? レンダリング同期もアプリケーションが保証する必要があります。 なお、レンダリング同期やシーン同期を補助するQuandro機能として、現在の積算描画フレーム数~全GPUで値同期が保証されている~を取得するAPIがあります。 最後に、レンダリング結果の画面出力開始タイミングの同期、つまり、ダブルバッファリングの バッファスワップ同期は、Quandro機能が保証してくれます。(スワップロック機能) まとめると、 「Quandroとしては、スワップロックとフレームロックで画面同期を保証」 「アプリケーションとしては、シーン同期やレンダリング同期で画面同期を保証」 という作業分担になっています。
お礼
とても丁寧な回答頂きましてありがとうございます! 理解が悪く何度も申し訳ないのですが、 2点もう少し詳しく教えてください。 1点目: >外部ソースからGENLOCK同期クロックを受信しない、GPU間だけで同期している 場合は、フレームロックはゲンロックしていない。 GPU間だけで同期するにはどうしたらよいのでしょうか? 2点目: >>例えば分割した画面にどうやって元が同じ1つの画面と判断して >この判断はアプリケーションで実装します。つまり >シーン同期(同一シーンのデータ共有)はアプリケーションが保証する必要が あります。 >画面分割は同一シーンに対する射影変換を差し替えるだけですよね? についてなのですが、 元々の画像"A"を 画面"A0"と画面"A1"の"A"の半分ずつのサイズに分割して 2つのGPUで処理する場合、 アプリケーションが、 "A0"と"A1"は元は同じ画面Aと判断する為に 何か"しるし"を付けたりするのでしょうか? 何かが無いと 元は同じ画面A0やA1に、シーン同期とレンダリング同期 A0とA1の画面出力開始に、スワップ同期 がそれぞれ出来ないと思いまして。 度々申し訳ございませんが、 ご存知でしたら教えてください。
- onosuke
- ベストアンサー率67% (310/456)
>・どのように通信をしていて何で同期を取っているのか? TMDSトランスミッタからの出力を同期する話(モニタへの信号送出タイミングの同期)であれば、 http://ja.wikipedia.org/wiki/%E5%90%8C%E6%9C%9F%E4%BF%A1%E5%8F%B7 上記ページに記載がある「GENeratorLOCK・ゲンロック」の話そのままです。 >・60fps等ディスプレイに表示する全てのフレームで同期が取れるのか? TMDSトランスミッタの出力が同期しているので、 全映像フレームが同期します。 最後に、勘違いを避けるため、念のため確認させてください。 ・TMDSトランスミッターの送出フレーム数(=モニタ垂直同期周波数) ・GPUがレンダリングしたフレーム数(=3Dベンチマーク等で計測されるFPS) が異なるのはご存じでしょうか?
お礼
回答頂きましてありがとうございます! >最後に、勘違いを避けるため、念のため確認させてください。 >・TMDSトランスミッターの送出フレーム数(=モニタ垂直同期周波数) >・GPUがレンダリングしたフレーム数(=3Dベンチマーク等で計測されるFPS) >が異なるのはご存じでしょうか? はい。モニタへの垂直周波数と レンダリングのフレーム数(GPUの出来高) は存じております。 ゲンロックは下記資料を見て概要は知っているつもりなのですが、 http://www.national.com/vcm/national3/ja_JP/resources/signal_path_designer/sp_designer106j.pdf フレームロックとの違いが、恥ずかしながら、わかっておりません。 例えば分割した画面にどうやって元が同じ1つの画面と判断して レンダリング等の同期を行っているのか? GPUが出来高だったらズレたりしないのか? ゲンロックだけでそろってしまうものなのか? 素人で申し訳ございませんが、 ご存知でしたら教えてください。
お礼
素人質問に、丁寧にご回答頂き本当にありがとうございました! すごくわかりやすくて助かりました!ありがとうございます!