当前位置: 首页 >  网站大师 >  A-Buffer简介

A-Buffer简介

导读:A-Buffer简介.A-Buffer是一种图形学(渲染方向)上的用于可见面分析(Visble Surface Detection)的技术。.可见面分析最常见的技术有以下三种:.Z-Buffer 算法(或者叫 Depth-Buffer 算法).Back-Face Detectio

A-Buffer简介

A-Buffer是一种图形学(渲染方向)上的用于可见面分析(Visble Surface Detection)的技术。

可见面分析最常见的技术有以下三种:

  1. Z-Buffer 算法(或者叫 Depth-Buffer 算法)
  2. Back-Face Detection方法,该方法用于剔除不可见(反方向的)面
  3. A-Buffer 方法,也是本文要介绍的方法。

A-Buffer是Z-Buffer方法是Z-Buffer的衍生方法,因此了解ABuffer有必要回顾一下ZBuffer。

Z-Buffer的缺陷

Z-Buffer是用于剔除 不透明 物体的算法。假设某个像素有A B C三个不透明物体重叠,A在最上面,B在中间,C在最底下,那么Z- Buffer的结果就是A,意味着B、C都被A遮蔽 了,因此可以针对该像素点剔除

Z-Buffer是一个用于存储深度信息的算法,其大小与Color Buffer一致,每一个像素对应一个深度信息。Z-Buffer永远存储距离屏幕最近的点的深度信息

算法的伪代码可以表示如下:

Init Z-Buffer as size = sizeof(ColorBuffer), All one initialized
# P.S. 0 <= ZBuffer [x,y] <= 1
For each object in ObjectsToRender:
    if object.pixel.depth < ZBuffer[object.pixel.xy]:
        ZBuffer[object.pixel.xy] = object.pixel.depth
        render this object
    else:
        Not to render this object

该算法只适用于不透明物体 。因为渲染半透明物体需要各个半透明物体的相对位置信息来正确地颜色混合(Blending)(见半透明渲染部分)。

Z-Buffer 的衍生

虽然Z-Buffer不适用于半透明物体渲染,但是将Z- Buffer稍微做修改就能渲染半透明物体。修改的目的是为了在渲染时保留各个半透明的顺序信息,也即,针对每一个像素而言,需要记录的不仅仅只是一个单一的深度信息,还要记录下该像素关联了哪些图元

这种修改又称为A-Buffer,即Accumulation Buffer, Accumulation 取“累计 ”之意,意为该Buffer针对每一个像素记录累计 的图元信息。

具体实现方法参见:A-Buffer Method from GeeksForGeeks

内容
  • 软件工程国家标准
    软件工程国家标准
    2023-12-03
    1、标准化基础知识.1.1、标准的层次.国际标准.国家标准.行业标准.地方标准.企业标准.1.2、标准的类型.强制性标准
  • 二阶段目标检测网络-Faster RCNN 详解
    二阶段目标检测网络-Faster
    2023-12-01
    Faster RCNN 网络概述.Conv layers.RPN 网络.Anchors.生成 RPN 网络训练集.pos
  • Git是如何工作的
    Git是如何工作的
    2023-12-12
    Git是如何工作的.首先,必须确定代码的存储位置。 常见的假设是只有两个位置 , 一个位于 Github 等远程服务器上
  • 翻越相机标定的奥林匹斯
    翻越相机标定的奥林匹斯
    2023-12-07
    在机器视觉领域,相机标定是不可或缺的一步,而张氏标定法,因其灵活性,是各种标定方法中最有影响力的一种,称其为相机标定的
  • 汽车ECU软件开发之应用层软件与底层软件
    汽车ECU软件开发之应用层软件与
    2023-12-03
    随着汽车产品日渐趋向电子化,人们对各类先进的安全系统、高级驾驶辅助系统的接受程度日益提升。而原本昂贵的盲点检测、自动紧急
  • c++ function使用
    c++ function使用
    2023-12-11
    一、function介绍.funciotn是从c++11开始支持的特性,使用它需要包含头文件.在cppreference