Untiy ShaderLab 随手记录

来源:互联网 发布:excel vb 编辑:程序博客网 时间:2024/06/04 20:12

最基本形式 (先不考虑Fog)

Shader "Nafio/TUnlit"{Properties{_MainTex("TT",2D) = "white" {}}SubShader{Tags{"RenderType" = "Opaque"}LOD 150Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"sampler2D _MainTex;float4 _MainTex_ST;struct appdata{float4 vertex:POSITION;//注意这里名称vertex是固定的不能乱改,float4,不是float3float2 uv:TEXCOORD0;};struct v2f{float4 vertex:SV_POSITION;float2 uv:TEXCOORD0;};v2f vert(appdata v){v2f o;o.vertex = UnityObjectToClipPos(v.vertex);//低版本替换成mul(UNITY_MATRIX_MVP,v.vertex);o.uv = TRANSFORM_TEX(v.uv,_MainTex);return o;}fixed4 frag(v2f i):SV_Target{fixed4 c = tex2D(_MainTex,i.uv);return c;}ENDCG}}}

_MainTex_ST 的说明,这个变量是后面TRANSFORM_TEX需要用到

TRANSFORM_TEX用于计算Texture uv偏移量(就是编辑器中设置的偏移量)

实现方式

#define TRANSFORM_TEX(tex,name) (tex.xy * name##_ST.xy + name##_ST.zw)
材质中

这里Tiling控制缩放

而Offset控制起始位置

从公式看name##_ST.xy对应Tiling,name##_ST.zw对应Offset


0 0
原创粉丝点击