渲染管线与Shader编程入门(超级小白)

 

一、概览

课程视频: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"  

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值