アカウント名:
パスワード:
PC/AT互換機でグラフィックアクセラレーターブームが起きてET4000(はアクセラレータじゃないか)とかS3とかわいわいやっていた頃からの生き残り。しかもPCではライバル他社と比べてパッとしない性能で、不人気ですぐに消えるかと思いきや、メモリが厳しい組み込み向けに舵を切って成功し、他のグラフィックチップメーカーがばったばったと倒れていった中、しぶとく今まで生き残ってきた。
でも一番の大口顧客を失いそうで、今度こそ危ないか?
初代PowerVRを使い込んだことがありますが、コンセプトは良いものの、商業的には失敗して当然な流れでしたね…
PowerVRとほぼ同時期に、DirectX3で「Direct3D というメーカーに依存しない汎用API」という新たな潮流が出てきましたけど、Direct3D自体、Zバッファレンダリングに依存したAPIの作りになっていて、他のレンダリング方式があまり想定されてないんですよね。
PowerVRは「タイルベースレンダリング」という独自の手法で省メモリ化を実現したわけですが、そのせいでDirect3Dとものすごく相性が悪い。一応 Direct3D 対応ドライバもありましたが、あまり性能が出ませんでした。チップ性能を引き出すには独自APIの利用が必須
Triangle stripのほうが頂点データのサイズが小さくなるから効率いいのは今も昔も変わらないよ。大抵のGPUでそう。「1ポリゴン=1ストリップ」にすると遅くなるのも縮退三角形分無駄になってTriangle listよりサイズ大きくなるので当然
「凸な」トライアングルストリップ、というのがポイントなんですよ。
アルゴリズムが非公開なので使ってみての推測になりますが、「ストリップ」単位でプライオリティ法?的な描画をしているみたいです。普通のZバッファなら凹なストリップでも問題ありませんが、PowerVRでは凹なストリップを描画させると描画が崩れます。
普通のGPUでトライアングルストリップやトライアングルファンを使うのは、(頂点インデックスを使う上では)単にデータ量削減の効果ぐらいしかありません。一方、PowerVRはそんな生やしいものではなく、描画時間があまり「頂点数」には依存せず、「ストリップ数」に比例する感じになります。それこそ、「頂点数が増えてもいいからストリップ数を減らす」方が有効。しかしながら、「凸な」という条件があるので、無関係なポリゴンを縮退三角形でつないでストリップにすることもできません。
とにかくまあ、普通の(≒Zバッファベースの)GPUとは明らかに毛色が異なる代物でした。
>PowerVRでは凹なストリップを描画させると描画が崩れます。モバイルGPUになってからのPowerVR(今もTBDR)しか触ったことないけど、それは単にその時のPowerVRの実装が腐ってたか貴方の実装がバグってただけじゃない?
>「頂点数が増えてもいいからストリップ数を減らす」方が有効。これはちょっと意味が解らない。ストリップ数を減らすって何を指してるの?ドローコールの話ならPowerVRに限らず常識だよ。そうでないなら頂点増やして減らせる物が何であるか解らない。で、ストリップ数というのがドローコールの事を言っていたのであれば、1ポリゴン=1ドローコールとか遅くて当たり前。
> その時のPowerVRの実装が腐ってたか貴方の実装がバグってただけじゃない?
実装が腐ってたのではなく、当時はそういう制限をかけることで、「省メモリで高速なレンダリング」を実現していたんです。「凸な」というのは、SDKに明示的に指定されていました。
> ストリップ数というのがドローコールの事を言って
いいえ。PowerVR の独自API(SGL)では、一回のドローコールで複数のトライアングルストリップを渡すことができます。(ていうか、指定できるのはトライアングルストリップリストだけで、トライアングルファンやトライアングルリストを渡して描画するAPIはありません。)まあ、普通のGPUでトライアングルリストを渡すのと同じような使い方ですね。
そして、頂点数(一回のドローコールのデータ量)が同じでも、その中のストリップ数が少ない方が速かったんです。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
長期的な見通しやビジョンはあえて持たないようにしてる -- Linus Torvalds
PowerVR息が長いよなぁ (スコア:1)
PC/AT互換機でグラフィックアクセラレーターブームが起きてET4000(はアクセラレータじゃないか)とかS3とか
わいわいやっていた頃からの生き残り。
しかもPCではライバル他社と比べてパッとしない性能で、不人気ですぐに消えるかと思いきや、
メモリが厳しい組み込み向けに舵を切って成功し、他のグラフィックチップメーカーがばったばったと倒れていった中、
しぶとく今まで生き残ってきた。
でも一番の大口顧客を失いそうで、今度こそ危ないか?
Re: (スコア:5, 参考になる)
初代PowerVRを使い込んだことがありますが、コンセプトは良いものの、商業的には失敗して当然な流れでしたね…
PowerVRとほぼ同時期に、DirectX3で「Direct3D というメーカーに依存しない汎用API」という新たな潮流が出てきましたけど、Direct3D自体、Zバッファレンダリングに依存したAPIの作りになっていて、他のレンダリング方式があまり想定されてないんですよね。
PowerVRは「タイルベースレンダリング」という独自の手法で省メモリ化を実現したわけですが、そのせいでDirect3Dとものすごく相性が悪い。一応 Direct3D 対応ドライバもありましたが、あまり性能が出ませんでした。チップ性能を引き出すには独自APIの利用が必須
Re: (スコア:1)
Triangle stripのほうが頂点データのサイズが小さくなるから効率いいのは今も昔も変わらないよ。大抵のGPUでそう。
「1ポリゴン=1ストリップ」にすると遅くなるのも縮退三角形分無駄になってTriangle listよりサイズ大きくなるので当然
Re: (スコア:1)
「凸な」トライアングルストリップ、というのがポイントなんですよ。
アルゴリズムが非公開なので使ってみての推測になりますが、
「ストリップ」単位でプライオリティ法?的な描画をしているみたいです。
普通のZバッファなら凹なストリップでも問題ありませんが、PowerVRでは凹なストリップを描画させると描画が崩れます。
普通のGPUでトライアングルストリップやトライアングルファンを使うのは、(頂点インデックスを使う上では)単にデータ量削減の効果ぐらいしかありません。
一方、PowerVRはそんな生やしいものではなく、描画時間があまり「頂点数」には依存せず、「ストリップ数」に比例する感じになります。
それこそ、「頂点数が増えてもいいからストリップ数を減らす」方が有効。しかしながら、「凸な」という条件があるので、無関係なポリゴンを縮退三角形でつないでストリップにすることもできません。
とにかくまあ、普通の(≒Zバッファベースの)GPUとは明らかに毛色が異なる代物でした。
Re: (スコア:0)
>PowerVRでは凹なストリップを描画させると描画が崩れます。
モバイルGPUになってからのPowerVR(今もTBDR)しか触ったことないけど、それは単にその時のPowerVRの実装が腐ってたか貴方の実装がバグってただけじゃない?
>「頂点数が増えてもいいからストリップ数を減らす」方が有効。
これはちょっと意味が解らない。ストリップ数を減らすって何を指してるの?ドローコールの話ならPowerVRに限らず常識だよ。そうでないなら頂点増やして減らせる物が何であるか解らない。
で、ストリップ数というのがドローコールの事を言っていたのであれば、1ポリゴン=1ドローコールとか遅くて当たり前。
Re:PowerVR息が長いよなぁ (スコア:1)
> その時のPowerVRの実装が腐ってたか貴方の実装がバグってただけじゃない?
実装が腐ってたのではなく、当時はそういう制限をかけることで、「省メモリで高速なレンダリング」を実現していたんです。「凸な」というのは、SDKに明示的に指定されていました。
> ストリップ数というのがドローコールの事を言って
いいえ。PowerVR の独自API(SGL)では、一回のドローコールで複数のトライアングルストリップを渡すことができます。
(ていうか、指定できるのはトライアングルストリップリストだけで、トライアングルファンやトライアングルリストを渡して描画するAPIはありません。)
まあ、普通のGPUでトライアングルリストを渡すのと同じような使い方ですね。
そして、頂点数(一回のドローコールのデータ量)が同じでも、その中のストリップ数が少ない方が速かったんです。