コンピューターグラフィックス

コンピューターグラフィックスの研究者やプログラマーのためのQ&A

1
被写界深度はどのように実装されますか?
被写界深度にはぼかしが含まれることを知っています。 ガウスぼかしはどのように実装されていますか?の質問には、ガウスぼかしを行う方法に関するいくつかの優れた情報があります。 しかし、それ以外に、被写界深度はどのように実装されますか? 各ピクセルをぼかす方法に関するルールは何ですか?また、ぼかしたくないピクセルの隣に、ぼかしたいピクセルが多い場合の処理​​方法を教えてください。 「混乱の輪」についても聞いたことがありますが、それが何かはわかりません。 誰でも、DOFをわかりやすく、わかりやすく説明できますか?

3
頂点バッファオブジェクトがパフォーマンスを向上させるのはなぜですか?
私の基本的な理解から、頂点バッファーオブジェクトは次のように機能します(擬似コード)。 通常、正方形を描くと言いたい場合は、線の描画コマンドを発行できます。 line (0, 0) -> (1, 0) line (1, 0) -> (1, 1) line (1, 1) -> (0, 1) line (0, 1) -> (0, 0) VBOを使用すると、私が正しく理解していれば、頂点をVBOにロードします。 define VBO load (0,0) -> VBO load (1,0) -> VBO load (1,1) -> VBO load (0,1) -> VBO load (0,0) -> VBO その後、1つの描画コマンドを発行できます。 …

1
JPEGを作成する場合、アーチファクトの発生を最小限に抑えるにはどうすればよいですか?
JPEG画像を作成するときにデジタルアーティファクトにつながると思われる主な要因は、エイリアスと圧縮の2つです。 例: 文字の入ったPNGをJPEGに変換したり、写真の上にベクター画像を配置したりすると、エッジがピクセル化されます。アンチエイリアスは一般に、それらの周囲に一種のブラーを作成しますが、画像が非可逆圧縮されている場合、詳細の一部も失われるため、ブラーとピクセル化が目立たなくなる場合があります。 これは正しいことですか?つまり、ロスレス圧縮は非常に詳細な画像を生成するため、エイリアシングから生じるアーティファクトがより顕著になるため、適切な圧縮を使用してバランスを見つけることができますが、画質は低下します。 編集する このJPEGをmspaint(3.46KB)に保存しました。 これが最大の圧縮(最低品質、0.5KB)の同じJPEGです。 これが50%圧縮の同じJPEGです(サイズの違い、1.29KBに注意してください)。 同じ50%圧縮ですが、「プログレッシブJPG」として保存され、元のEXIFおよびXMPデータを保持し、「元のJPG品質で保存しようとしました」(灰色のピクセルがない、2.96KBであることがわかります)。 そして最後に、クロマサブサンプリングを無効にした以前と同じ(同じファイルサイズ、2.96KB):


1
LUTを使用してモバイルデバイスのTrig Heavyシェーダーを高速化する
私が取得しようとしていますこのシェーダを本当に古いのiDevice上で実行するだけでなく、最終的にはアンドロイド。 コードをフラグメントごとに2つの正弦関数に下げても、シェーダーは約20 fpsで実行されます。 私は古いシェーディングテクニックの本から一枚の葉を取り、事前定義されたTrig値の束を保持する配列を作成し、どういうわけかそれらを使用してシェーダーを近似することを検討しました。 上でリンクしたシェーダーでは、trig関数に送られる値を丸めることにより、マウスを左に動かすと(ダウンしている間)、シェーダーの品質が低下することをすでにシミュレートしています。左側に非常に近く、完全に異なるかなりクールなシェーダーのように見えるため、実際にはかなりクールです。 とにかく、私には2つのジレンマがあります。 GLSLシェーダーで定数などの360値の配列を含む最も効率的な方法は何か、わからないのですか? 0から360までの角度が必要な場合、通常のように数値を範囲内に配置する方法を理解できません(はい、GPUがラジアンを使用していることがわかっています)。 func range(float angle) { float temp = angle while (temp > 360) {temp -= 360;} while (temp < 0) {temp += 360;} return temp; } ただし、GLSLでは、whileループまたは再帰関数を使用できません。

1
目の虹彩に対してどのような影響を考慮する必要がありますか?
虹彩(目の瞳孔を囲むカラフルなリング)は水の層で覆われており、透明な要素と半透明な要素に不透明な要素が埋め込まれているように見えます。アイリスがクローズアップでリアルに見えるようにするには、どのような効果をモデル化する必要がありますか(アイリスが画像領域の20%以上を占めています)。 表面下散乱が必要ですか、それとも透明度で十分ですか?瞳孔から入った目からの光を考慮する必要がありますか、それとも虹彩の後ろは完全に不透明と見なすことができますか?私が考慮していない他の影響はありますか? 静止画像をオフラインで作成したいと考えています。このアプローチはリアルタイムで機能する必要はありません。 これまでのところ、水の層をシミュレートするために薄い透明なフィルムで目を覆い、虹彩を放射状に配置された色の付いた透明なストランドが付いた透明なボールの一部として扱い、それらが前から後ろに重ねられているときにオフセットしました。通り抜ける光による不要な影響を防ぐために、艶消しの黒い球のセクションでアイリスを裏打ちしました。これはまだいくぶん人工的(無機的)に見え、切断されているように見えます。 私は、球、円錐、円柱などの幾何プリミティブでこれを機能させようとしていますが、新しい可能性が開かれる場合は、三角形メッシュを使用するアプローチを受け入れます。


