float and half are two common data types when write the shader.This is about the difference between float and half from https://docs.unity3d.com/Manual/SL-DataTypesAndPrecision.html : High precision: float Highest precision floating point value; generally 32 bits (just like float from regular programming languages). Full float precision is generally used for world space positions, texture coordinates, or scalar computations involving complex functions such as trigonometry or power/exponentiation. Medium precision: half Medium precision floating point value; generally 16 bits (range of –60000 to +60000, with about 3 decimal digits of precision). Half precision is useful for short vectors, directions, object space positions, high dynamic range colors. I've noticed that unity recomment us to use float for texture coordinates.However,texture coordinates,which is also know as uv,are usually from 0~1.Sometimes the values of uv are a little bigger when changing tiling and offset,but they are offten not so big like world position.So What's the purpose that unity let us use float for uv instead of half?