Graphics 在延迟渲染中,使用材质和UV缓冲区替换纹理缓冲区是否可行?

Graphics 在延迟渲染中,使用材质和UV缓冲区替换纹理缓冲区是否可行?,graphics,rendering,deferred,Graphics,Rendering,Deferred,我试着尽我所能回答这个问题,但这里是问题的实质 制作延迟渲染器是否切实可行?该渲染器不具有漫反射/镜面反射缓冲区,而是具有材质/UV缓冲区,材质的处理类似于平铺灯光消隐,着色器将传递所需的纹理(镜面反射、漫反射、辉光、贴花等),并使用UV缓冲区中的UV对其进行采样 我只是想找到一种方法来获得延迟渲染的好处和前向渲染的灵活性,我想不出为什么这两种方法都会带来最坏的结果,但是我找不到任何类似的信息,所以我不知道它在实际应用中的优缺点。我不知道这种方法如何改进正常的延迟渲染。延迟渲染的主要缺点是传递大

我试着尽我所能回答这个问题,但这里是问题的实质

制作延迟渲染器是否切实可行?该渲染器不具有漫反射/镜面反射缓冲区,而是具有材质/UV缓冲区,材质的处理类似于平铺灯光消隐,着色器将传递所需的纹理(镜面反射、漫反射、辉光、贴花等),并使用UV缓冲区中的UV对其进行采样


我只是想找到一种方法来获得延迟渲染的好处和前向渲染的灵活性,我想不出为什么这两种方法都会带来最坏的结果,但是我找不到任何类似的信息,所以我不知道它在实际应用中的优缺点。

我不知道这种方法如何改进正常的延迟渲染。延迟渲染的主要缺点是传递大缓冲区、多个照明模型的复杂性、透明度和抗锯齿

您提出的方法将需要巨大的缓冲区来存储所有模型的所有不同纹理,这将比漫反射和镜面反射缓冲区占用更多的空间

您的方法不会对照明模型进行任何改进,因为它仍然需要材质ID缓冲区和用于照明的复杂着色器

您的方法无法解决透明度或抗锯齿问题

总的来说,材质和uv缓冲区可以很容易地替换为仅包含uv坐标处材质上颜色的漫反射缓冲区,就像在正常延迟渲染中一样


编辑:在您所描述的情况下,使用多个(例如辉光、漫反射、光泽度、镜面反射…)缓冲区将这些缓冲区用作纹理,并且仅为每个材质加载一组缓冲区,这可能很实用。但是,它只会节省少量带宽,因为与您建议的材质纹理相比,正常设置只需要屏幕大小的纹理。此外,由于为每种材质切换多个纹理,可能会导致性能下降。

纹理缓冲区过大?不,纹理会根据需要传入,盗版材料?传入海盗纹理。恐龙材料?传入恐龙纹理。他们不会一下子被塞满的。我不太清楚你的建议是什么。是否要将UV坐标和材质ID渲染到缓冲区,然后对具有必要纹理的每个材质重复执行此过程?我看不出这种方法有什么改进。正常的计算和像素对像素的剔除在延迟的庄园中处理,比正向庄园处理更少的几何图形,通过识别包含材料的屏幕小区域进一步优化,以避免过度绘制。抱歉,我的意思是对标准延迟渲染的改进,而不是向前渲染。每种材质的着色器自由度和更多纹理信息可用,无需添加额外的缓冲区