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

DirectX 11は、Windows、Xbox One、Windows PhoneなどのMicrosoftプラットフォームの主要なグラフィックAPIです。


3
チームはソースファイルの上書きをどのように防止しますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Game Development Stack Exchangeで話題になるようにします。 4年前に閉鎖されました。 たとえば、ゲームエンジンなどが複数の人によって同時に処理されているときに、上書きをどのように防ぐことができるのか、ということが起こりました。 開発者1が作業してAudio.cppおり、開発者2も作業をしているとしましょう。Audio.cppこれは、一般的に大規模なチームで上書きに対処するためにどのように管理されていますか?(つまり、開発者2がファイルを開くのを停止して、開発者1が終了するまで)
26 project-management  version-control  teamwork  java  2d  collision-detection  vector  collision-resolution  unity  directx  directx11  directx10  xna  ios  monogame  windows-phone-8  xamarin  design-patterns  oop  xna  collision-detection  collision-resolution  bounding-boxes  rotation  collision-detection  mathematics  javascript  algorithm  separating-axis-theorem  xna  2d  monogame  image  xna  directx  graphics  performance  opengl  2d  3d  c++  directx11  unity  c#  scale  c#  xna  collision-detection  collision-resolution  leaderboards  scoring  glsl  srgb  tilemap  three.js  tiled  unity  physics  xml  dialog-tree  xna  c#  .net  opengl  lwjgl  vbo  physics  graphics  procedural-generation  simulations  water  opengl  java  textures  lwjgl  frame-buffer  unity  unity  2d  collision-detection  collision-resolution  trigonometry  java  android  libgdx  xna  c#  frame-rate  c++  unreal-4  procedural-generation  java  graphics  lwjgl  slick  c++  software-engineering 

