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

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

1
GLSLの特別な相対性シェーダー
特別な相対性理論のローレンツ変換を理解するのに役立つGLSLシェーダーを実装しようとしています。 2つの軸に整列した慣性オブザーバーOとを考えてみましょう O'。オブザーバーO'は、O速度を伴ったオブザーバーに対して動いていv=(v_x,0,0)ます。 O'座標で説明すると、イベントP' = (x',y',z',ct')は座標を変換します(x,y,z,ct)= L (x',y',z',ct') ここで、Lはローレンツ変換と呼ばれる4x4行列であり、イベントP 'の座標を座標で書き込むのに役立ちますO。 (詳細はhttp://en.wikipedia.org/wiki/Lorentz_transformation#Boost_in_the_x-directionをご覧ください) すべての頂点に速度を指定してローレンツ変換を適用する最初の予備的な頂点シェーダーを書き留めましたが、変換を正しく機能させることができません。 vec3 beta= vec3(0.5,0.0,0.0); float b2 = (beta.x*beta.x + beta.y*beta.y + beta.z*beta.z )+1E-12; float g=1.0/(sqrt(abs(1.0-b2))+1E-12); // Lorentz factor (boost) float q=(g-1.0)/b2; //http://en.wikipedia.org/wiki/Lorentz_transformation#Matrix_forms vec3 tmpVertex = (gl_ModelViewMatrix*gl_Vertex).xyz; float w = gl_Vertex.w; mat4 lorentzTransformation = mat4( 1.0+beta.x*beta.x*q , beta.x*beta.y*q , beta.x*beta.z*q …

3
複雑なオブジェクトに弾痕を付けることができるデカールの代わりはありますか?
「銃弾の穴」を作成する方法を理解しようとしていますが、実際にはシェーダーレベルでテクスチャを適用しますか?「平らな」面を持たないモデルを扱っている場合、モデル全体に​​「デカール」をラップできるようにしたいと思います。誰もがこれに似たようなチュートリアルを教えてくれます。
11 shaders 

2
効率的な骨格アニメーション
私は、RTSゲームにスケルトンアニメーション形式(ここで指示されたとおり)を採用することを検討しています。画面上の各モデルの個々の表現は小さくなりますが、たくさんあります! MD5ファイルなどの骨格アニメーションでは、個々の頂点を任意の数のジョイントにアタッチできます。 GLSLで補間を行いながら、これをどのように効率的にサポートできますか?または、エンジンはCPUでアニメーションを実行しますか? または、エンジンは頂点ごとの最大ジョイントに任意の制限を設定し、最大数を使用しないジョイントに対してnop乗算を呼び出しますか? RTSのような設定で骨格アニメーションを使用するゲームはありますか?統合されたグラフィックカードでは、骨のルートを進む際に心配する必要がないことを証明していますか?

4
シェーダーディレクトリはありますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 GLSL、Cg、HLSLを学習するための多くのチュートリアルがあります...バンプマッピング、トゥーンシェーディングなどの古典的なサンプルを使用して... しかし、シェーダーディレクトリはありますか? シェーダーを共有できるWebサイト 名前、説明、実装によるシェーダーの検索
11 web  shaders 

1
高さに基づくボリュームフォグを作成するにはどうすればよいですか?
最近、私はゲームワールドのY位置レベルでボリュームフォグを作成するテクニックを探しています。しかし、私が見つけたすべては、私が探しているものに実際には適合しない、パーティクルシステムまたは組み込みのエンジンフォグを使用して作成されたフォグです。 私の場合、効率的で密度の高い霧が必要です。それはゲームの世界のいたるところにあるはずですが、明らかに、パフォーマンス上の理由から、カメラまたはシェーダーの一部としてしかレンダリングできず、単なる幻想ではありますが、動いているように見えます。それが最良の選択であれば、私はパーティクルシステムを設定し、それをカメラに取り付けて動かすことができます。 したがって、主な質問はまだ残っています-高密度で効率的に機能するボリュームフォグを実装するにはどうすればよいですか? 私が使用している特定のエンジンとしては、Unityです。 私が言っている例として、私が探している効果を持つゲームへのリンクがあります:Astromike
10 unity  shaders  rendering  fog 

