原理

cubemap是一个1*1*1的正方体,纹理采样时使用三个值uvw采样。采样原理是在cubemap立方体的中心设为原点(0,0,0),然后给入一个uvw作为一个空间向量,从原点指出。无论该向量大小如何,由原点延长到立方体上,获得采样的纹理。
image-1651250163847
一张普通的立方体贴图方向定义如下:
image-1651250220569
下图指某个值为正或负时采样对应的区块
image-1651250344252

语法

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这种语言完全不支持。

参考:
https://www.freesion.com/article/43111443972/

Q.E.D.


寄蜉蝣于天地,渺沧海之一粟