アカウント名:
パスワード:
PC/AT互換機でグラフィックアクセラレーターブームが起きてET4000(はアクセラレータじゃないか)とかS3とかわいわいやっていた頃からの生き残り。しかもPCではライバル他社と比べてパッとしない性能で、不人気ですぐに消えるかと思いきや、メモリが厳しい組み込み向けに舵を切って成功し、他のグラフィックチップメーカーがばったばったと倒れていった中、しぶとく今まで生き残ってきた。
でも一番の大口顧客を失いそうで、今度こそ危ないか?
初代PowerVRを使い込んだことがありますが、コンセプトは良いものの、商業的には失敗して当然な流れでしたね…
PowerVRとほぼ同時期に、DirectX3で「Direct3D というメーカーに依存しない汎用API」という新たな潮流が出てきましたけど、Direct3D自体、Zバッファレンダリングに依存したAPIの作りになっていて、他のレンダリング方式があまり想定されてないんですよね。
PowerVRは「タイルベースレンダリング」という独自の手法で省メモリ化を実現したわけですが、そのせいでDirect3Dとものすごく相性が悪い。一応 Direct3D 対応ドライバもありましたが、あまり性能が出ませんでした。チップ性能を引き出すには独自APIの利用が必須。もうなんか、出だしからいきなりこけて低空飛行だったので、モバイルに舵を切ってから流行りだしたのを見た時は、「えっ、まだやってたの」って印象を持ったぐらい。
あと、今はどうなのかわかりませんが、当時のPowerVR は「凸なトライアングル ストリップ [wikipedia.org]」に特化しているので、「いかに少ないストリップでデータを表現できるか」がそのまま描画性能に直結するので非常に重要でした。何も考えずに「1ポリゴン=1ストリップ」にすると、かなり遅くなります。汎用的なデータ形式としての「ポリゴン」は一つの平面上に載る必要がありますが、「1ストリップの個々の三角形」は平面に載る必要はないので、「いかに複数のポリゴンを一つのストリップに統合できるか」がキモ。でも、単なるトライアングルストリップではなく、「凸な」が重要なので、自動変換がかなり難しい。もう、手作業の職人芸の世界です。#立方体をストリップ1個で表現できてたときはちょっと感動した覚えが…(同僚が紙で立方体作っていろいろ線を引いて、パズルを解くノリで見つけてました)
独自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でトライアングルリストを渡すのと同じような使い方ですね。
そして、頂点数(一回のドローコールのデータ量)が同じでも、その中のストリップ数が少ない方が速かったんです。
いったいどうしたら知らないものに対してここまで偉そうに知ったかぶれるんだろう。
> 普通のZバッファなら凹なストリップでも問題ありませんが、PowerVRでは凹なストリップを描画させると描画が崩れます
掛かってるタイルの判定に失敗するからだしょ。
ポリゴン表面の向きを利用した隠面処理をやってるんですかね単純計算で半分位のポリゴンは描画を省略できるので早くなるでしょう
> ポリゴン表面の向きを利用した隠面処理をやってるんですかね
表向きのポリゴンだけを描く「裏面除去」は、「閉じた形状」を描画する際に有効ですが、それだけだと「凸な」という制限をする必要はありません。凹でも閉じた形状なら、裏面除去は「描画データ量の削減」という点では有効です。
「凸な形状」の特徴は「表側のポリゴン(裏面除去後の描画対象ポリゴン)同士が重なることがない」ことにあります。「ある一つの凸な形状」の描画だけを見れば、単純に「表向きの全ポリゴンを描画すればいい」ということになり、隠面消去する必要はないのです。
凹な形状だと、例えば
I H視線 A/\/\G → B| |F C\__/E D
という形状の角柱(の断面図。A~Iはそれぞれがポリゴン)を描画するときに、表側のポリゴンだけ抽出すると
視線 A/ H/ → B| C\
という4ポリゴンを描画することになり、「AとHではAが手前」という判定が必要になりますが、凸な形状だと、例えば
H視線 A/ ̄ ̄\G → B| |F C\__/E D
という形状を描画するときに、表側のポリゴンだけ抽出すると
視線 A/ → B| C\
という3ポリゴンを描画することになり、重なりが無いので前後判定は不要です。
凸な形状にはそういう特徴があるため、「凸な形状(ポリゴン群)」内のポリゴン間での前後判定は不要で、複数の「凸な形状」を描画する描画処理全体では、「凸な形状」間の前後判定だけで隠面消去ができるようになります。実際には「凸な形状」同士の交差を考えると一筋縄ではいかないのですが、うまくはまれば大幅に前後判定の比較処理を減らすことができます。
PS2辺りまでの「とにかく流れてきた三角形を速く描くことだけがGPUのお仕事」だった時代だとtriangle strip至上なんだけど、最近はシェーダーでなんでもかんでも頂点を弄るのでstrip化しておけばいいってもんでもないらしい。
Triangle stripのほうが頂点データのサイズが小さくなるから効率いいのは今も昔も変わらないよ。大抵のGPUでそう。 「1ポリゴン=1ストリップ」にすると遅くなるのも縮退三角形分無駄になってTriangle listよりサイズ大きくなるので当然
私もそう思ってましたが、最近のGPUは頂点キャッシュヒット率を気にした方が良いと同僚に指摘されました。
PowerVRというとA5(A列車で行こう5)の専用版しか印象にないんですが、確かに通常版より低スペックなPCで動作してました。
まだ生き延びてるのがあるいみすごいですよね
まったくですよ。Voodooがあっさり逝って、PowerVRが大成功するとか当時は思いもしなかった。
PCで使われていた頃のPowerVRと、いまというかモバイルGPUのPowerVRは中身ほぼ別物ですよ。いまのPowerVRは普通にZバッファ法で描画していて、タイルキャッシュというタイル単位に切り出したフレームバッファとZバッファをGPUに持つようなアーキテクチャになってます。タイルの描画をGPU内で済ませてからメモリに書き出して次のタイルの処理に移るという感じでバスへのアクセスが少ないため、バスの遅いモバイル機器に向いています。
まあディファードシェーディングのようにマルチパス描画が一般的に使われるようになってきたので、メリットが薄れつつあるのは否めないですが。
さすがにET4000とか86C911とかと比べるとかなり新顔のイメージだわET4000→86C928→P9000より後で、Voodooあたりと同世代じゃなかったっけ?
#Dreamcastの戦犯のイメージが強すぎ
負け組イメージ作った秋本だろ。
タイルアーキテクチャのおかげで、半透明描画は遅かったけど描画順に気を使わなくてもよかった
Dreamcastは性能的には悪くなかったと思うけど。(PS寄りユーザーだった人間が言うのもなんだが)
PSとSSの時点でサードの囲い込みやらソフトのラインナップやらの戦略で負けてたからDCではもう覆しようがなかっただけで。
初代が出たのが1996年でメモリの帯域は節約できるがDirect3Dとの互換性が微妙とか言ってましたっけ。ちょうど20年で重要な特許が切れるとしたら、Appleにとっては良いタイミングかもしれませんね。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
身近な人の偉大さは半減する -- あるアレゲ人
PowerVR息が長いよなぁ (スコア:1)
PC/AT互換機でグラフィックアクセラレーターブームが起きてET4000(はアクセラレータじゃないか)とかS3とか
わいわいやっていた頃からの生き残り。
しかもPCではライバル他社と比べてパッとしない性能で、不人気ですぐに消えるかと思いきや、
メモリが厳しい組み込み向けに舵を切って成功し、他のグラフィックチップメーカーがばったばったと倒れていった中、
しぶとく今まで生き残ってきた。
でも一番の大口顧客を失いそうで、今度こそ危ないか?
Re:PowerVR息が長いよなぁ (スコア:5, 参考になる)
初代PowerVRを使い込んだことがありますが、コンセプトは良いものの、商業的には失敗して当然な流れでしたね…
PowerVRとほぼ同時期に、DirectX3で「Direct3D というメーカーに依存しない汎用API」という新たな潮流が出てきましたけど、Direct3D自体、Zバッファレンダリングに依存したAPIの作りになっていて、他のレンダリング方式があまり想定されてないんですよね。
PowerVRは「タイルベースレンダリング」という独自の手法で省メモリ化を実現したわけですが、そのせいでDirect3Dとものすごく相性が悪い。一応 Direct3D 対応ドライバもありましたが、あまり性能が出ませんでした。チップ性能を引き出すには独自APIの利用が必須。
もうなんか、出だしからいきなりこけて低空飛行だったので、モバイルに舵を切ってから流行りだしたのを見た時は、「えっ、まだやってたの」って印象を持ったぐらい。
あと、今はどうなのかわかりませんが、当時のPowerVR は「凸なトライアングル ストリップ [wikipedia.org]」に特化しているので、「いかに少ないストリップでデータを表現できるか」がそのまま描画性能に直結するので非常に重要でした。何も考えずに「1ポリゴン=1ストリップ」にすると、かなり遅くなります。
汎用的なデータ形式としての「ポリゴン」は一つの平面上に載る必要がありますが、「1ストリップの個々の三角形」は平面に載る必要はないので、「いかに複数のポリゴンを一つのストリップに統合できるか」がキモ。
でも、単なるトライアングルストリップではなく、「凸な」が重要なので、自動変換がかなり難しい。もう、手作業の職人芸の世界です。
#立方体をストリップ1個で表現できてたときはちょっと感動した覚えが…(同僚が紙で立方体作っていろいろ線を引いて、パズルを解くノリで見つけてました)
Re:PowerVR息が長いよなぁ (スコア:3)
独自APIを一般には非公開にしていたから、素性が謎かった印象。
ナントナク、大きいポリゴンを多用する場面のみ有利だった気がするする。
Re:PowerVR息が長いよなぁ (スコア:1)
Triangle stripのほうが頂点データのサイズが小さくなるから効率いいのは今も昔も変わらないよ。大抵のGPUでそう。
「1ポリゴン=1ストリップ」にすると遅くなるのも縮退三角形分無駄になってTriangle listよりサイズ大きくなるので当然
Re:PowerVR息が長いよなぁ (スコア: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でトライアングルリストを渡すのと同じような使い方ですね。
そして、頂点数(一回のドローコールのデータ量)が同じでも、その中のストリップ数が少ない方が速かったんです。
Re: (スコア:0)
いったいどうしたら知らないものに対してここまで偉そうに知ったかぶれるんだろう。
Re: (スコア:0)
> 普通のZバッファなら凹なストリップでも問題ありませんが、PowerVRでは凹なストリップを描画させると描画が崩れます
掛かってるタイルの判定に失敗するからだしょ。
Re: (スコア:0)
ポリゴン表面の向きを利用した隠面処理をやってるんですかね
単純計算で半分位のポリゴンは描画を省略できるので早くなるでしょう
Re:PowerVR息が長いよなぁ (スコア:2)
> ポリゴン表面の向きを利用した隠面処理をやってるんですかね
表向きのポリゴンだけを描く「裏面除去」は、「閉じた形状」を描画する際に有効ですが、それだけだと「凸な」という制限をする必要はありません。凹でも閉じた形状なら、裏面除去は「描画データ量の削減」という点では有効です。
「凸な形状」の特徴は「表側のポリゴン(裏面除去後の描画対象ポリゴン)同士が重なることがない」ことにあります。
「ある一つの凸な形状」の描画だけを見れば、単純に「表向きの全ポリゴンを描画すればいい」ということになり、隠面消去する必要はないのです。
凹な形状だと、例えば
という形状の角柱(の断面図。A~Iはそれぞれがポリゴン)を描画するときに、表側のポリゴンだけ抽出すると
という4ポリゴンを描画することになり、「AとHではAが手前」という判定が必要になりますが、
凸な形状だと、例えば
という形状を描画するときに、表側のポリゴンだけ抽出すると
という3ポリゴンを描画することになり、重なりが無いので前後判定は不要です。
凸な形状にはそういう特徴があるため、「凸な形状(ポリゴン群)」内のポリゴン間での前後判定は不要で、複数の「凸な形状」を描画する描画処理全体では、「凸な形状」間の前後判定だけで隠面消去ができるようになります。
実際には「凸な形状」同士の交差を考えると一筋縄ではいかないのですが、うまくはまれば大幅に前後判定の比較処理を減らすことができます。
Re:PowerVR息が長いよなぁ (スコア:1)
PS2辺りまでの「とにかく流れてきた三角形を速く描くことだけがGPUのお仕事」だった時代だとtriangle strip至上なんだけど、
最近はシェーダーでなんでもかんでも頂点を弄るのでstrip化しておけばいいってもんでもないらしい。
Re: (スコア:0)
Triangle stripのほうが頂点データのサイズが小さくなるから効率いいのは今も昔も変わらないよ。大抵のGPUでそう。 「1ポリゴン=1ストリップ」にすると遅くなるのも縮退三角形分無駄になってTriangle listよりサイズ大きくなるので当然
私もそう思ってましたが、最近のGPUは頂点キャッシュヒット率を気にした方が良いと同僚に指摘されました。
Re: (スコア:0)
PowerVRというとA5(A列車で行こう5)の専用版しか印象にないんですが、確かに通常版より低スペックなPCで動作してました。
まだ生き延びてるのがあるいみすごいですよね
Re: (スコア:0)
まったくですよ。
Voodooがあっさり逝って、PowerVRが大成功するとか当時は思いもしなかった。
Re: (スコア:0)
PCで使われていた頃のPowerVRと、いまというかモバイルGPUのPowerVRは中身ほぼ別物ですよ。
いまのPowerVRは普通にZバッファ法で描画していて、タイルキャッシュというタイル単位に切り出したフレームバッファとZバッファをGPUに持つようなアーキテクチャになってます。
タイルの描画をGPU内で済ませてからメモリに書き出して次のタイルの処理に移るという感じでバスへのアクセスが少ないため、バスの遅いモバイル機器に向いています。
まあディファードシェーディングのようにマルチパス描画が一般的に使われるようになってきたので、メリットが薄れつつあるのは否めないですが。
Re:PowerVR息が長いよなぁ (スコア:2)
さすがにET4000とか86C911とかと比べるとかなり新顔のイメージだわ
ET4000→86C928→P9000より後で、Voodooあたりと同世代じゃなかったっけ?
#Dreamcastの戦犯のイメージが強すぎ
Re: (スコア:0)
#Dreamcastの戦犯のイメージが強すぎ
負け組イメージ作った秋本だろ。
Re: (スコア:0)
タイルアーキテクチャのおかげで、半透明描画は遅かったけど描画順に気を使わなくてもよかった
Re: (スコア:0)
Dreamcastは性能的には悪くなかったと思うけど。
(PS寄りユーザーだった人間が言うのもなんだが)
PSとSSの時点でサードの囲い込みやら
ソフトのラインナップやらの戦略で負けてたから
DCではもう覆しようがなかっただけで。
Re:PowerVR息が長いよなぁ (スコア:1)
初代が出たのが1996年でメモリの帯域は節約できるがDirect3Dとの互換性が微妙とか言ってましたっけ。
ちょうど20年で重要な特許が切れるとしたら、Appleにとっては良いタイミングかもしれませんね。