首页 > 计算机图形学 > Shader > Unity中Shader简介
2022
01-03

Unity中Shader简介

分类

Shader按管线分类一般分为固定渲染管线与可编程渲染管线

  • 固定渲染管线 ——这是标准的几何&光照(Transforming&Lighting)管线,功能是固定的,它控制着世界、视、投影变换及固定光照控 制和纹理混合。T&L管线可以被渲染状态控制,矩阵,光照和采制参数。功能比较有限。基本所有的显卡都能正常运行。
  • 可编程渲染管线——对渲染管线中的顶点运算和像素运算分别进行编程处理,而无须象固定渲染管线那样套用一些固定函数,取代设置参数来控制管线。

Unity中的Shader分为三类

  • 固定管线着色器(Fixed Function Shader)
  • 表面着色器(Surface Shader)
  • 顶点片段着色器(Vertex and Fragment Shader)

结构

Properties

Properties中定义一些属性

测试代码

Unity中Shader简介 - 第1张  | u3d8技术分享

SubShader

在SubShader中定义了可选的状态,标签和一系列的Pass(Pass数目过多会引起渲染性能的下降)

SubShader中常见的状态设置有:

  • 剔除设置Cull:分为剔除正面Front,剔除背面Back,关闭剔除Off三个状态
  • 深度测试ZTest:可以设置为不同的深度测试函数
  • 深度写入ZWrite:开启On,关闭Off
  • 混合Blend:设置是否开启混合及混合形式

SubShader中的标签是一个键值对,键值均为字符串类型,常见的标签有:

  • 渲染队列控制Queue
  • 着色器类型RenderType
  • 批处理控制DisableBatching
  • 阴影投射控制ForceNoShadowCasting

Pass

Pass定义在SubShader中,其结构为:

首先我们可以定义这个Pass块的名字,如:

但是要注意,在unity的内部,会把所有Pass的名字设置为大写形式,所以当我们要使用UsePass命令来使用其他的Pass时,要写为大写的名字,如:

在Pass中,也有属于Pass块的标签设置,如:LightMode用于设置光照模型。RequireOptions指定满足某些条件时才渲染该Pass

Fallback

当所有的subshader失败时,使用Fallback指定的shader

最后编辑:
作者:网虫虫
网虫虫
分享是一种快乐; 分享是一种美德; 分享是一种幸福!

0 0 votes
Article Rating
Subscribe
提醒
guest
0 评论
Inline Feedbacks
View all comments