unity—shader

着色器概述

9.18

  • shader概述
    1.shader是给GPU执行的程序(可以附加动态贴图)
    着色器是运行在图形处理单元上,可以让开发人员直接操作图形硬件渲染功能。
    ( UV动画,水,雾模型。)
    2.shader分为三种:
    固定管线着色器;
    顶点(片元)着色器:干预模型的shader;
    表面(像素)着色器:干预像素着色的shader;
    3.Direct3D与OpenGL都是显卡驱动的接口
    HLSG支持Direct3d,Cg两者都支持,GLSL支持OpenGL;
    unity使用ShagerLab来进行着色程序的编写(Cg);
  • ShaderLab语法基础
    1.定义一个shader,每一个着色程序都要有一个Shader
Shader"name"//name shader名字
{
[Propeties]//定义一些属性,定义在这里的会在属性查看器里面显示;
Subshaders;{...}//子着色器列表,一个Shader必须至少有一个子着色器;
[Fallback]//如果子着色器显卡不支持,就会降级,即Fallback操作;
}

Properties定义

  • 1.name(“display name”,type)=值;
    name指的是属性的名字,unity中用下划线开始 _Name;
    display name是属性检查器的名字器的名字;
    type:这个属性的类型;
    值:这个属性的默认值;
  • 2.类型:
    Float,Int,Color,(num,num,num,num)(0~1) Vector(4维向量) Range(start,end)
    2D:2D纹理属性;
    Rect:矩形纹理属性;
    Cube:立方体纹理属性;
    3D:3D纹理属性;
    name(“displayname”,2D)=“name”{options}
  • 3.Options:纹理属性选项
    TexGen:纹理生成模式,纹理自动生成纹理坐标的模式;顶点shader将会忽略这个选项;
    CubeNormal…
    LightmapMod:光照贴图模式如果设置这个选项,纹理会被渲染器的光线贴图所影响。

举例:1. _ Range(“range value”,Range(0,1))=0.3;//定义一个范围,初始值是0.3
2._ Color(“color”,Color)=(1,1,1,1);//定义一个颜色
3._ FloatValue(“float value”,Float)=1//定义一个浮点
4. _ MainTex(“Albedo”,Cube)=“skybox”{TexGen CubeReflect }//定义一个立方贴图纹理属性;

SubShader

  • 1.SubShader{[Tags],[CommonState],pass{}}
    括号里的内容是:标签,通用状态,通道列(每个着色器中可以有多个通道))
  • 2.当子通道进行渲染的时候,它将优先渲染一个被每个通道所定义的对象。
  • 3.通道的类型分为:RegularPass,UsePass,GrabPass (后面会有介绍)
  • 4.如果在通道中定义状态同时对整个子着色器可见,那么所有的通道可以同时共享状态。

Tags

  • 标签类型
    Queue tag队列标签;
    RenderType tag渲染类型标签;
    DisableBatching tag禁用批处理标签;
    ForceNoShadowCasting Tag强制不投影标签;
    IgnoreProjecttor忽略投影标签;
    CanUseSpriteAtlas Tag使用精灵图形集标签;
    PreviewType Tag预览类型标签;

Pass

  • 基本语法
    Pass{[Name and tags] [RenderSetup] [ Texture Setup]} 可以在其他着色器中引用此Pass(通过名字找到),并且Name必须大写
RegularPass渲染设置
  • 1.Lighting 光照:开启关闭定点光照On/Off
  • 2.Material{材料块}:材质,定义一个使用定点光照管线的材质
  • 3.ColorMaterial:颜色集,计算顶点光照时使用顶点颜色;
  • 4.SeparateSpecular:开光状态,开启或关闭定点光照相关的镜面高光颜色,On/Off;
  • 5.Color:设置定点光照关闭时所使用的颜色;
  • 6.Fog{雾块}:设置雾参数;
  • 7.AlphaTest:Alpha测试;
  • 8.ZTest:深度测试模式;
  • 9.ZWrite:深度写模式;
  • 10.Blend:混合模式SourceBlendMode,DestBlendMode,AlphaSourcesBlendMode,AlphaDsBlendMode;
  • 11.ColorMask:颜色遮罩:设置颜色遮罩,颜色值可以由RGB或A或0或R,G,B,A,的组合,设置为0关闭所有颜色通道渲染;
  • 12.Offset:偏移因子:设置深度偏移;
其他特殊通道
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值