UE4的材质大多数都是通过节点连线的,使用节点连线效率更高,对艺术家也更友好。但是用久了之后也会怀念当年写HLSL着色器代码的青葱岁月(注:这篇博客原本写于2015年10月,那段青葱岁月应该指的是倒腾FX composer的时光)。万幸UE4内置了Custom节点,可以编译着色器代码,所以不禁手痒写了几个后期特效,写篇博客记录一下吧!
Edge Detection
先有必要解释一下一些函数和参数:SceneTextureLookup
函数指的是从总共的SceneTexture中选取对应ID的Texture,并且通过纹理坐标进行采样。参数分别为纹理坐标,Texture的ID和是否有Filter。LMN指的是进行grayscale操作中各颜色通道组成的向量,方便直接点乘。
材质如下:
节点代码如下:
int tIndex = 14;
float t1 = dot(SceneTextureLookup (UV + float2(-1.0f / sW, -1.0f / sH),tIndex, false), LMN );
float t2 = dot(SceneTextureLookup (UV + float2(0 , - 1.0f / sH),tIndex, false), LMN );
float t3 = dot(SceneTextureLookup (UV + float2(1.0f / sW, -1.0f / sH),tIndex, false), LMN );
float m1 = dot(SceneTextureLookup (UV + float2(-1.0f / sW, 0),tIndex ,false), LMN);
float b1 = dot(SceneTextureLookup (UV + float2(-1.0f</