《Unity shader入门精要》阅读笔记

书籍名称:《Unity shader入门精要》
作者:冯乐乐

前言:
  1. 通过这本书能够学到什么?
    读者可以建立一个渲染流程的整体体系
  2. 学习这本书需要哪些基础?
    1.一定的编程经验
    2.熟悉Unity的基本操作
    3.能够保持一定的耐心
    4.有一定的数学基础(如基本的代数运算、三角运算、线性代数、微积分等)








基础篇(共4章)

目录:

1.欢迎来到Shader的世界
2.渲染流水线
3.Unity Shader基础
4.学习Unity Shader所需的数学基础


初级篇(共4章)

目录:

5.开始Unity Shader的学习之旅
6.Unity中的基础光照
7.基础纹理
8.透明效果


中级篇(共3章)

目录:

9.更复杂的光照
10.高级纹理
11.让画面动起来


高级篇(共5章)

12.屏幕后处理效果
13.使用深度和法线纹理
14.非真实感渲染
15.使用噪声
16.Unity中的渲染优化技术


扩展篇(共4章)

目录:

17.Unity的表面着色器探秘
18.基于物理的渲染
19.Unity 5 更新了什么
20.还有更多内容吗











第一章 欢迎来到Shader的世界

1.1程序员的三大浪漫之一: 图形学
用代码编写出一个绚丽多姿的世界

  • 什么是shader?

    专门用来渲染3D图形的一种技术;
    shader 是在GPU上运行的程序,作用是通过数学计算将各种属性 (如颜色、光照、纹理等)输出成物体表面可见的状态。










第二章 渲染流水线

  • 关于学习shader的一些提醒:
    shader只是整个渲染流程的一个子部分,所以要学习shader,就必须了解整个渲染流程是怎样进行的,并且由于shader是面向计算机GPU的,所以它的一些语法相较于C++等高级语言会更难理解一些,因此不能只讲语法而不讲渲染框架

  • 渲染流水线的最终目的:
    从一个三维场景出发,生成(或者说渲染)一张二维纹理(即我们在电脑屏幕上看到的所有效果)(它的输入是一个虚拟摄像机、一些光源、一些shader以及纹理等)

既然学习shader需要知道什么是渲染流水线,So now,让我们看看 “流水线是什么” 吧!
  • 什么是流水线?
    类比:真实生活中的流水线——工厂用流水线大大提高了生产效率

  • 什么是渲染流水线?
    计算机需要将一系列信顶点、纹理信息转换成人眼可见的图像,这个过程就类似于工厂的流水线生产(不过这里的“工人”是CPU和GPU)

  • 渲染流水线的三个阶段:

    应用阶段(输出渲染图元)——>几何阶段(输出屏幕的顶点信息)——>光栅化阶段

    1.应用阶段:
    通常由CPU实现,开发者具有对这个阶段的绝对控制权
    三个主要任务: 准备场景数据,然后完成粗粒度剔除,最后设置好模型的渲染状态(包括材质、纹理、使用的shader等),最重要的任务:输出渲染所需的几何信息——即渲染图元(渲染图元是点、线、三角面等),接下来这些渲染图元便会传到下一阶段

    2.几何阶段:
    通常在GPU上进行,处理所有和我们要绘制的几何相关的事情(如:绘制什么?怎么绘制?在哪里绘制?)
    主要任务: 把顶点坐标变换到屏幕空间中,输出屏幕空间的二维顶点坐标、每个顶点的深度值、着色等信息,再交给光栅器来处理
    处理对象:渲染图元

    3.光栅化阶段:
    主要在GPU上运行,使用上阶段传递的数据产生屏幕上的像素,并渲染出最终的图像
    主要任务: 决定每个渲染图元中的哪些像素应该被绘制在屏幕上
    处理手段:对上一阶段得到的逐顶点数据(如纹理坐标、顶点颜色等)进行插值,然后进行逐像素处理
    注释:插值是什么?
    百科答案:在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点

以上为三个阶段的基本介绍,这三个阶段只是概念流水线,要与马上要讲到的GPU流水线(用于实现概念流水线的真正流水线)区分;
上述每个阶段实际上还可以划分为更细的流水线阶段

2022.5.5记


CPU和GPU之间的通信

  • 应用阶段(在CPU上进行)的更细划分
    (1)把数据加载到显存中 (为什么?因为显卡对显存的访问速度更快,并且大多数显卡对内存RAM没有直接访问权利)
    数据的流向: 硬盘——>内存——>显存

    (2)设置渲染状态
    定义场景中的每个网格是怎样被渲染的 (如果不更改那么所有网格都将使用同一种渲染状态,它们看起来就会像是同一种材质)

    (3)调用Draw Call
    它是一个命令,由CPU发起,传给GPU,告诉它去根据设置好的渲染状态来渲染一个被指定的图元列表;然后GPU就会根据设置好的渲染状态和传送过来的数据进行计算,最后输出成屏幕上的像素点(分号后的这句话是下一节的内容——GPU流水线)


GPU流水线

  • 什么是GPU流水线——就是GPU渲染的过程
  • 为什么要设立GPU流水线——为了加快渲染速度
    (注意我们前面提到了概念阶段的后两个阶段都是在GPU上进行的)
    (开发者无法完全控制这两个阶段,但GPU开放了一些控制权,具体的可配置性与可编程性环节参考书籍)

2022.5.9记
接下来将有大量篇幅来讲解几何阶段和光栅化阶段的GPU渲染过程的具体细节


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值