OpenGraphics Library®(OpenGL®)阴影是三维(3D)OpenGL®场景中阴影在类似照明条件下如何在现实生活中投射的视觉近似。阴影是在OpenGL®中实现的复杂视觉功能,很大程度上是因为没有对在场景中投射阴影的固有支持,而是有多...
OpenGraphics Library®(OpenGL®)阴影是三维(3D)OpenGL®场景中阴影在类似照明条件下如何在现实生活中投射的视觉近似。阴影是在OpenGL®中实现的复杂视觉功能,很大程度上是因为没有对在场景中投射阴影的固有支持,而是有多种技术可以使用各种工具从场景中的对象和几何体创建阴影,例如各种可用的缓冲区、着色器,在某些情况下,允许访问某些显卡上的特殊功能的扩展。在大多数情况下,质量,OpenGL®阴影渲染的准确性和速度与计算机或设备中的图形硬件的处理能力和内存直接相关。实现OpenGL®阴影的一些更流行的方法包括阴影体积,阴影映射和光线跟踪。阴影有助于使3D图像具有更好的深度感。创建具有OpenGL®阴影支持的应用程序需要数学知识和对OpenGL®工作原理的深入理解。OpenGL®主要用于创建动态的、实时渲染的3D场景,因此,用于创建阴影的算法不仅要优化速度,还必须仔细测量其资源消耗以及用于渲染的图形管道中可能造成的任何中断。基于这些原因,创建阴影的最基本方法,称为光线跟踪,从一个或多个光线源的角度来跟踪一个或多个物体的表面位置,基本上是不切实际的在光栅化过程中,将3D场景绘制到二维(2D)曲面以便显示,必须对绘制的每个像素执行光线跟踪过程,尤其是使用纹理或其他曲面属性,可能需要多次评估相同的像素。这意味着实时光线跟踪虽然可以精确地渲染阴影,但通常并不实用。另一种可用于创建OpenGL®阴影的方法称为阴影映射。此方法使用深度或模板缓冲区从光源角度渲染场景作为从光源到场景中不同对象表面的一系列距离。然后从正确的视角再次渲染场景,检查每个像素是否落在缓冲区内的某个距离范围内,指示像素是亮还是暗。使用阴影映射可以内存密集型,对于具有多个光源的场景,可能需要从多个角度制作多个贴图。阴影体积是创建OpenGL®阴影的一种方法,比其他方法更精确,但它也有其自身的问题。阴影体积本质上是场景中一个不可见的几何体,它从一个物体的发光表面扩展到远离光源的地方。这个体积可以与其他物体进行对比,看看它们是否落在产生该体积的表面的阴影中。这个过程可以非常复杂,最终在优化速度时产生视觉效果
-
发表于 2020-08-07 23:34
- 阅读 ( 997 )
- 分类:电脑网络