Shader-基础

简介

分类

  • 固定管线着色器(没有嵌套CG语言 代码中没有CGPROGARAM的)
  • 顶点shader(顶点片段着色器 代码段中有surf函数)
    干预顶点位置 改变模型形态
  • 像素shader(表面着色器 代码段中有#pargma vertex name 和#pragma fragment frag)
    干预顶点上色 哪个点贴哪个纹理

语法

Shader “name” { // name shader名字
// 定义的一些属性,定义在这里的会在属性查看器里面显示; 
[Propeties] 
// 子着色器列表,一个Shader必须至少有一个子着色器; 
Subshaders: {....}
// 如果子着色器显卡不支持,就会降级,即Fallback操作;
[Fallback]

属性

_Range (“range value”, Range(0, 1)) = 0.3; // 定义一个范围
_Color(“color”, Color) = (1, 1, 1, 1); // 定义一个颜色
_FloatValue(“float value”, Float) = 1 // 定义一个浮点
_MainTex (“Albedo”, Cube) = “skybox” {TexGen CubeReflect} // 定义一个立方贴图纹理属性;
  1. 类型 多种多样
    • Float,Int,Vector(4维向量),Range(start,end)
    • Color(n,n,n,n)(0-1)
    • 2D,3D,Cube,Rect:纹理属性
  2. options:纹理属性选项
    • TexGen:纹理生成模式(纹理自动生成纹理坐标)类型多样,有ObjectLinear,EyeLinear,SphereMap,CubeReflect,CubeNormal
    • LightmapMod:光照贴图模式(纹理会被渲染器的光线贴图影响)

子着色器

着色器使用Tags来告诉他们如何和何时会被渲染到渲染引擎,包含多个Pass,依次执行

SubShader { [Tags] [CommonState] Passdef [Passdef ...] }

    SubShader
    {
        Pass 
        {
            Lighting Off        // 关闭灯光
            SetTexture [_MainTex] { }
        }
    }
  • SubShader Tags
    Tags { "TagName1" = "Value1" "TagName2" = "Value2" }

指定 TagName1 的值为 Value1, TagName2 的值为 Value2。你可以有尽可能多的标签。

标签基本上是键值对。在SubShader标签是用来确定SubShader呈现顺序和其他参数。注意,下面的标签必须是SubShader部分,而不是在Pass内部!

Unity除了内置标签,你可以使用你自己的标签和使用Material.GetTag函数查询它们。


Pass

Pass { [Name and Tags] [RenderSetup] }
  • Name and Tags:Pass 可以定义它的名称和任意数量的标签-传递给渲染引擎的传递意图的名称 / 值的字符串。
  • RenderSetup:设置图形硬件的各种状态,例如α混合应打开,深度测试应使用,等等。
    • Cull:设置多边形剔除模式
      Cull Back | Front | Off
    • ZTest:设置深度缓冲测试模式
      ZTest (Less | Greater | LEqual | GEqual | Equal | NotEqual | Always)
    • ZWrite:设置深度缓冲的写模式
      ZWrite On | Off
    • Blend:设置α混合模式
      Blend SourceBlendMode DestBlendMode
      Blend SourceBlendMode DestBlendMode, AlphaSourceBlendMode AlphaDestBlendMode
    • ColorMask:设置彩色通道写掩码。设置为0将关闭所有渲染的颜色通道。默认模式是写所有通道(RGBA),但是对于一些特殊的效果,你可能想离开一定的渠道不被修改,或完全禁用颜色写
      ColorMask RGB | A | 0 | any combination of R, G, B, A
    • Offset:设置Z缓冲深度偏移量
      Offset OffsetFactor, OffsetUnits
  • 固定功能着色器命令
    Lighting On | Off
    Material { Material Block }
    SeparateSpecular On | Off
    Color Color-value
    ColorMaterial AmbientAndDiffuse | Emission
    //所有这些控制固定功能,每个顶点照明:打开它,设置材料的颜色,打开高光的亮点,提供默认的颜色,如果顶点光照关闭,并控制网格顶点颜色如何影响照明
    • Fog:
      Fog { Fog Block }
    • AlphaTest:
      AlphaTest ( Less | Greater | LEqual | GEqual | Equal | NotEqual | Always ) CutoffValue
    • Texture Combiners:
      SetTexture textureProperty { combine options }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值