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

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


1
正接および正接ベクトルを計算する方法
Three.jsにテクスチャを読み込んでから、シェーダーに渡しました。頂点シェーダーで法線を計算し、UVベクトルを変数に保存します。 <script id="vertexShader" type="x-shader/x-vertex"> varying vec3 N,P; varying vec2 UV; void main() { gl_Position= projectionMatrix * modelViewMatrix * vec4(position,1.0); P= position; N= normalMatrix * vec3(normal); UV= uv; } </script> <script id="fragmentShader" type="x-shader/x-fragment"> varying vec3 N,P; varying vec2 UV; uniform sampler2D texture; void main() { gl_FragColor= texture2D(texture,UV); } </script> TおよびBベクトルをどのように計算しますか?

2
IFステートメントで1つではなく2つのシェーダーを使用する
私は比較的大きなopengl ES 1.1ソースをES 2.0に移植する作業をしています。 OpenGL ES 2.0(つまり、すべてがシェーダーを使用する)では、ティーポットを3回描画したいと思います。 最初のものは、均一な色(古いglColor4f)です。 2つ目は、頂点ごとのカラーです(ティーポットにも頂点カラーの配列があります)。 3つ目は、頂点ごとのテクスチャです。 そして、おそらく4番目の1つで、頂点ごとのテクスチャと色の両方があります。そして、多分5番目のもので、法線も含まれます。 私が知る限り、実装には2つの選択肢があります。1つ目は、動作を変更するように設定されたユニフォームを使用して、上記のすべてをサポートするシェーダーを作成することです(たとえば、単一カラーユニフォームまたは頂点ごとのカラーユニフォームを使用します)。 2番目の選択肢は、状況ごとに異なるシェーダーを作成することです。一部のカスタムシェーダーの前処理では、それほど複雑ではありませんが、描画オブジェクト間でシェーダーを切り替える際のパフォーマンスコストが問題になります。私はそれがささいに小さくないことを読みました。 つまり、これを行う最善の方法は、両方を構築して測定することですが、入力を聞くのは良いことです。
9 opengl-es  glsl 

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 …

4
可変長ループがGPUシェーダーに与える影響
デモシーンなど、GPU内で手続き型コンテンツをレンダリングするのが一般的です(画面いっぱいに1つの四角形を描画し、GPUにピクセルを計算させる)。 レイマーチングが人気です: これは、GPUがピクセルごとに不明な数のループ反復を実行していることを意味します(ただし、のような上限を設定できますmaxIterations)。 可変長ループがあると、シェーダーのパフォーマンスにどのような影響がありますか? 単純なレイマーチングの擬似コードを想像してみてください。 t = 0.f; while(t < maxDist) { p = rayStart + rayDir * t; d = DistanceFunc(p); t += d; if(d < epsilon) { ... emit p return; } } さまざまな主流のGPUファミリ(Nvidia、ATI、PowerVR、Mali、Intelなど)はどのように影響を受けますか?頂点シェーダー、特にフラグメントシェーダー? どのように最適化できますか?

