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

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

1
ジオメトリシェーダーから手続き型で生成された世界に物理を組み込むにはどうすればよいですか?
基本的に、CPUからGPUにコヒーレントノイズを生成する必要をなくしたいと思います。そこから、ボクセルポイントの密度としてこのノイズを使用して、3次元の世界の地形も生成したいと思います。この後、これらの密度を取得して、世界の地形を表すポリゴン化(頂点を生成)したいと思います。 これで問題ありません。でも、リアルタイムで世界を動的に変形させたい。この時点に到達すると、頂点をCPUに戻して、衝突検出や、GPUではなくCPUに関与させたいすべてのゲーム計算などを実行しようとして問題が発生します。 だから問題は、どうすれば他のものの間の衝突に対処するために頂点のサブセットをCPUに戻すことができますか? そしてもう1つの質問:頂点のセットを取得し、それらからGPUでインデックスを生成する簡単な方法はありますか? これらのさまざまな目的でどのようなシェーダーを使用する必要があるのか​​、また混乱しています。密度を収集するためにピクセルシェーダーを使用し、頂点からの地形生成を処理するためにジオメトリシェーダーを使用して、どういうわけか動的変形を行うために頂点シェーダーを組み込む人々の話を聞きました。 C#4.0、.NET 4.0、およびXNA Game Studio 4.0を使用しています。
10 c#  xna  shaders 

6
OpenGL ES 2.0:品質シェーダーのリポジトリ[終了]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 4年前休業。 高品質のOpenGL(OpenGL ES 2.0)の頂点とフラグメントシェーダーのリポジトリを提案してください。 私を探していますシェーダligting基づいて画素(のようなフォンを)とsimmilar。品質とシェーダーのパフォーマンスのどちらかを選択できるように、それらをさらに表示するとよいでしょう。

2
シェーダーのユニフォームを更新する最良の方法は何ですか?
シェーダーのマトリックスを最新の状態に保つための最も一般的な方法は何ですか?なぜですか? たとえば、現時点ではShader、GLSLシェーダープログラムとユニフォームのハンドルを格納するクラスがあります。カメラを動かすたびに、新しいビューマトリックスをシェーダーに渡す必要があります。次に、すべての異なるワールドオブジェクトのモデルマトリックスをシェーダーに渡す必要があります。 そのシェーダーオブジェクトにアクセスしないと何もできないので、これは私を厳しく制限します。 ShaderManagerすべてのアクティブなシェーダーを保持する責任があるシングルトンクラスを作成することを考えました。その後、どこからでもアクセスできます。ワールドオブジェクトはShaderManager、目的のマトリックスを通知する必要があるだけで、どのシェーダーがアクティブであるかを知る必要はありませんが、これが最善の方法であるとは限らず、おそらくいくつかの問題があります。このアプローチを取ることから発生します。
10 opengl  shaders  glsl 

1
背景のピクセルの色を反転させる方法
私は、JavaとjMonkeyEngineを使用してゲームとマップエディターを書いています。マップエディターでは、ワイヤーフレームの球でブラシを作成しました。私の問題は、どこでも見えるようにしたいので、このブラシの「背後」にあるピクセルの色を反転させたいです。フラグメントシェーダー(GLSL)でそれを実行したかったのですが、このピクセルの色を取得する方法がわかりません。

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 

1
モデルのアニメーションテクスチャ。シェーダーの書き方は?
ロケットリーグを見ていて、アニメーションのデカールとホイールがあることに気づきました。 。 上の画像の効果に似たものを実装したいと思います。 Unityシェーダーを作成してホイールエフェクトを作成するにはどうすればよいですか? シェーダーについてよく知りませんが、標準のUnityシェーダーを編集してアニメーション効果を実行できますか?

