vs对于shader的插件:http://blog.shuiguzi.com/shaderlabvs-release-page.html

计算机有一块重要的组成部分,就是“显卡”,大家玩游戏的话,肯定是会配置一块好的显卡,

因为3D游戏绘制过程的计算大部分都是由显卡来完成的,而实际上CPU工作的负荷相对是比较低的,

那么显卡到底做了什么呢,它是接受CPU传递给它的一个3D模型,那么显卡会通过一个固定的处理流程之后,

最终会返回给CPU一个2D的图形,中间显卡处理的过程,我们叫它“渲染管线流程”

渲染管线流程细分

1、顶点处理

2、面处理

3、光栅化

4、像素处理

一、顶点处理

(1)定点变换

将每个物体的位置转换为世界坐标

我们知道一个FBX文件是由maya或者3Dmax这些软件制作而成的,它其实是一个二进制文件,而这个二进制文件实际上存储的是模型的坐标点

如果我们把一个fbx的模型拉近看一下,就能看到此模型上有很多的点和线

这个fbx文件存储的就是这些点的坐标(x,y,z)以及存储每个点跟哪个点相连的信息,有了这些坐标之后,再通过线段的连接,3个点就会成为一个面,

很多个这样的面,最终就会组成为一个模型

在fbx存储的都是相对于自己的一个坐标,我们要把它自己的一个坐标转换成一个全局的坐标,也就是以世界作为参考的一个点!

(2)观察坐标系-投影坐标系

将每个物体从世界坐标投影到观察者的投影平面上(也就是说把3D的坐标转换成2D的坐标)

每个物体的世界坐标相当于Scene场景视图,观察者的投影平面相当于Game视图

二、面处理

(1)面的组装

就是每个点对应相连接成面之后,面与面之间再组装成模型

(2)面的剔除

就是摄像机看不到的模型,那么显卡就没有必要去渲染它们了,所以这个模型的所有面都会被剔除掉,它不会参与计算,能够优化显示性能

(3)面的截取

摄像机、包括我们人所看到的范围实际上都是一个椎体,人的眼睛为出发点,是一个顶点,眼睛会有一个角度,视角能看到一个最远的地方

因为人能看到的区域是一个椎体,所以3D引擎里面拿了一个摄像机的椎体视角范围来模拟人看到的范围

有可能某些模型的面比人看到的范围还大,那么就会在边缘处就会做一些裁剪,这就是面的截取

三、光栅化

将以向量为基本的面转换成一个个点阵形式的像素集合

模型相当于是一个矢量(既有大小又有方向的量)的内容,模型上由某一个点到某一个点之间,它是一个距离,

但是实际上,用户在设备上最终输出的都是以像素点来输出的,会把一个平面拆分成一个一个的像素点,每一个像素点在后面会做单独的处理,

如果一个像素点区域被两个模型所占,如果一个模型为黄色,一个为红色,那么最终这个像素只能以一种颜色进行输出,

光栅化就会做这样的处理,让一个像素点上只会出现一种颜色

Pixel:像素      Triangle:三角形      Covered Pixels:覆盖的像素

四、像素处理

将以向量为基本的面转换成一个个点阵形式的像素集合

对每个像素区域进行着色

对像素贴上贴图

最终形成2D画面

最新文章

  1. WPF 自定义列表筛选 自定义TreeView模板 自定义ListBox模板
  2. spring 定时任务配置
  3. 《python核心编程》笔记——文件的创建、读取和显示
  4. ThinkPHP函数详解:F方法(快速缓存方法)
  5. SparkContext源码阅读
  6. Apk去签名校验详解
  7. php网站的定时事件
  8. 剑指Offer27 数组中超过一半的数
  9. CS0016: 未能写入输出文件“c:\windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\data\34aae060\b7daa87d\App_Web_addadvice.aspx.cdcab7d2.ekhlcbjd.dll”--“目录名无效。 ”
  10. twitter 监测登陆活动
  11. UITableView回调和table相关成员方法详解
  12. Android-Volley网络通信框架(ImageRequest,ImageLoader,NetWorkImageView)
  13. Java - Instrumentation
  14. eclipse 中git无法https下载提交代码
  15. JS中undefined和null的区别,以及出现原因
  16. mongo学亮的分享
  17. ubuntu 配置dns访问外网
  18. vs2010开发activex(MFC)控件/ie插件(二):js传参数
  19. copy "xxxxx\xx.dll xxxxxxx\ ” 已退出,代码为1 错误解决方法
  20. hdu 3367 Pseudoforest (最小生成树)

热门文章

  1. Android(java)学习笔记70:TabActivity使用
  2. VedioCapture
  3. 第33章 TIM—电容按键检测—零死角玩转STM32-F429系列
  4. Oracle SCN与时间的相互转换
  5. 理解css中的position属性
  6. 第34-3题:LeetCode437. Path Sum III
  7. Uboot S3C2440 BL1 的流程
  8. 解决.NET Core R1中文乱码问题
  9. Ubuntu16.04下配置ssh免密登录
  10. 数据分析处理库Pandas——数据透视表