opengl和directx怎样选择 opengl和directx哪个用来运行游戏

2023-04-01 10:31:24

opengl和directx怎样选择 opengl和directx哪个用来运行游戏

opengl和directx怎样选择 opengl和directx哪个用来运行游戏?很多人不了解,今天趣百科为大家带来相关内容,下面小编为大家整理介绍。

向前渲染延迟着色向前(基于图块的正面和背面渲染)

介绍

正向渲染通过栅格化场景中的每个几何对象来工作。在着色过程中,通过迭代每个光线来决定几何对象的光照方式,这意味着每个几何对象都需要考虑场景中的所有光线。当然,我们也可以通过丢弃在相机视觉锥内被遮挡或不可见的几何对象来进行优化,我们还可以通过丢弃不在相机视觉锥内的光线来进一步优化。如果光线范围是已知的,我们可以在渲染场景几何体之前消除光锥。物体剔除和光锥剔除只能为正向渲染提供有限的优化,光线剔除在正向渲染中通常不可行。更常见的是减少影响场景中场景对象的灯光数量。例如,一些图形引擎每像素使用两到三个光源,每顶点使用三到四个光源。在OpenGL和DirectX提供的传统固定渲染管道中,场景中活动的动态灯光数量被限制为8个。即使在现代图形硬件中,在感知的帧速率问题发生之前,前向渲染管道中的动态场景灯光的数量被限制为100。

另一方面,延迟着色是通过将所有(非照明)场景对象光栅化到一系列2D纹理缓冲区来实现的,这些缓冲区存储后续照明过程中所需的几何信息。存储在2D纹理缓冲器中的信息包括3360。

图一。这些纹理构成了G-Buffer:漫反射(左上)、高光(右上)、法线(左下)和深度(右下),高光因子存储在高光纹理(右上)的alpha通道中。这些2D纹理缓冲区的组合也称为几何缓冲区或G-Buffer1。

生成G缓冲区后,可以使用几何信息来计算照明过程中的照明信息。在照明过程中,每个光源都作为一个几何对象执行,与灯光表示的几何相交的每个像素都使用所需的照明方程式着色。

延迟渲染的一个缺点是,只有不透明的对象才能光栅化到G-Buffer,因为多个半透明的对象可以覆盖同一个屏幕像素,而G-Buffer中的每个像素只能存储一个值。在照明过程中,深度值,曲面法线,漫反射颜色和高光颜色由当前屏幕像素采样以进行照明,因为每个G缓冲区只能采样一个值,透明对象不能在过程中被照明。为了解决这个问题,透明几何体必须使用标准的正向渲染技术进行渲染,这可以限制场景中透明对象或动态光源的数量。仅包含不透明对象的场景可以处理大约2000个动态光源,而不会出现帧率问题。

Forward+

光线剔除正向渲染图2

第二个过程使用标准正向渲染为每个对象着色。与每个穿越场景的动态灯光不同,当前像素的屏幕空间位置用于查找在先前过程中计算的当前栅格的灯光列表。与标准正向渲染相比,照明

剔除可以带来明显的性能提升,因为它大大减少了像素正确光照所需要迭代的冗余灯光数量。不透明物体和透明物体都可以使用相似的行为进行处理,而不会有明显的性能损失,并且多材质和多光照模型是Forward+原生支持的。

Scene

Pass

Technique

Pipeline State

Shader: 顶点shader(vertex shder),细分shader(tessellation shader),几何shader(geometry shader)和像素shader(pixel shader。光栅化状态(Rasterizer state): 多边形填充模式(fill mode),裁剪模式(culling model),scissor, viewport融合状态(blend state)depth/stencil staterender target其中,dx12等不同的渲染API都会引入一些不同的管线状态。

前向渲染是一个通常只有两个pass的渲染技术:

透明Pass会渲染所有的透明对象,理想情况下,为了能正确blend,场景应当从后向前进行排序(相对于相机),在该pass下,alpha blend需要被开启,使用得半透明材质能与已经渲染到render target的像素进行正确的blend。

延迟渲染

几何Pass光照Pass透明Pass第一个Pass是与前向渲染的不透明Pass相似的几何Pass,只有不透明对象在该Pass中被渲染,不同的是几何Pass不执行任何的光照计算,但只输出几何和材质数据到前面介绍的G-Buffer中。

最后一个Pass是透明Pass,该Pass与前向渲染的中透明Pass是完全相同的。因为延迟渲染不支持透明材质,因此透明物体需要在一个使用标准前向渲染的独立的Pass中被渲染。

Forward+(也被称为基于tile的前向渲染)是包含三个主要pass的渲染技术:

不透明灯光索引列表透明灯光索引列表不透明灯光索引列表被用来渲染不明秀几何体,透明灯光索引列表用来渲染透明几何体。

A light refers to one of the following types of lights:

灯光是指下面几种灯光的一种:

点光源聚光灯(Spot light)方向光本文中所描述的渲染技术都支持了这三种灯光类型,但没有支持区域光。点光源和聚光灯被模拟成从一个点向外发射,方向光被认为是从无限远处的一点发射光线,任何地方都具有相同的方向。点光源和聚光灯都有一个有限的范围,超过这个范围强度会下降到0,光强度的下降称为衰减(attenuation)。点光源被描述成一个球,聚光灯作为一个圆椎体,方向光是全屏幕的四方形(quad)。

上一篇

热门阅读