問題タブ [pointer-aliasing]
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++ - 「vector::insert」のようなものを正しく(しかし効率的に)実装する方法は?(ポインタエイリアシング)
vector
:のこの架空の実装を考えてみましょう。
問題
ここで直面する微妙な問題があります。同じベクトル内のアイテムを参照する可能
性があります。begin
end
where
たとえば、ユーザーが次のように言った場合:
It
がポインタタイプでない場合は、問題ありません。
しかし、私たちは知らないので、それが[begin, end)
すでにベクトル内にある範囲を参照していないことを確認する必要があります。
しかし、これをどのように行うのでしょうか?C ++によると、同じ配列を参照していない場合、ポインターの比較は未定義になります。
そのため、コンパイラは、アイテムがエイリアスしないと誤って通知する可能性がありますが、実際にはエイリアスしているため、不要なO(n)の速度が低下します。
考えられる解決策と警告
1つの解決策は、ベクトル全体を毎回コピーし、新しいアイテムを含めてから、古いコピーを破棄することです。
ただし、上記の例のように、すでに十分な容量がある場合でも、1つのアイテムを挿入するためだけに1000のアイテムをコピーするシナリオでは、これは非常に低速です。
この問題を(正しく)効率的に解決する一般的な方法はありますか?つまり、エイリアシングが何もない場合にO(n)の速度低下に悩まされることはありませんか?
performance - GCC C99 でのポインターの厳密なエイリアシングの例、パフォーマンスの違いなし
C99 で厳密なエイリアシングがパフォーマンスに与える影響を理解しようとしています。私の目標は、プログラムで多くの時間を費やすベクトル ドット積を最適化することです (プロファイリングしました!)。エイリアシングが問題である可能性があると考えましたが、次のコードは、サイズが 1 億のベクトルであっても、標準のアプローチと厳密なエイリアシング バージョンの間に実質的な違いを示していません。また、ローカル変数を使用してエイリアシングを回避しようとしましたが、同様の結果が得られました。
何が起こっていますか?
OSX 10.7.4 で gcc-4.7 を使用しています。結果はマイクロ秒単位です。
restrict.c (このコードには数百 MB の RAM が必要であることに注意してください):
opengl - glsl でエイリアシングを回避してテクスチャの上にプロシージャル ラインを描画する
私の目標は、アスファルトの道路に白い線を引くことです。道路の性質は変化するので、アスファルトと白線の両方を表すテクスチャだけではありえません。現在のアプローチは、アスファルト テクスチャを適用し、他の 2 つのテクスチャ座標にいくつかの情報をコーディングすることです。ピクセル シェーダーでは、これらの座標を読み取って、そのフラグメントを白にするかどうかを決定します。
これにより、高レベルのエイリアシングが発生します。そして、それが私が解決したい問題です。
smothsetp または線形補間を適用して、線の「白さ」を変更しています。また、カメラからの距離に応じて幅と色を変更しました。これは少しは役に立ちますが、遠く離れた場所では、醜いエイリアスの線がまだ残っています。
どうやってこれを続けますか?滑らかな白い線を表現し、テクセルにアクセスするテクスチャを用意したほうがよいでしょうか? 隣接するテクセルにアクセスするバイリニア フィルターを実装する必要がありますか?
c++ - 線形サンプリングされたガウスぼかし品質の問題
私は最近、この記事に基づいて線形サンプリングされたガウスぼかしを実装しました。
全体的にはうまくいきましたが、テキストにわずかなエイリアシングがあり、ピクセルの集まりが薄いようです。これの原因についてはかなり困惑しています。それは私のシェーダーまたはウェイト計算の問題ですか、それともこのメソッドを使用することの継承の欠点ですか?
バイリニア フィルタリングを使用する代わりに各ピクセルを定期的にサンプリングする場合、この問題に遭遇しないことを付け加えたいと思います。
どんな洞察も大歓迎です。重みを計算する方法のコード サンプルを次に示します。
そして、これがフラグメント シェーダーです (このシェーダーには別の垂直バージョンもあります)。
この問題を示すスクリーンショットは次のとおりです。
java - setObject() メソッドとエイリアシング
タイプ POINT (オブジェクト) の 2 つの属性を持つ LINE クラスがあります。
このステートメントを作成すると、エイリアシングが発生しますか?
または、次のように新しいオブジェクトを作成する必要がありますか?
事前に感謝します。
xcode - Cocos2Dのギザギザのエッジ-アンチエイリアスの問題?
現在、グラフ(エッジで接続されたノード)を使用するゲームを開発しており、ノードを移動できるようにしたいと考えています。ノードは移動しています(タッチに応答)が、ノードが移動した結果としてエッジ(.png画像で初期化)が再レンダリングされると、ギザギザに見えます。エイリアシングとアンチエイリアシングを試してみましたが、何をしてもエッジがギザギザになります。
ここで、エッジ画像を(画像ファイルを使用して)初期化します。
そして、ここでエッジ図面を更新します(nextFrameメソッドの後半を使用):
Cocos2Dv2.0とXCodev4.5を使用しています。
どんな助けでも大歓迎です。ありがとうございました!
更新:問題を示す写真:
unity3d - CG:fmodを使用してテクスチャを繰り返すと、エイリアシングが発生します
をCg
使用してシェーダーを作成していますUnity3D
。
fmod関数を使用して、軸に沿ってテクスチャを繰り返します(基本的に、でテクスチャスケールを設定することで達成できるのと同じ効果ですMaterial
)TextureWrapMode.Repeat
。
これはfragment shader
、エラーを再現できるコードです。
基本的には機能しているように見えますが、0のfmod関数に対応するある種のエイリアシング(ストリップパターン)を生成します。これがいくつかのスクリーンショットです:
上の画像は、テクスチャが正しく繰り返される様子を示しています。出現したストリップエイリアシングパターンのズームは次のとおりです。
デバッグしようとしましたが、何が起こっているのか正確に理解できません。誰でも私に何が問題なのか、そして最終的にはそれをどのように解決するのか教えてもらえますか?
編集:ミップマップの生成を無効にすると、この問題が解決することがわかりました。ところで、距離が増加している間、縮小エイリアシングの問題を回避するためにミップマップを使用したいと思います。誰かが何か考えがありますか?
pointers - CUDA はポインタ エイリアスをサポートしていますか?
これを尋ねる理由は、コードに奇妙なバグがあり、エイリアシングの問題である可能性があると思われるためです。