Shader基础学习笔记(Unity)

Shader概述

  • Shader是给GPU执行的程序,中文叫着色器
  • Shader是运行在图形处理单元上,可以让开发人员直接操作图形硬件渲染功能
  • Shader一般主要有:固定管线着色器(慢慢被淘汰)、顶点片元着色器,表面着色器
    顶点Shader:干预模型形态的Shader
    像素Shader:干预像素着色的Shader
  • 模型顶点运算的时候,可以加入顶点Shader来干预顶点的位置;顶点着色的时候,可以加如像素shader来干预像素的上色

Shader Lab语法基础

Unity使用ShaderLab来进行着色程序的编写,对不同平台进行编译,重点支持Cg语言

Shader "name" {         //name为Shader名字	
    Properties {        //定义的一些属性,可以unity的属性查看器里面显示
	
	}
	SubShader {         //子着色器列表,一个Shader必须至少有一个子着色器

	}
	FallBack Off        //如果子着色器显卡不支持,就会降级      
}

Properties

具体解释往下看
在这里插入图片描述

定义

name("display name", type) =;

name 是属性的名字,Unity中一定要用下划线开始,比如_Name
display name 是在Unity属性检查器的名字
type 是属性的类型
值是这个属性的默认值
代码如图:(Range为一个取值范围,下面会写到)
在这里插入图片描述
Unity中的属性检查器如图:
在这里插入图片描述

类型

Float、Int、Color(num, num, num,num) (注:四个num分别表示rgba,且num属于0-1)、Vector(四维向量)、Range(start, end)
2D:2D纹理属性
Rect:矩形纹理属性
Cube:立方体纹理属性
3D:3D纹理属性
例如:

_Data ("Data Texture", 3D) = "" {options}   //options为纹理属性选项

Options 纹理属性选项

TexGen:纹理生成模式,纹理自动生成纹理坐标的模式;顶点Shader将会忽略这个选项
ObjectLinear,EyeLinear,SphereMap,CubeReflect CubeNormal
LightmapMod:光照贴图模式,如果设置这个选项,纹理会被渲染器的光线贴图影响

SubShader

定义

SubShader { [Tags], [CommonState], Pass{} }

子着色器由标签(Tags)、通用状态(CommonState),通道列表(Pass)组成,定义了一个渲染通道列表,并可以选为所有通道初始化所定义的对象

Tags

在这里插入图片描述

Pass

SubShader包装了一个渲染方案,这些方案由一个个通道Pass来执行,SubShader可以包括很多通道块,每个Pass都能使几何体渲染一次
Pass基本语法

Pass{[Name and Tags][RenderSetup][Texture Setup]}

Fallback

  • 降级:定义在所有的子着色器之后,如果没有任何子着色器能运行,则尝试降级
  • 用法: Fallback “着色器名字”
  • Fallback Off:不降级,并且不会打印任何警告
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值