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

グラフィックハードウェア上で実行され、シーンのレンダリング方法を高度に制御するコンピュータープログラム


1
バッファオブジェクトとシェーダーを含むスプライトシート
シェーダーとバッファーを使用してスプライトシートを処理する「最良の」方法は何ですか?即時モードでは、描画時にスプライトのtexcoordsを変更するのは簡単ですが、最新のopenglでこれを行う方法はわかりません。すべてのtexcoordをバッファに格納し、すべてのスプライトのポインタを変更する必要がありますか、それとももっと良い方法がありますか?

3
非常に遅いdirect3Dテクスチャサンプリング
そのため、Direct3D 9を使用して小さなゲームを作成し、地形にマルチテクスチャリングを使用しています。私がしているのは、3つのテクスチャとブレンドマップをサンプリングし、ブレンドマップのカラーチャネルに基づいて、3つのテクスチャから全体の色を取得することだけです。とにかく、2つ以上のテクスチャをサンプリングすると、フレームレートが大幅に低下します。120+fpsから50弱までです。 これは、スローダウンの原因となっているHLSLコードです。 float3 ground = tex2D(GroundTex, multiTex).rgb; float3 stone = tex2D(StoneTex, multiTex).rgb; float3 grass = tex2D(GrassTex, multiTex).rgb; float3 blend = tex2D(BlendMapTex, blendMap).rgb; 私はそれを間違っていますか?テクスチャサンプリングなどに関する情報やヒントを誰かが持っているとしたら、それは素晴らしいことです。 ありがとう。

6
マルチパス効果の良い例は?
XNA(および一般的なAFAIKのDirect3D)では、個々の頂点シェーダーとフラグメントシェーダーを作成するのではなく、潜在的に多くの関連するシェーダーを「エフェクト」にバンドルします。エフェクトを使用するときは、「テクニック」を選択(またはそれらすべてを繰り返し)すると、各「テクニック」にいくつかの「パス」があります。各パスをループして、関連する頂点シェーダーとフラグメントシェーダーを選択し、ジオメトリを描画します。 私が興味を持っているのは、複数のパスが必要になることですか?3Dの初期の頃は、テクスチャユニットが1つしかなかったのに2つありましたが、環境マッピングもしたい場合は、それでも十分ではないことがよくありました。しかし、最新のデバイスでは、モバイルクラスでも、8つ以上のテクスチャをサンプリングして、単一のシェーダーで必要なだけライティング計算を実行できます。 ここでより経験豊富な人は、マルチパスレンダリングがまだ必要な実際的な例を提供できますか、それともXNA / Direct3dの部分でオーバーエンジニアリングしているだけですか?
9 xna  directx  shaders 

1
シェーダーの位置に応じてテクスチャを移動する
Divinity Original Sinには美しいパーティクルエフェクトがあり、ゲーム内を移動すると、自分の位置に応じて移動するパーティクルを通して銀河が見えます。どうすればそのようにできますか? あなたはここでこの効果を見ることができます:https : //youtu.be/4fIpQZ2sIAY

3
ノイズの多いエッジ、フラグメントシェーダーによる面間のエッジの平滑化
以下のスクリーンショットのように、六角形のジオメトリで生成された地形があります。 次にバイオームを生成しますが、ご覧のとおり、それらの境界は本当に醜く、まっすぐです。その六角形の原点を隠すには、バイオーム間の境界を滑らかにする必要があります。これは、実際の波状面を含むワイヤーフレームでの外観です。 私が目指しているのは次のようなものです: 各頂点にはバイオームタイプを保持する属性があります。2つのバイオーム間のエッジの頂点に特別な属性を追加することもできますが、これをシェーダーコードで明らかにする方法がわからないようです。明らかにノイズです。ここに含まれていますが、複数のバイオームの複数の顔と境界全体で連続させるにはどうすればよいですか? THREE.jsを使用してWebGLでレンダリングしています

