一、概览
课程视频:https://www.bilibili.com/video/BV1HJ411e7Q3?from=search&seid=17087173330102561563
1.1 基本概念
计算机图形学(computer graphics,简称CG)是一门使用数学算法将二维或者三维图形转化位计算机显示器的栅格形式的学科。
1.2 相关学科
二、图形显示系统
2.1 光栅扫描显示系统
早期
现代
图形显示处理器=显卡(核心是GPU)
三、渲染管线的整体流程
四、unity shader初识
4.1 计算机图形学、GPU、OpenGL/DirectX、 Unity、 Shaderlab之 间是什么关系?
- 计算机图形学:一-门学科
- GPU:用于渲染的硬件
- OpenGL/DirectX:与显卡驱动打交道的图形标准APl
- Unity:引擎软件
- Shaderlab: Unity中的着 色器编程语言
Unity中编写shaderlab来通过OpenGL/DirectX告诉显卡驱动要做什么,然后显卡驱动再指挥GPU进行计算并输出到显示器上
4.2 shader是什么
- Shader就是着色器。
- Shader其实就是专门用来渲染图形的一种技术,通过shader,我们可以自定义显卡渲染画面的算法,使画面达到我们想要的效果。
- Shader其实就是一段代码,用于告诉GPU如何去绘制模型每一个顶点的颜色以及最终像素的颜色。
4.3 shader的几种形式
- 固定管线着色器(Fixed Function Shader)——已淘汰,了解即可
- 表面着色器(Surface Shader)——容易产生代码冗余
- 顶点片断着色器(Vertex/Fragment Shader)——功能最强大,工作中会定义出一个顶点着色器和一个片段着色器
4.4 shaderlab模板
- Standard Surface Shader——表面着色器
- Unlit Shader——顶点片段着色器
- Image Effect Shader——后处理shader,比如整体调色
- Compute Shader——运行在gpu上的代码,常用于做并行计算
- Ray Tracing Shader——管线跟踪shader
4.5 shader代码框架
shader代码实例
Shader "Unlit/NewUnlitShader"
{
SubShader{ //subshader可以有多个。gpu进入之后会遍历寻找支持的subshader进行渲染
pass{ //pass可以有多个,多pass的话会产生多次渲染提交,降低性能
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
float4 vert(float4 pos:POSITION):SV_POSITION {
return UnityObjectToClipPos(pos);
}
float4 frag():SV_TARGET {
return fixed4(1,1,0,1) ;
}
ENDCG
}
}
CustomEditor "" //自定义页面上材质的手动修改页面
//当gpu不支持所有subshader时,会根据fallback去寻找新的shader文件
Fallback "taecg/test"
}