《Shader 入门到精要》 Reading Note - Chapter 2

1.Shader 就是着色器
2.渲染流程三个阶段: 应用阶段(Apppplication Stage), 几何阶段(Geometry Stage),光栅化阶段(Rasterizer Stage)

应用化阶段 CPU负责——最重要的是输出渲染所需要的几何信息(渲染图元 rendering primitives)
几何化阶段 GPU负责——把顶点坐标变化到屏幕空间再交给光栅器处理——对渲染图元进行处理(如屏幕空间的二维顶点坐标等信息)
决定了要渲染什么?怎么渲染?在哪里渲染?
光栅化阶段 在GPU上运行的——就是把定点数据转化为片元的过程——对上阶段的逐顶点数据进行插值,再进行逐像素处理
Draws (renders) an image with use of the data that previous stage genreated

RAM 系统内存 Random Access Memory
VRAM 显存 Video Random Access Memory

2.应用阶段还可分为—— 把数据加载到显存/设置渲染状态/调用Draw Call(渲染命令)

设置渲染状态——定义场景中的网格怎么被渲染的

GPU流水线——input 是顶点数据(在应用阶段加载完成的)再由Draw Call指定的

三角形设置 Triangle Setup 产生顶点数据
三角形遍历 Triangle Traversal 产生数据
片元着色器 Fragment Shader 每个片元用来储存一系列这样的数据
逐片元操作 Per-Fragment Operations 对像素产生影响

光栅化阶段

顶点着色器 Vertex Shader
曲面细分着色器 Tessellation Shader
几何着色器 Geometry Shader
裁剪 Clipping
屏幕映射 Screen Mapping

几何阶段

顶点着色器 Vertex Shader 输入的每个顶点都要掉用一次顶点着色器 主要工作 坐标变换和逐顶点光照

对于输入的顶点进行坐标的位置变换
一个最基本的顶点着色器的基本工作是把顶点坐标从模型空间转换到齐次裁剪空间——最终得到设备坐标 (Normalized Device Coordinates)
屏幕映射(Screen Mapping)把图元的x y 坐标转换到屏幕坐标系
屏幕映射得到的屏幕坐标决定了这个顶点对应屏幕上哪个像素以及距离这个像素有多远

光栅化重要的目标是:计算每个图元覆盖了哪些像素,以及为这些像素计算它们的颜色
三角形设置——一个计算三角形网格表示数据的过程/为了计算像素的覆盖情况需要计算每个边的像素坐标
三角形遍历——检查每个像素是否被一个三角网格所覆盖——如果被覆盖 会生成一个片元(也称 Scan Vonversion扫描变换)

光栅化阶段产生的是一些信息数据
片元着色器的 输入根据哪些从顶点着色器中输出的数据插值得到的 输出是 一个或者多个颜色值
对像素产生影响的是逐片元操作(Per-Fragment Operations)

插值: 通过已知的,离散的数据点,在范围内推求新的数据点的过程或者方法

逐片元操作: 在OpenGL中称为(Per-Fragment Operations)在DirecX中称为输出合并阶段(Output-Merger)
决定每个片元的可见性/混合 片元需要经过一系列出测试,才能与颜色缓冲区进行混合

逐片元测试中包括:
模版测试 (Stencil Test)——相关的是 模版缓冲(Stencil Buffer)
1.模版测试 通常用于限定渲染区域
2.深度测试 被遮挡的物体不需要出现在屏幕前

片元如果通过了模版测试和深度测试 那么就会来到合并 这个环节
每个像素的信息被储存在一个叫做颜色缓冲的地方

但是GPU可能在片元着色器之前就执行了测试
如果进行了大量的计算发现片元无法通过深度测试,那么这个片元会被抛弃
之前做的大量的工作就浪费了 这样的提前测试的技术叫 Early-Z技术

屏幕上看到的是颜色缓冲区的颜色值
有时候GPU为了避免我们看到正在光栅化的图元,会采取双重缓冲(Double Buffering)
有些场景的渲染在幕后 (Back Buffer),一旦场景被渲染到了后置缓冲中,GPU会交换后置缓冲和前置缓冲(Front Buffer)
保证我们看到的图像是连续的

OpenGL / DirectX 图像应用编程接口
应用程序向接口发送渲染命令,这些接口会依次向显卡驱动(Graphic Driver )发送渲染命令

GLSL/HLSL/CG三种着色语言

让CPU和GPU可以并行工作 解决的方法是用一个命令缓冲区(Command Buffer)
批处理(Batching)的思想 —— 适合静态物体

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值