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

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


1
GLSLまたはHLSLの上に構築された多くのシェーディング言語があります。それらは通常どのような問題を解決し、どのような進歩に価値がありますか?
ふう、長いタイトルでした。 いずれにせよ、私はさまざまなことを考えたいので、この質問をしているのですが、次のような単純なものを追加するだけでも、GLSLの上に単純なオープンソースレイヤーが実際にはないことに気付きました。含む、または一般的に使用される機能。 ある種の研究として、私はこのような質問をしています。そのような言語に対する私自身の意識は控えめに言ってもごくわずかなので、私はbgfxのシェーディング言語とUnityのShaderLabを知っていますが、それらが何を達成するのか本当にわかりません-または理由-コンピュータグラフィックスの初心者。 あるいは、このようなシェーディング言語のウィッシュリストは何でしょうか?これまでのマインには、バージョン間のいくつかの互換性、ピクセルオフセットでテクスチャに簡単にアクセスできるオプションの「非表示」入力、または画像サイズなどが含まれ、おそらく通過します-たとえば、2パスガウスぼかし。 考え?
8 shader 

1
ベジェ曲線と直線で構成される形状をどのように塗りつぶす必要がありますか?
私はしばらくの間グラフィックライブラリに取り組んでおり、ベジエフォントとラインベースのフォントを描画しなければならないところまで到達しました。この時点まで、私はこれで立ち往生しています: 緑の線はベジェパスで、白い部分がレンダリングされます。 ベジエに使用するコードはこちらです。ライン用はこちら。知らない人はルアです。 パスレンダリング(ライン):32-39アルゴリズムは次のとおりです。 特定の間隔で0から1まで繰り返す 次の式でxとyを計算します。 (1-index)^2*x1+2*(1-index)*index*x2+index^2*x3 この時点まで、すべてが正常に動作します。緑の線は、パスメソッドを使用して生成されます。 白い部分は完全に異なる方法でレンダリングされます: 特定のYでのベジエと線のx座標を取得し、それらをテーブルに入れます。 テーブルを繰り返し処理し、ポイントに遭遇するたびに状態の値を変更します。同じforループで、状態がオンかどうかも確認します。もしそうなら、私は画面にピクセルを描画します。 ayのx値を見つけるには、getXメソッドを使用します(ベジェでは46行目、ラインでは31行目)。 図面自体に使用するコードは次のコードです。 local xBuffer = {} local state = false for i=0,500 do for k,v in pairs(beziers) do a,b = v.getX(i) if a then xBuffer[round(a)] = 1 if b then xBuffer[round(a)] = 1 end end end for k,v in …

1
3D空間の2D形状からアスペクト比を計算します
3D空間での2D形状の4つの座標を考慮して、そのアスペクト比を計算します。 3Dスペースは2つの消失点で作成されます。 青でマークされた4つの座標は、ディスプレイ上の2D座標です。この例では、おおよそ(14、5.5)、(19、5)、(20.3、7.3)、(25.3、6)になります。 これが可能かどうかは不明ですが、2つの異なるアスペクト比で2D座標が同じであるという証拠を誰かが見つけた場合、この問題は解決できません。 私の例:

