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

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

2
OpenGL ES 2.0:2Dプロジェクションのセットアップ
この記事では、一般的に、固定機能パイプラインを使用してシャープなOpenGL 2Dグラフィックスを描画する方法について説明します。 http://basic4gl.wikispaces.com/2D+Drawing+in+OpenGL OpenGL ES 2.0には使用できないES 1.x関数(glOrtho()など)があるため、それらの機能はフラグメント/頂点シェーダーで置き換える必要があります。 私の質問は、プログラム可能な関数パイプラインで次の2D投影を設定する方法ですか? const XSize = 640, YSize = 480 glMatrixMode (GL_PROJECTION) glLoadIdentity (); glOrtho (0, XSize, YSize, 0, 0, 1) glMatrixMode (GL_MODELVIEW) 上記の固定機能2D投影設定を完全に置き換えるために、フラグメントシェーダーと頂点シェーダーをどのように構成する必要がありますか?


1
ガウスぼかしはソフトシャドウエッジのかなり正確な表現ですか?
実際のソフトシャドウ(近くの大きな光源から)にガウスまたは線形の減衰があるかどうか、または他の何かがあるかどうかはわかりません。 何らかの事前レンダリングされたグラデーションテクスチャを操作することで影を作成できるものに取り組んでいるので、フレームバッファや従来の影付け技術に依存する必要はありません。グラデーションをメッシュのテクスチャの1つのチャネルにベイクし、各クワッドを覆うシャドウの量に基づいて値を操作することを計画しています。これは、各ピークが次の隣接するクワッドに影を落とすことができるジグザグのように並んだクワッドを持っているためです。 そのため、線形フォールオフが最も簡単になります(線形勾配から値を差し引く必要があります)が、実際に実際に見えるものを伝えるのは困難です。線形勾配に適用してガウス近似を引き出すことができる簡単な数式はありますか?

2
大きな頂点バッファーと複数の描画呼び出し
OpenGLを使い始めたばかりで、それを使用して2Dゲームを作成しようとしています。このゲームでは、非常に多くのさまざまな色の六角形で構成される六角形のグリッドがあります。初心者のOpenGLプログラマーとして、このグリッドを描くには2つの方法があります。 単一の六角形のデータで頂点バッファーを使用し、均一なオフセット値を使用してCPUを反復処理し、グリッドができるまで同じプログラムを何度も描画します。 1回の呼び出しですべての六角形を描画する、非常に大きな事前計算済みの単一の頂点バッファーを作成します。 最も効率的な方法は何ですか?これを行うより良い方法はありますか?
14 opengl  shaders 