2
Unity3dを介して新しいc#スクリプトを追加するときにVS soution Explorerを強制的に再読み込みしますか?
私はC#スクリプトを作成する(ときCreate -> C# Script)を介しUnity3d やからそれを削除Unity3d- Visual Studioショー私の警告ウィンドウ。 気に障る。 ウィンドウなしでソリューションエクスプローラーで「ReloadAll」を強制する方法はありますか?
8 unity  visual-studio  unity  google-play-services  google-play  physics  simulations  c#  unity  raycasting  unity  virtual-reality  savegame  arcade  c++  steam  ios  objective-c  databases  storage  opengl  vbo  vao  libgdx  scene2d  unity  animation  c#  path-finding  roguelikes  opengl  c++  glsl  2d  physics  phaser  selection  3dsmax  unity  collision-detection  c#  tilemap  isometric  unity  c#  2d  sprites  mouse  scripting  grid  c#  unity  libgdx  java  unity  playstation4  c#  c++  directx  dll  c++cli  libgdx  overlap2d  multiplayer  node.js  websocket  animation  unity  textures  unity  terrain  physics  unity  rotation  movement  transformation  monogame  windows  installer  shaders  unity  virtual-reality  unity  performance  frame-rate  profiler  google-play  appstore  trademark  java  android  libgdx  unity  unity-networking  unity  physics  software-engineering  unity  savegame  physics  2d  unity  unity  c#  unity-networking  textures  geometry  unreal-4  3d-modeling  java  android  libgdx  android  collision-detection  libgdx  rotation  legal  localization  patents  opengl  cubemap  sampler-state  2d  transformation  unity  c#  opengl  glsl  lighting  opentk  c++  collision-detection  physics 

1
同じ明るさの色を循環
OK。だから私は色のついた粒子の束で取り組んでいるゲームを持っています。それらのそれぞれは独自の色を取得しますが、それらはすべて特定の色合いに近いです。 HSV色空間を使用していることをよりよく説明すると、0〜360(H)で循環するグローバル変数があり、特定の粒子のそれぞれがランダムな量を追加または減算します。 HSVを使用しているのは、Hを変更するだけで色を切り替えるのが最も簡単な方法だからです。 これは非常に見栄えがよく、すべてのものですが、パーティクルは着色された純粋な光であると想定されています。現在、それらはすべてシェードで色付けされた円ですが、後でグローエフェクトやその他のシェーディングテクニックを追加する可能性があります。 問題は、すべての色合い(HまたはVをいじらない)が、私たちの目で見た明るさの点で同じであるとは限らないことであり、これが問題を引き起こします。たとえば、それらすべてが青の色合いである場合、かなり暗く見えます。 明らかに、シェーダーでこれらのHSVカラーをRGBカラーに変換する必要があり、いくつかの計算を行うと、何が問題なのかがすぐにわかりました...色の輝度が等しくありませんでした! 私が理解しているように、輝度はおおよそ(0.2126*color.r + 0.7152*color.g + 0.0722*color.b)であり、それがすべてがオフになっている理由です。 高輝度を維持しながら、さまざまな彩度(ホイールの度の色)をすべて取得できるようにする方法はありますか?おそらく、HSVとは異なる種類の色を使用する必要があるのでしょうか、それとも、カラーホイール上のxの次数で、yの輝度を持つ色を見つける式ですか? どうもありがとう!
8 shaders  color 

1
ウォッチドッグと同様のグリッチ効果を作成する
私は現在LibGDXゲームに取り組んでいます。ユーザーが何か間違ったことをしたとき、私は画面上のすべてのグラフィックスに、ゲームWatch Dogs(以下を参照)で見られるグリッチ/歪み効果と非常によく似たジッタを与えたいと思います。 私の質問はこれです:この効果はシェーダーを書くことによりリアルタイムで達成できますか?もしそうなら、これを行う方法についてオンラインで参考文献はありますか?(私は簡単なGoogleを使っていましたが、Photoshop / After Effectsでこの効果を実現する方法を見つけることができました)。 ご協力ありがとうございました。 画面ジッター:https : //www.youtube.com/watch?v=EYkqC9uI8Nc テキストグリッチエフェクト:https : //www.youtube.com/watch?v= Wj26Wp2AH-U

3
このライティングエフェクトを地形に再現するシェーダーを作成するにはどうすればよいですか?
各画像の主要な光源が地面で反射する方法に注目してください。光源と観察者の間の距離(?)の関数です。 これは(バンプされた)鏡面反射光マップですか?効果はWorld of Warcraftのいたるところに見られます。私は特にダン・モローの雪の上やダロウミア湖のほとりでそれを覚えています。太陽を直視する必要があります。この影響は、RLとCGの水面にもよく見られます。具体的には、光源に近い地表面ほど反射が強く、見る人に近づくにつれて落ちるような効果を作りたいと思います。

