問題タブ [deferred-rendering]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
580 参照

css - Google PageSpeed 競合する提案

CSS の読み込みに関しては、Google PageSpeed には相反する推奨事項があります。

一方では、すべての CSS をヘッドにロードするように指示されます: https://developers.google.com/speed/pagespeed/service/MoveCSSToHead?csw=1

一方、優先 CSS のみを先頭に配置し、ページが完全に読み込まれた後に残りを挿入するように指示します: https://developers.google.com/speed/docs/insights/OptimizeCSSDelivery

では、どのルールに従うのですか?また、「onLoad」の後に Javascript を使用して CSS をロードする方法の例を誰かが教えてくれれば、とても感謝しています。

0 投票する
0 に答える
769 参照

java - 遅延により、空の JSP ページの空のページが読み込まれる (Spring MVC 3.2.3.RELEASE + tomcat 7)

こんにちは私は、非同期リクエスト処理でservlet-api 3.0.1を使用してWebアプリケーションを作成しています。

基本的に、Spring MVC コントローラーと、ModelAndView を遅延結果として返すリクエスト マッピングを使用します。

私のコントローラーは次のようになります

私のJSPは次のよ​​うになります

ModelAndView を同期的に (つまり、DefferedResult なしで) 返すと、Jsp コンテンツは期待どおりに完全に読み込まれます。

Tomcat ログに次のログが表示されます。また、ページのコンテンツが読み込まれていません。代わりに、空のページが表示されます。

2013 年 9 月 29 日 3:09:03 PM org.apache.jasper.compiler.TldLocationsCache tldScanJar 情報: 少なくとも 1 つの JAR で TLD がスキャンされましたが、TLD は含まれていませんでした。このロガーのデバッグ ロギングを有効にして、スキャンされたが TLD が見つからなかった JAR の完全なリストを取得します。スキャン中に不要な JAR をスキップすると、起動時間と JSP コンパイル時間が短縮されます。

0 投票する
1 に答える
217 参照

javascript - HTML5 ボイラープレートと回想レンダリング パス / スクリプトとスタイルの定義

私は以前、 HTML5 ボイラープレートに基づいて Web サイトを構築していました。スタイルと modenizr を先頭に、jQuery (Google CDN またはホストされたファイル) とスクリプトを body タグの前に閉じていました。そんな感じ:

ここで、Google の PageSpeed Insight で提案されているように、フォールド下の css と js のレンダリングをブロックするすべてを削除したいと考えています。

Google からロードされた jQuery ライブラリを含む css および js ファイルを延期するにはどうすればよいですか? modernizr についてはどうすればよいですか?

0 投票する
1 に答える
1446 参照

opengl - 遅延レンダリングが期待どおりに機能しない

私はopenglとGLSLの経験が豊富です。私のエンジンでは、ディファード ライティングを実装したいと考えていました。数時間後、私は物事をほとんど機能させることができました。これは私がレンダリングしたすべてのバッファのスクリーンショットです:

ここに画像の説明を入力 左上が法線、右上がアルベド、左下が位置、右下が最終レンダリングです。(現在レンダリングされているライトは 1 つだけです。) さまざまなシェーダーを使用して、すべてのものをフレーム バッファーにレンダリングします。以前はフォワード レンダリング ライティング シェーダーを使用していました。できれば同じ結果が得られるように、その頂点シェーダーの同じデータを使用して、さまざまなバッファーをレンダリングしました。フォワード レンダラーとは異なり、光源はカメラの位置に基づいて移動および変化します。頂点シェーダーのコードは次のとおりです (フラグメント シェーダーは、頂点シェーダーから取得したピクセルをレンダリングするだけです)。

位置シェーダー:

通常のシェーダー

アルベドには、opengl の通常のシェーダーを使用して、テクスチャをバインドするだけです。

画面上にクワッドとしてレンダリングされる最終的なライト シェーダを次に示します。

これには、他の場所で参照されている多くの機能がありますが、写真とコードから一般的な基礎を得ることができると思います. これはメインのレンダリング関数です:

ここには無関係なものがいくつかありますが、それらは無視してください。ご覧のとおり、GLSL の既定の方法を使用してライトの位置を取得します。私は正投影ビューにいるため、ライトの位置に何か問題があると思います。これが問題なのだろうか、それとも法線の計算などで何か他のことがあるのだろうか?

0 投票する
1 に答える
1682 参照

c++ - OpenGL 3.3 MSAA 遅延シェーディング

私が理解していることから、フレームバッファーを作成するときにマルチサンプルテクスチャ/レンダーバッファーを指定することにより、OpenGL 3.3 で遅延シェーディング用の自動 MSAA を使用できます (メモリコストが高くなります)。このマルチサンプリングは、ジオメトリ パスまたはシェーディング パスのいずれかについて、シェーダーにも何らかの影響を与えますか?それともすべて「ボンネットの下」で処理されますか?

0 投票する
0 に答える
688 参照

opengl - フラグメント シェーダーからデフォルトの深度バッファーにアクセスするにはどうすればよいですか?

