《Unity Shader入门精要》读书笔记(1)
主要是对第二章的整理
渲染流水线:由一个三维场景出发,生成(渲染)一张二维图像。
渲染流程:应用阶段、几何阶段、光栅化阶段。
应用阶段:
1. 把数据加载到显存中
渲染所需数据从硬盘,到内存,再到显存
2. 设置渲染状态
渲染状态:使用哪个顶点着色器、片元着色器、光源属性、材质等
3. 调用Draw Call
发起方CPU,接收方GPU
GPU流水线
以下为几何阶段主要步骤
顶点着色器:
- CPU输入的每一个顶点都会调用一次顶点着色器
- 不创建或销毁任何顶点,且顶点之间相互独立
- 坐标转换:把顶点坐标从模型空间转换到齐次裁剪空间,归一化的设备坐标NDC(-1,-1,-1)到(1,1,1)
- 可以通过改变顶点位置来模拟水面、布料等
- 逐顶点光照
裁剪:
一个图元和摄像机视野的三种关系:
- 完全在视野内
- 完全在视野外
- 部分在视野内(产生新的顶点)
屏幕映射:
把每个图元的x、y坐标转换到屏幕坐标系
OpenGL:左下角(0,0)
DirectX:左上角(0,0)
以下为光栅化阶段主要步骤
三角形设置:
上一阶段得到的是三角形每条边的两个端点,三角形设置计算边界像素的坐标信息
三角形遍历:
- 检查每个像素是否被一个三角网格所覆盖。如果覆盖,就会生成一个片元(Fragment)
- 一个片元不是真正意义上的像素,而是包含很多状态的集合,这些状态用于计算每个像素的最终颜色。(屏幕坐标、深度信息、法线、纹理坐标等)
片元着色器:
- 计算该片元的输出颜色
- 可以完成很多重要的渲染技术(如纹理采样等)
- 仅可影响单个片元(导数信息例外)
逐片元操作:
- 决定每个片元的可见性(深度测试、模板测试等)
- 通过测试的片元的颜色值和已经存储在颜色缓冲区中的颜色进行合并(混合)


