问题标签 [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.
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 的示例,我将不胜感激。
java - 延迟导致空 JSP 页面空页面加载(Spring MVC 3.2.3.RELEASE + tomcat 7)
您好我正在使用带有异步请求处理的servelet-api 3.0.1 编写一个Web 应用程序。
基本上我使用 spring mvc 控制器和请求映射,我将 ModelAndView 作为延迟结果返回。
我的控制器如下所示
我的 JSP 如下所示
我将问题缩小如下,当我同步返回 ModelAndView 时(这意味着没有 DeferedResult)Jsp 内容按我的预期完美加载。
我在我的 tomcat 日志中得到以下日志。并且页面的内容没有加载。相反,我得到一个空页面。
2013 年 9 月 29 日下午 3:09:03 org.apache.jasper.compiler.TldLocationsCache tldScanJar 信息:已扫描至少一个 JAR 以查找 TLD,但未包含 TLD。启用此记录器的调试日志记录以获取已扫描但未在其中找到 TLD 的 JAR 的完整列表。在扫描期间跳过不需要的 JAR 可以缩短启动时间和 JSP 编译时间。
javascript - HTML5 样板和循环渲染路径/不同的脚本和样式
我曾经基于HTML5 Boilerplate构建我的网站:head 中的样式和 modenizr、jQuery(google CDN 或托管文件)和结束 body 标记之前的脚本。像这样的东西:
现在,我想按照Googles PageSpeed Insight的建议删除所有在首屏下的渲染阻塞 css 和 js 。
如何推迟 css 和 js 文件,包括从谷歌加载的 jQuery 库?我应该如何处理modernizr?
opengl - 延迟渲染未按预期工作
我对 opengl 和 GLSL 相当有经验。对于我的引擎,我想实现延迟照明,因为我知道这不是一项简单的任务。几个小时后,我能够让大部分工作正常进行。这是我渲染的所有缓冲区的屏幕截图:
左上是法线,右上是反照率,左下是位置,右下是最终渲染。(现在只渲染一盏灯。)我使用各种着色器将所有东西渲染到帧缓冲区。我以前使用过前向渲染光照着色器。为了希望提供相同的结果,我使用来自该顶点着色器的相同数据来渲染不同的缓冲区。与前向渲染器不同,光源会根据相机的位置移动和变化。这是顶点着色器的代码(片段只是渲染从顶点获得的像素)
位置着色器:
普通着色器
对于反照率,我只使用 opengl 的常规着色器并绑定纹理。
这是最终的光照着色器,它在屏幕上呈现为四边形:
这里面有很多其他地方引用的功能,不过我想大家可以从图片和代码中得到大致的依据。这是主要的渲染功能:
这里有一些无关的东西,忽略它们。如您所见,我使用 GLSL 的默认方法获得了灯光的位置。我认为因为我处于正交视图中,所以有些东西与灯光的位置有关。这可能是问题所在,还是有其他问题,可能是在计算法线等?
c++ - OpenGL从线性化深度重建眼睛位置不正确
过去两周我一直在尝试实现延迟渲染。我终于来到了使用模板缓冲区和线性化深度的聚光灯通道部分。我持有 3 个帧缓冲纹理:反照率、法线+深度(X、Y、Z、EyeViewLinearDepth)、光照纹理。所以我画了我的光(球体)并应用这个片段着色器:
您需要知道的变量:v_vertex 是(球体)顶点的眼睛空间位置,lightpos 是眼睛空间中光线的位置/中心,linearDepth 是在眼睛空间中的几何传递阶段生成的。
问题是,如果检查 : ,代码会失败if (distance <= u_lightRadius)
。在我删除距离检查之前,永远不会计算灯光。我确信我正确传递了这些值,半径为 170.0,灯光位置距离模型仅 40-50 个单位。肯定有问题,但我无法以某种方式找到它。我尝试了半径和其他变量的许多可能性。
c++ - OpenGL 3.3 MSAA 延迟着色
据我了解,通过在创建帧缓冲区时指定多重采样纹理/渲染缓冲区(以高内存成本),我可以在 OpenGL 3.3 中为延迟着色提供自动 MSAA。这种多重采样是否也对着色器有任何影响,无论是几何通道还是着色通道,还是全部“在引擎盖下”处理?
opengl - 如何从片段着色器访问默认深度缓冲区?
我要将 DirectX 代码移植到 OpenGL,并且需要选择正确的 OpenGL 版本。根据我已经在网上阅读的内容,我想要做的甚至可能都不可能。
据我了解(虽然我可能错了),我可以使用默认深度缓冲区作为 DirectX 10 [1] 中的像素着色器资源。这对于延迟照明很有用。在第一遍中,我将绘制网格并填充深度缓冲区。在后期处理期间,我可以使用深度缓冲区信息。我不必使用多个渲染目标,这样可以节省一些内存和带宽。
是在任何 OpenGL 版本中使用 FBO 和 blitting [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
opengl - OpenGL 计算着色器原子操作
我正在尝试编写一个与用于 BF3 的 DICE 一致的延迟平铺渲染器,但我要么不明白我在做什么,要么 GLSL 正在对我进行快速渲染。
内核的第一部分是计算每个图块的最大和最小深度,我正在使用这段代码。
如果我为每个片段绘制深度,场景看起来像这样。
尝试绘制 minDepth 会导致纯白屏,而绘制 maxDepth 会导致黑屏。我的内存管理/原子功能是错误的还是我的驱动程序/GPU/Unicorn 有问题?
作为说明,我已经尝试过
这也产生了一个完全白色的图像,这让我非常怀疑到底发生了什么。
java - 获取延迟渲染光照通道的世界位置
我最近开始为我正在开发的引擎构建某种延迟渲染管道,但我一直坚持从深度重建世界位置。我查看了很多示例,其中解释了您需要世界位置纹理或深度纹理,然后才能使用正确的距离和方向计算光。
我的问题是所谓的位置纹理可能是世界位置似乎没有给我正确的数据。因此,我试图找到获得世界位置的替代方法,有些人建议我应该使用深度纹理,但那又如何呢?
为了更清楚,这张图片显示了我当前存储的纹理:
位置(左上)、正常(右上)、漫反射(左下)和深度(右下)。
对于光通,我尝试使用一种在第一通中使用效果很好的方法。当我尝试使用完全相同的变量对光通使用相同的方法时,它会停止工作。
这是我的几何顶点着色器:
几何片段着色器:
光顶点着色器:
光片段着色器:
最后,这是当前的结果:
所以我的问题是,是否有人可以解释结果或我应该如何获得正确的结果。我也将感谢该地区的良好资源。
c++ - 使用带有多重采样延迟渲染中断的 sampler2DShadow
如标题所述,使用 sampler2DShadow 会导致我的多重采样 FBO 的光照着色器出现错误,但由于使用标准延迟渲染设置的配置非常相似,但没有多重采样,我无法检测到该问题,这工作正常。
openlGL 中的 sampler2DShadow 和多重采样是否存在兼容性问题,或者我应该使用一些替代方案?
着色器编译良好。
代码运行良好,直到我运行这一行:
并检索结果。然后我得到 GL_INVALID_OPERATION。
阴影贴图来自定向光(深度贴图有效且可见)并使用 GL_COMPARE_R_TO_TEXTURE,设置为标准纹理 (GL_TEXTURE_2D)。
多重采样延迟 FBO 纹理使用 GL_TEXTURE_2D_MULTISAMPLE。
我正在使用 glsl 330(openGL 3.3 核心配置文件)。
更新
我认为问题与从多采样片段着色器中的位置图获取世界位置有关。
标准方式:
多采样方式:
(我省略了其他采样器。)
我猜我越界了,这在尝试访问 sampler2DShadow 时会引发错误(pCoord 是使用 worldPos 计算的)。
现在要弄清楚如何让这个多重采样的 worldPos 得到与标准方式相同的结果???
标准方式 (mDepthVP = mat4 (light's depth view prog):