3
ポリゴンメッシュで三角形内部テストを実行するにはどうすればよいですか?
(V1, V2, V3)通常の三角形メッシュでランダムに選択された 3つの頂点があります。これらの3つの頂点について、それらの間の測地線距離と(ダイクストラを使用して)パスを計算し、上の図のように三角形のような表面を形成しました。 これで、各パスにある頂点があり、特定の頂点から測地線距離を計算できます。 私がしたいことは、三角形のような領域にある頂点または三角形を取得することです。これどうやってするの?

2
拡散エリアライトの総放射パワー
私は、Physical Based Rendering(Pharr、Humphreys)という本を読んでいます。ライトの章では、さまざまな種類のライトの総放射電力の概算について説明します。たとえば、ポイントライトの合計パワーはintensity * 4 * piです。ここで4piは球全体の立体角を表します。強度*立体角=パワー(または放射束)なので、これは私には理にかなっています。これも単位で確認できます。強度はW / srで、立体角はsrなのでW/sr * sr = W、電力はワットで測定されます。チェックアウトします。 ただし、の対応する計算がわかりませんDiffuseAreaLight。本についての私の理解から、拡散エリアライトから放出される総パワーは次のように計算されemitted radiance * area * piます。放射輝度の単位はW /(sr * m ^ 2)なので、面積を乗算するとW / srが得られます。これにより、円周率は立体角を表すと思いますが、なぜ1piだけなのでしょうか。エリアライトの各ポイントは完全な半球で放射するため(2piステラジアンに対応)、私は2piを推測したでしょう。 この本に記載されている実際のコードは、こちらにあります。 私は何を誤解していますか?なぜtotal emitted power = emitted radiance * area * pi拡散エリアライトに意味があるのですか?

1
正投影と透視投影の違いは何ですか?
私は、 『コンピュータグラフィックスの基礎』(ただし第3版)からコンピュータグラフィックスを研究しており、最後にプロジェクションについて読みました。しかし、正射投影と透視投影の違いは正確に理解できませんでしたか?なぜ両方が必要なのですか?また、透視投影において、正投影の前に適用される透視変換とは何かを学びたいと思います。最後に、なぜビューポート変換が必要なのですか?私はカメラ/視聴者が見ていない場合、我々はビュー変換を使う意味 -方向が、何ビューポートについては?− z−z-z

2
にきびの原因
シャドウマッピングのしくみはわかっていますが、シャドウニキビの原因がわかりません。誰でも簡単にシャドウニキビの原因を教えてもらえますか?それはデプスマップの解像度とどのように関連していますか?

2
深度バッファーの更新はGPUでどのように機能しますか?
現在私はソフトウェアにある種の深度バッファを実装しようとしています、そしてそれを書いているとき私は大きな問題を抱えています。1つのmutexを持つことは絶対的な過剰です。そこで、スレッドの数と同じ数のミューテックスを作成しました。現在のピクセル(pixel_index%mutexes_number)に基づいてミューテックスをロックしていますが、これはうまく機能しますが、それでも非常に遅くなります。そして、それは実際のGPUでどのように行われるのでしょうか?巧妙なアルゴリズムまたはハードウェアがそれを処理しますか?
10 buffers 

1
ジャンプフラッドアルゴリズムは分離可能ですか?
JFA(ここで説明するアルゴリズム:http : //www.comp.nus.edu.sg/~tants/jfa/i3d06.pdf)を使用して、ボロノイ図または距離変換の近似値を取得できます。これは、シードの数ではなく、結果の画像のサイズに基づいて対数時間で行われます。 ただし、画像が各軸で同じサイズでない場合はどうしますか? サイズが似ている場合は、短い方の軸にサイズ1の追加のJFAステップを持たせることができますが、大きい方の軸は(512 x 256サイズの画像のように)機能します。非常に異なるサイズの軸の寸法の場合、これははるかに非効率的ですが、512 x 512 x 4のボリュームテクスチャがあるとしましょう。 JFAを各軸で個別に実行しても、適切な結果が得られますか? または、その時点で、別のアルゴリズムを使用する方が適切ですか?もしそうなら、それはどのアルゴリズムでしょうか? 私の状況では、理想的には、単一点シードと任意形状のシードの両方をサポートすることを目指しています。重み付けされたシードである可能性もあります。シードへの距離は、乗算器および/または加算器によって調整され、多少の影響を与えます。


1
重複する分析曲線のカバレッジを正確に計算するにはどうすればよいですか?
2D形状のアンチエイリアスは、形状によって覆われているピクセルの割合を計算することになります。単純な重なり合わない形状の場合、これはそれほど難しくありません。形状をピクセルの長方形に対してクリップし、結果の形状の面積を計算します。ただし、複数の形状が同じピクセルに重なると、さらに難しくなります。単純に面積を合計すると、ある形状が別の形状を覆う量を無視すると、計算されたカバレッジが高すぎる可能性があります。たとえば、フォントレンダリングに関するこの記事の「制限」セクションを参照してください。また、2つの曲線が異なる色の異なるオブジェクトからのものである場合もあります(そのため、2つの形状の和集合の総カバレッジではなく、それぞれのカバレッジのカバレッジは異なります)。 完全な精度を気にかけている場合、これはどのように計算されますか?さらにトリッキーですが、曲線などの非多角形の重なり合う部分のカバレッジをどのように正確に計算しますか マルチサンプリングまたは確率論的手法に頼らざるを得ない場合がありますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.