問題タブ [ati]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - Nvidia カードと ATI カードで同じシェーダーの動作が異なる
私と友人は、将来のゲームで使用するエディター (CAD のような) を開発しています。Qt フレームワークと OpenGL を使用しています。私たちが直面している問題は、nVidia カードが統合された彼のラップトップで、シェーディングが期待どおりに機能し、適切にレンダリングされることです。統合 ATI カードを搭載したラップトップと、Radeon HD5850 を搭載したデスクトップでは、フォン照明の動作が少し異なります。明るい点と暗い点が多くなり、見栄えがよくありません。また、トゥーン シェーダーを使用して、エッジの周りにシルエットを描画し、色の陰影の量を制限しています。
トゥーン シェーダーは 2 パス レンダリングを使用します。最初のパスではオブジェクトを元のサイズよりもわずかに大きい黒でレンダリングし (各頂点を法線方向にわずかにシフト)、シルエットを作成し、次に 2 番目のパスでオブジェクトを通常どおりにレンダリングします (シェード スペクトルを制限するだけです)。 、よりコミックのように見えます)。
画像は、2台のコンピューターで同じものです。上記の最初の違いは、2 つ目は、友人のコンピューターではシルエットが引き伸ばされているため、オブジェクトの周りに均一なシルエットが作成されますが、コンピューターではわずかに上に移動され、上に太い線が作成されることです。上と下に線はありません。
もう 1 つはフォン ライティングで、オブジェクトが編集されるキューブを照らします。繰り返しになりますが、友人のコンピューターではうまくレンダリングされますが、私のコンピューターではほとんどすべて黒またはすべて白です。
最初の画像 (nVidia カード):
2 番目の画像 (ATI カード):
コードが長く、シェーダーではなく Qt の設定に問題がある可能性があることは理解していますが、悪い習慣だと思うものがあれば回答してください。
フォン シェーディングのコードは次のとおりです。
フォン フラグメント シェーダー:
そしてトゥーンシェーダー:
そしてフラグメントシェーダー
最後に、OpenGLWindow の初期化 (Qt で)
opengl - Nvidia グラフィックス カードのシャドウ アクネ
パートナーと私は OpenGL の小さなデモに取り組んでいます。単純なシャドウ マッピングを行っています。彼は ATI と Intel HD グラフィックス 4000 を使用しており、すべて正常に動作しています。私は GTX 560 TI を使用しており、同じコードを使用していますが、影にきびが発生します。
私が動いているとき、影全体がちらつきます。フレームバッファの深度バッファを設定するには、次のようにします。
頂点シェーダーの関連部分は次のとおりです。
フラグメント シェーダーの関連部分は次のとおりです。
さまざまなバイアス値を試しましたが、にきびに影響しないか、影がまったくありません。また、ルックアップ関数として textureProj() および texture() で sampler2DShadow を使用しようとしました。何も機能していないようです。この問題は、シャドウだけでなく、シャドウマップも使用されるボリューム ライティング エフェクトにも影響します。一方、gl_ClipDistance を使用したクリッピングは、私の Nvidia では正常に機能しますが、彼のグラフィック カードでは機能しません。
c# - AMD Display Library (ADL) Overdrive State Set 関数の使用方法 (プログラムによるオーバークロック用)
基本的に GPU の特定のパラメーター (クロック速度/ファン制御) を制御できるようにするAMD Display Libraryを使用しています。
SDK にはSample-Managed
コードが付属しており、メソッドから必要な結果 (コアとメモリのクロック速度) を取得できましたADL_Overdrive6_StateInfo_Get
。
メソッド (同じパラメーターを持つ)を使用するADL_Overdrive6_State_Set
と、エラー コードが返されます。
int od_result = ADL.ADL_Overdrive6_State_Set(OSAdapterInfoData.ADLAdapterInfo[i].AdapterIndex, ADL.ADL_OD6_SETSTATE_PERFORMANCE, stateInfoBuffer);
-8 ADL_ERR_NOT_SUPPORTED
(ドライバがサポートしていない機能)
AMD Radeon R9 280x / AMD Radeon HD 7970 を搭載したシステムと、AMD Radeon 8670M を搭載したラップトップでテストしました。
ドライバーの設定を変更する必要がありますか? また、互換性の問題はありますか?
c++ - GLSL シェーダーが AMD/ATI では機能しないが、NVIDIA では機能する
私は今何日もできない本当に奇妙な問題を抱えていpin down
ます。単純な頂点ごとのライティングを作成しており、 で正常に動作Nvidia
しますが、ライト オンでシェーディングされたものはレンダリングされませんAMD/ATI
。属性、特に色属性に関係する問題を突き止めました。
これは私の頂点シェーダーです:
これはピクセル シェーダーです。
したがって、このシェーダーは、ライトを使用する場合、ライトを使用せずに頂点カラーを使用する場合、およびすべての頂点に単一のカラーを使用する場合の 3 つの状態を許可します。問題を特定の属性まで突き止めたため、簡単な計算コードをすべて削除しました。これはシェーダーからの出力
です: ご覧のとおり、すべてが青色です (したがって、シェーディングまたは色を持たないすべてがレンダリングされます
(en_LightingEnabled == false and en_ColorEnabled == false)
)。
頂点シェーダーでこのコードを置き換えると:
これとともに:
次の結果が得られます:
シェーディングなしですべてをレンダリングすることがわかりますが、ライト ( en_LightingEnabled == true
) を使用するものはすべて緑色でレンダリングされます。そうあるべきです。問題は、in_Color
ライトが有効になっている場合でもアトリビュートが実行されないため、アトリビュートがライトに干渉してはならないことです。また、画像内に赤い部分がないこともわかります。つまり、このシーンen_ColorEnabled
では常にfalse
. ここin_Color
ではまったく役に立ちませんが、論理的にすべきではない場所でバグを引き起こします。そのNvidia
上で正常に動作し、緑色の領域は の有無にかかわらず描画されin_Color
ます。
AMD
サポートされていないものを使用していますか? GLSL
仕様外のものを使用していますか? 私は仕様よりもAMD
厳密であることを知っているので、未定義のことをする可能性があります。コードをできるだけシンプルにしましたが、まだ問題があるため、わかりません。また、頂点属性が無効
になっている場合 (no )、画面上に何も描画されない (青い領域でさえ) ことに気付きましたが、なぜですか? 色も使いません。無効な属性は、仕様によって ( ) を返す必要がありますよね? その色を変更しようとしましたが、それでも黒くなりました。コンパイラとリンカーはエラーや警告を返しません。属性 in_Color は、GL
Nvidia
in_Color
glEnableVertexAttribArray
0,0,0,1
glVertexAttrib4f
glGetAttribLocation
. しかし、私が言ったように、そのブランチは私のコードで実行されることはないので、これは問題ではありません。何か案は?
テスト済みでNvidia660Ti
問題なく動作し、ATI
mobility radeon HD 5000
ラップトップでテストしたところ、このエラーが発生しました。私の唯一の考えは、(属性が多すぎるなど)の機能を超えている可能性があるということでしたがGPU
、コードをこれに減らしたとき、それを信じるのをやめました。ここでは 3 つの属性のみを使用します。
また、私の友人の何人かは、より新しいAMD
カードでテストしたところ、同じ問題が発生しました。
更新 1
頂点属性は次のようにバインドされます。
また、奇妙さをさらに簡単に表示する方法を見つけました。この頂点シェーダーを使用してください。
したがって、分岐はありません。そして、私はこれを取得します:
そのコードを
in_Color
次のように削除して変更すると:
私はこれを得る:
この最後のものは私が期待するものですが、前のものは、+
他の代わりに加算 ( ) を行っても何も描画しません。したがって、attrib
がバインドされておらず、( 0,0,0,0
) または ( 0,0,0,1
) が指定されている場合は、何もするべきではありません。それでもまだ失敗します。
また、コンパイル、リンク、および検証のすべてのログは空です。エラーや警告はありません。シェーダーのデバッグ情報AMD/ATI
が提供するものよりもはるかに劣っていることに気付きましたNvidia
が。
更新 2
私が見つけた唯一の修正はattribarray
、すべての場合に有効にすることでした(したがって、基本的に、色が有効になっていないときにジャンクを送信しますGPU
)が、ユニフォームを使用して色をチェックするので、使用しません. したがって、次のようになります。
なぜそれが起こっているのか、なぜこれを使用する必要があるのか わかりません。私はそれを必要としませんNvidia
。だから、これは遅くて帯域幅を無駄にしていると思いますか? しかし、少なくともそれは機能します...これをより良く行う方法についてのヘルプは役に立ちます。
linux - aticonfig サポートされているアダプターが検出されませんでした
コンピューターにredhatまたはcentosをインストールしたいのですが、コンピューターでLinuxシステムを実行すると、電動ファンが高速で熱くなり、問題を解決するためにatiドライバーをインストールしようとします。ドライバーのrpmをインストールするたびに、しかし、最後のステップ「aticonfig --initial」が機能しません。システムは「aticonfig サポートされているアダプタが検出されませんでした」と指摘します。どうすれば問題を解決できますか?どうもありがとうございました。
opengl - Direct3D 11.1 のターゲットに依存しないラスター化 (TIR) と同等の OpenGL (拡張機能を含む)
Target-independent rasterization (TIR) はDirectX 11.1の新しいハードウェア機能で、Microsoft はこれを使用して Windows 8 の Direct2D を改善しました。AMD は、TIR によって 2D ベクター グラフィックスのパフォーマンスが約 500% 向上したと主張しています。また、 Kepler GPU は (DirectX 11.1 の他の機能の中でも) TIR をサポートしていないように見えるため、Nvidia との「言葉の戦い」がありました。TIR のアイデアは、Microsoft が特許を申請しているため、Microsoft が発祥のようです。
Direct2D は問題ありませんが、OS は Windows ですが、同じハードウェア/ドライバー TIR へのアクセスを提供する OpenGL (おそらくベンダー/AMD) 拡張機能はありますか? ベンダに依存しない OpenGL 用の 2D ベクター グラフィックス拡張機能がないため、AMD は少し奇妙な立場にあると思います。現在、 Nvidia のみがNV_path_renderingを推進しており、そのアーキテクチャはDirect2D とはかなり異なります。そのため、Direct2D+Direct3D の世界とは異なり、AMD が 2D ベクター グラフィックスを高速化するために作成したものを OpenGL のどこにプラグイン (または表示) できるかは不明です。以下の簡単な答えによって、私の悲観論が解き明かされることを願っています。
コメント形式の投稿には十分なスペースがないため、実際にここにある種の更新を投稿しています。単に「ストレージが接続されていないフレームバッファ」ではなく、TIR が何をするかについて少し混乱しているようです。これは、私が上で最もひどい特許権者にしかリンクしていないためかもしれません (TIR で見つけた中で最も詳細なドキュメントです)。私が見つけた TIR の最高レベルの概要は、Sinofsky のブログ投稿からの次のスニペットです。
不規則なジオメトリ (地図上の地理的境界線など) をレンダリングする際のパフォーマンスを向上させるために、Target Independent Rasterization (TIR) と呼ばれる新しいグラフィックス ハードウェア機能を使用します。
TIR を使用すると、Direct2D がテッセレーションに費やす CPU サイクルが少なくなるため、視覚的な品質を犠牲にすることなく、より迅速かつ効率的に GPU に描画命令を与えることができます。TIR は、DirectX 11.1 をサポートする Windows 8 用に設計された新しい GPU ハードウェアで利用できます。
以下は、TIR をサポートする DirectX 11.1 GPU で、さまざまな SVG ファイルからアンチエイリアス処理されたジオメトリをレンダリングする際のパフォーマンスの向上を示すグラフです。
グラフィックス ハードウェア パートナー [AMD と読む] と緊密に連携して、TIR を設計しました。そのパートナーシップのおかげで、劇的な改善が可能になりました。DirectX 11.1 ハードウェアはすでに市場に出回っており、パートナーと協力して、より多くの TIR 対応製品が広く利用できるようにしています。
私が OpenGL から使用するように求めているのは、このビットのハードウェアです。(マントルから呼び出すこともできます。Windows 以外でも使用できるからです。)
opengl - ATI Radeon HD 5770 GPU OpenGL 4.1 サポート?
2012 Mac Pro に ATI Radeon HD 5770 GPU を搭載しています。
プログラムで次のコードを実行すると:
私が得る出力は次のとおりです。
しかし、OpenGL Extensions Viewer を使用すると、次のようになります。
4.1 を使用する方法はありますか? バージョンが 2.1 であると表示され続けるのはなぜですか?