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

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


4
複数のシェーダーを使用する
私は現在openglシェーダーを研究していますが、何かを理解することはできません:オブジェクトに異なるシェーダーを適用する方法、たとえば、トゥーンシェーダーを使用してレンダリングされたティーポットと、非常に反射性の表面および他のこのビデオのようなノイズ関数 http://www.youtube.com/watch?v=1ogg4ZfdBqU もう1つは、シーンにブルームシェーダーを適用し、その後でモーションブラーシェーダーを適用することです。1つの頂点シェーダーと1つのフラグメントシェーダーのみを使用できる場合に、これらの効果を実現するにはどうすればよいですか?複数のシェーダープログラムを使用するなどのトリックはありますか?
53 shaders  glsl 

1
Raymarchシェーダーはどのように機能しますか?
ここshadertoy.comで見られるシェーダーを見てきましたが、クールなもののほとんどはノイズとレイマーチが共通しています。私はソースコードをまったく理解していませんが、本当にしたいです。これらのシェーダーはどのように機能し、raymarchアルゴリズムはどのように機能しますか?私はあちこち検索しましたが、トピックについては何も見つかりません。 ありがとう

1
GLSLのin / outキーワード
GLSLでin/ outキーワードを使用する方法を本当に理解しておらず、グーグルは特徴的に役に立たない。 彼らは正確に何をしますか?たとえば、頂点ごとに可変変数セットをフラグメントシェーダーに渡したい場合、どのように使用しますか? 文字通り、私が見つけたすべてのチュートリアルではvarying/ attributeキーワードを使用していますが、これは役に立ちません。
46 opengl  glsl 

2
リアルな氷をレンダリングする方法は?
Unityで、少なくとも半現実的な見栄えのアイスシェーダーを作成しようとしています。 次のショット(Googleで見つかった)がCGだった場合、そのシェーダーには何が含まれますか?(前景の洞窟)。私は間違っているかもしれませんが、デフォルトの拡散反射光とは異なる照明モデルさえ持っているようです。

