第一种分类方式:

图形管道(如下7步):

顶点数据 : 由3D模型传递的三角形网格

顶点着色 : 编写CG程序对各个顶点进行着色

生成几何图元 : 连接特定的顶点生成几何图元,例如连接三个顶点生成一个三角形图元

光栅化 : 对几何图元包围的像素进行插值,例如颜色插值

片段着色 : 编写CG程序对各个片段进行着色

逐片段操作 : 对各个片段进行设置操作

帧缓存 : 计算后的片段颜色中记录的像素序列

2.2

渲染流水线的三个概念阶段:
应用阶段 → 几何阶段 → 光栅化阶段

2.3.1

(应用阶段) 顶点数据 →
(几何阶段) 顶点着色器 → 曲面细分着色器 → 几何着色器 → 裁剪 → 屏幕映射 →
(光栅化阶段) 三角形设置 → 三角形遍历 → 片元着色器 → 逐片元操作 →
屏幕图像

2.3.2 顶点着色器:
必须完成 : 将顶点从模型空间转换到齐次裁剪空间
齐次裁剪空间下的点,经过硬件做透视除法后,得到在NDC(归一化的设备坐标)下的坐标
顶点着色器常见的输出路径:经过光栅化后交给片元着色器进行处理,当然还可以接着交给曲面细分着色器,或者几何着色器

2.3.3 裁剪:
物体角度的定义:对于不在摄像机视野范围内的物体不予处理
图元角度的定义:图元角度的裁剪是在NDC(Normalized Device Coordinates)下进行的,只有与NDC有交叉的图元才会被裁剪,不在NDC内的顶点会被舍弃,在图元与NDC相交的位置会生成新的顶点
图元与摄像机视野范围的关系有三种:完全在视野内、完全在视野外、部分在视野内部分在视野外
该步骤不可编程可配置

2.3.4 屏幕映射:
输入的顶点是处于NDC下
目的:把输入的三维坐标下的顶点的x、y坐标转换到屏幕坐标下,这一过程其实就是一个缩放过程
该过程不会对顶点的z坐标进行任何处理。屏幕坐标和顶点的z坐标(其实变化为屏幕顶点的深度)共同构成一个坐标系,叫做窗口坐标系。这些值会被一起传到光栅化阶段
某个顶点进行屏幕映射后得到的屏幕坐标决定了这个顶点对应屏幕上的哪个像素以及距离这个像素有多远

2.3.5 三角形设置:
计算表示一个三角形网格所需要的数据的过程

2.3.6 三角形遍历:
检查每个像素是否被一个三角形覆盖,如被覆盖则会生成一个片元(fragment)。
这样一个找到哪些像素被三角形网格覆盖的过程就叫做三角形遍历。
这一步的输出:得到一个片元序列。注意,这里不是生成像素

2.3.7 片元着色器:

2.3.8 逐片元操作:
1、决定每个片元的可见性,经过很多测试,例如,深度测试、模板测试等
2、若一个片元通过了所有的测试,就需要把这个片元的颜色值和已经存储在颜色缓冲中的颜色进行合并,或者说是混合。
该过程是高度可配置的
片元 → 模板测试 → 深度测试 → 混合 → 颜色缓冲