2
Signed Distance Fieldのレイマーチングは、動的な世界にどのように実装されますか?
符号付き距離フィールドレイマーチングの基本を理解していると思います。一連の距離フィールド(http://iquilezles.org/www/articles/distfunctions/distfunctions.htmなど)を使用してシーンをモデル化し、次に、ピクセルを投影するたびに、光線の最初から開始します、その点で最も近いオブジェクトまでの距離を見つけ、何かにぶつかるまでその点を最も近い距離だけ増分します。簡単なレンダラーを何とかして実現しました。そこで、テクニックのほとんどの説明は終わりです。 これにより、SDFレイマーチングを実際のシナリオでどのように使用できるかについて、いくつか質問があります。 質問1:実際のゲームでは、シーンは通常複雑で、CPUにロードされ、多くの動的オブジェクトがあります。基本的なオクルージョンカリング(オクトリーなど)を理解しており、ポリゴンレンダリングを使用して、レンダリングするビューフラストラム内のアイテムの(CPU上に)リストを作成します。 それで、CPUによって制御され、画面上を動く多くのキャラクターと動的オブジェクトを含む非常に複雑なシーンがあると想像してください。レンダリングするオブジェクトをフレームごとにGPUにストリーミングするにはどうすればよいですか?すべての例には、GLSLでハードコードされたシーンがあります。誰かが動的にシェーダーにストリーミングされるレベルの例を共有できますか? 質問2:オブジェクトはどのようにして複数の色を持つことができますか?距離関数は距離を返すだけですが、実装は通常どのように色を返しますか?(たとえば、青い立方体ではなく赤い球体をヒットします。)これがCPU実装である場合、レイマーチャーを終了するヒットであるときに、距離関数内でグローバル関数を呼び出し、ヒットオブジェクトのオブジェクトも渡すことができます。テクスチャ/色。しかし、GLSLでアイテムの色またはテクスチャをどのように返しますか? ありがとうございました。

2
Table.drawDebugはlibGDXでは非推奨であるため、代わりに何を使用する必要がありますか?
私は「Learning LibGDX Game Development」の本に従ってシンプルなゲームを作成しています。私は、ステージを作成してデバッグ境界線でレンダリングするメニュー作成セクションにいます。 本は使用するように言っていますTable.drawDebug(stage)が、この静的メソッドはフレームワークTableクラスから完全に削除されたようです。 インポートしていcom.badlogic.gdx.scenes.scene2d.ui.Tableます。以下は私のコードです: @Override public void render(float deltaTime) { Gdx.gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); if (debugEnabled) { debugRebuildStage -= deltaTime; if (debugRebuildStage <= 0) { debugRebuildStage = DEBUG_REBUILD_INTERVAL; rebuildStage(); } } stage.act(deltaTime); stage.draw(); Table.drawDebug(stage); } 最後の行にTable.drawDebug(stage);はコンパイルエラーがあります"The method drawDebug(ShapeRenderer) in the type Table is not applicable for the …

2
複数のオブジェクトをレンダリングするには、いくつのOpenGLプログラムを使用する必要がありますか?
私のシーンには複数のオブジェクトが含まれています。(3つの立方体、1つの円柱、8つの球体としましょう。)それぞれに頂点シェーダーを作成する必要があると仮定します。いくつのプログラムが必要ですか? 代替案: オブジェクトごとに1つのプログラム すべてのキューブ用のプログラムと、すべての球用のプログラム(同じシェーダーを使用する場合) すべてのための1つの大きなプログラム 正しいアプローチは何ですか?

2
すべてのジオメトリを「カット」するシェーダー
どのようにすれば、Unityでクリアな背景のみをレンダリングし、すべてのジオメトリを「カット」するシェーダーを作成できますか?例: それは巨大な白い箱形の部屋のプリズムです。プリズムの表面は、シーンのスカイボックス(星空)をレンダリングしているだけです。私は複数のカメラを使用しましたが、これはかなり非効率的です...シェーダーだけの方法があるはずです。 これどうやってするの?

2
屈折ガラスシェーダー
テッセレーションシェーダーペアのポイントグリッドをテッセレーションすることで生成される無限の六角形の床があります。 これはフラットワイヤーフレームであることに注意してください。「シャドウ」は照明のトリックです。 これを厚く屈折したガラスのように見せたいのですが、どうすればよいかわかりません。 最初に頭に浮かんだのは ブロックの要求された「厚さ」を含むユニフォームを設定します ライティングを計算するときは、スネルの法則を使用して、「厚み」のユニフォームが言うほど実際に厚い場合、光線が六角形ブロックを通過する光路長を計算し、その長さのアルファを合計します。それは透明性を与えますが、内部反射/ TIRなどのようなものを扱いません。 私はまだそれを試していませんので、視覚的な結果がどうなるかわかりません。 最終的に、この特定のレベルでは、ディスクバトル中にTron:Legacyで使用されているそのガラスの六角形の床の外観を取得しようとしています。(例については、この画像を参照してください。) 提案?
10 shaders  glsl 