1
アウトライングロー効果のエイリアシングを減らすにはどうすればよいですか?
Left 4 Deadゲームで輝くアウトライン効果を再現しようとしています。この効果により、オブジェクトが隠されている場合でも、オブジェクトの輪郭が輝きます。効果のスクリーンショットは次のとおりです。 OpenGLベースのプログラムでこの効果をある程度再現できます。これは私が現在やっていることです: 輝くオブジェクトをレンダリングするための画面サイズの半分の色と深さのテクスチャを作成します グローカラー/深度テクスチャをクリアします。色は黒にクリアされます。 輝くオブジェクトごとに、単色としてグローテクスチャにレンダリングします。 グローテクスチャで分離可能なガウスぼかしを実行する 通常どおりフル解像度のシーンをレンダリングする グローテクスチャを通常のシーンに追加的にブレンドしますが、グロー深度テクスチャを使用してオブジェクトをマスクし、輪郭をぼかすだけにします。 これが私のアプローチのスクリーンショットです。 グローテクスチャとシーンを組み合わせるフラグメントシェーダーを次に示します。 uniform sampler2D glowColorTex; uniform sampler2D glowDepthTex; uniform sampler2D sceneColorTex; void main() { vec2 uv = gl_TexCoord[0].st; vec4 color = texture2D( sceneColorTex, uv); float depth = texture2D( glowDepthTex, uv).r; if(depth == 1.0) { color += 2.0 * texture2D( glowColorTex, …
42 opengl  shaders  glsl  glow 

5
ゲームの俳優は自分自身を描く責任がありますか?
私はゲーム開発は初めてですが、プログラミングは初めてです。 私は(再び)JavaScriptのcanvas要素を使用してPongタイプのゲームで遊んでいます。 Paddle次のプロパティを持つオブジェクトを作成しました... width height x y colour 次のPongようなプロパティを持つオブジェクトもあります... width height backgroundColour draw()。 draw()現在、メソッドはをリセットしてcanvasおり、そこで問題が発生しました。 必要があるPaddleオブジェクトが持つdraw()その描画方法は責任、または必要があるdraw()のPongオブジェクトがその役者を描くための責任がある(私が間違ってる場合、私はそれが正しい用語であると仮定し、私を修正してください)。 私はのためにそれがadvantagousだろうと考え出しPaddle自体を描画するために、私は2つのオブジェクトをインスタンス化するように、PlayerとEnemy。それはでなかった場合Pongのdraw()、私は二度同様のコードを記述する必要があると思います。 ここでのベストプラクティスは何ですか? ありがとう。

1
GLSL:floatをintにキャストするにはどうすればよいですか?
GLSLフラグメントシェーダーで、にキャストしようとしfloatていintます。コンパイラはエラーを発生させます: ERROR: 0:60: '=' : cannot convert from 'mediump float' to 'highp int' の精度を上げてみましたint: mediump float indexf = floor(2.0 * mixer); highp int index = indexf; しかし、無駄に。 どうすればint適切にキャストできますか?
40 opengl  glsl  opengl-es 

3
==はGLSLの分岐を引き起こしますか?
GLSLで分岐の原因とそうでないものを正確に把握しようとしています。 私はシェーダーでこれをたくさんやっています: float(a==b) 条件分岐なしでifステートメントをシミュレートするために使用していますが、効果的ですか?現在、プログラムのどこにもif文はなく、ループもありません。 編集:明確にするために、私は私のコードでこのようなことをします: float isTint = float((renderflags & GK_TINT) > uint(0)); // 1 if true, 0 if false float isNotTint = 1-isTint;//swaps with the other value float isDarken = float((renderflags & GK_DARKEN) > uint(0)); float isNotDarken = 1-isDarken; float isAverage = float((renderflags & GK_AVERAGE) > uint(0)); float isNotAverage …
27 glsl 

4
プログラム可能なパイプライン(GLSL)が固定パイプラインよりも高速なのはなぜですか?
だから私は自分自身にGLSLを教えており、なぜそれが固定機能パイプラインよりも高速であると思われるのかを解明しようとしています。 私が問題を抱えている理由は、私の理解から、あなたが作成するシェーダーは以前に存在したパイプラインのセクションを置き換えているからです。それでは、物事をスピードアップする独自のバージョンを提供するだけではどうでしょうか? 私が考えることができる唯一のことは、以前に独自の照明方程式を提供しようとした場合、CPUで計算を行う必要がありますが、GPUで計算を行うことができ、より高速になります。 これを正しく理解していますか?
27 opengl  glsl 

1
このジオメトリシェーダーがプログラムをそれほど遅くするのはなぜですか?
OpenGLプログラムを使用しており、地形メッシュをレンダリングしています。頂点バッファーで頂点を移動しますが、フラグメントシェーダーではまだ実際に色付けしていません。ジオメトリシェーダーを1つずつ追加します。 ジオメトリシェーダーを追加する前に、パイプラインのフラグメントと頂点のシェーディングステップをプログラミングしていたとき、約30+のフレームレートを取得していました。ちょっぴり気付かないくらいでした。ジオメトリシェーダーを追加すると、1秒あたり約5フレームになります。どうして?これは、ジオメトリシェーダー全体です。 #version 420 layout (triangles) in; layout (triangle_strip, max_vertices = 3) out; void main() { for (int i = 0; i < gl_in.length(); i++) { gl_Position = gl_in[i].gl_Position; EmitVertex(); } EndPrimitive(); } これは、ジオメトリシェーダーなしでOpenGLが行っていたこととまったく同じではありませんか?
27 opengl  glsl 

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 

2
GLSL-ワンパスガウスぼかし
ワンパスガウスぼかしを行うフラグメントシェーダーを実装することは可能ですか?2パスブラー(ガウスおよびボックスブラー)の実装が多数見つかりました。 http://callumhay.blogspot.com/2010/09/gaussian-blur-shader-glsl.html http://www.gamerendering.com/2008/10/11/gaussian-blur-filter-shader/ http://www.geeks3d.com/20100909/shader-library-gaussian-blur-post-processing-filter-in-glsl/ 等々。 私はガウスぼかしを畳み込みとして実装することを考えてきました(実際、それは畳み込みであり、上記の例は単なる近似です)。 http://en.wikipedia.org/wiki/Gaussian_blur

1
フォン照明-鏡面照明には非常に奇妙なものがあります
Phongライティングを実装しました。トーラスと球体は予想どおりに点灯するなど、すべてが機能しているように見えます。しかし、指向性ライトの鏡面照明に関して奇妙なことに気付きます。 以下に2つのスクリーンショットを示します。 最初: 第二: ご覧のように、カメラがオブジェクトから遠い場合、より多くの領域に鏡面照明があります。 以下は、単純化された頂点シェーダーです。 #version 330 core layout(location = 0) in vec3 vertexPos; layout(location = 1) in vec3 vertexNorm; layout(location = 2) in vec2 vertexUV; uniform mat4 MVP; uniform mat4 M; out vec2 fragmentUV; out vec3 fragmentNormal; out vec3 fragmentPos; void main() { fragmentUV = vertexUV; fragmentNormal = …

1
GLSL Light(減衰、色、強度)の式
ボクセルエンジンにポイントライトを実装していますが、光源の近くで100%から光の半径で0%まで、適切な光の流れを得るのに苦労しています。 関数には5つの引数があります。 明るい色(Vec3) 光の強度(光から減衰が100%になる距離までの距離) ライトからフラグメントまでの距離 ライトに垂直なフラグメントからの角度 ライトの位置 フラグメントの色を計算するための関数を作成するために、誰かが私を正しい方向に押すことができますか? 私の実験の1つの画像: 編集(Byteによって要求された現在のコード)これは私の側からの単なる実験コードであることに注意してください。私はウェブサイトからフロート属性を取得しましたが、それは動作しますが、完璧からはほど遠いです。: void main() { // Light color vec3 torchColor = vec3(1.0f, 1.0f, 1.0f); float lightAdd = 0.0f; for (int i=0; i<5; i++) { vec3 pos = lights[i]; if (pos.x == 0.0f) continue; float dist = distance(vertex_pos, pos); if (dist < 9) …
17 opengl  glsl  lwjgl  lighting  pixel 

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