C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 如何在延迟着色系统中实现光遮挡?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在实现一个延迟着色系统,该系统使用计算着色器(在DirectX 11中)来剔除瓷砖中的灯光,因此我可以在稳定的帧速率下获得数千个灯光.当我必须确定灯光是否被场景阻挡时,问题就来了几何.我的意思是我的点光源穿过墙壁和桥梁.我在主光源(太阳)的视角上有一个阴影贴图,但是为场景上的每个点光源生成阴影贴图需要生成一千个立方体贴图,这就是那么这个问题通常是如何解决的?像死亡空间3和战地3这样的游戏在场景中有很多灯光,但它们不会通过固体物体流血.

解决方法

一个直接的解决方案是使用屏幕空间环境遮挡方法.在那里,您尝试根据邻域的采样来估计遮挡.我所知道的一种方法SSDO,它直接针对在屏幕空间中创建阴影.可能你会在复杂的场景中得到很多文物.优点是 SSDO增加了一些全局照明效果.

我认为大多数游戏/引擎都试图通过预处理步骤来克服这些问题.

>静态闪电:如果您的光源不能移动(建筑物中的灯光……),请计算光照贴图或包含光线的一些额外顶点属性.>调整灯光:只需调整衰减距离或强度或位置,直到没有明显的出血.>一些自己的想法:根据您对灯光的表示(球体/圆盘?),您可以计算灯光的修剪形状.墙后面的像素不会位于新的光量范围内,并且不会以这种方式照亮.如果你不能任意塑造你的光量,那么每个光定义墙壁可能会增加一个或两个平面.对于大多数灯光,这些平面可能是不确定的,只有在墙壁附近的灯光下才会被推到GPU上.可以检查在相应光的照明过程中它在哪一侧上的像素.

大佬总结

以上是大佬教程为你收集整理的c – 如何在延迟着色系统中实现光遮挡?全部内容,希望文章能够帮你解决c – 如何在延迟着色系统中实现光遮挡?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。