一、前言
OpenGl/DirectX是图像运用的编程接口,这些接口渲染二维三维图形。可以说这些接口架起了上层运用与CPU桥梁
HLSL:DirectX
GLSL:OpenGl
CG:正真跨平台
1、什么是DrawCall?
CPU调用图像编程接口
2、CPU和GPU如何实现平行工作?
使用命令缓冲区,DrawCall就是一种常见的命令缓冲区中的一种
CPU发送命令,GPU读取命令
3、为什么DrawCall多了影响帧率
CPU把大量的时间花费在提交DrawCall上,二Gpu的渲染数度是非常快的
4、如何减少DrowCall
有很多方法 , 使用批处理:将很多小的DrawCall合并成一个,在CPU内存中合并静态物体
5、如何减少Draw开销?
(1)避免使用大量很小的网格
(2)避免过多的材质
二、概述
材质和shader
UnityShader --shaderLab编写
1、shader名字(路径):Shader“Custom/Tast01”{}
2、属性(材质和UnityShader的桥梁,会出现在面板上):
3、SubShader(重量级成员):
每一个UnityShader至少有一个Subshader:
4、后路:FallBack Off
整体结构:
三、shader所需的数学基础
1、笛卡尔坐标系二维
2、三维笛卡尔坐标系
3、左手坐标系,右手坐标系
4、使用左手右手坐标系判断旋转的方向,大拇指只想旋转轴的正方向
5、unity使用的是左手拿坐标系
6、观察空间(摄像机坐标空间)
7、使用左手判断叉乘的结果的方向
四个手指指向第一个向量的方向,慢慢弯曲到第二个向量的方向的方向,拇指的方向就是结果向量的方向爱
四、坐标空间
五、shader学习开始
六、光照模型 - - 数学公式
半兰伯特光造模型
Blinn—Phong光照模型(无法实现菲涅尔反射)
逐顶光照:高罗德着色
逐像素光照: