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

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

2
六角形のピクセル配列は画像をより効率的に格納できますか?
ほとんどのコンピューターモニターとテレビには、正方形(またはほぼ正方形)の格子上に配置されたピクセルの長方形の配列があります。六角形の格子は、同じピクセル数でより良い画質を提供しますか?言い換えれば、同じ量のメモリでより多くの詳細を保存できますか? (固定領域の画像の場合)最も近いピクセルの中心までの平均距離が正方格子の場合よりも低くなるため、六角格子の同じ数のピクセルから(少なくとも少し)より詳細が可能であると直感的に感じます。より具体的に定義された違いを見たいのですが。 答えが「はい」であったとしても、モニターメーカーが六角形に配置されたピクセルを突然作成し始めるとは思いません。ただし、画像をピクセルの正方格子に変換して表示する場合でも、ピクセルの六角形格子として画像を格納することで何が得られるのか疑問に思うので、質問します。
11 pixels  memory 

3
曲率の​​高い領域に点を集中させるにはどうすればよいですか?
ポイントをインプリシットサーフェス上に分布させて、曲率の高い領域にポイントをより密集させるにはどうすればよいですか? ポイントをランダムに追加し、曲率に基づいて不要なポイントを拒否することを検討しましたが、同様に曲率のある領域全体に均一な分布を与えるより良い方法があるかどうか知りたいです曲率領域。 表面の三角形分割にこれらの点を使用することに特に注目しており、比較的平坦なパーツに必要な数より多くの三角形を作成したくありません。 これは、既知の導関数を持つ形状に適用されるため、特定の点の曲率を計算できます。 これは、リアルタイムのアプローチである必要はありません。

2
ステンシルテストでいくつの断片が作成されたかを調べることはできますか?
私はステンシルテストを非常に広範囲に使用して不規則な形状をレンダリングするOpenGLアプリケーションを持っています(単純な2D CSGと少し似ています)。ステンシルテストに合格して実際にレンダリングされたフラグメントの数を確認できれば、これは一部の計算を簡略化するのに非常に役立ちます。具体的には、後でモンテカルロシミュレーションで近似する必要がなく、レンダリングされた形状の領域を無料で決定できます。 ジオメトリシェーダーから放出されるプリミティブにも、変換フィードバックと呼ばれる同様の概念があることを知っています。同様のコンセプトがフラグメントとステンシルテストに存在するかどうか知りたいのですが。

1
テクスチャの変更(その上でのペイント)は、「状態変化」と見なされますか?
グラフィックスの慣例では、状態変更をより少なく実行する方が、より多くの状態変更を実行するよりも優れています(シェーダーの切り替え、バッファーのバインド、テクスチャのバインドなど)。テクスチャの場合、(スプライト/テキストをレンダリングするために)1つのアトラスを使用して多くのポリゴンをレンダリングする方が、各ポリゴンに新しいテクスチャを個別にバインドするよりも高速です。 継続的にテクスチャにペイントしている場合、これは当てはまりglTexSubImage2Dますか?(ネットワークを介して)入ってくるデータのストリームがあり、処理を経て、一度に1行ずつテクスチャーにペイントされます。データは視覚的に無限のスクロールで表示されます。 1つの大きな長方形にレンダリングされた1つのテクスチャにペイントする方がよいでしょうか(ペイントされたデータをスクロールして表示します)。ここでのアイデアは、ペイントを続けている間、いつでも1つまたは2つのテクスチャをバインドすることです。 または、たくさんの小さな長方形をペイントする必要がありますか(ペイントが完了すると長方形のみが表示されます)。長方形ごとに1つのテクスチャをバインドするとします。
11 opengl  texture 

1
三次ラグランジュ補間テンソル積は、双三次補間と同じですか?
4x4の最も近いピクセルをサンプリングし、x軸でラグランジュ補間を実行して4つの値を取得し、y軸でラグランジュ補間を使用することにより、いくつかの補間テクスチャサンプリングを実装しました。 これはバイキュービック補間と同じですか、それとも異なりますか?または、さまざまな種類のバイキュービック補間がありますが、これはおそらくそのうちの1つにすぎませんか? ここでのWebgl Shadertoyの実装と関連するGLSL(WebGL)コード:https ://www.shadertoy.com/view/MllSzX ありがとう! float c_textureSize = 64.0; float c_onePixel = 1.0 / c_textureSize; float c_twoPixels = 2.0 / c_textureSize; float c_x0 = -1.0; float c_x1 = 0.0; float c_x2 = 1.0; float c_x3 = 2.0; //======================================================================================= vec3 CubicLagrange (vec3 A, vec3 B, vec3 C, vec3 D, float …

