unity shader入门精要_《Untiy Shader 入门精要》读书笔记 (一)基础篇

本文是《Unity Shader 入门精要》的读书笔记,详细介绍了渲染流水线的三个阶段:应用阶段、几何阶段和光栅化阶段,讲解了CPU与GPU的通信、OpenGL与DirectX的区别,以及HLSL、GLSL和Cg着色器语言。此外,还探讨了Unity Shader的基础,包括4种模板和ShaderLab。在数学基础部分,涵盖了坐标系、矢量、矩阵以及坐标空间的转换,是学习Unity Shader的重要理论基础。

e679ec68146c3f58a1c9fc6dedd5b28e.png
本文是冯乐乐著的《Untiy Shader 入门精要》的读书笔记第一篇。主要是记录一些读书中的知识点,请配合图书一块食用。

一、渲染流水线

1. 概述

由一个三维场景出发,渲染一张二维的图像。

2 . 概念渲染流水线

《Real-Time Rendering,Third Edition》将渲染流程划分为三个部分。

应用阶段 -> 几何阶段 -> 光栅化阶段

  • 应用阶段:开发者可以自由主导的阶段,通常由 CPU 负责。开发者主要通过以下 3个 主要任务,输出渲染需要的几何信息,即 渲染图元
    • 布置好场景。模型、相机和光照的摆放。
    • 粗粒度剔除(culling)。将被遮挡,不可见的物体剔除出去。
    • 设置模型的渲染状态。包括材质、纹理、shader等。
  • 几何阶段: 通常在 GPU 中进行。对输入的渲染图元进行多步处理,将输出屏幕空间二维顶点坐标,没个顶点包含深度值、着色等信息。
  • 光栅化阶段: 通常在 GPU 上运行。主要是决定每一个渲染图元中那些像素应该绘制到屏幕上。需要对几何阶段得到的顶点数据进行插值,然后逐像素处理。

3. CPU 和 GPU 之间通信(应用阶段)

应用阶段的起点是 CPU。主要分为三部分。

  1. 应用阶段
    1. 把数据加载到显存中:所有需要渲染的数据,需要从硬盘中加载到内存中,再将网格、纹理等信息加载到 GPU 显存中。
    2. 设置渲染状态:定义了场景中网格是被怎么渲染的。使用哪个顶点着色器/片元着色器、光源属性、材质等。
    3. 调用 Draw Call:CPU 通知 GPU 对一个被需要渲染的图元列表进行渲染。

4. GPU 流水线(几何阶段 + 光栅化阶段)

GPU 接受到了 CPU 的 Draw Call 指令。会按照顺序执行下面的步骤

  1. 几何阶段
    1. 顶点着色器(Vertex Shader):完全可编程。顶点变换、着色等功能。
    2. 曲面细分着色器(Tessellation Shader):可选着色器,用于细分图元。
    3. 几何着色器(Geometry Shader):可选着色器。用于逐图元的着色,或生成更多的图元。
    4. 裁剪(Clipping):可配置。将不在摄像机内的顶点裁剪掉,并剔除某些三角图元的面片。
    5. 屏幕映射(Screen Mapping):不可配置和编程。负责将图元坐标转换到屏幕坐标系中。
  2. 光栅化阶段
    1. 三角形设置(Triangle Setup):固定函数
    2. 三角形遍历(Triangle Traversal):固定函数
    3. 片元着色器(Fragment Shader):完全可编程。逐片元着色。
    4. 逐片元操作(Per-Fragement Operations):可配置。能够修改颜色、深度缓冲、进行混合等。

5. 常见问题:OpenGL 和 DirectX

这俩个都是图像应用编程接口。应用程序通过这些接口发送渲染命令,接口将把命令发送给显卡驱动,驱动将会把命令翻译成 GPU 指令,进行真正的渲染。

OpenGL:左下角为原点(0,0)

DirectX:左上角为原点(0,0)

显卡商为了让显卡支持 OpenGL 和 DirectX,就必须提供支持两个接口的

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值