タグ付けされた質問 「rendering」

コンピュータプログラミングによってモデルから画像または一連の画像を生成するプロセス。

6
最新のゲームのLOD [終了]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 6年前に閉鎖されました。 現在、LODとメッシュの単純化に関する修士論文に取り組んでおり、このテーマに関する多くの学術論文と記事を読んでいます。ただし、現代のゲームでLODがどのように使用されているかについての十分な情報は見つかりません。多くのゲームが地形に何らかの動的LODを使用していることは知っていますが、他の場所はどうですか? たとえば、3Dグラフィックスの詳細レベルは、連続LODのパフォーマンスオーバーヘッドのために、離散LOD(アーティストがいくつかのモデルを事前に準備する)が広く使用されていることを指摘しています。しかし、その本は2002年に出版されたので、今は状況が違うのではないかと思っています。ジオメトリシェーダーを使用して動的LODを実行する研究がいくつかあります(たとえば、ShaderX6での実装を含むこのペーパー)。これは現代のゲームで使用されるでしょうか。 要約すると、私の質問は、最新のビデオゲームのLODの状態、使用されているアルゴリズム、およびその理由に関するものです。特に、ビューに依存する連続的な単純化が使用されていますか、または実行時のオーバーヘッドにより、適切なブレンドと詐称者を伴う離散モデルの使用がより魅力的なソリューションになりますか?離散モデルが使用されている場合、それらをオフラインで生成するアルゴリズム(頂点クラスタリングなど)が使用されているか、アーティストは手動でモデルを作成していますか、あるいは両方の方法の組み合わせが使用されていますか?