DirectX コードを OpenGL に移植するつもりであり、適切な OpenGL バージョンを選択する必要があります。私がやりたいことは、私がすでにオンラインで読んだことによると、不可能かもしれません.

私が理解しているように (間違っているかもしれませんが)、デフォルトの深度バッファーを DirectX 10 のピクセル シェーダー リソースとして使用できます [1]。これはディファード ライティングに役立ちます。最初のパスでは、メッシュを描画し、深度バッファーを埋めます。後処理中に、深度バッファー情報を使用できます。複数のレンダー ターゲットを使用する必要がなくなり、メモリと帯域幅を節約できます。

OpenGL バージョンでこれを達成する唯一の方法は、FBO とブリッティングを使用することです [2, 3]?

[1] http://bitwisegames.wordpress.com/2011/03/25/getting-direct-access-to-the-depthbuffer-in-directx10/

[2] http://www.gamedev.net/topic/578084-depth-buffer-and-deferred-rendering/

[3] http://www.opengl.org/discussion_boards/showthread.php/180782-Binding-to-a-different-depth-buffer

0 投票する
1 に答える
4509 参照

opengl - OpenGL Compute シェーダーのアトミック操作

BF3 に使用される DICE に合わせて遅延タイル レンダラーを作成しようとしていますが、自分が何をしているのか理解していないか、GLSL が高速なレンダラーを引っ張っています。

カーネルの最初の部分は、タイルごとの最大深度と最小深度を計算することです。これは、このコードで行っています。

断片ごとに奥行きを描くとこんな感じ。

ここに画像の説明を入力

minDepth を描画しようとすると真っ白な画面になり、maxDepth を描画すると黒い画面が生成されます。メモリ管理/アトミック関数が間違っていますか、それともドライバー/GPU/ユニコーンが壊れていますか?

参考までに、試してみました

また、完全に白い画像が生成されるため、実際に何が起こっているのか非常に疑わしくなります.

0 投票する
1 に答える
2176 参照

java - ディファード レンダリング ライト パスのワールド位置を取得する

私は最近、私が取り組んでいるエンジン用のある種の遅延レンダリング パイプラインの構築を開始しましたが、深さから世界の位置を再構築することに固執しています。ライトの正確な距離と方向の計算に使用するには、ワールド ポジション テクスチャまたは深度テクスチャのいずれかが必要であると説明するかなりの数の例を見てきました。

私の問題は、おそらく世界の位置であるいわゆる位置テクスチャが正しいデータを提供していないように見えることです。したがって、世界の位置を取得する別の方法を見つけようとしましたが、代わりに深度テクスチャを使用する必要があると提案した人もいますが、その後はどうすればよいでしょうか?

より明確にするために、この写真は私が現在保存しているテクスチャを示しています。

遅延レンダリング テクスチャ 位置 (左上)、法線 (右上)、拡散 (左下)、深度 (右下)。

ライト パスについては、最初のパスで使用すると正常に機能する方法を使用しようとしています。まったく同じ変数を使用してライト パスに同じ方法を試すと、機能しなくなります。

ここに私のジオメトリ頂点シェーダーがあります:

ジオメトリ フラグメント シェーダ:

ライト頂点シェーダー:

ライト フラグメント シェーダー:

最後に、現在の結果は次のとおりです。 予期せぬ結果

だから私の質問は、誰かが結果を説明できるかどうか、または正しい結果を得るためにどのようにすべきかということです. また、この地域に関する優れたリソースに感謝します。

0 投票する
1 に答える
451 参照

c++ - マルチサンプリング遅延レンダリング ブレークで sampler2DShadow を使用する

タイトルが示すように、sampler2DShadow を使用すると、マルチサンプリング FBO のライティング シェーダーでエラーが発生しますが、マルチサンプリングを使用しない標準の遅延レンダリング設定を使用して非常によく似た構成を使用しているため、問題を検出できません。

openlGL の sampler2DShadow とマルチサンプリングに互換性の問題がありますか、または使用すべき代替手段はありますか?

シェーダーは正常にコンパイルされます。

この行を実行するまで、コードは正常に機能します。

結果を取得します。次に、GL_INVALID_OPERATION を取得します。

シャドウ マップはディレクショナル ライト (デプス マップは有効で表示可能) からのもので、標準テクスチャ (GL_TEXTURE_2D) に設定された GL_COMPARE_R_TO_TEXTURE を使用します。

マルチサンプリング遅延 FBO テクスチャは GL_TEXTURE_2D_MULTISAMPLE を使用します。

glsl 330 (openGL 3.3 コア プロファイル) を使用しています。

アップデート

問題は、マルチサンプリング フラグメント シェーダーの位置マップからワールド位置を取得することに関連していると思います。

標準的な方法:

マルチサンプリングの方法:

(他のサンプラーは省略しました。)

sampler2DShadow (pCoord は worldPos を使用して計算されます) にアクセスしようとすると、エラーがスローされる境界を超えていると思います。

次に、このマルチサンプリングされた worldPos を取得して、標準的な方法と同じ結果を得る方法を見つけますか???

標準的な方法 (mDepthVP = mat4 (ライトの深度ビュー プログラム):