Unity Shader 学习18:Shader书写基本功整理

1. Drawer

  • [HideInInspector]:面板上隐藏
  • [NoScaleOffset]:隐藏该纹理贴图的TillingOffset
  • [Normal]:检查该纹理是否设为法线贴图
  • [HDR]:将颜色类型设为高动态范围颜色(摄像机也要开启HDR才有效果)
  • [PowerSlider(value)]:滑动条 - 对于有些参数0-1的部分很敏感,而再大没那么敏感的时候,可以用这个属性来调整滑动的手感
  • [Header(value)]:标题
  • [Space(value)]:空行的高度
  • [Toggle]:开关,可以用变体来代替

2. 浮点数精度

  • fixed:-2~2,精度1/256,可以用来表示颜色,但慎用
  • half:-6000~6000,精度大概三位小数,表示一些向量、hdr的颜色是够的
  • float:世界坐标位置、uv坐标

3. vertex可访问输入(都是float)

  • POSITION:顶点位置
  • TEXCOORD0123:UV通道1234
  • NORMAL:法线方向
  • TANGENT:切线方向
  • COLOR:顶点色

4. vertex常用输出

  • pos(CS) - float4o.pos = UnityObjectToClipPos(v.vertex);
  • uv0 - float2 - 一般纹理UV:
    o.uv0 = v.uv0;/o.uv0 = TRANSFORM_TEX(v.uv0, _Maintex);
  • uv1 - float2 - LightmapUV:
    o.uv1 = v.uv1;/o.uv1 = v.uv1 * unity_LightmapST.xy + unity_LightmapST.zw;
  • posWS - half3:o.posWS = mul(unity_ObjectToWorld, v.vertex);
  • nDirWS/tDirWS/bDirWS - half3 - 法线切线副切线方向:
    o.nDirWS = UnityObjectToWorldNormal(v.normal);
    o.tDirWS = normalize(mul(unity_ObjectToWorld, float4(v.tangent.xyz, 0.0)).xyz);o.bDirWS = normalize(cross(o.nDirWS, o.tDirWS) * v.tangent.w);
  • color - fixed4/half4 - 顶点色:o.color = v.color;

5. 函数复用

  • 注意要用的函数定义要放在用之前

6. cginc库

  • 创建:文件拓展名改为.cginc,加一个防止重复包含的框架:
#ifndef MY_CGINC
#define MY_CGINC
…
#endif
  • 包含:#include “相对路径/MyCginc.cginc”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值