2
アルファチャネルをガンマ補正する必要があります
PNG、BMPなどでは、保存されたピクセル値が線形RGB空間にないことがわかります。しかし、アルファチャネルについて何かを述べているドキュメントは見つかりませんでした。アルファチャネルは線形空間の画像ファイルに保存されていますか?
11 gamma 

2
物理ベースのBRDFでは、フレネル係数の計算にどのベクトルを使用する必要がありますか?
フレネル係数のよく知られたシュリック近似は、次の方程式を与えます。 F=F0+(1−F0)(1−cos(θ))5F=F0+(1−F0)(1−cos(θ))5F=F_0+(1 - F_0)(1 - cos(\theta))^5 そしては、表面法線ベクトルとビューベクトルの内積に等しい。cos(θ)cos(θ)cos(\theta) 実際の表面法線または半ベクトルHを使用する必要があるかどうかは、まだはっきりしていません。物理ベースのBRDFでどちらを使用する必要がありますか。その理由は何ですか。NNNHHH さらに、私が理解している限り、フレネル係数は、特定の光線が反射または屈折する確率を与えます。そのため、なぜこの式をBRDFで引き続き使用できるのかを理解するのに苦労しています。 この観察は、が来る場所だと私に思わせる傾向がありますが、代表的な法線のフレネルが実際のすべての法線のフレネルを積分することと同等であることは私には明らかではありません。HHH
11 brdf  pbr  integral  fresnel 

2
インデックスバッファーとは何ですか?頂点バッファーとどのように関連していますか?
私はこのような頂点バッファーを持っています: 0.0, 0.0, 1.0, 0.0, 0.0, 0.6, 1.0, 0.6, 0.5, 1.0 次のインデックスバッファがあります。 0, 2, 2, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0, 3, 3, 1 私はgl.LINESWebGLを使用して描画したいことを知っています。これは、複数の分割された線分を意味します。 gl.drawElements(gl.LINES, 16, gl.UNSIGNED_SHORT, indexBuffer); WebGLの単一の描画呼び出しで複数の線分の描画を可能にするようです。 誰かELI5が私にできますか?インデックスバッファとは何ですか?それは頂点バッファとどのように関連していますか?プリミティブからインデックスバッファーを生成するにはどうすればよいですか?

2
JPEGエンコードではガンマを考慮する必要がありますか?
画像がJPEGを使用してエンコードされる場合、RGBピクセルは最初にYUVにエンコードされ、次にUVチャンネルがダウンサンプリングされます。実際にDCTを実行して係数をエンコードする前に、JPEG は Yチャネルをガンマ補正しません。これは正しいです?表示結果に最も影響を与えるDCT係数を決定すべきではないでしょうか?

1
プログラムで頂点法線を生成する
私はKinectフェイスAPIを使用しています。これは、フェイスイメージを作成するためにレンダリングされる三角形の頂点とインデックスの配列を提供します。 頂点の数と配列内の順序、およびkinectによって与えられるインデックスは常に一定です。 ただし、APIはUVデータと頂点法線に関する情報を提供しません。 アプリケーションでは、顔の動きによって3D空間での位置が変化するため、Kinectによって指定された頂点の順序を維持する必要があるため、3D編集ソフトウェアでUVと法線を生成することはできません。 同じ平面に頂点が非常に少ないため、頂点の位置を2D平面に投影することでUVを生成できました。 ただし、メッシュの頂点法線を生成する方法はわかりません。頂点法線がないと、面メッシュは視点からのフィーチャの深さなしで描画されますが、頂点の位置は正しいため、シルエットは表示されます。 頂点法線が存在しないため、ライティングが正しく機能しないため、現在のように見た目には機能のない淡いメッシュであることを理解しています。 では、頂点の位置と頂点のインデックスだけで三角形を作成する場合に、頂点法線を生成するにはどうすればよいですか?

