码迷,mamicode.com
首页 > 编程语言 > 详细

Unity3D教程宝典之Shader篇:特别讲 常见问题解答

时间:2015-03-11 14:30:24      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:

转载自风宇冲Unity3D教程学院

                       

本讲会陆续补充一些问题的解答。

问:
(1) TRANSFORM_TEX是做什么的
(2)float4 _MainTex_ST 中的_MainTex_ST变量也没有用到,为啥非要声明一下?
 
 
答:
(1)简单来说,TRANSFORM_TEX主要作用是拿顶点的uv去和材质球的tiling和offset作运算, 确保材质球里的缩放和偏移设置是正确的。 (v.texcoord就是顶点的uv)

 

 

下面这两个函数是等价的。

o.uv =   TRANSFORM_TEX(v.texcoord,_MainTex);

 

o.uv = v.texcoord.xy * _MainTex_ST.xy + _MainTex_ST.zw;

(2)而_MainTex_ST的ST是应该是SamplerTexture的意思 ,就是声明_MainTex是一张采样图,也就是会进行UV运算。  如果没有这句话,是不能进行TRANSFORM_TEX的运算的。_MainTex_ST.xy为 下图中的Tiling,zw为下图中的offset.
 
如果Tiling 和Offset你留的是默认值,即Tiling为(1,1) Offset为(0,0)的时候,可以不用
o.uv = TRANSFORM_TEX(v.texcoord,_MainTex);
换成o.uv = v.texcoord.xy;也是能正常显示的;相当于Tiling 为(1,1)Offset为(0,0),但是如下图自己填的Tiling值和Offset值就不起作用了
技术分享

Unity3D教程宝典之Shader篇:特别讲 常见问题解答

标签:

原文地址:http://www.cnblogs.com/zdlbbg/p/4329593.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!