2
C ++のアルキメデススパイラル
C ++でアルキメデススパイラルの x位置とy位置をプロットしようとしています。 これまでのところ、私はこのようなものを試してきましたが、運はありません: int dx = 0; int dy = 0; int x = 0; int y = 0; for (int i = 0; i < maxPoints; i++) { dx = sin(i * PI / 2); dy = cos(-i * PI / 2); x += dx; y += dy; …
8 c++  geometry 

1
GL_LINESで入力順序を変更すると結果が異なるのはなぜですか?
コード: #include <math.h> #include <GL/glut.h> #pragma comment(lib, "opengl32") #include <gl/gl.h> #include <gl/glu.h> //Initialize OpenGL void init(void) { glClearColor(0, 0, 0, 0); glViewport(0, 0, 500, 500); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0, 500, 0, 500, 1, -1); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } void drawLines(void) { glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0,1.0,1.0); glBegin(GL_LINES); glVertex3d(0.5, 0.999, 0.0f); glVertex3d(499.501, 0.999, 0.0f); glEnd(); glFlush(); …

1
renderman言語による摂動画像テクスチャの実装
私は(C#で)イメージの摂動アルゴリズムを実装しようとしています(「テクスチャリングとモデリング-K.パーリンら」(誰かが持っている場合は91ページ))で、イメージを歪めています。次のコードはRenderman言語で記述されています。テクスチャアクセス Ct = texture("example.tx", s, t); に置き換えられます point Psh; float ss, tt; Psh = transform("shader", P); ss = s + 0.2 * snoise(Psh); tt = t + 0.2 * snoise(Psh+(l.5,6.7,3.4)); Ct = texture("example.tx", ss, tt); 左の画像を右の画像に変換します。 私が理解していないことから、座標にアクセスする代わりに、わずかに摂動した座標にアクセスしそれらを場所に表示して、わずかに摂動したように見える画像を作成します。(s,t)∈[0,1](s,t)∈[0,1](s,t)\in[0,1](ss,tt)(ss,tt)(ss,tt)(s,t)(s,t)(s,t) s n o i s e (x )snoise(x)snoise(x)はとして定義され、からにノイズをマッピングし、RenderManのドキュメントでは、Pがポイントである返します。ノイズに基づく値(おそらくパーリンまたはラティス)。(http://renderman.pixar.com/resources/current/RenderMan/noiseFunctions.html)(n o i s e (x …

1
スミスの多重散乱はどのように拡散した表面下散乱と相互作用しますか?
スミスモデルと多重散乱微小のBSDF紙パスをトレースすることができる分布を有する(0への寄与を設定することにより、複数の面の交点とのパスを占める)微小面のBSDFでマスキングシャドウイング機能を交換するための統計モデルを記載していますそして、光線が出る前に、マイクロファセット表面と数回交差することができます。 これは、ボリューム(マイクロフレーク)モデルを変更して、ハイトフィールドのように動作するようにします。つまり、サーフェスの「上」にあるものと衝突することはなく、常に「下」にあるものと衝突するようにします。 その結果、スライドからの言い回しを使用すると、「光線はスミスボリュームを通過することはできません。モデルは不透明な表面のようなインターフェースを作成します。」 このモデルは、パスが終了前にサーフェスを介して認識可能な(マクロスケール)距離を移動できる、従来の拡散サブサーフェススキャタリングと互換性がありますか?または、これは単に、サーフェスの内部にある長いパスをモデリングするつもりのない鏡面BSDFであり、そのコンポーネントを追加する拡散BSDFと組み合わせるためのものですか? (ボリュームレンダリングのマイクロフレークモデルは、通常、拡散と鏡面反射を分離しますか、それとも、単に「拡散」して、何回も跳ね返って、出力方向が均一に分散されるパスです。)

1
描画呼び出しは、並行して実行されますか、それとも順次実行されますか?
これは、GameDev SEで回答した質問のフォローアップです。問題は、OpenGLのglDrawArraysInstancedがそれらのインスタンスを描画するときに並列であるかどうかだけでした。 私の答えは、「たとえば、2つの描画呼び出しが同じ頂点シェーダーを使用する場合など、GPUが複数の事柄に応じて複数の描画呼び出しを並行して実行する可能性がある」というものでした。ここに完全な答えがあります。 OPが述べたコメントで、「シーケンシャルである必要があると思います。結局のところ、ブレンディングモードの一部はシーケンスに依存しています」 今、私は少し混乱しています。それに対する私の答えは、それが有効である場合でもそれらを並列化しますか?誰かがこれを明確にできますか?
8 opengl  gpu 


1
ゲームビデオのスクリーンキャプチャ
実行中のゲームに「フック」して、マリオブラザーズと言い、レンダリングされた各フレームをキャプチャします...そのフレームを画像ファイルに保存します。類似の良い例がFRAPSです。-注:画面/デスクトップ全体をキャプチャしたくありません。ターゲットウィンドウをキャプチャしたい。 私はOBS(Open Broadcasting Software)を見てきましたが、それほど高速ではありません。誤解しないでください。それは素晴らしいソフトウェアですが、残念ながらドキュメントがなく、cおよびc ++で書かれた大規模なプロジェクトは、cからc ++の初心者プログラマにとってほとんどアクセスできません。 私もGamingAnywhereを確認しましたが、残念ながら、動作させることができません。ドキュメントがほとんどないか、まったくなく、VS2010でのみ実行され、乱雑です(変数の命名が不適切)。ただし、これは研究プロジェクトであるため、文書化されておらず、厄介です。 これはOpenGL、GDI、Direct3Dで実行できることを知っていますが、ネット上で良い例を見つけることができません。 私はglReadlPixels(OpenGLを使用)が使用できることを読み、ドキュメントを読みましたが、この投稿では、実行中のゲーム/アプリケーショングラフィックスへのフックについては何も触れられていません。 質問: Direct3Dなどを使用して、OpenGLで開発されたゲームのグラフィックにフックできますか?フックに使用されるライブラリは、ゲームで使用されるものと同じである必要がありますか? ゲームのレンダリングされたフレームにフックして、それらのフレームを画像ファイルまたはビデオファイルに出力できるようにするにはどうすればよいですか?(ちょうど私が何をする必要があるかについてのいくつかのリンクまたは簡単な説明は素晴らしいでしょう) BackBuffer-私は、フレームを取得するためにBackBufferに非常に高速にアクセスすることを読みました。最新のライブラリを使用してこれを行う方法の例を誰かが持っていますか?ほとんどの例は古くなっています。 私の目的のために、明らかに「これはそれよりも速い」ですか?つまり、私の目的では、OpenGLの方が高速でしょうか。 積極的に開発され、文書化されているオープンソースプロジェクト(基本的に私が必要とすることを行う)を誰かが知っている場合は、それについて知りたいと思います。

1
このテクスチャマッピングテクニックの名前を教えてください
服の輪郭に合わせてテクスチャーをレンダリングする必要があるツールを作成中です。例として、このWebサイトhttps://knyttan.com/editor/jumper-editor/があります。ここでの効果は、カラーマップを使用することによって達成されます。 これに使用されているシェーダーを確認したところ、このマップのカラーチャネルに基づいてテクスチャオフセットが計算されているようです。 これは、これを行う完全に別注の方法なのか、またはこれが既知の技術であり、それが何と呼ばれるのか疑問に思っていました。
8 texture  webgl 

3
2軸の回転を1つの行列に組み合わせる方法
ローテーションを実行するために使用する必要がある行列についてはすでに知っています。Z軸、X軸の順に回転する必要がある場合は、2つのステップで実行します。私の質問は、両方の回転を単一の行列に結合することは可能ですか?私はあなたのフィードバックに感謝します。

2
UVマッピングは、3Dモデルのいくつかのポイントに対して、2D投影のいくつかのポイントを生成しますか?
私の3Dモデルが長方形の底面を持つピラミッドであり、底面の4つの角を1、2、3、4で数え、頂点に5を与えると仮定します。このピラミッドを2Dの星型オブジェクトに投影した場合、星の4つの外側のすべてのポイントが3Dモデルのポイント番号5に関連付けられませんか?

1
「オブジェクトスペースライティング」とは何ですか?
NitrousエンジンのデモであるStar Swarmを見て、「Nitrousはリアルタイムフィルム品質のモーションブラーを含む、フィルムで使用されているのと同じテクニックであるObject Space Lightingを使用しています」という小さな行を見つけました。 「オブジェクト空間のライティング」や「オブジェクト空間のレンダリング」について探してみましたが、何も思いつきませんでした。「オブジェクトスペース」と聞くと、オブジェクトごとに実行することを考えていますが、メソッドの詳細な説明を見つけたいと思っていました。 「オブジェクトスペースライティング」について何か知っている人はいますか。そうであれば、技術的な詳細(その方法、長所、短所など)について詳しく教えてもらえますか?

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