《UnityShader入门精要》学习笔记之渲染流水线的更多相关文章

  1. 《VC++ 6简明教程》即VC++ 6.0入门精讲 学习进度及笔记

    VC++6.0入门→精讲 2013.06.09,目前,每一章的“自测题”和“小结”三个板块还没有看(备注:第一章的“实验”已经看完). 2013.06.16 第三章的“实验”.“自测题”.“小结”和“ ...

  2. Unity Shader入门精要读书笔记(二)UnityShader概述

    第三章<UnityShader概述>的读书笔记: 1.Unity Shader模板提供了几种选择: 标准光照模型(新添加的基于物理的渲染方法) 不含光照的基本的顶点.片元着色器 屏幕后处理 ...

  3. Unity Shader入门精要读书笔记(一)序章

    本系列的博文是笔者读<Unity Shader入门精要>的读书笔记,这本书的章节框架是: 第一章:着手准备. 第二章:GPU流水线. 第三章:Shader基本语法. 第四章:Shader数 ...

  4. React入门基础(学习笔记)

    这篇博客是我通过阅读React官方文档的教程总结的学习笔记,翻译可能存在误差,如有疑问请参见http://reactjs.cn/react/docs/tutorial.html . 一.所需文件 在编 ...

  5. React学习笔记 - 元素渲染

    React Learn Note 3 React学习笔记(三) 标签(空格分隔): React JavaScript 二.元素渲染 元素是构成react应用的最小单位. 元素是普通的对象. 元素是构成 ...

  6. ‎Cocos2d-x 学习笔记(25) 渲染 绘制 Render

    [Cocos2d-x]学习笔记目录 本文链接:https://www.cnblogs.com/deepcho/p/cocos2dx-render.html 1. 从程序入口到渲染方法 一个Cocos2 ...

  7. Unity3D学习笔记12——渲染纹理

    目录 1. 概述 2. 详论 3. 问题 1. 概述 在文章<Unity3D学习笔记11--后处理>中论述了后处理是帧缓存(Framebuffer)技术实现之一:而另外一个帧缓存技术实现就 ...

  8. Java8——快速入门手册(学习笔记)

    github博文传送门 Java8特性学习笔记 Java8中新增了许多的新特性,在这里本人研究学习了几个较为常用的特性,在这里与大家进行分享.(这里推荐深入理解Java 8用于理解基础知识)本文分为以 ...

  9. 学习Vue 入门到实战——学习笔记

    闲聊: 自从进了现在的公司,小颖就再没怎么接触vue了,最近不太忙,所以想再学习下vue,就看了看vue相关视频,顺便做个笔记嘻嘻. 视频地址:Vue 入门到实战1.Vue 入门到实战2 学习内容: ...

随机推荐

  1. spring boot mvc系列-静态资源配置与MappingHandler拦截器

    静态资源配置 Spring Boot 默认将 /** 所有访问映射到以下目录: classpath:/static classpath:/public classpath:/resources cla ...

  2. Computer Study

    2017.12.15日开始制定长期学习计划: 大二上: 目前短期计划: 1.每天一道PAT乙级(弄完PAT乙级)+校OJ(打基础).   2.先复习C++,17周后开始复习数据结构.(补任务  刚刚发 ...

  3. Java1.7 HashMap 实现原理和源码分析

    HashMap 源码分析是面试中常考的一项,下面一篇文章讲得很好,特地转载过来. 本文转自:https://www.cnblogs.com/chengxiao/p/6059914.html 参考博客: ...

  4. maven项目出现红色感叹号报错

    背景 在eclipse部署maven项目的时候,项目出现红色的感叹号导致项目无法启动. 解决步骤 1.右键项目——>Maven——>Update Project ,弹出下框: 点击OK. ...

  5. CSV是什么文件格式【转】

    本文转载自:https://blog.csdn.net/huyanping/article/details/6384687 CSV即Comma Separate Values,这种文件格式经常用来作为 ...

  6. HDU - 1875 畅通工程再续【最小生成树】

    Problem Description 相信大家都听说一个"百岛湖"的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现.现在政府决定大力发展百岛湖 ...

  7. 【Dalston】【第六章】API服务网关(Zuul) 下

    Zuul给我们的第一印象通常是这样:它包含了对请求的路由和过滤两个功能,其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础.过滤器功能则负责对请求的处理过程进行干预,是实 ...

  8. Chrome浏览器F12开发者工具的几个小技巧总结

    1.直接修改页面元素 选择页面上元素,右键“检查”,会打开开发者工具窗口,显示当前选择元素的源代码,可以双击进行修改.如果要修改的东西比较多,可以折叠元素并单击选择,再右键Edit as HTML修改 ...

  9. Linux(CentOS)上面搭建Nginx环境

    总体上来说,Linux 这个系统其实挺好用的 除了看不见界面,但是用起来确实是比Window好用太多了,不废话了,直接说搭建环境的步骤! 安装Nginx 编译运行时的环境 参考博客:http://ww ...

  10. 常用的 Linux 命令

    列出文件列表:ls [参数 -a -l]创建目录和移除目录:mkdir rmdir用于显示文件后几行内容:tail打包:tar -xvf打包并压缩:tar -zcvf查找字符串:grep显示当前所在目 ...