3
初めてのシャドウマッピングの問題
OpenGLでシェーダーを使用して初めて基本的なシャドウマッピングを実装しましたが、いくつかの問題に直面しています。以下に、レンダリングされたシーンの例を示します。 私がフォローしているシャドウマッピングのプロセスは、光の視点からのビューマトリックスと、通常のレンダリングに使用される投影およびモデルマトリックスを使用して、シーンをフレームバッファーにレンダリングすることです。 2番目のパスでは、上記のMVPマトリックスをライトの視点から、位置をライトスペースに変換する頂点シェーダーに送信します。フラグメントシェーダーは遠近法による分割を行い、位置をテクスチャー座標に変更します。 これが私の頂点シェーダーです、 #version 150 core uniform mat4 ModelViewMatrix; uniform mat3 NormalMatrix; uniform mat4 MVPMatrix; uniform mat4 lightMVP; uniform float scale; in vec3 in_Position; in vec3 in_Normal; in vec2 in_TexCoord; smooth out vec3 pass_Normal; smooth out vec3 pass_Position; smooth out vec2 TexCoord; smooth out vec4 lightspace_Position; void main(void){ pass_Normal …

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

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
R9 380 GPUのフラグメントシェーダーで画面がちらつく
私のゲームで2人のプレーヤーがフラグメントシェーダーを使用すると画面がちらつくという問題が発生していますが、これはR9 380 GPUを使用するプレーヤーでのみ発生しているようです。これは、ゲームでは次のようになります。 プレーヤーの1つを操作した後、シェーダーを使用するように絞り込みましたが、呼び出し元のコードで適切に行われていない可能性があります。シェーダーは次のようになります(まだGLSLを学習しています)。 uniform sampler2D lightTexture; uniform sampler2D targetTexture; uniform sampler2D backgroundTexture; uniform vec2 tileSize; vec3 SaturationBrightness(vec3 color, float brt, float sat) { // Increase or decrease theese values to adjust r, g and b color channels seperately const float AvgLumR = 0.5; const float AvgLumG = 0.5; const …
8 c++  2d  glsl  sfml 

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; シェーダーはコンパイルして実行しますが、ライン(または最後に定義されたプリミティブが何であれ)のみをレンダリングします。 それでは、複数のタイプのプリミティブを処理する単一のジオメトリシェーダーをどのように定義しますか?またはそれは不可能であり、各タイプを描画する前に複数のシェーダープログラムを作成してシェーダープログラムを変更する必要がありますか

1
GLSLパックがRGBAテクスチャに浮かび上がる
従来の三角形ベースのモデルとパーティクルを、適度なフレームレートでレイトレースされたシーンで構成したいと考えています。 webGLではgl_FragDepth、フラグメントシェーダーでを記述できません。複数のレンダーターゲットを持つことはできませんが、RGBAテクスチャにレンダーしてから、そのテクスチャを別の描画操作への入力として使用できます。そのため、レイトレースされたシーンをレンダリングし、次のステージへの入力として深度を保存できます。これは明らかに理想からかけ離れていますが、実行可能です。 私はこれについて誤解したいのですが、これは決定的なソースではなく試行錯誤から集められたものです。欠陥のある仮定を修正してください GLSLフラグメントシェーダーで、フロートおよび理想的にはいくつかのフラグビットなどをRGBAテクスチャに効率的にパック/アンパックするにはどうすればよいですか?
8 textures  glsl  webgl 

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; ??

2
歪みのないビルボードレンダリング?
私はUnity内のビルボードに標準的なアプローチを使用していますが、これは問題ありませんが、理想的ではありません。 transform.LookAt(camera) 問題は、特に視野角が大きくなると、ビューポートのエッジに向かって歪みが発生することです。これは、例えば、あなたが見る完璧なビルボードとは異なります。スクリーンスペースのどこにいるかに関係なく、任意の角度から敵を見ると破滅します。 明らかに、画像をビューポートに直接ブリットして単一の頂点を中心に配置する方法がありますが、シェーダーは苦手です。 誰かがこのアプローチのサンプル(可能な場合はGLSL)を持っているか、それが通常この方法で行われない理由(前述の四角形変換メソッドと比較して)に関する提案はありますか? 編集:私は混乱しました、頭を上げてくれたネイサンに感謝します。もちろん、クワッドにカメラを向けさせても、クワッドがビュープレーンに平行になることはありません-これが必要です。
8 unity  shaders  glsl 

2
Linux用GLSLシェーダーエディター
GLSLシェーダーを編集してその効果を視覚化できるLinux用の優れたIDEはありますか? 注:Typhoon LabsのShader Designerは良い選択肢ですが、このソフトウェアにはUbuntu 11.10でいくつかの問題があるため、代替案を探しています。
8 shaders  glsl  linux 

1
ゲームのシェーダーテクニック/用途の概要/ショーケース
私は、シェーダーがゲームでどのように使用されているか、何ができるか、そしてさらに重要なこととして、何ができないかについて理解を深めるためのリソースを探しています。グラフィックパイプラインのしくみなどすべてを理解しており、GLSLでいくつかの非常に基本的なシェーダーを作成しました(ほとんどが固定機能のパイプライン機能を置き換えるためだけです)が、カスタムシェーダーでのみ可能なことをまだ完全には理解していません、より効率的に実行できることなど。特定の手法の例、特に照明を見つけることができましたが、それらの使用法のより高いレベルの概要を探しています。 概要とは対照的に、特定の興味深い手法へのリンクと説明も高く評価されます(ただし、概要よりは少ないです;))。

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