unity shader学习之旅(一)

unity shader框架结构:

1.shader name

例如:Shader“Custom/MyShader” 

""双引号中的内容就是具体的路径与名称。

2.Properties

(1)属性 Properties { Property [Property ...]}

(2)数字和滑动条

name ("display name", Range (min, max)) = number

name ("display name", Float) = number

name ("display name", Int) = number

这些全都定义一个具有默认值的数字(标量)属性。Range 格式使该属性显示为一个滑动条,范围在 min 到 max 之间。

(3)颜色和矢量

name ("display name", Color) = (number,number,number,number)

name ("display name", Vector) = (number,number,number,number)

使用给定 RGBA 分量的默认值定义颜色属性,或使用默认值定义 4D 矢量属性。颜色属性会显示拾色器,并根据颜色空间按需进行调整

(4)纹理

name ("display name", 2D) = "defaulttexture" {}

name ("display name", Cube) = "defaulttexture" {}

name ("display name", 3D) = "defaulttexture" {}

分别定义 2D 纹理立方体贴图或 3D(体积)属性。

详细信息

着色器中的每个属性均通过 name 引用(在 Unity 中,着色器属性名称通常以下划线开头)。属性在材质检视面板中将显示为 display name。每个属性都在等号后给出默认值

  • 对于 Range 和 Float 属性,默认值仅仅是单个数字,例如“13.37”。
  • 对于 Color 和 Vector 属性,默认值是括在圆括号中的四个数字,例如“(1,0.5,0.2,1)”。
  • 对于 2D 纹理,默认值为空字符串或内置默认纹理之一:“white”(RGBA:1,1,1,1)、“black”(RGBA:0,0,0,0)、“gray”(RGBA:0.5,0.5,0.5,0.5)、“bump”(RGBA:0.5,0.5,1,0.5)或“red”(RGBA:1,0,0,0)。
  • 对于非 2D 纹理(立方体、3D 或 2D 数组),默认值为空字符串。如果材质未指定立方体贴图/3D/数组纹理,则使用灰色(RGBA:0.5,0.5,0.5,0.5)。

示例 

Properties
{
    _WaveScale ("Wave scale", Range (0.02,0.15)) = 0.07 // 滑动条
    _ReflDistort ("Reflection distort", Range (0,1.5)) = 0.5
    _RefrDistort ("Refraction distort", Range (0,1.5)) = 0.4
    _RefrColor ("Refraction color", Color) = (.34, .85, .92, 1) // 颜色
    _ReflectionTex ("Environment Reflection", 2D) = "" {} // 纹理
    _RefractionTex ("Environment Refraction", 2D) = "" {}
    _Fresnel ("Fresnel (A) ", 2D) = "" {}
    _BumpMap ("Bumpmap (RGB) ", 2D) = "" {}
}

3.SubShaders(重量级成员)

在每个Shader中可以包含多个subshader语义块,subshader中定义了一系列的Pass、Rendersteup(状态)、Tags(标签)设置。

(1)状态设置

(2)subshader的标签

Tags{"TagName1" = "Valuel" "TagName2" = "Value2"}

需要注意!以上标签仅可以在SubShader中声明,而不可以在Pass块中声明。Pass块虽然也可以定义标签,但这些标签是不同于SubShader的标签类型。

(3)Pass语义块

Pass的意思就是渲染一次模型!

而具体要怎么渲染就需要我们在Pass中添加Cg/HLSL代码片断来实现了,这段代码片断是由CGPROGRAM开始,由ENDCG结束。也就是说我们必须要添加CGPROGRAM和ENDCG,然后在它们中间去写实现效果的代码。

4.FallBack

备胎备胎  例如:FallBack "Diffuse"

5.CustomEditor

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值