UnityShader

本文深入介绍了Unity中的Shader,包括Shader的基本结构、CG语言语法特点、Vertex Shader和Fragment Shader的工作原理,以及光处理、纹理采样、水波仿真、阿尔法混合和凹凸映射等高级技巧。特别强调了Fragment Shader在光处理中的重要性和资源消耗,同时提供了多种光处理方法的总结。
摘要由CSDN通过智能技术生成

一、shader基本介绍

shader可分为vertex与fragment
1、vertex称为定点着色器,负责对模型中每个定点进行定义,可包括位置、法向量、切向量等,vertex可去到所有模型中的定点,并传递给fragment进行像素颜色返回
2、fragment称为片段着色器,是对于每个定点间进行过度处理,可认为是对于每个需渲染的像素的处理,一个像素对应一个fragment,所以在fragment中处理事物会十分消耗资源。

二、Shaderlab基本结构

shader“name”{
   
	[Properties] //提供一些变量提供给编辑器调控
	SubShaders //Shader渲染方案,可以写多个,优先执行靠前的方案,如果执行有问题,则会选择下一个执行
	[FallBack] //所有方案都没有执行成功,调用自带的基本方案
}

三、CG语言介绍

Shader "Sbin/vf1"{
   
	SubShader{
   
		pass{
   
			CGPROGRAM //CG语言起始,大写表示
				#pragma vertex vert //定义顶点着色器函数
				#pragma fragment frag //定义片段着色器函数,两个函数都需要编写
				#define TE FL4(fl4.ab, fl3.zy);
				
				struct rec
				{
   
					float4 pos;
					float2 uv;
				}; //声明结构体,与C中相同

				typeof float4 FL4; //别名

				void vert(in float2 objPos:POSTION, out float4 pos:POSTION, out float4 col:COLOR){
    //in代表输入,out代表输出,inout代表输入并且输出,:后跟着语意
					pos float4(objPos, 0, 1);
					col = float4(0, 0, 0, 1);
				}

				void frag(inout float4 col:COLOR){
   
					//col = folat4(1, 0, 0, 1);
					float r = 1;
					float g = 0;
					float b = 0;
					float a = 1;
					col = float4(r, g, b, a);
					
					float2 f12 = float(1, 0);
					float3 f13 = float(1, 0, 1);
					float4 f14 = flo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值