TRANSFORM_TEX在UnityCG.cginc中定义。 ----补充: 为啥buildin shader Unlit-Normal.shader中有一个float4 _MainTex_ST变量,现在就明白了,因为 o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex) 就等价于 o.texcoord = v.texcoord.xy *_MainTex_ST.
TRANSFORM_TEX方法比较简单,就是将模型顶点的uv和Tiling、Offset两个变量进行运算,计算出实际显示用的定点uv。 在UnityCG.cginc中定义 // Transforms 2D UV by scale/bias property #define TRANSFORM_TEX(tex,n…
o.uv = i.texcood.xy * _MainTex_ST.xy + _MainTex_ST.zw; 对于这一句也有相关的封装: o.uv = TRANSFORM_TEX(v.texcoord, _MainTex); 这里注意,第二个参数是要写成纹理名字的,不要写_ST了,因为内部他会帮你补上! 相关代码: Shader "unityShaderBook/chapter7/singleTexture" { Properties { _Color(...
#include"UnityCG.cginc"struct appdata{float4 vertex:POSITION;float2 uv:TEXCOORD0;};struct v2f{float2 uv:TEXCOORD0;float3 factor:TEXCOORD1;float4 vertex:SV_POSITION;};sampler2D _MainTex;float4 _MainTex_ST;v2fvert(appdata v){v2f o;o.vertex=UnityObjectToClipPos(v.vertex);o.uv=TRANSFORM_...
o.uv = TRANSFORM_TEX (v.texcoord, _MainTex); o.worldNormal = UnityObjectToWorldNormal(v.normal); o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz; TRANSFER_SHADOW(o); return o; } float4 frag(v2f i) : SV_Target { fixed3 worldNormal = normalize(i.worldNormal); ...
//o.uv = TRANSFORM_TEX(v.texcoord, _MainTex); return o; } fixed4 frag(v2f i) : SV_Target{ //计算了世界空间下的法线方向和光照方向 fixed3 worldNormal = normalize(i.worldNormal); fixed3 worldLightDir = normalize(UnityWorldSpaceLightDir(i.worldPos)); ...
UnityCG.cginc中TRANSFORM_TEX(纹理转换)定义如下: // Transforms 2D UV by scale/bias property #define TRANSFORM_TEX(tex,name) (tex.xy * name##_ST.xy + name##_ST.zw) 凹凸映射 两种方法: - 切线空间下计算光照:光照方向、视角方向需要变换到切线空间计算。
o.uv = TRANSFORM_TEX(v.texcoord, _MainTex); return o; } //定义片元shader fixed4 frag(v2f i) : SV_Target { //unity自身的diffuse也是带了环境光,这里我们也增加一下环境光 fixed3 ambient = UNITY_LIGHTMODEL_AMBIENT.xyz * _Diffuse.xyz; ...
float2 uv1= TRANSFORM_TEX(v.texcoord.xy, _MainTex ) + uvoffset * (float2(1,1)/_SubTexUV.xy); float2 uv2= TRANSFORM_TEX(v.texcoord.xy, _MainTex )*_SubTexUV.xy + uvoffset; o.uv = float4(uv1,uv2); half3 NoiseTex = tex2D(_SubTex, i.uv.zw).rgb; ...
o.uv_Illum = TRANSFORM_TEX(v.texcoord, _Illum); o.uvScroll = TRANSFORM_TEX((v.texcoord.xy+_Time.x*_ScrollingSpeed.xy), _Tex); o.uvLM = v.texcoord1.xy * unity_LightmapST.xy + unity_LightmapST.zw; return o; } float4 frag (v2f i) : COLOR { float4 texCol = te...