2
XNA 4.0でアルファ透明度を適切に行う方法
さて、これに関するいくつかの記事、チュートリアル、質問を読みました。ほとんどは、私の問題を解決しない同じテクニックを指します。半透明のスプライト(texture2Dの本当に)を作成し、それらを別のスプライトにオーバーレイする機能が必要です。 私が見つけたコードサンプルでそれをいくらか達成することはできますが、結果に満足しておらず、これを行う方法があることを知っています。モバイルプログラミング(BREW)では、私たちは古いやり方で、レンダリングの前に各ピクセルの透明度を実際にチェックしました。 この場合、その下のスプライトをその上のアルファとブレンドしてレンダリングするようです。これは、テクスチャをどのようにレンダリングするかによるアーティファクトかもしれませんが、前述したように、すべての例はこの1つのテクニックを指し示しています。先に進む前に、サンプルコードを貼り付けます。 public void Draw(SpriteBatch batch, Camera camera, float alpha) { int tileMapWidth = Width; int tileMapHeight = Height; batch.Begin(SpriteSortMode.Texture, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.Default, RasterizerState.CullNone, null, camera.TransformMatrix); for (int x = 0; x < tileMapWidth; x++) { for (int y = 0; y < tileMapHeight; y++) { int tileIndex = …
14 xna  2d  c#  rendering  transparency 

5
ユーザーがガンマ補正を調整して「暗い」領域から「チート」するのを防ぐ方法はありますか?
ユーザーが環境と対話する方法を変更するように設計された暗い状況を含む、私が出くわしたほとんどすべてのゲームでは、望ましい効果を打ち消すためにモニターのガンマ補正を上げるプレイヤーが常にいます。 ユーザーがチャレンジから抜け出すためにガンマ補正を調整して「チート」するのを防ぐ方法はありますか?(闇) ユーザーのモニターの現在のガンマ補正を確実に取得できれば、それを使用して、通常のユーザーに不便さを与えずに付与される利点を多かれ少なかれ防ぐことができると思います。

4
3Dタイトルのレベルコンテンツのコンテンツ予算(ポリゴン数など)を設定する達成可能な方法は何ですか?
答えではswquinnためにこの質問を、答えは私が答えを聞いてみたいことをより適切な質問を提起しました。独自の戦略を投稿します(答えとして受け入れないことを約束します)が、他の人の意見を聞きたいです。 具体的には、コンテンツチームに適切な予算をどのように設定しますか。通常、開発で最初に尋ねられる質問の1つは、ポリゴンの予算はいくらですか?もちろん、最近では頂点/ポリゴン数だけが制限要因になることはめったになく、代わりにシェーダーの複雑さ、フィルレート、ライティングの複雑さがすべて影響します。 コンテンツチームが望んでいるのは、コンテンツが実際にエンジンに入った後もあまり重くないと合理的に期待できるようにするためのハードナンバー/制限です。「依存する」は特に有用な答えではないことを考えると、a)誤解を招いたり、b)間違ったりせずに実行可能な制限を与えることができる戦略を聞きたいと思います。

2
DirectX11、複数のシェーダー定数バッファーを管理および更新するにはどうすればよいですか?
さて、定数バッファがパイプラインステージにバインドされて更新される方法を把握するのは大変です。DirectX11では、ステージごとに最大15個のシェーダー定数バッファーを使用でき、各バッファーには最大4096個の定数を保持できることを理解しています。ただし、定数バッファーと対話するために使用されるID3D11Buffer COMが、これらのバッファースロットを埋めるために使用されるメカニズム(またはハンドル)だけであるか、またはオブジェクトが実際に前後にプッシュされるバッファーデータの特定のインスタンスを参照するかどうかがわかりませんGPUとCPUの間。 このトピックに関する混乱は、2つの異なる定数バッファーを使用している問題の原因だと思います。 シェーダーコードの例を次に示します。 cbuffer PerFrame : register(b0) { float4x4 view; }; cbuffer PerObject : register(b1) { float4x4 scale; float4x4 rotation; float4x4 translation; }; コードの編成方法では、カメラはフレームごとの関連データの更新を処理し、GameObjectsはオブジェクトごとの独自のデータを更新します。両方のクラスには、これを行うために使用される独自のID3D11Bufferがあります(ハブアーキテクチャを使用しているため、1つのGameObjectクラスが、世界中のインスタンス化されたGameObjectsのレンダリングを処理します)。 問題は、スロットに応じて一度に1つしか更新できないことです。更新順序は、1つのバッファーが満たされ、もう1つのバッファーがゼロになると仮定しています。 これは基本的に私のコードです。両方のクラスは同一の更新ロジックを使用します。 static PerObjectShaderBuffer _updatedBuffer; // PerFrameShaderBuffer if Camera class _updatedBuffer.scale = _rScale; _updatedBuffer.rotation = _rRotation; _updatedBuffer.translation = _rTranslation; pDeviceContext->UpdateSubresource(pShaderBuffer, 0 , 0, &_updatedBuffer, 0, …

3
独自のスカイマップを作成するにはどうすればよいですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 3年前に閉店しました。 雲と大気の陰影で現実的な空を生成するための方法/ツールは何ですか? FOSSの代替案と球面投影は、余分なポイントを獲得します。

4
今日、ハードウェアレンダリングではなくソフトウェアレンダリングを使用するのはなぜですか?
CPUやソフトウェアのレンダリングとは対照的に、私は想定していますか? 一般に、現在のレンダリングはすべて、GPUベースではなく、OpenGLまたはDirect Xを使用しているように見えますか? 誰かが私にここでいくつかの情報を教えてもらえますか、適切な答えが見つかりませんか?

1
OpenGL-キューブ上の白いエッジ
私が作っているMinecraftのようなゲームでは、キューブに白い縁ができます。 暗いテクスチャではより顕著になります。テクスチャは次のように設定されています: glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 助けがありますか?

1
レンダリング、バッチ、グラフィカルカード、パフォーマンスなどに関する情報+ XNA?
タイトルは少しあいまいですが、私が本当に探しているものを説明するのは難しいですが、ここに行きます。 CPUレンダリングに関しては、パフォーマンスはほとんど推定が容易で簡単ですが、GPUに関しては技術的な背景情報が不足しているため、手がかりがありません。私はXNAを使用しているので、理論がそれに関連していればいいと思います。 私が実際に知りたいのは、特定の描画アクションを行うと、いつどこで何が起こるかということです(CPU / GPU)。バッチとは何ですか?効果、投影などはどのような影響を与えますか?データはグラフィックカードに保持されますか、それともすべてのステップで転送されますか?帯域幅について話すとき、グラフィックカードの内部帯域幅について話していますか、それともCPUからGPUへのパイプラインについて話していますか? 注:描画プロセスがどのように行われるかについての情報を実際に探しているわけではありません。それはGPUのビジネスです。それに先行するすべてのオーバーヘッドに興味があります。 アクションXを実行したときに何が起こっているのかを理解し、それにアーキテクチャとプラクティスを適合させたいと思います。 より良いゲームを書く方法についてより多くの洞察を与える記事(おそらくコード例付き)、情報、リンク、チュートリアルは大歓迎です。ありがとう:)