2
GLSLシェーダー-色相/彩度/輝度の変更
GLSLフラグメントシェーダーを使用して画像の色相を変更しようとしています。Photoshopの色相/彩度調整レイヤーに似たものを実現したい。 次の画像では、私がこれまでに得たものを見ることができます。緑色の正方形の色相を変更して右側の赤い正方形のようにしたいのですが、このシェーダーでは半分の赤い半分のピンクの正方形(中央の正方形)が得られます。 フラグメントシェーダーで行っているのは、テクスチャの色をHSVに変換してから、頂点シェーダーから取得したHSV色を追加して、色をRGBに変換し直すことです。 私は何を間違えていますか? フラグメントシェーダー: precision mediump float; varying vec2 vTextureCoord; varying vec3 vHSV; uniform sampler2D sTexture; vec3 convertRGBtoHSV(vec3 rgbColor) { float r = rgbColor[0]; float g = rgbColor[1]; float b = rgbColor[2]; float colorMax = max(max(r,g), b); float colorMin = min(min(r,g), b); float delta = colorMax - colorMin; float …


3
DirectXで太さを変えながら、AAでラインをレンダリングする最速の方法
そのため、正確には.NETでSharpDXを使用してDirectX開発を行っています(ただし、DirectX / C ++ APIソリューションは適用可能です)。DirectXを使用して、直交投影で線をレンダリングする最速の方法を探しています(たとえば、科学アプリの2D線画のシミュレーション)。 私がレンダリングしようとしているプロットの種類のスクリーンショットは次のとおりです。 これらの種類のプロットでは、ラインごとにアンチエイリアシング(またはフルスクリーンAAのオン/オフ)の有無に関係なく、数百万のセグメントがあり、太さが変化するラインを持つことは珍しくありません。ラインの頂点を非常に頻繁に(たとえば、20回/秒)更新し、可能な限りGPUにオフロードする必要があります。 これまで私は試しました: ソフトウェアレンダリング、たとえばGDI +は実際にはパフォーマンスの低下ではありませんが、明らかにCPUに負荷がかかります Direct2D API-GDIよりも遅く、特にアンチエイリアスがオンの場合 この方法を使用するDirect3D10 は、CPU側で頂点カラーとテッセレーションを使用してAAをエミュレートします。また遅い(プロファイルを作成し、頂点位置の計算に時間の80%が費やされる) 3番目の方法では、頂点バッファーを使用して三角形のストリップをGPUに送信し、200ミリ秒ごとに新しい頂点を更新します。100,000ラインセグメントのリフレッシュレートは約5FPSです。理想的には数百万人が必要です! 今、私は最速の方法は、GPU、例えばジオメトリシェーダーでテッセレーションを行うことだと考えています。頂点をラインリストとして送信するか、テクスチャでパックし、ジオメトリシェーダーでアンパックしてクワッドを作成できます。または、生のポイントをピクセルシェーダーに送信し、ブレゼンハムライン描画を完全にピクセルシェーダーで実装します。私のHLSLは2006年のさびたシェーダーモデル2であるため、最新のGPUが実行できるクレイジーな機能については知りません。 質問は次のとおりです。-誰もこれを以前にやったことがありますか、試してみる提案はありますか?-ジオメトリをすばやく更新してパフォーマンスを改善するための提案はありますか(たとえば、20msごとの新しい頂点リスト)。 1月21日更新 それ以来、LineStripおよびDynamic Vertex Buffersを使用するGeometryシェーダーを使用して、上記のメソッド(3)を実装しました。現在、10万ポイントで100FPS、1,000,000ポイントで10FPSを取得しています。これは大きな改善ですが、今ではフィルレートと計算が制限されているため、他の手法やアイデアについて考えました。 ラインセグメントジオメトリのハードウェアインスタンス化はどうですか? Sprite Batchはどうですか? 他の(ピクセルシェーダー)指向のメソッドはどうですか? GPUまたはCPUで効率的にカリングできますか? あなたのコメントと提案は大歓迎です!
14 2d  directx  shaders 

5
DirectX 10シェーダーのifステートメントを避けますか?
ステートメントの両方の部分が実行され、間違ったものがドロップされるため、シェーダーでステートメントを回避する必要があると聞いたことがあります(パフォーマンスに悪影響を及ぼします)。 DirectX 10ではまだ問題ですか?誰かが私に言った、その中で正しいブランチだけが実行されるだろう。 説明のために、私はコードを持っています: float y1 = 5; float y2 = 6; float b1 = 2; float b2 = 3; if(x>0.5){ x = 10 * y1 + b1; }else{ x = 10 * y2 + b2; } より高速にする他の方法はありますか? もしそうなら、どうやって? 両方のブランチは似ていますが、唯一の違いは「定数」の値です(y1, y2, b1, b2ピクセルシェーダーのすべてのピクセルで同じです)。

2
背景に木々が輝いているのはなぜですか?
現在、私は暗闇の中で森のシーンを作成しており、木々は遠く離れて輝いていますが、近くに行くと元気です。「Nature / Tree Soft Occlusion [bark / leaves]」に設定されたシェーダーを持っていますが、それらはまだ遠く離れた場所で奇妙にレンダリングされていますが、近くでは問題ありません。 ここで言ったように、「アンビエントオクルージョン」という名前のフォルダーにツリーを配置しようとしましたが、運はありません。フォグもオフになります。前もって感謝します。 更新 「Render Paths」カメラを使用して木を見ると、他のすべてが緑である間に赤に見えました。 更新2 これらをダウンロードしたパッケージを再インストールしようとしましたが、まだ運がありません。 更新3 いくつかの木を手動で追加しましたが、それらは正常に機能しますが、地形にペイントして追加するときに問題が発生します。 最終更新 ゲームをビルドして、これが.exeに影響するかどうかを確認しましたが、影響しませんでした。ですから、デバッグ時には無視する必要があります。ビルドでうまく機能するからです。すべての助けをありがとう、それはただ団結のエラーのようです。ビルドの画像:
14 unity  shaders  terrain  tree 

1
「Life is Strange」のようなアウトラインシェーダーを作成するにはどうすればよいですか?
人生のようなスケッチシェーダーを奇妙にしたい。 シェーダーには2つの部分があります。 1.アニメーションの破線 2.騒々しい輪郭 ノイズの多いアウトラインを作成する方法を知りたいですか? オブジェクトの概要を見る 最初に、入ってくる頂点データをコピーしてアウトラインを作成し、法線方向に合わせてスケーリングしてからカルバックしましたが、アウトラインはオブジェクトの内部で移動することがあるため、イメージ効果のようなものだと思います。とにかく、誰かがこのシェーダーを実装するのを手伝ってくれれば感謝します:) 私が試したもの エッジ検出を使用し、頂点シェーダーでアニメーション化しましたが、これは上記のgifのようには良くありません。
13 unity  shaders  hlsl 