1
最新のハードウェアがリアルタイムを維持しながらシーン内のポリゴンをいくつ到達でき、そこに到達する方法は?
かなり基本的な、ある意味では質問ですが、私も含めて多くの人が答えを本当に知りません。GPUメーカーは非常に高い数値を引用することが多く、さまざまなゲームエンジンがサポートすると主張するポリゴン数のばらつきは、多くの場合、数桁に及び、依然として多くの変数に大きく依存しています。 これは広く、かなり自由回答の質問であることを承知しており、お詫び申し上げます。それでも、ここで貴重な質問になると思いました。
11 gpu  optimisation 

1
AMDがSSDをGPUボードに配置したことで、なぜレイテンシがそれほど減ったのですか?
AMDは最近、いくつかのM2 SSDを搭載した興味深いRadeon Proボードのニュースを発表しています。 より詳細なストーリーのいくつか(ここまたはここなど)が指摘しているように、メリットは主に高帯域幅から発生するわけではありません(M2はそれぞれ4つのPCIeレーン上にあるため、ボード自体の16レーンコネクタはさらに多くのはずです)。低レイテンシから。 このストーリーには、「これによりメモリアクセスのレイテンシが10分の1になる」という主張が含まれています。 私の質問は基本的に:GPUボード上のPCIe接続SSDは、システムPCIeバス上のメインシステムRAMまたはストレージデバイスにアクセスするGPUよりもレイテンシを大幅に短くする必要があるのはなぜですか?メインシステムの「邪魔になる」とは何ですか。また、オンボードSSDの方がはるかに高速にアクセスできます。

1
BRDFが輝きの比率ではないのはなぜですか?
私はBRDFについて学び、BRDFが特定の方向に対する発信放射輝度と別の方向からの着信放射輝度の比率として定義される理由を知りたいと思っています。BRDFが放射輝度の比として定義されていないのはなぜですか?
10 brdf 