Draw Call中造成性能问题的元凶是CPU
为了让CPU和GPU可以并行工作,两者之间有个命令缓冲区。CPU通过图像编程接口向命令缓冲区添加指令,GPU从中读取指令并执行。
命令缓冲区的指令有很多种类:
- Draw Call
- 改变渲染状态(改变使用的着色器、使用不同的纹理等)
《Unity Shader入门精要》读书笔记(1)的更多相关文章
- 【读书笔记】《Computer Organization and Design: The Hardware/Software Interface》(1)
笔记前言: <Computer Organization and Design: The Hardware/Software Interface>,中文译名,<计算机组成与设计:硬件 ...
- 算法设计手冊(第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 ...
- [读书笔记]设计原本[The Design of Design]
第1章 设计之命题 1.设计首先诞生于脑海里,再慢慢逐步成形(实现) 2.好的设计具有概念完整性:统一.经济.清晰.优雅.利落.漂亮... 第2章 工程师怎样进行设计思维——理性模型 1.有序模型的有 ...
- 《Unix编程艺术》读书笔记(1)
<Unix编程艺术>读书笔记(1) 这两天開始阅读该书,以下是自己的体会,以及原文的摘录,尽管有些东西还无法全然吃透. 写优雅的代码来提高软件系统的透明性:(P134) Elegance ...
- 【英语魔法俱乐部——读书笔记】 3 高级句型-简化从句&倒装句(Reduced Clauses、Inverted Sentences) 【完结】
[英语魔法俱乐部——读书笔记] 3 高级句型-简化从句&倒装句(Reduced Clauses.Inverted Sentences):(3.1)从属从句简化的通则.(3.2)形容词从句简化. ...
- 【英语魔法俱乐部——读书笔记】 2 中级句型-复句&合句(Complex Sentences、Compound Sentences)
[英语魔法俱乐部——读书笔记] 2 中级句型-复句&合句(Complex Sentences.Compound Sentences):(2.1)名词从句.(2.2)副词从句.(2.3)关系从句 ...
- Computer architecture Computer organization
COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCEComputer architectureNINTH EDITION C ...
- 图解TCP/IP读书笔记(一)
图解TCP/IP读书笔记(一) 第一章 网络基础知识 本学期的信安概论课程中有大量的网络知识,其中TCP/IP占了相当大的比重,让我对上学期没有好好学习计算机网络这门课程深感后悔.在老师的推荐下开始阅 ...
- 《Linux/Unix系统编程手册》读书笔记8 (文件I/O缓冲)
<Linux/Unix系统编程手册>读书笔记 目录 第13章 这章主要将了关于文件I/O的缓冲. 系统I/O调用(即内核)和C语言标准库I/O函数(即stdio函数)在对磁盘进行操作的时候 ...
- 《Linux/Unix系统编程手册》读书笔记7 (/proc文件的简介和运用)
<Linux/Unix系统编程手册>读书笔记 目录 第11章 这章主要讲了关于Linux和UNIX的系统资源的限制. 关于限制都存在一个最小值,这些最小值为<limits.h> ...
随机推荐
- redis incr自增指定的无限期 key 删除问题
不得不说,最近在使用redis的incr的功能的时候,着实是踩了不少的坑啊! 前面我写的一篇文章里面,我提到通过incr产生的键在用普通的get的方式去获取的时候,是获取不到的,所以我不得不通过特殊的 ...
- 本地localhost:端口号(自己设置的Apache的端口号)打不开问题解决了!开心、哭泣
想不来自己有多蠢!历经4个月再没学,刚开始xampp的端口问题解决不了,系统竟然会自动改回去端口数据(哭晕) 后来一直显示Apache端口80占用,各种百度之后发现单纯浏览器都访问不了localhos ...
- php 替换 oracle 数据字段中“看不见”换行符号
工作需要,把oracle中的数据导出csv,导出代码如下:<?php$file_name = "申請書承認(予定休出).csv";header("Content-D ...
- JavaWeb学习笔记(四)—— response
一.response概述 response是Servlet.service方法的一个参数,类型为javax.servlet.http.HttpServletResponse.在客户端发出每个请求时,服 ...
- github提交项目
1.建立git仓库 在GitHub上先新建一个仓库. 新建一个文件夹 cd git clone https://github.com/xxxxxxx/xxxxx.git 3.把你的项目拖进去,cd 进 ...
- 一个数字从后向前输入每一位数字,Camel和Pascal命名规范,IsValid()
int num = int.Parse(Console.ReadLine()); ; ) { n = num % ; num /= ; Console.WriteLine(n); } Camel和Pa ...
- windows cmd下创建虚拟环境virtualenv
一:虚拟环境virtualenv 如果在一台电脑上, 想开发多个不同的项目, 需要用到同一个包的不同版本, 如果使用上面的命令, 在同一个目录下安装或者更新, 新版本会覆盖以前的版本, 其它的项目就无 ...
- ZOJ - 2402 DP方案数
题意:给出m,序列第i位是第i-1位的至少2倍大,的求长度为n且每一位范围均在1-m的序列方案数 对求方案数做不到信手拈来的感觉,需要加强 用简单的预处理和最优子结构能优化到很不错的效率了 #incl ...
- js关于原型,原型链的面试题
之前面试的时候遇到过原型和原型链方面的题目,具体的已经忘了,只记得当时回答的稀里糊涂,今天查了一些资料,把自己所理解的写出来,加深记忆. 1,前提 在js中,对象都有__proto__属性,一般这个是 ...
- [转] 从零开始学Spring Boot
[From] http://412887952-qq-com.iteye.com/blog/2291496 一个博主写的spring boot系列文章,很赞!