纹理映射技术,就是将图覆盖在模型表面,使用它来控制模型的外观。
在美术人员建模的时候,通常会在建模软件中利用纹理展开技术把纹理映射坐标储存在每个顶点上。纹理映射坐标定义了该顶点在纹理中对应的2D坐标,通常这些坐标使用一个二维变量(u,v)来表示,其中u是横向坐标,而v是纵向坐标,纹理映射坐标也被称为UV坐标。
首先学习一下如何在Unity Shader中进行最基本的纹理采样。
Shader "Unity Shaders Book/Chapter 7/Single Texture" {
Properties {
_Color ("Color Tint", Color) = (1, 1, 1, 1)
//声明一个纹理属性
_MainTex ("Main Tex", 2D) = "white" {}
_Specular ("Specular", Color) = (1, 1, 1, 1)
_Gloss ("Gloss", Range(8.0, 256)) = 20
}
SubShader {
Pass {
Tags { "LightMode"="ForwardBase" }
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "Lighting.cginc"
fixed4 _Color;
sampler2D _MainTex;
//声明纹理属性,命名一定要是“纹理名_ST”
//.xy存储的是缩放值,.zw储存的是偏移值
float4 _MainTex