第七章 基础纹理
如何理解纹理?纹理和单纯的颜色有什么区别吗?
保存大量颜色的文件,通过给定坐标获取颜色,而不再是前面那种单纯的颜色,组合起来就能得到图片一样的效果。
纹理坐标怎么使用,怎么获取纹理颜色值?顶点着色器里面可以使用吗?
每个定义的纹理,可以定义一个对应的_ST变量,会自动接收纹理坐标
在顶点着色器中计算uv:o.uv = v.texcoord.xy * _MainTex_ST.xy + _Main_ST.zw;
在片元着色器中使用uv
fixed4 texColor = tex2D(_MainTex, o.uv);
如果使用顶点计算颜色,可以在顶点着色器按之前的方式计算颜色值,最后在片元着色器中处理
return fixed4(o.color * texColor, 1.0);
。Unity中纹理的属性设置,WrapMode怎么理解。
决定纹理坐标超过[0,1]范围之后,如何获取纹理。例如Repeat方式,超过1的部分又从头开始计算。
Filter Mode属性,设置插值方式什么是mipmap?如何使用?
多级渐远纹理技术,就是生成多个不同大小的小纹理,在离视线比较远的地方,使用较小的纹理来采样。为什么要搞这个玩意呢?因为当物体比较远的时候,占用的像素数量变少了,uv变化就比较大,那么从源图像采样出来的像素值就非常不连贯了,而提前压缩成小图之后,效果就好很多。另一方面传递给gpu也只需要很小的一个图像了。
什么是高度纹理?法线纹理是什么?怎么使用?效果是什么样的?
这些不同的纹理怎么理解呢?数据还是一样的数据,只是把颜色值当成是别的数据来对待,高度纹理存储的就是高度数据,法线纹理则是法线向量的数据。高度图一般跟法线图一起使用。
由于color数值范围是[0,1],而法线方向的各分量取值却是[-1,1],所以在存储前需要转换: pixel=(no