3
通常、ゲームの1つのフレームでアクティブなシェーダーをいくつ使用する必要がありますか?100のような5つ以上?
現代のゲームでは、1つのシーンで同時にいくつのシェーダーが通常アクティブになっていますか?複数のシェーダーが使用されており、各フレームでゲームが切り替えられることを知っています。シェーダーを介してオブジェクトを描画することは一般的です。 すべてのオブジェクトをシェーダー1で描画します シェーダー1からシェーダー2に変更する シェーダー2ですべてのオブジェクトを描く それでも、特にシーン全体のグローエフェクト、テクスチャへのレンダリングなどのエフェクトの場合、それほど単純ではないことはわかっていますが、ほとんどの場合、そのように動作すると想定できますか?シェーダーの切り替えは高価な操作であるため、「シェーダーごとのグループ化」アプローチが適しています。 片側からは、シーンを高速でレンダリングするため、シェーダーを多くしすぎることはできません。一方、スキン、金属、水などには、多くの異なるシェーダー(または枝を持つ超シェーダー-非常に似ています)が必要です。 理論的、現代的、三人称のPC用3D探偵ゲーム(重要な場合はDirectX 11)は、いくつの(そしてどの)シェーダーを使用しますか?いくつかの「フレームX」で、アクティブのみをカウントする100個のアクティブシェーダーのように、5、20、またはそれ以上ですか?私はそれが1つの数字ではないことを知っていますが、PCゲームを考慮して、どのような規模と要因が重要なのかと思います。 私のサンプルゲームでは、フレームごとに約9〜11を使用します(別の小さなシェーダーまたは1つの超シェーダーとしてカウントします-今は関係ありません)。 スキンシェーダー アイシェーダー(多すぎない? メタルシェーダー グラウンドシェーダー 雪/雨シェーダー(必要な場合) ウォーターシェーダー(シーンに水が存在する場合) グローシェーダー(一部の特殊効果が含まれる場合のみ) 発光シェーダー(街灯など) 標準シェーダー(他のすべての場合は標準シェーディングのみ) 法線マップ付きの標準シェーダー 2Dシェーダー(GUIなど) それは「たくさん」ですか「あまり多くない」ですか?必要ないくつかの重要なシェーダーを忘れましたか?

7
モダンシェーダーブック?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 閉じた3年前。 シェーダーについて学ぶことに興味があります。シェーダーとは何ですか、いつ/何のために、そしてどのように使用するのか。(具体的には、水とブルームの効果に興味がありますが、シェーダーについては0に近いことを知っているので、一般的な紹介が必要です)。 数年前の本をたくさん見たので、それらがまだ当てはまるかどうかわかりません。現時点ではXNA 4.0をターゲットにしています(Shader Model 4.0のHLSLシェーダーを意味すると思います)が、一般にDirectX 11とOpenGL 4をターゲットとするものは役立つと思います。

4
HDRはどのように機能しますか?
HDRとは何か、どのように機能するかを理解しようとしています。 私は基本的な概念を理解しており、D3D / hlslを使用してどのように実装されるかについて少し理解しています。 しかし、まだかなり霧がかかっています。 地球のテクスチャと、星として機能する頂点の小さなポイントリストで球体をレンダリングするとします。これをHDRでどのようにレンダリングしますか。 以下に、私が混乱しているいくつかのことを示します。 シェーダーでは値が[0、255]に制限され、[0、1]に固定されるため、テクスチャに基本的な画像形式だけを使用することはできません。バックバッファについても同じことが言えます。フォーマットは浮動小数点フォーマットである必要がありますか? 関係する他のステップは何ですか?確かに、浮動小数点形式を使用してレンダーターゲットにレンダーし、後処理としてブルームを適用する以上のことが必要ですか?(出力はとにかく8bppになると考えています) 基本的に、HDRの手順は何ですか?どのように機能しますか?このプロセス以外に、プロセスを説明する優れた論文や記事を見つけることはできないようですが、基本を少し読み飛ばしているようで、混乱を招きます。
17 c++  hlsl  directx11  hdr 

2
24未満の頂点を持つキューブを構築することは可能ですか
Minecraftのようなキューブベースの世界があり、24個未満の頂点を持つキューブを構築してメモリ使用量を削減する方法があるかどうか疑問に思っています。 私には2つの理由で不可能だと思われます。法線が正しく出ないことと、面ごとのテクスチャが機能しないことです。 これは事実ですか、それとも間違っていますか?たぶん助けることができるいくつかの派手な新しいDX11技術がありますか? 編集:明確にするために、2つの要件があります:適切な照明を行うために各キューブフェースの表面法線が必要であり、各キューブフェースのテクスチャ配列の異なるインデックスに対処する方法が必要です

1
ウィンドウが接続されていないDirectX11
オフスクリーンレンダリングのみにDX11またはDX9を初期化して使用することが可能かどうか、つまりウィンドウが接続されていないことを意味します。私の意図は、実際のウィンドウを開く前にGPUベンチマークを行うことです。このベンチマークでは、いくつかのテストシーンがレンダリングされますが、表示されるべきではありません。(実際には、ベンチマークスコアに応じて異なるウィンドウが開きます)
13 c++  directx11 

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, …

1
オブジェクトごとに異なるシェーダーDirectX 11
私はを学習Direct3D 11しています。シェーダーの作成で見つけたすべての基本的なチュートリアルでは、VertexシェーダーとPixelシェーダーが書かれているため、シーン全体を同じように変換できます。テクスチャ付きキューブのレンダリングのようなチュートリアル... しかし、どうやってオブジェクトを区別するのでしょうか。たとえば、あるオブジェクトの鏡面をシミュレートし、別のシェーダーを使用して残りのシーンをレンダリングしたい場合はどうでしょうか?ほとんどのゲームでは、さまざまな外観と変換を実現するために、多くの頂点シェーダーとピクセルシェーダーを使用する必要があると思います。 ありがとうございました。
13 c++  directx11 

5
Vector3で演算子 '> ='を使用できないのはなぜですか?
私は私がように参照する2つの位置の間を移動するための四角形を取得しようとしている_positionAとします_positionB。どちらもタイプVector3です。長方形はうまく動きます。ただし、到達_positionBしても、本来のように反対方向に移動することはありません。 コードをもう一度見てみました。オブジェクトが移動ifすると、コード内のステートメントは、rectsの位置がに等しいフレームを逃したという結論に達しました_positionB。rectsの位置がより大きいか等しい 場合は、コードを変更して方向を逆にすることにしました_positionB。私のコードは長すぎないので、以下に表示します。 using UnityEngine; using System.Collections; public class Rectangle : MonoBehaviour { private Vector3 _positionA = new Vector3(-0.97f, -4.28f); //Start position private Vector3 _positionB = new Vector3(11.87f, -4.28f); //End position private Transform _rect_tfm; private bool _atPosA = false, _atPosB = false; public Vector2 speed = new Vector2(1f, 0f); private …
9 unity  c#  vector  mathematics  vector  matrix  unity  c#  transformation  java  3d  terrain-rendering  shading  ios  opengl-es  opengl  rendering  optimization  python  scripting  minecraft-modding  modding  pc  3d-meshes  mesh  culling  point-cloud  networking  interpolation  mathematics  game-design  ai  game-mechanics  animation  unreal-4  skeletal-animation  3dsmax  unity  c#  3d  opengl  c++  textures  unity  ide  cocos2d  cocos2d-x-js  unity  c#  mono  il2cpp  c++  game-loop  timer  linux  flash  actionscript-3  java  glsl  c++  vector  entity-component  c++  directx11  windows  visual-studio  libgdx  mouse  unity  c#  architecture  storage  unity  c#  rotation  coordinates  quaternion  vrpn  movement  vector  unreal-4  unity  shaders  unity  gui  text  bug  shooter  3d  animation  rendering  voxels  c++  mmo  multithreading  linux  textures  procedural-generation  terrain-rendering  multiplayer  mmo  game-state  java  android  libgdx  opengl  procedural-generation  unity  gui  3d  animation  tools  geometry-shader  mobile  advertisements  unity  c#  animation  scripting  unity  animation  unityscript  coroutines  unity  shaders  lighting  camera 

2
D3D / DXGIは全画面遷移を処理します
D3D11アプリケーションがあり、適切なフルスクリーンサポートを追加したい。これで、DXGIでウィンドウを全画面表示に切り替えることができます。スワップチェーンをブリットする代わりに、フロントチェーンとバックバッファーをフリップするために必要なすべてをDXGIが処理するという印象を受けました。 ただし、DXGIにスイッチを実行させると、マルチモニターセットアップでは信頼性が低いようです。切り替え後のセカンダリ画面は、明確な理由やパターンがないため、長時間にわたって完全に真っ黒のままです。 フルスクリーンウィンドウと残りのデスクトップが他の画面に表示されるまで、数回切り替えて切り替える必要があります。 どうやら私はこれだけではないようですが、Battlefield 3とWoWには多くの人にとって同様の問題があるようです。 さて、実際の質問:これらのAAAゲーム開発会社でさえこれを機能させることができないので、私の最大の望みは、どういうわけか自分でフルスクリーンに切り替えることです。 ウィンドウ/スワップチェーンを適切なバッファフリッピングフルスクリーンモードに上げるためにできることはありますか?


1
奇妙なSSAO効果(ビュースペース内の位置/通常のテクスチャが間違っていますか?)
主にホセマリアメンデスのgamedev.netチュートリアルに基づいて、ゲームエンジン(DirectX 11、C ++)でSSAO効果を作成しようとしています。残念ながら、テクスチャ作成の問題(法線、位置)はカバーしていません。 最初のパスでは通常のテクスチャを作成し、次に深度バッファもテクスチャとして読み取ります(2番目のパスでシェーダーリソースビューを作成し、深度バッファのバインドを解除するため可能です)。どちらもビュースペースにある必要があります。 ぼかしはまだ実装していません(後で実行します)が、現在いくつかの問題があります。テクスチャの計算が間違っているか、テクスチャからデータを変換する方法が間違っているためではなく、数式やパラメータの値が間違っているためと考えられます。 何がうまくいかなかったかについての私の推測: (ビュー空間での)通常のテクスチャ計算-しかし、それは見えます[OK]を、 位置テクスチャの計算(ビュー空間で)と位置から深度への変換 逆投影行列計算、 何かが正規化も飽和もされていないはずですが、 パラメータ(ただし、出力にそのような影響を与えるべきではありません)? 私のテクスチャ 拡散(textures[0]、ここでは実際には使用されません、比較のためにのみ): 通常(textures[1]、ビュー空間にある必要があります): 私はそれらを最初のパスの頂点シェーダーで取得します(ピクセルシェーダーはちょうどですoutput.normal = input.normal): output.normal = float4(mul(input.normal, (float3x3)world), 1); output.normal = float4(mul(output.normal, (float3x3)view), 1); 深度バッファテクスチャ(textures[2]、値の差が小さいため何も見にくいですが、問題ないと思います): それを表示するために私は使用します: float depth = textures[2].Sample(ObjSamplerState, textureCoordinates).r; depth = (depth + 1.0f) / 2.0f; color.rgb = float3(depth, depth, depth); 外部プログラムでのコントラスト補正後(私はシェーダーを使用しませんが、目には良いです): 深度バッファーの説明: //create depth …
8 c++  directx  directx11  hlsl  ssao 

2
UpdateSubresourceとMap / Unmapの使い方は?
私が理解したこと(さまざまなページを読んだこと)から、バッファを更新する方法は2つあります。 UpdateSubresource()(DEFAULT使用法でバッファが作成された場合) Map()、新しいデータをコピーしますUnmap()(DYNAMIC使用法でバッファが作成された場合) 最初のケースでは、この1つの関数のみを呼び出しますか?バッファをマップしてからサブリソースを更新すると人々が言うのを見たことがあるので、あるいは私はそれらを誤解しているかもしれません。 また、他に方法はありますか(疑わしいです:P)?私は物事を正しく理解していますか?
8 c++  directx11 

1
OpenGLで頂点を描画する最も効率的な方法
私はOpenGL 3Dゲームを書いています。地形や使用中のオブジェクト用の多数の三角形があります。 私はOpenGL公式ガイドから勉強していて、最初に提示された方法は、描画したい各頂点のglVertex後に関数を呼び出すglBeginことです。 ただし、何千もの三角形を描く必要がある場合、この方法はかなり古くて非効率的です。各フレームで変化しない情報をグラフィックカードのメモリに保存する方法があるので、各フレームをレンダリングすると、その情報はすでにそこにあります。より「不安定な」情報については、おそらくフレームごとに新しい頂点データを送信する必要があるため、別の手法の方が効率的かもしれません。 私の質問に来ます:頂点情報をハードウェアに送信し、レンダリングするための指示を与えるために使用される最も近代的で効率的なOpenGL関数と技術の明確な説明をお願いします。 フレーム中にめったに変化しない頂点データをレンダリングするための順序を送信するための最良の方法とOpenGLツールは何ですか(私は地形とオブジェクトについて考えます)、フレーム中に大きく変化する頂点データを送信するための最良の方法は何ですか?

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