3
このフラットシェードの外観の再作成
短くしておきます。下の画像に描かれている効果をどのように達成しますか?リアルタイムで実行することは可能ですか?一見シンプルに見えますが、おそらくそうではありません。この外観を実現するためのシェーダーのプログラミングに関する詳細情報を取得するために検索できるキーワードはありますか?ありがとう。

3
HLSLピクセルシェーダーでNESの色の制限を再現するにはどうすればよいですか?
256色モードは減価償却され、Direct3Dモードではサポートされなくなったため、代わりにピクセルシェーダーを使用して、可能なすべての色のNESパレットをシミュレートして、フェードオブジェクトやアルファチャネルによるスムーズフェードアウトがないようにするというアイデアを得ました。(オブジェクトがNESで実際にフェードアウトできないことはわかっていますが、パレットの交換で可能になる、黒一色の背景でフェードインおよびフェードアウトするすべてのオブジェクトがあります。また、一時停止すると画面がフェードインおよびフェードアウトします。いくつかのMega Manゲームで行われていたように、パレット交換でも可能だったことはわかっています。)問題は、HLSLシェーダーについてほとんど何も知らないことです。 どうすればいいのですか?
13 shaders  pixel 

1
シェーダーをコンパイルされた形式またはプレーンテキストで配布する必要がありますか?
GLSLで記述されたシェーダーを使用するアプリケーションがある場合、現実世界での配布とデスクトップおよびモバイルの最適な戦略は何ですか? 私はこれをバイナリ形式で、またはプレーンなシリアル化されたテキストとして配布することを目指しています。これについての良い提案をお願いします。

4
シェーダーコードのデバッグ?
ゲームエンジンを作成しています。パースビューカメラを使用すると、黒い画面が表示されます。共有するコードがたくさんあるため、これがなぜなのかを正確に尋ねるつもりはありません。 問題は、デバッグ方法がわからないことです。変化するのは投影行列だけです。投影行列が正常に見える場合、なぜ機能しないのかわかりません。理想的には、シェーダーが計算を行ったときにさまざまな値を出力しますが、GLSLにはprintf()関数がありません。 だから私の質問は次のとおりです。どうすれば問題をデバッグできますか?私が考えることができる唯一のことは、クライアント側でできる限り多くの値をチェックし、順列でプログラミングすることですが、私はそれを行ってどこにも行きませんでした。ビデオカードで何が起こっているかを確認する方法はありますか?私が使用できる完全に異なる技術はありますか? 私はGLSLバージョン420(およびそのバージョンに固有の機能)を使用しているため、2010年に最後に更新されたことを考えると、glslDevilはオプションではないと思います。 編集 まったく関係のないデバッグによって問題を解決できました。

2
リアルなメタルシェーダー
優れた金属シェーダーをどのように作成しますか? さまざまな金属の場合、多かれ少なかれ侵食/さびなどを言います。 通常の素材との違いの1つは、金属が鏡面反射光を「着色」することですが、たとえば金でそれを行うと、金属ではなく「黄色」に見えることを知っています。 どんな助けも感謝します!

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