主要是对第二章的整理

渲染流水线:由一个三维场景出发,生成(渲染)一张二维图像。

渲染流程:应用阶段、几何阶段、光栅化阶段

应用阶段:

1. 把数据加载到显存中

渲染所需数据从硬盘,到内存,再到显存

2. 设置渲染状态

渲染状态:使用哪个顶点着色器、片元着色器、光源属性、材质等

3. 调用Draw Call

发起方CPU,接收方GPU

GPU流水线

以下为几何阶段主要步骤

顶点着色器:

  1. CPU输入的每一个顶点都会调用一次顶点着色器
  2. 不创建或销毁任何顶点,且顶点之间相互独立
  3. 坐标转换:把顶点坐标从模型空间转换到齐次裁剪空间,归一化的设备坐标NDC(-1,-1,-1)到(1,1,1)
  4. 可以通过改变顶点位置来模拟水面、布料等
  5. 逐顶点光照

 

裁剪:

一个图元和摄像机视野的三种关系:

  1. 完全在视野内
  2. 完全在视野外
  3. 部分在视野内(产生新的顶点)

 

屏幕映射:

把每个图元的x、y坐标转换到屏幕坐标系

OpenGL:左下角(0,0)

DirectX:左上角(0,0)

以下为光栅化阶段主要步骤

三角形设置:

上一阶段得到的是三角形每条边的两个端点,三角形设置计算边界像素的坐标信息

三角形遍历:

  1. 检查每个像素是否被一个三角网格所覆盖。如果覆盖,就会生成一个片元(Fragment)
  2. 一个片元不是真正意义上的像素,而是包含很多状态的集合,这些状态用于计算每个像素的最终颜色。(屏幕坐标、深度信息、法线、纹理坐标等)

片元着色器:

  1. 计算该片元的输出颜色
  2. 可以完成很多重要的渲染技术(如纹理采样等)
  3. 仅可影响单个片元(导数信息例外)

 

逐片元操作:

  1. 决定每个片元的可见性(深度测试、模板测试等)
  2. 通过测试的片元的颜色值和已经存储在颜色缓冲区中的颜色进行合并(混合)

Draw Call中造成性能问题的元凶是CPU

为了让CPU和GPU可以并行工作,两者之间有个命令缓冲区。CPU通过图像编程接口向命令缓冲区添加指令,GPU从中读取指令并执行。

命令缓冲区的指令有很多种类:

  1. Draw Call
  2. 改变渲染状态(改变使用的着色器、使用不同的纹理等)