3
複数の行列を頂点シェーダーに送信するにはどうすればよいですか?
ボーン/スキニングを使ったアニメーションを練習しています。頂点ごとに1つのマトリックスをシェーダーに送信しようとしています。私はこれら2つのアプローチを考えることができます。 方法1 このように各骨マトリックスに1つの均一なハンドルがあります u_Bone0 = GLES20.glGetUniformLocation(mProgram, "u_Bone[0]"); u_Bone1 = GLES20.glGetUniformLocation(mProgram, "u_Bone[1]"); そして、onDraw私はそれらのそれぞれをシェーダーに送ります: GLES20.glUniformMatrix4fv(u_Bone0, 1, false, matrix0, 0); マトリックスが多数ある場合、これは明らかに良い方法ではありません。リファクタリングするコードがたくさんあるのでまだ試していない私の2番目のアイデア 方法2 を使用しglUniformMatrix4fvてそれらを一度にすべて送信することです(20個の行列があると仮定します) GLES20.glUniformMatrix4fv(u_Bones, 20, false, matrices, 0); はどこmatricesですかfloat[16 * 20]。ただし、各ボーンのマトリックスを変更するのは少し面倒になります。たとえば、3番目の行列を取得する場合、次の行に沿って何かが必要です。 float[] _3rd = Arrays.copy(matrices, 3*16, 4*16); 値を保存すると、さらに煩わしくなります。 私は現在方法1を使用していますが、あまりスマートに見えません... 複数のマトリックスをOpenGL ES 2シェーダーに送信する最良の方法は何ですか? LE:私はAndroidを使用しているので、Javaソリューションを探しています。


1
2D水上面プロファイル
頂点フラグメントシェーダーを使用して、水面の厚さの効果を作成しようとしています。 私は3Dゲーム環境にいますが、それはスクロールビューなので、「2D」ビューです。 以下は、フラグメントシェーダーを使用して実際の2Dでこのような効果を作成するための優れたチュートリアルです。 しかし、これは私の場合には使用できないと思います。今のところ、屈折を適用するのは平面だけです。 そして、水厚効果を適用したいです。しかし、私はそれを行う方法がわかりません。 現時点では、頂点を使用して水の変形/変位を作成しようとはしていません。これはポイントではありません。 シンプルなクワッドで可能かどうかはわかりませんが、このようなオブジェクトを使用する必要があるかもしれません。 下記は用例です。 この効果をどのように作成するかについては、私にはまったくわかりません。 どうもありがとう ! [ 編集 ]レイマンウォーターエフェクトが追加され、エフェクトの参照が改善されました。

1
重いフラグメントシェーダーのパフォーマンスの最適化
次の一連のシェーダーの最適化についてサポートが必要です。 バーテックス: precision mediump float; uniform vec2 rubyTextureSize; attribute vec4 vPosition; attribute vec2 a_TexCoordinate; varying vec2 tc; void main() { gl_Position = vPosition; tc = a_TexCoordinate; } 断片: precision mediump float; /* Uniforms - rubyTexture: texture sampler - rubyTextureSize: size of the texture before rendering */ uniform sampler2D rubyTexture; uniform …

1
gluLookAtはどのように機能しますか?
私の理解から、 gluLookAt( eye_x, eye_y, eye_z, center_x, center_y, center_z, up_x, up_y, up_z ); 以下と同等です。 glRotatef(B, 0.0, 0.0, 1.0); glRotatef(A, wx, wy, wz); glTranslatef(-eye_x, -eye_y, -eye_z); しかし、ModelViewマトリックスを出力すると、への呼び出しがglTranslatef()正しく機能していないようです。コードスニペットは次のとおりです。 #include <stdlib.h> #include <stdio.h> #include <GL/glut.h> #include <iomanip> #include <iostream> #include <string> using namespace std; static const int Rx = 0; static const int Ry …

2
シーン内の多くのライトを処理する(シェーダーを使用)
シーンで多くのライトを処理する方法に興味があります。ダンジョン(ライトがそこにある)などのロールプレイングゲームの非常に大きなマップを考えると、遅延照明については知っていますが、それは多くのライトをレンダリングする方法にしか答えません。しかし、私の質問は次のとおりです。多くのライトをレンダリングしない方法。シーンに影響を与えるライトのみをレンダリングすることが明らかに望ましいですが、これをアーカイブするためのテクニック/アルゴリズムはわかりません。地図のどこかにあるからといって、500のポイントライトをレンダリングすることを望んだり、レンダリングしたりすることはできません。しかし、光からプレーヤーまで直線を取り、その間に何かがあるかどうかをテストすることはできません。距離も良い指標のようには見えません。(日光?) tl; dr:どのライトがシーンに影響を与えてそれらをレンダリングするだけなのか、どうしたらわかりますか?

