Shaders(读书笔记4 --- Real-Time rendering)
1. vertex,pixel以及geometry shaders共享一个programming model,即common-shader core,在GPU架构中的unified shader可以和这个core很好的契合。
common-shader core是API,支持unified shader是GPU的特性。
2. shaders是用类C的语言如HLSL,Cg,GLSL等编写的,程序被编译为不依赖于机器的assembly language,即intermediate language(IL)中间语言。编译完的shader存储成文本字符串通过driver传给GPU
assembly language(汇编语言)在另外的步骤中(通常在driver中)被转换为真正的机器语言,这就允许不同的硬件的兼容性。这个assembly language可以看作是定义了一个虚拟机,这个虚拟机是一个有着各种寄存器类型和数据源,用一系列指令变成的处理器。
2.1 大部分graphics操作都是在短矢量上完成的,所以处理器有4-way SIMD(single-instruction multiple-data)能力 每个寄存器包含了四个独立值。
32-bit单精度浮点标量和矢量以及32-bit整型数是基本数据类型,其中浮点矢量可以包含像位置(xyzw)、法线、矩阵行、颜色(rgba)或者纹理坐标(uvwq). 聚合数据类型也支持,如结构体、数组和矩阵。还支持swizzling,即任何矢量部分的复制,也就是说,矢量的任何部分都可以被任意重新排序或者复制。同样,masking(仅适用部分矢量元素)也支持
2.2 一个drall call会激活graphics API去画一组primitives,graphics pipeline由此开始执行。
2.3 每个可编程shader stage都有两个输入,uniform input和varying input。
uniform input在一个draw call中一直保持值不变,但是可能会在不同的draw call之间改变值。 texture是一种特殊的uniform input,以前可以看作是用到一个surface的颜色图片,现在可以看作是一个大的数据矩阵
varying input在shader处理的每个vertex或者pixel中都不同。
2.4 虽然shader的输入有很多种,但是shader的输出被严格限制了,这是shader和其他在通用处理器上执行的程序不同的地方。

2.5 底层的虚拟机给不同种类的输入和输出提供了特殊寄存器。
uniform input是存储在constant registers/buffers,因为他们的内容是不变的
可用的常量寄存器数量比varying input寄存器数量大得多,因为varying inputs和outputs都需要分别存放在每个vertex/pixel,而uniform inputs只需要保持一次并重用在所有的vertices/pixels。
2.6 虚拟机也有通用temporary registers,用于scratch space(暂存空间)。 all types of registers can be array-indexed using integer values in temporary registers.
2.7 GPU上执行最快的操作是标量和向量乘加以及它们的混合操作,如乘加、内积,其他的操作,如倒数,平方根,sine,cosine,幂运算以及对数运算,一般更耗时间,但是还算快的。
纹理操作也是有效率的,但是它的performance可能会被一些因素限制,如耗费在等待某个结果的时间 shading language开放了大部分的普通运算,如加法和乘法,剩下的运算是用intrinsic函数,如atan(),dot(),log()等,还有负责运算如矢量归一化,矩阵转置等。
2.8 flow control
flow control(流程控制)是指用分支指令来改变代码执行流程,如if case等。 shader支持两种类型的flow control: static flow control, dynamic flow control
static flow control是基于uniform input的值,而dynamic flow control是基于varying input的值
Shaders(读书笔记4 --- Real-Time rendering)的更多相关文章
- Understanding Scroll Views 深入理解 scroll view 读书笔记
Understanding Scroll Views 深入理解 scroll view 读书笔记 It may be hard to believe, but a UIScrollView is ...
- 6 Specialzed layers 特殊层 第一部分 读书笔记
6 Specialzed layers 特殊层 第一部分 读书笔记 Specialization is a feature of every complex organization. 专注是 ...
- 读书笔记汇总 - SQL必知必会(第4版)
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
- 读书笔记--SQL必知必会18--视图
读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...
- 《C#本质论》读书笔记(18)多线程处理
.NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...
- C#温故知新:《C#图解教程》读书笔记系列
一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...
- C#刨根究底:《你必须知道的.NET》读书笔记系列
一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...
- Web高级征程:《大型网站技术架构》读书笔记系列
一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...
- LOMA280保险原理读书笔记
LOMA是国际金融保险管理学院(Life Office Management Association)的英文简称.国际金融保险管理学院是一个保险和金融服务机构的国际组织,它的创建目的是为了促进信息交流 ...
随机推荐
- python3验证码机器学习
python3验证码机器学习 文档结构为 -- iconset -- ... -- jpg -- captcha.gif -- py -- crack.py 需要的库 pip3 install pil ...
- [转]PHP如何关闭notice级别的错误提示
1.在php.ini文件中改动error_reporting改为: error_reporting=E_ALL & ~E_NOTICE 2.如果你不能操作php.ini文件,你可以使用如下方法 ...
- centos6.5 升级安装pcre 8.39版本
1.查看系统pcre安装情况 rpm -qa pcre 2.卸载系统自带的旧版本 rpm -e --nodeps pcre 3.下载新版安装 地址:ftp://ftp.csx.cam.ac.uk/pu ...
- [java] jsoup 解析网页获取省市区域信息
到国家统计局抓取数据, 到该class下解析数据 /** * jsoup解析网页 * @author xwolf * @date 2016-12-13 18:11 * @since V1.0.0 */ ...
- 《舌尖上的中国》第二季今日首播了,天猫食品也跟着首发,借力使力[bubuko.com]
天猫旗下的天猫食品与央视CCTV-1栏目<舌尖上的中国>第二季(以下简称“舌尖2”)达成合作,天猫食品成为舌尖2独家合作平台,同步首发每期 节目中的食材和美食菜谱,舌尖2摄制组还将为同步上 ...
- VR全景项目外包团队— VR/AR相关领域介绍和VR全景案例
VR/AR相关领域这里我要说的一点就是硬件.诚然,硬件的确很难搞,国内在这方面就是荒漠,所以,如果你有信心,完全可以开拓一片蓝海.注意我是说真正的硬件,那些把Google的纸盒子拿来改改就能融资千万的 ...
- Python中对字节流/二进制流的操作:struct
前言 前段时间使用Python解析IDX文件格式的MNIST数据集,需要对二进制文件进行读取操作,其中我使用的是struct模块.查了网上挺多教程都写的挺好的,不过对新手不是很友好,所以我重新整理了一 ...
- Windows2003 IIS6.0支持32位和64位两种模式的设置方法
IIS 6.0 可支持 32 位和 64 位两种模式.但是,IIS 6.0 不支持在 64 位版本的 Windows 上同时运行这两种模式.ASP.NET 1.1 只在 32 位模式下运行.而 ASP ...
- TRIGGER_15.8.3BACKUP
1 CREATE OR REPLACE TRIGGER "XMV502"."ADDAREA12" before insert on bd_areacl for ...
- HTML5 History API实现无刷新跳转
在HTML5中, 新增了通过JS在浏览器历史记录中添加项目的功能. 在不刷新页面的前提下显示改变浏览器地址栏中的URL. 添加了当用户单击浏览器的后退按钮时触发的事件. 通过以上三点,可以实现在不刷新 ...