《Unity Shader入门精要》读书笔记(1)的更多相关文章

  1. 【读书笔记】《Computer Organization and Design: The Hardware/Software Interface》(1)

    笔记前言: <Computer Organization and Design: The Hardware/Software Interface>,中文译名,<计算机组成与设计:硬件 ...

  2. 算法设计手冊(第2版)读书笔记, Springer - The Algorithm Design Manual, 2ed Steven S.Skiena 2008

    The Algorithm Design Manual, 2ed 跳转至: 导航. 搜索 Springer - The Algorithm Design Manual, 2ed Steven S.Sk ...

  3. [读书笔记]设计原本[The Design of Design]

    第1章 设计之命题 1.设计首先诞生于脑海里,再慢慢逐步成形(实现) 2.好的设计具有概念完整性:统一.经济.清晰.优雅.利落.漂亮... 第2章 工程师怎样进行设计思维——理性模型 1.有序模型的有 ...

  4. 《Unix编程艺术》读书笔记(1)

    <Unix编程艺术>读书笔记(1) 这两天開始阅读该书,以下是自己的体会,以及原文的摘录,尽管有些东西还无法全然吃透. 写优雅的代码来提高软件系统的透明性:(P134) Elegance ...

  5. 【英语魔法俱乐部——读书笔记】 3 高级句型-简化从句&倒装句(Reduced Clauses、Inverted Sentences) 【完结】

    [英语魔法俱乐部——读书笔记] 3 高级句型-简化从句&倒装句(Reduced Clauses.Inverted Sentences):(3.1)从属从句简化的通则.(3.2)形容词从句简化. ...

  6. 【英语魔法俱乐部——读书笔记】 2 中级句型-复句&合句(Complex Sentences、Compound Sentences)

    [英语魔法俱乐部——读书笔记] 2 中级句型-复句&合句(Complex Sentences.Compound Sentences):(2.1)名词从句.(2.2)副词从句.(2.3)关系从句 ...

  7. Computer architecture Computer organization

    COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCEComputer architectureNINTH EDITION C ...

  8. 图解TCP/IP读书笔记(一)

    图解TCP/IP读书笔记(一) 第一章 网络基础知识 本学期的信安概论课程中有大量的网络知识,其中TCP/IP占了相当大的比重,让我对上学期没有好好学习计算机网络这门课程深感后悔.在老师的推荐下开始阅 ...

  9. 《Linux/Unix系统编程手册》读书笔记8 (文件I/O缓冲)

    <Linux/Unix系统编程手册>读书笔记 目录 第13章 这章主要将了关于文件I/O的缓冲. 系统I/O调用(即内核)和C语言标准库I/O函数(即stdio函数)在对磁盘进行操作的时候 ...

  10. 《Linux/Unix系统编程手册》读书笔记7 (/proc文件的简介和运用)

    <Linux/Unix系统编程手册>读书笔记 目录 第11章 这章主要讲了关于Linux和UNIX的系统资源的限制. 关于限制都存在一个最小值,这些最小值为<limits.h> ...

随机推荐

  1. [译文]Casperjs1.1.0参考文档-安装

    安装 Casperjs能被安装在mac osx,windows 和大多数linux版本 依赖项 PhantomJS1.82及以上 Python2.6及以上(很多人忘了安装python导致安装失败) 1 ...

  2. pytest的一些你爱不释手的插件

    1. pytest-html 安装: pip install pytest-html # 通过pip安装pytest-html 运行测试文件的时候,命令行加上对应参数即可 比如:pytest test ...

  3. mtd-util

    1.1.4.1. mtd-util简介 mtd-util,即mtd的utilities,是mtd相关的很多工具的总称,包括常用的mtdinfo,flash_erase, flash_eraseall, ...

  4. setinterval 里面的方法记得加引号

    setinterval 里面的方法记得加引号 否则不执行

  5. flex弹性布局,好用

    一直不太喜欢自己布局前端页面,都是扒别人的页面 ,最近在练习小程序,页面无处可扒,只有自己布局 发现flex弹性布局真好用,布局起来很简单,实现的效果也很好,赞 以后可以自己写一点前端了,哈哈

  6. kotlin 注意的地方

    1 . kotlin let 用法: let(val -> ) 注意:这  -> 后面不能有 花括号!!!! 2 . kotlin 中 如果使用了 @Transactional 注解.请让 ...

  7. web 服务器安全防范

    apache 关闭目录 配置文件:安装目录/Apache/conf/httpd.conf <Directory /> #默认就会把/ 的目录暴漏出来:关闭方法: Options -Inde ...

  8. php 常用字符集

    ASCII 字符集 单字节编码,7位(bits)表示一个字符,共128字符 包含内容 控制字符:回车键.退格.换行键等. 可显示字符:英文大小写字符.阿拉伯数字和西文符号 ANSI 码  ANSI编码 ...

  9. linux 检测服务器端口工具

    #nmp# nmap 127.0.0.1 #netstat# netstat -anlp | grep 22 #telnet# 服务器端口即使处于监听状态,但是防火墙iptables屏蔽了该端口,是无 ...

  10. HDU - 1427 / UESTC - 1252 经典dfs

    很好奇为什么hzwer那种稍改一下还是无法过样例,代码我没看出问题 换了一种用桶组合挑取两个数不断回溯的做法 这是HDU1427的代码,后者改一改就行了 #include<bits/stdc++ ...