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

xna - 延迟渲染 - 渲染具有单独效果的模型

我已经阅读了一些关于 XNA 中的延迟渲染的教程( Catalin ZimaTheCansin )。他们似乎都使用延迟渲染管道来渲染模型。这很棒,但它们只处理法线和高光贴图。

如果我的想法是正确的,如果我想渲染一个模型,例如,其中有一个发光效果并且我有一个发光着色器,那么延迟渲染管道不会知道这个着色器?

如果我上面的问题是正确的,我是否需要在延迟渲染管道中使用辉光渲染模型,然后使用辉光着色器重新渲染?

0 投票
1 回答
2214 浏览

opengl - 延迟渲染和移动点光源

我知道网上有几个关于同一个问题的线程,但我没有从这些线程中得​​到帮助,因为我的实现不同。

我正在将视图空间中的颜色、法线和深度渲染到纹理中。在第二个中,我将纹理与全屏四边形绑定并计算照明。定向光似乎工作正常,但点光源随着相机移动。

我分享相应的着色器代码:

光照步骤顶点着色器

光照步骤片段着色器

我将光属性作为制服发送到着色器:

viewmatrix 是相机矩阵,modelmatrix 在这里只是身份。

为什么点光源用相机而不是模型平移?

欢迎任何建议!

0 投票
1 回答
579 浏览

opengl - 纹理中未初始化/未保留的 GPU 内存,OpenGL

(这实际上是来自 gamedev 的交叉帖子但我认为你们也可能会有所帮助!)

编辑:我详细说明了叠加的含义。经过一番睡眠后,我发现我对 glGenerateMipmaps 的调用毫无用处,因为我使用 null 作为指向 glTexImage2D 的指针。

在 OpenGL 3.3、Ubuntu 11.04、nVidia 驱动程序 280.13、GeForce GT240 上。

我正在制作一个延迟着色器,并希望在屏幕下部的小叠加层中显示我的 G 缓冲区。在这种情况下,叠加意味着没有 z 测试,纹理屏幕对齐四边形,最后渲染。

在全窗口渲染(一次一个)G 缓冲区(FBO 纹理)时,它们会正确显示。当渲染到这些叠加层时,我得到了垃圾(看似随机的 GPU 内存作为静态干扰,但在运行之间有所不同,有时是清晰的画面)。

如果我创建一个不同的纹理,比如从文件中,它会在叠加层中显示没有垃圾,所以代码应该没问题。谁能解释为什么?我已经为 G 缓冲区中的纹理使用了 glGenerateMipmap。

我知道这可能没有足够的信息,但从这个开始。请询问任何相关信息。问题是否与 FBO 渲染和 mipmapping 有关?当然我的代码想要显示未保留/未初始化的内存,但我不知道为什么。 下面的四个纹理中有垃圾数据。


全窗口绿色图片是我当前在光照阶段的结果,分辨率为 (256*256),以节省 GPU 内存,因为 G-buffer 很厚。此外,在材质着色器(生成 G 缓冲区)中,我使用“out vec4 fragment[3]”,并且纹理具有不同的内部格式。这会是个问题吗?

PS。灯光在 (-30,0,0) 和 (30,0,0) 处,但似乎“更近”。这可能是一个精度问题吗?我使用 GL_RGBA16F 作为法线,使用 GL_RGBA32F 作为位置,使用 GL_DEPTH_COMPONENT24 作为深度,使用 GL_RGBA 作为反照率(是的,非常浪费,但我稍后会优化)。

0 投票
1 回答
278 浏览

3d - 任何使用延迟渲染的好看的 3D 游戏或技术演示?

对于围绕延迟渲染/着色主题的研究工作,我正在寻找一些可以开发示例的开源 3D 游戏、基准或技术演示。当然,如果游戏/演示具有视觉吸引力并尽可能接近现代游戏图形,那将是一件好事。

