问题标签 [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 投票
2 回答
1926 浏览

javascript - 检测当一个负载

我正在使用<ng-include>模式内部根据某些选项有条件地加载不同的内容。

当模式以一种模式(呵呵)或另一种模式启动时,或者当用户更改下拉菜单时,会选择内容。

在任何这些情况下,我的模板中这样的部分都会加载正确的模态内容:

然后它会加载modals/contents-addressForm.html或任何情况。

诀窍是,不同的形式是不同的大小。当它们加载时,模态需要重新定位自身。

我已经尝试$watchform.type变量。这会在模式启动时检测到更改和初始值,但重新定位发生得太快,因为ng-include尚未加载内容。我试过推迟,但这并不总是足够长的。我可以尝试任意长度的超时,但这似乎......任意。

有什么方法可以知道任何 ng-include 何时加载?下一个 ng-include 何时加载?

0 投票
1 回答
507 浏览

javascript - 延迟在应用程序运行 angularjs 上创建控制器/服务

每次路由更改时,我都会检查是否使用当前登录的用户详细信息设置了一个变量,如果未设置此变量,我只需重定向到登录页面。

现在我正在尝试实现某种“记住我”功能,所以每次路由更改时,如果变量用户不存在而不是重定向到登录页面,我会检查本地存储是否有“authtoken”,如果设置了,我调用一个检查函数,将 authtoken 传递给服务器,它返回用户,应用程序将与手动登录后的工作方式相同(返回与检查函数相同的用户)。

我很确定这不是最好的方法。

如果我重新加载页面,首先我运行检查函数,将 authtoken 发送到服务器并等待响应,如果用户存在,则将该值分配给 rootscope 中的变量。

例如,我有不同的服务使用 rootscope 中的变量

当然,当检查功能运行时,它会等待响应,但服务正在被实例化并且 $rootScope.loggedUser.id 不存在。

如何告诉应用程序等到检查功能收到响应?

这是我的代码

例如,如果用户将页面“myapp.com/#/admin/users”添加为书签,我不想重定向到登录,如果我在本地存储中有 authtoken,但这会导致控制器被实例化,即使用该服务,该服务需要尚未填充的 $rootScope.loggedUser.id。

而且我只想在页面(重新)加载时(不是每次用户更改路线时)运行功能检查。

0 投票
1 回答
762 浏览

c++ - OpenGL延迟渲染不起作用

我尝试在第一遍中渲染我的几何图形,并在第二遍中将其从缓冲区渲染到四边形。
将几何图形直接渲染到屏幕上是可行的,但是一旦我尝试通过多次通道渲染到四边形,屏幕就会保持黑色(透明颜色为灰色)。
我认为我的着色器可能是问题所在。如果需要,请询问更多代码。

顶点着色器:



片段着色器:



编辑:




编辑:渲染方法:



更多代码:



传递渲染方法:

0 投票
1 回答
1506 浏览

opengl - 根据强度计算光体积半径

我目前在计算延迟渲染器的光体积半径时遇到问题。在低光强度下,体积大小看起来是正确的,但是当光强度(以及因此半径)增加时,光体积似乎越来越小。

我正在计算光体积半径(在世界空间中),如下所示:

然后我使用这个值来缩放一个盒子。

然后在我的着色器中计算衰减,如下所示:

所以很明显我在搞乱数学。衰减应该是线性的,对吧?但是我现在如何正确计算光量的世界比例值?

PS,因为我打算使用 HDR 渲染,所以灯光颜色可以超过 (1,1,1)。

0 投票
1 回答
2247 浏览

opengl - 带有延迟渲染的阴影映射

我正在尝试实现一种阴影映射技术,但我遇到了一些问题才能使其正常工作。

我在灯光的位置有一个相机,这是我得到的阴影贴图。所有的顶点都乘以 each modelViewProjectionMatrix

相机灯的视图

我还有一个带有顶点世界位置的纹理。这是一个GL_RGBA32F纹理,因为所有的点都被每个点相乘ModelMatrix以得到世界空间中的点。

在此处输入图像描述

和着色器:

输出(摄像头几乎在灯光的同一位置):

在此处输入图像描述

我只是想看看每个顶点的投影是否正确地从相机的位置开始,但看起来不是。这一切的重点是比较:

但它也不起作用。

我将不胜感激任何帮助。谢谢你。

0 投票
1 回答
1477 浏览

javascript - 删除 Jquery UI 库的渲染阻塞 JavaScript

我正在尝试使用以下延迟方法通过“删除渲染阻止 JavaScript”来加速我的网页:

我已将所有 javascript 文件合并为 1 个名为 combination.js 的文件,但每当我尝试合并此 jquery 库 UI 时:

使用combinations.js,我的jquery 脚本不起作用。

所以谷歌页面速度仍然说我需要为这个库“删除阻止渲染的 JavaScript”,但是如何?

更新:

当我将 Jquery UI 库添加到组合.js 文件的顶部并在 CHROME 和 IE9 上对其进行测试时,它就可以工作了!我现在遇到的问题是当我在 Firefox 上测试它时(我有 35 版)。所以这似乎是一个Firefox问题

0 投票
1 回答
201 浏览

opengl - OpenGL 灯光和延迟着色

可以说定向灯和点灯的唯一区别是定向灯没有衰减因子吗?另外,大多数游戏都使用延迟着色吗?如果我总共使用少于 10 个灯,我应该在我的应用程序中实现延迟着色吗?

0 投票
2 回答
546 浏览

opengl - 在什么条件下,多通道方法变得非常必要?

我想列举一些一般的、基本的情况,在这些情况下,多通道渲染成为一种不可避免的必要性,而不是把所有东西都放在同一个着色器程序中。到目前为止,这是我想出的。

  • 当结果需要当前片段周围的非本地片段信息(即上下文)时,例如对于框过滤器,那么之前的传递必须提供此信息;
  • 当结果需要通过先前通道完成的硬件插值时;
  • 当结果充当某些计算集的预缓存时,其性能比简单地(重新)处理使用它们的那些通道中的整个计算集(例如,将深度缓冲区的每个片段转换为特定和昂贵的方式,然后多个后期着色器可以共享,而不是每个重复这些计算。所以,计算一次,多次使用。

我从我自己的(天真的)推论中注意到,顶点和几何着色器似乎并没有真正进入延迟渲染的画面,因此可能通常在第一遍中完成;对我来说,这似乎是明智的,但是对这一点的肯定或否定,以及细节,都会引起人们的兴趣。

PS我将保留这个问题以收集好的答案,所以不要指望快速获胜!

0 投票
2 回答
805 浏览

c# - OpenGL延迟渲染:点光源实现

我正在尝试使用 C# 和 OpenGL(使用 OpenTK)编写一个延迟渲染器。

但是不明白我应该如何实现点光源的正常计算。

点光源片段着色器:

结果: 结果

看起来不错。但是光线是在一个10*10的平面上,光线的半径是5,所以光线应该几乎覆盖了这个表面。

我明白这个问题,我只是不知道如何解决它......

正常问题

更多像素的 nDotL 会更小,这会导致这种“伪影”。

如果我删除“* nDotL”部分,灯光看起来像这样:

在此处输入图像描述

在这种情况下,范围很好,但地板的底部也被点亮了......

如果有人能告诉我如何解决这个问题,我将不胜感激。

如果需要,源代码也在这里。

0 投票
1 回答
1840 浏览

opengl - 来自深度纹理的相机空间法线

我想使用第一遍存储的(非线性)深度纹理来生成屏幕空间法线。在第二遍中,我可以渲染出深度、漫反射、ID 等,但我似乎无法从深度工作中获得法线。

当前对从深度获取法线的理解:

  1. texture()/texelFetch() p在当前 tex 坐标处,p+ (1, 0) = p1, and p+ (0, 1) = p2; 从这些重建相机空间位置

  2. 获取v1向量p1 - p:当前位置与其屏幕/纹理空间 x 邻居之间的向量

  3. 获取v2向量p2 - p:当前位置与其屏幕/纹理空间 y 邻居之间的向量
  4. cross将这两者相乘并normalize()获得当前纹理像素的表面法线。

着色器(第二遍!渲染到全屏四边形)

顶点:

分段:

结果

在此处输入图像描述

问题我做错了什么?像对五岁的孩子一样解释它。:)

这将用作 SSAO 和定向照明的基础。

据我所知,这不是我使用纹素dFdxdFdy不是片段的答案。