Home 计算机图形学笔记
Post
Cancel

计算机图形学笔记

光栅渲染技术

栅格化:将几何数据 进过变换后 最终变为一些列像素点数据,最终呈现在显示设备上的过程

光栅化:rasterization

将矢量点组成的图形进行像素化的过程

光线投射:ray casting

正向投射,从图像的每一个像素,沿视线方向发射光线,光线穿越整个图像序列,并在这个过程中,对图像序列进行采样获取颜色信息,同时依据光线吸收模型将颜色值进行累加,直至光线穿越整个图像序列,最后得到的颜色值就是渲染图像的颜色(像素点位置–》像素点颜色)

光线追踪:ray tracing

逆向追踪,沿着到达视点的光线的反方向跟踪,经过屏幕上每一个象素,找出与视线相交的物体表面点,并继续跟踪,找出影响点光强的所有光源,从而算出点上精确的光线强度。(视角–像素位置–投影光源计算颜色)

渲染时机:

  1. 实时渲染:游戏等,根据输入,实时的计算输出
  2. 离线渲染:电影等,直接将渲染好的 所有像素帧序列显示

GPU Graphic Process Unit

最初被设计时就是用来做实时的图像渲染(光栅化)的加速的。如果实时渲染器中只使用cpu的渲染器叫做软光栅渲染器,速度慢

GPU采用了数量众多的计算单元和超长的流水线,但只有非常简单的控制逻辑并省去了Cache。GPU的特点是有很多的ALU和很少的cache. 缓存的目的不是保存后面需要访问的数据的。

GPU对于计算量大,但是单个计算难度简单的,并且要重复多次的任务使用,这些可并行,且要反复迭代收敛的东西,通常都是GPU相对擅长的领域。除了图形加速,还有机器学习,人工智能,并行计算等等,当然还可以挖矿这样的

渲染管线

渲染管道或者渲染管线,是一个概念模型,描述了图形系统在将3D场景渲染到2D屏幕时需要执行的步骤。(就是流水线相关的流程?)

  1. 应用程序阶段(CPU)

开发者通过程序的方式对图元数据等信息进行配置和调控,最后传输到下个阶段(输入是用户需求–输出是图元绘制信息)

作用:在应用程序阶段通常可以实现的有碰撞检测、加速算法、输入检测,动画,力反馈以及纹理动画,变换、仿真、几何变形,以及一些不在其他阶段执行的计算,如层次视锥裁剪等加速算法就可以在这里实现。

  1. 几何阶段 The Geometry Stage

    1. 模型视点变换 Model & View Transform:由模型自己的坐标系转换到世界坐标系,然后到视觉空间。由于坐标系的的选取不同而进行的变换(坐标系变换)
    2. 顶点着色 Vertex Shading:什么是着色呢,着色是指确定材质上的光照效果的这种操作,实际就是确定颜色。因为我们对于渲染而言的要求并不是说只是为了要一个形状和位置,我们还要让他真实或者其他的风格,这个时候就需要着色器来编写颜色方程放在GPU里运行,快速的进行颜色的确定(着色 确定颜色)
    3. 投影 Projection:从三维到二维空间的映射(也是 坐标映射)
    4. 裁剪 Clipping:对于在屏幕空间外的物体,我们并没有必要去计算它的颜色等等信息(裁剪 节省计算)
    5. 屏幕映射 Screen Mapping:屏幕映射阶段的主要目的,是将之前步骤得到的坐标映射到对应的屏幕坐标系上(坐标转换)
    6. 光栅化阶段 The Rasterizer Stage(GPU)()
This post is licensed under CC BY 4.0 by the author.

Posix pthread基本使用

骑行进藏规划