我本季度要参加计算机图形学课程。
我们的实验室项目之一是软件光栅化。

现在我正在计划项目建议书,并思考如何制作它

经过短暂的搜索,
我学习了一种称为软件遮挡剔除的技术。
它在各种分辨率的缓冲区上进行软件光栅化。 br />然后我们可以使用分层z缓冲区查询遮挡。 >

#1 楼

据我所知,软件遮挡剔除(您已经提到过)几乎是软件光栅化器仍将唯一使用的东西。 Procworld利用类似的技术来显示其庞大的体素环境。

大多数其他剔除方法(例如截锥剔除)也可以在CPU上工作,但与该示例相同的是,在对象级别,可能带有轴对齐的边界框(AABB)。此交集测试比使用功能完善的软件光栅化器要简单得多。

在某些情况下,软件光栅化可用于鼠标拾取对象。在游戏引擎中,通常使用物理引擎和具有简化网格的射线三角形碰撞来解决。使用这些空闲周期通过软件光栅化程序在CPU上渲染可能会有所好处。除了渲染变得异常复杂和令人费解之外,这里的问题通常是带宽。显示在CPU上的图像需要先传送到GPU,然后才能显示出来。

#2 楼

具有“战争迷雾”概念的游戏通常具有可见性网格,以定义每个位置的战争迷雾状态。栅格化有时用于修改网格上特定形状的战争状态的雾状。

与图形完全不相关,但肯定是在现代游戏中使用了栅格化,并且在RTS中使用了一种技术。在类似情况下进行栅格化。

#3 楼

栅格化是一个包含许多部分的巨大主题,我不是引擎程序员,但是我会尽力给出一些概述(这与完整的清单相去甚远!)。

一些非常基本的低级内容包括:

背面剔除:丢弃不指向相机的所有多边形。

画家的算法:按与相机的距离顺序绘制对象,从物体远离物体,然后转到相机。

游戏中使用的更多高级物品包括:类似于LOD(请参见下文),但现在最新的DirectX版本引入了镶嵌细分,可提供自动网格划分或缩小。这可以极大地提高图形性能,因为如果需要它们,您可以得到多边形,如果您不再想要它们,可以摆脱它们。

LOD:详细程度系统会根据对象和相机之间的距离替换对象的网格。例如,您的角色具有三个网格:一个网格为10,000,一个网格为5,000,另一个网格为1,000。如果您留在他的正前方,则显示高分辨率网格(10,000个多边形),如果您离开,则在100m之后将角色替换为中等网格,而在另一个100m之后将使用低分辨率网格替换角色。您可以减少网格而不是替换网格,但这会使编码更加复杂。

二进制空间分区:该空间分为两个卷。这将重复进行,直到您达到目标为止,例如直到空间中只包含应该在屏幕上绘制的多边形为止。门户和牢房:(又名Portal淘汰)用于室内场景和/或第一人称射击。场景被划分为与投掷门户(例如门)相连的单元(例如建筑物的房间)。您可以将门户设置为打开和关闭。

假设您对图形流水线有基本的了解,我尝试着重于光栅化。您也可以看看照明和阴影或其他东西。.

这些仅包括一些可能包含在项目中的技术。由于我在stackexchange上没有足够的声誉,因此我无法提供许多链接,但是您会在google中找到所有这些东西:)

评论


$ \ begingroup $
问题是关于软件(阅读:CPU)栅格化的问题。您提供的一些信息通常与栅格化有关,在我的书中,有些技术与栅格化完全无关。您能否在答案中阐明这些技术如何使用软件光栅化或从中受益?
$ \ endgroup $
– David Kuri
16年1月7日在12:42