源自CubeBlur
有一个参数
_Texel
(
"Texel"
, Float
) =
0.0078125
他的默认是其实就是1./128.为啥选这个作为默认值,猜测是,cubemap的大小是128*128的使用的频率最高吧。
这一块的宏定义值得学习,把整个shader里经常用到的变量或者函数用宏定义的方式简化,已达到工作效率。
#define
zero
half3
(
0
.,
0
.,
0
.)
#define
one
half3
(
1
.,
1
.,
1
.)
#define
two
half3
(
2
.,
2
.,
2
.)
下面一堆基本上都是一个一个面的blur算法。看到了一个函数gauss,那么基本上就是高斯模糊相关的了。
只说一个好玩的。
half3
face =
lerp
(
zero
, i.uvw.xyz,
abs
(i.uvw.xyz)==
one
);
一看变量名字就知道是求6个面的哪一个面的了。
假设i.uvw.xyz就是i.normal;
如果i.normal = float3(1,0,0);
那么face=float3(1,0,0);