4
フルスクリーンクワッドでレンダーターゲットにピクセルパーフェクトレンダリング
一連の値をレンダーターゲットにレンダリングするときに問題が発生します。値が、希望する正確な範囲になることはありません。基本的に、フルスクリーンクワッドとピクセルシェーダーを使用してレンダーターゲットテクスチャにレンダリングし、テクスチャー座標をシェーダーでのいくつかの計算の基礎として使用するつもりです。左上隅の(0,0)から右下隅の(1,1)までのクワッド範囲のテクスチャ座標...問題は、補間後、これらの値がピクセルシェーダーに到達しないことです。 。 例: 4x4テクスチャにレンダリングし、この場合のシェーダーは、赤と緑のチャネルでテクスチャ座標(u、v)を出力するだけです。 return float4(texCoord.rg, 0, 1); そこから取り出したいのは、左上のピクセルがRGB(0,0,0)であり、したがって黒であるテクスチャであり、右上のピクセルがRGB(255,0,0)であり、したがって明るい赤と左下のピクセルはRGB(0,255,0)-明るい緑です。 しかし、代わりに私はこれをここの右側に取得します: (直線四角形レンダリング、補正なし) 左上のピクセルは黒ですが、他のコーナーでは比較的濃い赤と濃い緑しか表示されません。それらのRGB値は(191,0,0)と(0,191,0)です。私はそれがクワッドのサンプリング位置に関係していると強く思います:左上のピクセルはクワッドの左上隅を正しくサンプリングし、UV座標として(0,0)を取得しますが、他のコーナーのピクセルはクワッドの他のコーナー。左の画像でこれを示しました。四角形を表す青いボックスと、上部のサンプリング座標を表す白いドットです。 これで、Direct3D9で画面揃えのクワッドをレンダリングするときに座標に適用する必要があるハーフピクセルオフセットについて知っています。これからどのような結果が得られるか見てみましょう: (DX9のハーフピクセルオフセットでレンダリングされたクワッド) 赤と緑が明るくなりましたが、まだ正しくありません。赤または緑のカラーチャネルで取得できる最大値は223です。しかし今、私はもう純粋な黒すら持っていませんが、代わりにRGB(32,32,0)の暗い黄色がかった灰色です! 私が実際に必要とするのは、この種のレンダリングです。 (ターゲットレンダー、縮小されたクワッドサイズ) 最初の図と比較して、クワッドの右と下の境界線を1ピクセル上および左に移動する必要があるようです。次に、右側の列と一番下の行のピクセルはすべて、クワッドの境界から正しくUV座標を取得します。 VertexPositionTexture[] quad = new VertexPositionTexture[] { new VertexPositionTexture(new Vector3(-1.0f, 1.0f, 1f), new Vector2(0,0)), new VertexPositionTexture(new Vector3(1.0f - pixelSize.X, 1.0f, 1f), new Vector2(1,0)), new VertexPositionTexture(new Vector3(-1.0f, -1.0f + pixelSize.Y, 1f), new Vector2(0,1)), new …

3
遅延シェーディング-複数のライトを組み合わせる方法は?
私はGLSLから始めて、位置、法線、およびアルベドでGバッファーを出力する単純な遅延シェーディングを実装しました。 簡単なポイントライトシェーダーも作成しました。 次に、ポイントライトの球を描画し、出力をライティングバッファーに入れます。 問題は、複数のライトを描画するときに、ライティングバッファの結果をどのように組み合わせるかです。 たとえば、ポイントライトシェーダーを使用して2番目のライトをライトバッファーに描画する場合、最初のライトをライティングバッファーの2番目のライトに追加するにはどうすればよいですか。つまり、同じ出力バッファから読み書きすることはできませんか?

1
グラフィックプログラミングに関する本はありますか?
グラフィックプログラミングのボトムアップアプローチを取る本を探しています。つまり、2Dフィルタリングから始まり、通常のマッピングに移行してから、アンビエントオクルージョンなどに移行します。 ゲーム開発でここ数年怠惰で、常にこれを処理するエンジンを使用していたので、質問します。過去に借りてきた不可解なシェーダーに頼るのではなく、ゲームのシェーダーをいくつか書き始めたいです。これに関する非常に強い知識が役立つと思います。私はボトムアップの学習者なので、助けてください! GPU Gemsシリーズは素晴らしいと思いますが、私が望んでいるボトムアップアプローチというより、料理の本のようです。前の章の理論に基づいて構築するのではなく、クックブックからより多くの理論を取得する傾向があります。 編集:できればあなたが読んだもの!私はこれについてamazonを検索できますが、そのように公平なレビューを得るのは難しいです。

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