欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > UV,纹理,材质,对象

UV,纹理,材质,对象

2025/3/9 5:45:18 来源:https://blog.csdn.net/2401_82978699/article/details/146115633  浏览:    关键词:UV,纹理,材质,对象

先上代码:

Shader "Unlit/MyFirstShder"
{Properties{_MainTex ("Texture", 2D) = "white" {}}SubShader{Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};struct v2f{float2 uv : TEXCOORD0;float4 vertex : SV_POSITION;};//sampler2D _MainTex;float4 _MainTex_ST;v2f vert (appdata v){v2f o;o.vertex = UnityObjectToClipPos(v.vertex);o.uv = TRANSFORM_TEX(v.uv, _MainTex);return o;}fixed4 frag (v2f i) : SV_Target{fixed4 col = fixed4(i.uv.x, i.uv.y, 1, 1);return col;}ENDCG}}
}

1. sampler2D _MainTex; 的含义

  • 作用:声明一个二维纹理采样器,用于访问名为_MainTex的纹理数据。
  • 关联属性:需与Shader的Properties区块中的_MainTex属性匹配,例如:
  • Properties { _MainTex ("Texture", 2D) = "white" {} }
  • 底层逻辑
  • sampler2D是GLSL/CG语言中的数据类型,表示一个绑定到GPU纹理单元的2D纹理对象。
  • 在渲染时,Unity会将材质面板中指定的纹理加载到显存,并通过sampler2D变量进行采样

2. o.uv = TRANSFORM_TEX(v.uv, _MainTex); 的含义

  • 作用:对原始UV坐标进行缩放和偏移变换,使其适配材质面板中设置的Tiling(平铺)和Offset(偏移)参数。
  • 宏展开TRANSFORM_TEX是一个预定义的宏,实际展开为:

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

    • _MainTex_ST.xy:对应材质面板中的Tiling值(缩放比例,默认(1,1))。
    • _MainTex_ST.zw:对应材质面板中的Offset值(位移量,默认(0,0))

 

 

 

总结

  • fixed4确实作用于每个像素,颜色的动态变化由UV坐标的插值特性驱动。
  • UV坐标在光栅化阶段被插值为每个像素的独立值,因此即使顶点UV固定,像素颜色仍会渐变。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词