2
四角形を長方形に投影解除する方法は?
tl; dr:射影ジオメトリの数学の問題:点A、B、C、Dがユニットボックスの端のどこかにあるように、以下に示すように投影を与える4x4カメラマトリックスをどのように見つけますか(例:OpenGL正規化デバイス)座標)、およびユニットボックスのコーナーは、光線EA、EB、EC、EDに沿って妥当な場所に落ちますか? (これは、ホモグラフィ、パースペクティブ、および/またはコリネーションの特殊なケースである可能性があります。用語に精通していません。) 精巧 ビューポート内に四角形のABCDがある場合、それを長方形にマッピングする一意の変換(?)が存在すると思います。下の画像に示すように、ビューポートの四角形のABCDは物理的な「ウィンドウ」として機能し、長方形にマッピングすると、歪んで表示されます。 (右側のボックスは、後で説明するNDCを表します) 目標は、右側の画像をすばやく取得することです。画像を取得するためにすべてのポイントをレイトレーシングできます(私はこれを行いました)が、ブレンドやプリミティブなどのようなものを利用したかったので、OpenGLまたは他の射影技法を使用したいと思います。 最初の試み 3 + 1次元の均一座標を3空間(左側)にし、それを2空間の2 + 1次元の均一座標(下)に投影する3x4 カメラマトリックスを見つける問題を解決できると思います。権利)。直接線形変換を使用してこれを解決し、カメラマトリックスの未知のエントリの方程式系を取得し、特異値分解を使用してシステムを解くことができます。Ba=0a(SVD)。私はベクトルEA、EB、EC、ED(Eはあなたの物理的な目またはワールドスペースのカメラ)をプレイメージのポイントとみなし、(0,0)、(1,0)、(1 、1)、(0,1)またはポストイメージ内のポイントとしての何か、およびポイントの各ペアは、SVDにプラグインするいくつかの線形方程式を与えます。結果の行列はEA->(0,0)などをマップします(十分な自由度があると仮定します。つまり、解が一意であるかどうかは不明です。注[a]を参照してください)。 しかし、私の悔しさにこれはOpenGLがどのように機能するかではありません。OpenGLは、3x4マトリックスで3dを2dに直接投影しません。OpenGLには、3次元の点である「正規化デバイス座標」(NDC)が必要です。NDCに投影した後、「ユニット」ボックス内の(-1、-1、-1,1)から(1,1,1,1)までのすべてが描画されます。外のすべてが切り取られます(同種の座標を扱っているため、任意の点(x、y、z、w)が画面に表示されるのは、(x / w、y / w、z / w 、1)は-1から1)までのユニットボックス内にあります。 したがって、問題は次のようになります。いくつかの奇妙に見える立方体を同次座標(具体的には、ABCD(フロントポイント)とA'B'C'D '(バックポイント、非表示)で左側に描かれた立方体)にマッピングする合理的な変換が存在しますか。フロントポイントの後ろに))ユニットキューブに、例えば4x4マトリックスを使用して?どうやってやるの? 私が試したこと 私はより強力なものを試しました:ABCDとA'B'C'D 'を通常のピラミッド型錐台(例:gl錐台)のように見せました(つまり、この架空の設定では、左側の画像に黒い長方形が重なっているだけです)四辺形ではなく)、DLT /直接線形変換を使用して、疑わしい4x4行列を解きました。しかし、試してみたところ、十分な自由度がないようでした...結果の4x4行列は、すべての入力ベクトルをすべての出力ベクトルにマップしませんでした。A、B、C、D、A '(5組の変換前ベクトルと変換後ベクトル)を使用している間、私は/ほぼ/私が望む結果を得ます...ベクトルは正しくマッピングされていますが、たとえばB'、 C '、D'は(-1、-1,1,1)ではなく(3,3,1,1)にマッピングされ、OpenGLによって切り取られます。6番目の点(4x4マトリックスが投影する6組の点)を追加しようとすると、私の解は縮退しているようです(ゼロ、無限)。ここではいくつの自由度を扱っていますか?これは、私たちが知っており、気に入っている通常の4ベクトル(3 + 1次元の同次座標ベクトル)をマッピングする4x4マトリックスで可能ですか? ランダムなマイナーな考え 4x4マトリックスで任意の立方体を任意の立方体にマッピングすることは不可能だと思いますが、2Dのような任意の凸四角形を他の凸四角形に2Dでマッピングすることは可能だと思ったので混乱します、例えば、Photoshop?...これは射影変換ではできませんか?そして、それはどのように3Dに一般化されますか?......また、4x4行列を見つける試みが失敗した場合、線形代数は、NxN行列が最良の場合にN個を超える線形独立点をN個の目標点にマッピングすることを期待すべきではないと言いますが、どういうわけか均一だと思いますいくつかの隠れた共線性が進行しているため、座標はこれをだますのですか?違いますか? 別の解決策? 典型的な錐台カメラの射影行列を使用して、コーナーに対応する2Dポイントを見つけ、2Dパースペクティブディストーションホモグラフィを実行することもできますが、それがピクセルがレンダリングされた後に発生した場合(フォトショップなど)解像度に問題があります...おそらく、仮説的にNDC空間内のXY平面でこの変換を実行するための行列を見つけ、それを通常の錐台ベースの行列で構成できますか? (注[a]:自由度:ABCDは、必要に応じて、長方形に作用する射影変換のポストイメージになるようにさらに制約できます...つまり、左側の黒い長方形は、画像フレームのクリップアートモデルを投影した結果)

2
OpenGLよりもDirect3Dを選ぶ理由はありますか?
私が読んでいたので、これを、私は一種の他のどのOSよりも、MicrosoftのWindows上でより多くのゲームがある理由を得ました。提示された主な問題は、Direct3DがOpenGLよりも優先されることでした。 開発者が互換性を犠牲にするのはなぜですか?それは単に会社の財務上の損失です。OpenGLはごちゃごちゃのようなものですが、専門家にとってそれが問題になることはまずないでしょう。たとえそれがあったとしても、人々は経済的損失を被るよりも一歩進んでいくと思います。 また、私が間違っていなければ、多くのクロスプラットフォームアプリケーションがDirect3DとOpenGLの両方を使用します。APIを切り替えると思います。 彼らがOpenGLを使用できるのでこれは奇妙です、なぜDirect3Dまで気にかけるのですか? だから問題は、OpenGLに技術的な問題があるのか​​、それともOpenGLに欠けているDirect3Dのサポートがあるのか​​ということです。 この質問はトピックから外れている、または範囲が広すぎるとして閉じられている可能性があることを認識しています。絞り込んでみました。
10 opengl  direct3d 

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