问题标签 [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.
xna - 延迟渲染 - 渲染具有单独效果的模型
我已经阅读了一些关于 XNA 中的延迟渲染的教程( Catalin Zima,TheCansin )。他们似乎都使用延迟渲染管道来渲染模型。这很棒,但它们只处理法线和高光贴图。
如果我的想法是正确的,如果我想渲染一个模型,例如,其中有一个发光效果并且我有一个发光着色器,那么延迟渲染管道不会知道这个着色器?
如果我上面的问题是正确的,我是否需要在延迟渲染管道中使用辉光渲染模型,然后使用辉光着色器重新渲染?
opengl - 延迟渲染和移动点光源
我知道网上有几个关于同一个问题的线程,但我没有从这些线程中得到帮助,因为我的实现不同。
我正在将视图空间中的颜色、法线和深度渲染到纹理中。在第二个中,我将纹理与全屏四边形绑定并计算照明。定向光似乎工作正常,但点光源随着相机移动。
我分享相应的着色器代码:
光照步骤顶点着色器
光照步骤片段着色器
我将光属性作为制服发送到着色器:
viewmatrix 是相机矩阵,modelmatrix 在这里只是身份。
为什么点光源用相机而不是模型平移?
欢迎任何建议!
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 作为反照率(是的,非常浪费,但我稍后会优化)。
3d - 任何使用延迟渲染的好看的 3D 游戏或技术演示?
对于围绕延迟渲染/着色主题的研究工作,我正在寻找一些可以开发示例的开源 3D 游戏、基准或技术演示。当然,如果游戏/演示具有视觉吸引力并尽可能接近现代游戏图形,那将是一件好事。
我考虑过 Doom3,但不幸的是发布的版本没有使用延迟渲染。
虽然有支持延迟渲染的开源游戏引擎,但创建实际游戏/内容的工作量太大,所以我不仅在寻找引擎,而且在寻找已经有内容并且看起来不错的东西。
任何人都可以提出一些建议吗?
opengl - 如何使用延迟着色渲染 2D 精灵
使用延迟着色,您有多个缓冲区来保存深度、法线等信息。
在最后阶段,您只需要“组合”它们并处理光照,但是当您需要为 GUI 渲染 2D 精灵时,它是如何完成的呢?
您是否需要为此使用前向渲染?还是我必须为此使用单独的缓冲区?
另外,在现有的前向渲染器上实现延迟渲染需要什么?它是替换代码还是建立在它之上,所以我只需要更多的缓冲区和其他着色器?(因为我仍然需要移动设备的前向渲染器)
java - 延迟渲染中的光积累
我正在考虑将我的前向渲染器转换为延迟渲染器,但有一个问题我找不到(或无法概念化),那就是场景中所有灯光的累积方式。在前向渲染中,我会将所有灯光上传到着色器,但由于对象的大小不同,我被限制为 4 个。如何将累积的光信息获取到最终的复合着色器?我是否以与每个场景对象的渲染方式相似的方式渲染每个灯光?我见过一些将每个点光源渲染为球体的示例,但我看不出这种方法如何允许衰减。
jquery - 向用户显示元素时会触发哪个事件?
我有一个包含很多图像的页面。如果用户还没有向下滚动到图像所在的位置,那么让浏览器将它们全部加载是没有意义的。我想将元素绑定img
到一个事件处理程序,该处理程序在包含div
可见时触发(从某种意义上说,用户已经滚动到足以使元素在视口中)。然后,此处理程序将重写src
属性并加载图像。
我要找什么活动?
directx-11 - 辐照度体积与平铺延迟着色
我在 DirectX 11 中有一个渲染器,它在计算着色器上使用延迟着色和平铺光剔除。我可以以 30-35 FPS 的稳定帧速率运行 1024-2048 个点光源。然而,我没有全局照明。辐照度体积(在孤岛危机3中使用)是更好的解决方案吗?你能在场景中有 2000 个辐照量并有 30 FPS 吗?还是我应该坚持我目前的方法而忘记全局照明?
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。我只需要一个有效的方法。
c# - XNA 延迟着色器,替换 BasicEffect
我在我的 XNA 4.0 项目中实现了延迟着色,这意味着我需要所有对象以相同的着色器“ RenderGBuffer.fx ”开始。如何使用自定义内容处理器:
- 默认情况下不加载任何纹理(我想手动执行此操作)
- 使用“ RenderGBuffer.fx ”作为默认着色器而不是 BasicEffect
以下是迄今为止的工作: