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

OpenGLシェーダー用のプログラミング言語。

2
OpenGLでの遅延タイルシェーディング、タイルフラスタ計算
OpenGLで計算シェーダーを使用して遅延タイルシェーディングを実行しようとしていますが、各タイルの錐台を作成しようとしたときに障害が発生しています。AMDのForward +デモ(D3Dで記述)をガイドとして使用していますが、ライトがカリングされるべきではないときにカリングされているようです。 更新 更新については以下をお読みください。 これは私の(完全な)計算シェーダーです: #version 430 core #define MAX_LIGHTS 1024 #define MAX_LIGHTS_PER_TILE 40 #define WORK_GROUP_SIZE 16 struct PointLight { vec3 position; float radius; vec3 color; float intensity; }; layout (binding = 0, rgba32f) uniform writeonly image2D outTexture; layout (binding = 1, rgba32f) uniform readonly image2D normalDepth; layout (binding = …

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
純粋なOpenGLまたはGLSLに移行しますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、ゲーム開発スタック交換のトピックになるようにします。 5年前に閉鎖されました。 私はグラフィックプログラミングの勉強に興味を持ったので、明らかな入り口はOpenGLを学ぶことでした。しかし、フォーラムやサイトの周りに散在する情報を集めると、3.0より前のほとんどのものが非推奨になり、「3.0以降はすべてシェーダーに関するものである」というAmazonのレビューを引用しているため、純粋なOpenGLの実装は消えています。また、私が見た本の中で、新しいバージョンをカバーしているのは優れたものだけのようですが、本の大部分が非推奨の機能を教えており、GLSLに特化した本があるためです。 これが私が最初の問題に遭遇した場所です。使用する予定のIntel統合グラフィックスを備えたノートブックを含め、一部のハードウェアはGLSLをサポートしていません。関数 GLuint vertShader = glCreateShader(GL_VERTEX_SHADER); セグメンテーション違反を引き起こし、その外観から私のドライバーはシェーダーをサポートしていません だから私の質問は、OpenGLだけでゲームを作ることの実行可能性は何ですか?シェーダー言語からのかけがえのない優れた機能はありませんか?また、シェーダーを使用してゲームを適切に実行するには、どのようなハードウェア(旧世代のi3、i5、i7、旧VGA)が必要ですか?
11 opengl  glsl 

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

1
AndroidでGPUスキニングを確実に実装するにはどうすればよいですか?
Androidでキャラクタースキニングを機能させようとしています。 アイデアはかなりバニラです:私にはスキニングマトリックスがあり、各頂点と共に、最大4つのマトリックスインデックスと4つの対応する重みを送信します。それらを頂点シェーダーで合計し、各頂点に適用します。 これは、ゲームのiOSバージョンの頂点シェーダーで行っていることです(法線は問題ありません)。 attribute vec4 in_pos; attribute vec4 in_normal; attribute vec2 in_texture_coords; attribute vec4 in_bone_index; attribute vec4 in_bone_weight; varying vec2 fs_texture_coords; uniform mat4 world_view_projection; uniform mat4 bones[@bind_matrix_count]; void main() { // Skinning vec4 transformed_pos = ((in_pos * bones[int(in_bone_index.x)]) * in_bone_weight.x) + ((in_pos * bones[int(in_bone_index.y)]) * in_bone_weight.y) + ((in_pos * bones[int(in_bone_index.z)]) …

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

2
複数のシェーダー間で関数を共有する
簡単な質問: GLSLで、複数のシェーダー間で関数を共有する方法はありますか、またはそれらを必要とするすべてのシェーダーですべての関数を定義する必要がありますか?
10 glsl 


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意味で、どこで使用する必要がありますか?

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

2
レンダリング前のオブジェクトの並べ替え
私はシーングラフを実装しようとしています。出会ったすべての記事で、オブジェクトの並べ替えについて話しています。たとえば、オブジェクトを「マテリアル」で並べ替えます。さて、私が座ってそれを実装し始めるまで、これは当然のことと思っていました。しかし、今私はソートが実際に何を変えるのかと思っていますか? 私のエンジンには、UBOのマネージャーがいます。プログラム間で共有されるデータを保存するためにそれらを使用します。現時点では、時間、カメラ、投影行列、ライトのみが関係します(影響するライトの管理については心配していません) ATMを対象としています)。 ここで、各モデルについて、モデルをワールドマトリックスユニフォームに変更する必要があります。並べ替えによって変更されることはありません。それで、このマトリックスを変更することから、各オブジェクトのマテリアルを設定することへのジャンプは悪いのでしょうか? パイプラインで何かを変更するたびにフラッシュする必要があり、それがパフォーマンスの問題を引き起こす可能性があることをどこかで読んだことを漠然と覚えています。しかし、描画を呼び出すたびに、とにかくモデルをワールドマトリックスに設定しているので、これについて心配することにはどのような意味がありますか? ところで、ユニフォームを変更してglBufferSubDataを呼び出す方がコストが高い(または低い)かどうかについての情報があります。

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

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

1
2Dトップダウンタイルの有向水流をどのようにレンダリングしますか?
私は、ドワーフフォートレスに触発された、トップダウンのタイルベースのかなりグラフィカルな2Dゲームに取り組んでいます。私はゲームの世界で、いくつかのタイルをカバーする川を実装する段階にあり、各タイルの赤い線で下に示すように、各タイルのフロー方向を計算しました。 グラフィカルスタイルの参考として、現在の私のゲームの外観は次のとおりです。 必要なのは、各河川タイルを流れる水をアニメーション化して、流れが周囲のタイルに溶け込み、タイルのエッジが見えないようにするためのいくつかの手法です。 私が見つけたものに最も近い例はhttp://www.rug.nl/society-business/centre-for-information-technology/research/hpcv/publications/watershader/に記載されていますが、私は完全ではありませんその中で何が起こっているのか理解できるようになった時点で?シェーダープログラミングについて十分理解しているので、独自の動的照明を実装しましたが、リンクされた記事で取り上げられているアプローチを理解することはできません。 誰かが上記の効果がどのように達成されるかを説明したり、私が望む結果を得るための別のアプローチを提案したりできますか?上記の解決策の一部はタイルを重ねて(どの組み合わせであるかはわかりませんが)、歪みに使用される法線マップを回転させます(これも詳細についてはわかりません)。助けて!

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 

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