问题标签 [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.
javascript - 检测当一个负载
我正在使用<ng-include>
模式内部根据某些选项有条件地加载不同的内容。
当模式以一种模式(呵呵)或另一种模式启动时,或者当用户更改下拉菜单时,会选择内容。
在任何这些情况下,我的模板中这样的部分都会加载正确的模态内容:
然后它会加载modals/contents-addressForm.html
或任何情况。
诀窍是,不同的形式是不同的大小。当它们加载时,模态需要重新定位自身。
我已经尝试$watch
过form.type
变量。这会在模式启动时检测到更改和初始值,但重新定位发生得太快,因为ng-include
尚未加载内容。我试过推迟,但这并不总是足够长的。我可以尝试任意长度的超时,但这似乎......任意。
有什么方法可以知道任何 ng-include 何时加载?下一个 ng-include 何时加载?
javascript - 延迟在应用程序运行 angularjs 上创建控制器/服务
每次路由更改时,我都会检查是否使用当前登录的用户详细信息设置了一个变量,如果未设置此变量,我只需重定向到登录页面。
现在我正在尝试实现某种“记住我”功能,所以每次路由更改时,如果变量用户不存在而不是重定向到登录页面,我会检查本地存储是否有“authtoken”,如果设置了,我调用一个检查函数,将 authtoken 传递给服务器,它返回用户,应用程序将与手动登录后的工作方式相同(返回与检查函数相同的用户)。
我很确定这不是最好的方法。
如果我重新加载页面,首先我运行检查函数,将 authtoken 发送到服务器并等待响应,如果用户存在,则将该值分配给 rootscope 中的变量。
例如,我有不同的服务使用 rootscope 中的变量
当然,当检查功能运行时,它会等待响应,但服务正在被实例化并且 $rootScope.loggedUser.id 不存在。
如何告诉应用程序等到检查功能收到响应?
这是我的代码
例如,如果用户将页面“myapp.com/#/admin/users”添加为书签,我不想重定向到登录,如果我在本地存储中有 authtoken,但这会导致控制器被实例化,即使用该服务,该服务需要尚未填充的 $rootScope.loggedUser.id。
而且我只想在页面(重新)加载时(不是每次用户更改路线时)运行功能检查。
c++ - OpenGL延迟渲染不起作用
我尝试在第一遍中渲染我的几何图形,并在第二遍中将其从缓冲区渲染到四边形。
将几何图形直接渲染到屏幕上是可行的,但是一旦我尝试通过多次通道渲染到四边形,屏幕就会保持黑色(透明颜色为灰色)。
我认为我的着色器可能是问题所在。如果需要,请询问更多代码。
顶点着色器:
片段着色器:
编辑:
编辑:渲染方法:
更多代码:
传递渲染方法:
opengl - 根据强度计算光体积半径
我目前在计算延迟渲染器的光体积半径时遇到问题。在低光强度下,体积大小看起来是正确的,但是当光强度(以及因此半径)增加时,光体积似乎越来越小。
我正在计算光体积半径(在世界空间中),如下所示:
然后我使用这个值来缩放一个盒子。
然后在我的着色器中计算衰减,如下所示:
所以很明显我在搞乱数学。衰减应该是线性的,对吧?但是我现在如何正确计算光量的世界比例值?
PS,因为我打算使用 HDR 渲染,所以灯光颜色可以超过 (1,1,1)。
opengl - 带有延迟渲染的阴影映射
我正在尝试实现一种阴影映射技术,但我遇到了一些问题才能使其正常工作。
我在灯光的位置有一个相机,这是我得到的阴影贴图。所有的顶点都乘以 each modelViewProjectionMatrix
。
我还有一个带有顶点世界位置的纹理。这是一个GL_RGBA32F
纹理,因为所有的点都被每个点相乘ModelMatrix
以得到世界空间中的点。
和着色器:
输出(摄像头几乎在灯光的同一位置):
我只是想看看每个顶点的投影是否正确地从相机的位置开始,但看起来不是。这一切的重点是比较:
但它也不起作用。
我将不胜感激任何帮助。谢谢你。
javascript - 删除 Jquery UI 库的渲染阻塞 JavaScript
我正在尝试使用以下延迟方法通过“删除渲染阻止 JavaScript”来加速我的网页:
我已将所有 javascript 文件合并为 1 个名为 combination.js 的文件,但每当我尝试合并此 jquery 库 UI 时:
使用combinations.js,我的jquery 脚本不起作用。
所以谷歌页面速度仍然说我需要为这个库“删除阻止渲染的 JavaScript”,但是如何?
更新:
当我将 Jquery UI 库添加到组合.js 文件的顶部并在 CHROME 和 IE9 上对其进行测试时,它就可以工作了!我现在遇到的问题是当我在 Firefox 上测试它时(我有 35 版)。所以这似乎是一个Firefox问题
opengl - OpenGL 灯光和延迟着色
可以说定向灯和点灯的唯一区别是定向灯没有衰减因子吗?另外,大多数游戏都使用延迟着色吗?如果我总共使用少于 10 个灯,我应该在我的应用程序中实现延迟着色吗?
opengl - 在什么条件下,多通道方法变得非常必要?
我想列举一些一般的、基本的情况,在这些情况下,多通道渲染成为一种不可避免的必要性,而不是把所有东西都放在同一个着色器程序中。到目前为止,这是我想出的。
- 当结果需要当前片段周围的非本地片段信息(即上下文)时,例如对于框过滤器,那么之前的传递必须提供此信息;
- 当结果需要通过先前通道完成的硬件插值时;
- 当结果充当某些计算集的预缓存时,其性能比简单地(重新)处理使用它们的那些通道中的整个计算集(例如,将深度缓冲区的每个片段转换为特定和昂贵的方式,然后多个后期着色器可以共享,而不是每个重复这些计算。所以,计算一次,多次使用。
我从我自己的(天真的)推论中注意到,顶点和几何着色器似乎并没有真正进入延迟渲染的画面,因此可能通常在第一遍中完成;对我来说,这似乎是明智的,但是对这一点的肯定或否定,以及细节,都会引起人们的兴趣。
PS我将保留这个问题以收集好的答案,所以不要指望快速获胜!
c# - OpenGL延迟渲染:点光源实现
我正在尝试使用 C# 和 OpenGL(使用 OpenTK)编写一个延迟渲染器。
但是不明白我应该如何实现点光源的正常计算。
点光源片段着色器:
结果:
看起来不错。但是光线是在一个10*10的平面上,光线的半径是5,所以光线应该几乎覆盖了这个表面。
我明白这个问题,我只是不知道如何解决它......
更多像素的 nDotL 会更小,这会导致这种“伪影”。
如果我删除“* nDotL”部分,灯光看起来像这样:
在这种情况下,范围很好,但地板的底部也被点亮了......
如果有人能告诉我如何解决这个问题,我将不胜感激。
opengl - 来自深度纹理的相机空间法线
我想使用第一遍存储的(非线性)深度纹理来生成屏幕空间法线。在第二遍中,我可以渲染出深度、漫反射、ID 等,但我似乎无法从深度工作中获得法线。
当前对从深度获取法线的理解:
texture()
/texelFetch()
p
在当前 tex 坐标处,p
+ (1, 0) =p1
, andp
+ (0, 1) =p2
; 从这些重建相机空间位置获取
v1
向量p1 - p
:当前位置与其屏幕/纹理空间 x 邻居之间的向量- 获取
v2
向量p2 - p
:当前位置与其屏幕/纹理空间 y 邻居之间的向量 cross
将这两者相乘并normalize()
获得当前纹理像素的表面法线。
着色器(第二遍!渲染到全屏四边形)
顶点:
分段:
结果
问题我做错了什么?像对五岁的孩子一样解释它。:)
这将用作 SSAO 和定向照明的基础。
据我所知,这不是我使用纹素dFdx
而dFdy
不是片段的答案。