1
奇妙な透明な穴がアーティファクトをレンダリングする
したがって、各サーフェスブロックにハイトマップを与えることにより、ブロックエンジンに「滑らかな」地形を実装しようとしています。 基本的に、各ブロックのこれらの「高さマップ」を生成するために私が行うことは、ブロックの端に沿って0.25の間隔で高さを生成することです。次に、ブロックの頂点を構築するために、高さをループして高さから高さに三角形を作成し、三角形の下に長方形を配置して次のようなものを作成します。 たとえば、ブロックのXの正側を作成するには、次のようにします。 Vector2[] uv = BlockUtil.UVMappings[(byte)side]; // uv[0] = top left float height; float nextHeight; float min; float tex_len = 1f / EngineGlobals.TEXTURE_ATLAS_SIDE; for (int i = 0; i < 4; i++) { height = (float)b.Heights[4, i] / 255f; nextHeight = (float)b.Heights[4, i + 1] / 255f; min = …

2
複数のプリミティブのジオメトリシェーダー
複数のプリミティブを処理できるジオメトリシェーダーを作成するにはどうすればよいですか?たとえば、三角形のジオメトリシェーダーを作成するときは、次のようにレイアウトを定義します。 layout(triangles) in; layout(triangle_strip, max_vertices=3) out; しかし、このシェーダーを使用すると、線や点が表示されません。だから追加: layout(triangles) in; layout(triangle_strip, max_vertices=3) out; layout(lines) in; layout(line_strip, max_vertices=2) out; シェーダーはコンパイルして実行しますが、ライン(または最後に定義されたプリミティブが何であれ)のみをレンダリングします。 それでは、複数のタイプのプリミティブを処理する単一のジオメトリシェーダーをどのように定義しますか?またはそれは不可能であり、各タイプを描画する前に複数のシェーダープログラムを作成してシェーダープログラムを変更する必要がありますか

3
シェーダー経由でテクスチャメモリを更新しますか?
タイトルは何を言っています。GLSLシェーダーを介してテクスチャを更新することは可能ですか?何かのようなもの : //Read vec4 Pixel = texture2D(TextureID,gl_TexCoord[TextureIndex].st); //Write to texture memory ? vec4 NewPixel = Pixel + vec4(0.0,0.0,0.0,AlphaPatch); // ?? How to write back to texture memory ?? texture2D(TextureID,gl_TexCoord[TextureIndex].st) = NewPixel; ??

3
シェーダーは正確には何に使用できますか?
私は実際には3Dの人間ではありません。Three.jsの例ではシェーダーを少ししか使用していませんが、これまでのところ、方程式のグラフィカルな部分にのみ使用されているようです。 ただし、(かなり不可解な)Wikipediaの記事やその他の情報源から、これらは単なるグラフィック効果以外にも使用できる、つまりGPUのプログラミング(Wikipedia)に使用できると私は信じています。 つまり、GPUはまだプロセッサですよね?より大きく、より高速なベクトル操作のためのより大きく異なる命令セットを備えていますが、それでもプロセッサです。シェーダーを使用して通常のプログラムを作成できますか(ビデオメモリにアクセスできる場合)。 編集:通常のプログラム== "アプリケーション"、つまり、ウィンドウ/コンソールプログラムを作成するか、少なくとも画面に何かを描画する方法を持っています。
8 3d  shaders 

2
単純なシェーダーを使用すると、パフォーマンス/バッテリー寿命が向上しますか?
Android用のOpenGLゲームを作っています。これまでは固定関数パイプラインのみを使用してきましたが、単純なものをレンダリングしています。 固定関数パイプラインには、不要なものがたくさん含まれています。したがって、パフォーマンスを向上させることができる場合は、OpenGLパイプラインを簡素化するためにゲームにシェーダーを実装することを考えています。 fpsがハードウェアの電源ではなくソフトウェアの制限によって制限されていない限り、パフォーマンスの向上=バッテリーの寿命が長くなります。

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