2
libgdxでテクスチャを繰り返します
繰り返されるテクスチャで領域を埋める方法は?今、私は次の方法を使用しています: spriteBatch.begin(); final int tWidth = texture.getWidth(); final int tHeight = texture.getHeight(); for (int i = 0; i < regionWidth / tWidth; i++) { for (int k = 0; k < regionHeight / tHeight; k++) { spriteBatch.draw(texture, i*tWidth, k); } } spriteBatch.end(); それは非常に明白です。たぶん組み込みのメソッドはありますか?

2
遅延レンダリングは未来ですか?
遅延レンダリングは、(少なくともレイトレーシングが実行可能になるまで)PCハードウェアでのリアルタイム3Dレンダリングの未来ですか?利点(ライトが多く、状態の変化が少ない)と、アンチエイリアシング、半透明のアイテム、より高いメモリ帯域幅などのトラブルスポットも認識しています。 しかし、次世代エンジンはすべて遅延を使用しますか?フォワードレンダリングは過去のものですか?

4
SmoothVideo Projectで使用されているようなフレーム補間は、パフォーマンスに大きな影響を与えずにゲームのフレームレートを上げるオプションになるでしょうか?
SmoothVideoプロジェクトはフレーム補間を使用してビデオのfpsを24から60に増やします。結果はかなり印象的です。これが適用できるのか、ビデオゲームで見栄えが良いのかと思っていました。 すべてのフレームをレンダリングするよりもはるかに少ないリソースを使用するため、ローエンドのリグは、ある程度の妥協点ではるかに優れたリグの品質でレンダリングできます。私はそれが正確ではないことを知っており、補間されたフレームを生成および挿入できるように最新のフレームを保持する必要があるため、入力レイテンシがわずかに増加します。ただし、フレーム全体ほど悪くはありません。私の推論では、ラグだけが補間時間に元のfpsリフレッシュ時間の半分を加えたものになります。したがって、30 fpsの場合、33ms / 2 +補間時間になります。 このラグは、過去のファーストパーソンのゲームには適さないかもしれませんが、ペースの遅いゲームではそれが妨げになるとは思いません。 開始レートが高くなるとラグは低くなるので、60 fpsから100 + fpsにすると、システムに非常に負担がかかる一方で、エクスペリエンスはわずかながら向上しますが、確かに価値があると思います。

2
自然に見えるボクセルを作る方法
ボクセルゲームを開発していますが、間違ったテクニックを使用しているようです。私は現在、ブロックを作成するためにフラットタイルを使用しています。 自然に地形が見えるボクセルゲームを見ました。つまり、非ブロック性です。ゲームは1立方メートルあたり4 * 4 * 4のブロックがあり、土、砂、石などのブロックは丸いエッジを持ち、一種の溶け合いを持っています(通常のゲームのように)。こちらがスクリーンショットです これはどのように達成されますか?

1
グラフベースのマテリアルシステムで、さまざまな入力および出力タイプをどのようにサポートできますか?
私のようなどのように材料系のまわりで私の頭をラップしようとしているこの、これは実装されています。これらの強力でユーザーフレンドリーなグラフのようなシステムは、プログラマーと非プログラマーの両方がシェーダーをすばやく作成できるようにする方法として比較的一般的であるようです。ただし、グラフィックスプログラミングの私の比較的限られた経験から、私はそれらがどのように機能するか完全にはわかりません。 バックグラウンド: そのため、以前に単純な OpenGLレンダリングシステムをプログラミングしたことがある場合は、通常、手動で作成した静的GLSLファイルからシェーダーを読み込み、コンパイル、リンクするMaterialクラスを作成します。また、通常、このクラスを、GLSLの統一変数にアクセスするための単純なラッパーとして作成します。簡単な例として、基本的な頂点シェーダーとフラグメントシェーダーがあり、テクスチャを渡すための追加の均一なTexture2Dがあるとします。私のMaterialクラスは、これら2つのシェーダーをマテリアルに読み込んでコンパイルし、その時点から、そのシェーダーのTexture2Dユニフォームを読み書きするための単純なインターフェイスを公開します。 このシステムをもう少し柔軟にするために、私は通常、任意の名前/タイプのユニフォームを渡すことができるようにシステムを記述します[ie:SetUniform_Vec4( "AmbientColor"、colorVec4);]。これは均一な材料中に存在する場合、「colorVec4」と呼ばれる特定の4DベクトルにAmbientColorを均一に設定します。]。 class Material { private: int shaderID; string vertShaderPath; string fragSahderPath; void loadShaderFiles(); //load shaders from files at internal paths. void buildMaterial(); //link, compile, buffer with OpenGL, etc. public: void SetGenericUniform( string uniformName, int param ); void SetGenericUniform( string uniformName, float param ); void SetGenericUniform( …

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