3
マルチテクスチャリングは本当に「複数のテクスチャを使用する」だけなのでしょうか?
これは馬鹿げているように見えるかもしれませんが、それは私を悩ませます。私が理解していることから、マルチテクスチャリングは、シェーダーごとに複数のテクスチャを使用しているだけです(通常、何らかの方法でそれらをブレンドするため)。したがって、1つのテクスチャを作成する代わりに、2つ以上を作成します。 なぜ特別な用語があるのですか?「複数のテクスチャを使用する」だけではありませんか?何か不足していますか?

1
複数のライトによる高速照明
複数のライトで高速ライティングを実装するにはどうすればよいですか? プレイヤーを拘束したくありません。彼は無制限の数を配置でき、場合によっては重なっている(ポイント)ライトをレベルに配置できます。 問題は、ライティングの計算に必要な動的ループを含むシェーダーが非常に遅くなる傾向があることです。 コンパイル時にシェーダーをn回コンパイルすることが可能である場合、nはライトの数であるという考えがありました。コンパイル時に数値nがわかっている場合は、ループを自動的に展開できます。これは、異なる数のライトで同じシェーダーのnバージョンを生成することは可能ですか? 実行時に、レベルのどの部分にどのシェーダーを使用するかを決定できます。

1
エンジンレンダリングパイプライン:シェーダーを汎用にする
OpenGL ES 2.0(現在のところiOS)を使用して2Dゲームエンジンを作成しようとしています。私は、Objective Cでアプリケーション層を記述し、C ++で別の自己完結型のRendererGLES20を記述しました。レンダラーの外部ではGL固有の呼び出しは行われません。完全に機能しています。 しかし、シェーダーを使用する際にいくつかの設計上の問題があります。各シェーダーには、メインの描画呼び出しの直前に設定する必要のある独自の固有の属性とユニフォームがあります(この場合はglDrawArrays)。たとえば、いくつかのジオメトリを描画するには、次のようにします。 void RendererGLES20::render(Model * model) { // Set a bunch of uniforms glUniformMatrix4fv(.......); // Enable specific attributes, can be many glEnableVertexAttribArray(......); // Set a bunch of vertex attribute pointers: glVertexAttribPointer(positionSlot, 2, GL_FLOAT, GL_FALSE, stride, m->pCoords); // Now actually Draw the geometry glDrawArrays(GL_TRIANGLES, 0, m->vertexCount); // …

2
射影テクスチャと遅延照明
で、私の前の質問、私は延期照明と投影テクスチャリングを行うことが可能であるかどうかを尋ねました。現在(半年以上後)、同じものの実装に問題があります。私はこのテクニックをライトパスに適用しようとしています。(私のプロジェクターはアルベドに影響しません)。私はこのプロジェクターを持っています投影マトリックスを見る: Matrix projection = Matrix.CreateOrthographicOffCenter(-halfWidth * Scale, halfWidth * Scale, -halfHeight * Scale, halfHeight * Scale, 1, 100000); Matrix view = Matrix.CreateLookAt(Position, Target, Vector3.Up); どこhalfWidthとhalfHeightテクスチャーの幅と高さの半分です、Positionプロジェクターの位置で、targetプロジェクターのターゲットです。これは問題ないようです。私はこのシェーダーでフルスクリーンクワッドを描画しています: float4x4 InvViewProjection; texture2D DepthTexture; texture2D NormalTexture; texture2D ProjectorTexture; float4x4 ProjectorViewProjection; sampler2D depthSampler = sampler_state { texture = <DepthTexture>; minfilter = point; magfilter = point; mipfilter …

1
gl_TexCoord [0]のコンポーネントはどういう意味ですか?
違いは何ですかgl_TexCoord[0].s, gl_TexCoord[0].t gl_TexCoord[0].pとはgl_TexCoord[0].x, gl_TexCoord[0].y gl_TexCoord[0].z? gl_TexCoord[0].x, gl_TexCoord[0].y gl_TexCoord[0].zピクセル座標であると理解していますか? しかし、どういうgl_TexCoord[0].s, gl_TexCoord[0].t gl_TexCoord[0].p意味で、どこで使用する必要がありますか?

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