Shader笔记(渲染管线)

  • 渲染管线流程作用:输入3D模型,输出2D图片。
顶点处理,面处理,光栅化,像素处理
  • 顶点处理:进行坐标变换和光照计算。生成可用于渲染到投影空间的顶点坐标、颜色、纹理坐标。通过一系列的坐标系转换,将模型的顶点在摄像机前进行位移,并最终投影到摄像机的投影屏幕上。顶点变换这一阶段包括顶点的坐标变换、逐顶点雾化、材质属性和光照属性处理。

本地坐标系:以模型自己为中心。比如旋转、胳膊的摆动,等是以本地坐标系为参考。
观察坐标系:以摄像机作为原点。
观察坐标系转投影坐标系:将每个物体模型的位置从观察者所在的坐标体系中,转到观察者投影平面上。

  • 面处理(通常引擎处理)
包括 面组装 面截取 面剔除
面组装:
通常采用Triangle Strip
面截取 摄像机视角以外的顶点将被截取掉。
面剔除 1.求法线判断 正反面 法线:面的两个向量相乘 结果是与该两个向量垂直的,也就是这个面的法线。
2.视锥剔除:去掉在视锥外的面的部分。(就是距离镜头特别近的和距离镜头特别远的。判断方法:每个物体都有一个距离摄像机距离的Z值。通过硬件提供的深度缓存(Depth Buffer或者Z-Buffer)来判断。

3.遮挡剔除:去掉在覆盖在其他面后面的面的部分。 也需要深度缓存的支持。(深度缓存其实就是一张0-255的图层,每渲染一个像素都会进行当前像素深度值的检测,如果当前像素的深度值小于已经存储的深度值,说明这个像素更靠近摄像头,会把后面的遮盖住,这时候更新深度值为该像素。
  • 光栅化:以向量为基本结构的面转换成一个个点阵形式的像素
  • 像素处理:对每个像素区域进行着色,对像素贴上贴图。输入:像素的位置、深度、贴图坐标、法线、切线、颜色等。输出是每个像素的颜色、透明度。
  • 完整流程:

所有的渲染管线工作都是在GPU中进行,结果放在显存中,GPU每次输出一个 颜色值,放在 显存里,显存有交换链,显存每次输出一帧,后面一帧进行运算绘制,前面一帧显示完,后面一帧绘制完,进行交换,前面一帧缓存清空,再进行绘制。

固定管线:DX提供的渲染流程,很多地方没办法加入自己的算法,
可编程管线:Shader 可以加入自己的算法


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值