8

ユーザーがChromeを使用してwebglブラックリストのグラフィックカードを使用してWebサイトを閲覧しているかどうかを確認する必要があります。

http://support.google.com/chrome/bin/answer.py?hl=en-GB&answer=1220892

具体的には、ATIカードを使用しているかどうかを知る必要があります。私がTHREE.jsで行っているプロジェクトでは、ATIカードのChromeで表示すると、非常に醜いレンダリングが生成されます(線はアンチエイリアス処理されません)。別の方法を提供したいと思います。

線をぼかすポストエフェクトがあることは知っていますが、アートディレクションの結果はさらに悪くなります。

4

2 に答える 2

3

これを試して:

function aa_test() {
renderer.setSize(4, 4);

var ortho_camera =  new THREE.OrthographicCamera(0, 4, 0, 4, 0, 1 );
var output = new Uint8Array( 4 );

    var material = new THREE.LineBasicMaterial({
      color: 0xffffff
    });

var geometry = new THREE.Geometry();
geometry.vertices.push(new THREE.Vector3(0, 0, 0));
geometry.vertices.push(new THREE.Vector3(4, 4, 0));

    var line = new THREE.Line(geometry, material);

    renderer.clearTarget( aa_target.renderTarget, true, true, true );
    renderer.context.lineWidth(4);

aa_target.add(line);
renderer.render( aa_target, ortho_camera, aa_target.renderTarget );

renderer.context.readPixels( 0, 2, 1, 1, renderer.context.RGBA,    renderer.context.UNSIGNED_BYTE, output );

if (output[0] == 0)
    aa_available = false;

}

つまり、あなたが持っているのは、AAが利用可能かどうかのテストです。このメソッドはThree.jsで機能します。Chromeとその特別なページ(chrome:// gpuなど)を見てみましたが、そのデータを任意のjsスクリプトに取り込むことはできません。

FXAAの使用は、線の太さが約1.6であるため、それほど悪くはありません。そうしないと、ブレンドするのに十分なラインが得られません。FXAAは、多くのことが行われているシーンに最適ですが、シーンの大部分が線である場合、線が背景にフェードインしすぎる傾向があります。

これに対する最良の答えは、FXAAであり、ここでのアプローチを使用することです。

https://github.com/OpenGLInsights/OpenGLInsightsCode/tree/master/Chapter%2011%20Antialiased%20Volumetric%20Lines%20Using%20Shader-Based%20Extrusion

これはジオメトリシェーダーを使用しますが、前に、同じ結果を得るための頂点シェーダーの使用について説明しました。これはおそらくはるかに良い線を与えるでしょう。

お役に立てば幸いです。:D

于 2012-11-07T13:53:16.620 に答える
1

ブラウザが文字列値をマングルするため、情報を見つけるために通常使用できるOpenGL呼び出しは、WebGLではこの目的には役立ちません。http : //jsbin.com/ovekor/3/ただし、拡張機能WEBGL_debug_renderer_infoがあります。使用されていますが、現在のブラウザサポートは不明であり、セキュリティリスクとしてマークされているため、スムーズに使用できません(何らかのデバッグフラグまたはユーザープロンプトが必要になる場合があります)。

また、「ATIカード」などを単純にテストするのは少し悪いことです。ドライバーが改善したり、一部のカードに問題が発生しなかったりする可能性があるためです。(これは、悪名高いブラウザのスニッフィングと機能の検出に類似しています。)

そのため、コメントで提案されているように、少しテストレンダリングを行うのが最善の策です。

線をぼかすポストエフェクトがあることは知っていますが、アートディレクションの結果はさらに悪くなります。

あなたがHorizo​​ntalBlurShaderとVerticalBlurShaderを意味するなら、私はあなたがFXAAShaderを試すことを提案します。これは単に画像全体をぼかすのではなく、実際のスクリーンスペースアンチエイリアシングフィルターです。

于 2012-11-05T08:31:07.707 に答える