011 == Shader

一、前言

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光照模型(无法实现菲涅尔反射)


逐顶光照:高罗德着色

逐像素光照:



猜你喜欢

转载自blog.csdn.net/qq_38104858/article/details/80674090
011