原理
cubemap是一个1*1*1的正方体,纹理采样时使用三个值uvw采样。采样原理是在cubemap立方体的中心设为原点(0,0,0),然后给入一个uvw作为一个空间向量,从原点指出。无论该向量大小如何,由原点延长到立方体上,获得采样的纹理。
一张普通的立方体贴图方向定义如下:
下图指某个值为正或负时采样对应的区块
语法
Properties部分
使用CUBE标识。
_MainTex ("Texture", CUBE) = "white" {}
CGPROGRAM部分
定义
用samplerCUBE定义,和普通sampler2D一样后面带_ST会创建一个缩放偏移参数。
samplerCUBE _MainTex;
float4 _MainTex_ST;
fragment()函数内
使用texCube
fixed4 col = texCUBE(_MainTex, i.uvw);
吐槽:Markdown代码块支持的语言好少,cg和shaderlab这种语言完全不支持。
Q.E.D.