我考虑过 Doom3,但不幸的是发布的版本没有使用延迟渲染。

虽然有支持延迟渲染的开源游戏引擎,但创建实际游戏/内容的工作量太大,所以我不仅在寻找引擎,而且在寻找已经有内容并且看起来不错的东西。

任何人都可以提出一些建议吗?

0 投票
1 回答
1246 浏览

opengl - 如何使用延迟着色渲染 2D 精灵

使用延迟着色,您有多个缓冲区来保存深度、法线等信息。

在最后阶段,您只需要“组合”它们并处理光照,但是当您需要为 GUI 渲染 2D 精灵时,它是如何完成的呢?

您是否需要为此使用前向渲染?还是我必须为此使用单独的缓冲区?

另外,在现有的前向渲染器上实现延迟渲染需要什么?它是替换代码还是建立在它之上,所以我只需要更多的缓冲区和其他着色器?(因为我仍然需要移动设备的前向渲染器)

0 投票
1 回答
850 浏览

java - 延迟渲染中的光积累

我正在考虑将我的前向渲染器转换为延迟渲染器,但有一个问题我找不到(或无法概念化),那就是场景中所有灯光的累积方式。在前向渲染中,我会将所有灯光上传到着色器,但由于对象的大小不同,我被限制为 4 个。如何将累积的光信息获取到最终的复合着色器?我是否以与每个场景对象的渲染方式相似的方式渲染每个灯光?我见过一些将每个点光源渲染为球体的示例,但我看不出这种方法如何允许衰减。

0 投票
2 回答
101 浏览

jquery - 向用户显示元素时会触发哪个事件?

我有一个包含很多图像的页面。如果用户还没有向下滚动到图像所在的位置,那么让浏览器将它们全部加载是没有意义的。我想将元素绑定img到一个事件处理程序,该处理程序在包含div可见时触发(从某种意义上说,用户已经滚动到足以使元素在视口中)。然后,此处理程序将重写src属性并加载图像。

我要找什么活动?

0 投票
0 回答
616 浏览

directx-11 - 辐照度体积与平铺延迟着色

我在 DirectX 11 中有一个渲染器,它在计算着色器上使用延迟着色和平铺光剔除。我可以以 30-35 FPS 的稳定帧速率运行 1024-2048 个点光源。然而,我没有全局照明。辐照度体积(在孤岛危机3中使用)是更好的解决方案吗?你能在场景中有 2000 个辐照量并有 30 FPS 吗?还是我应该坚持我目前的方法而忘记全局照明?

0 投票
1 回答
2426 浏览

macos - 将模板缓冲区可视化为纹理

我正在尝试将模板缓冲区放入纹理中,以便在延迟渲染器中使用。

我正在使用其他颜色和深度附件,glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, textures[color1], 0);结果是正确的。 没有模板缓冲区的正确渲染

但是,当我尝试将我的模板缓冲区附加到纹理时, glFramebufferTexture2D(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT ,GL_TEXTURE_2D, textures[stencil], 0);我得到一个乱码的结果,就好像 FBO 没有清除它的缓冲区一样。

不正确、乱码的渲染

我不知道问题是什么。我怀疑这是设置模板纹理的问题......

我的设置中没有任何错误代码,所以我不知道问题出在哪里。

编辑:也许我没有正确地做到这一点。如果有人知道如何将模板缓冲区写入纹理,我真的不在乎我是否编写不同的 cod。我只需要一个有效的方法。

0 投票
0 回答
199 浏览

c# - XNA 延迟着色器,替换 BasicEffect

我在我的 XNA 4.0 项目中实现了延迟着色,这意味着我需要所有对象以相同的着色器“ RenderGBuffer.fx ”开始。如何使用自定义内容处理器:

  1. 默认情况下不加载任何纹理(我想手动执行此操作)
  2. 使用“ RenderGBuffer.fx ”作为默认着色器而不是 BasicEffect

以下是迄今为止的工作: