RGB分离效果和可分离的RGB分离效果在上文提过了。这篇文章会总结一下几个效果的实现方式。
- Image Block 图块错位
- Scan Line 扫描线
- Wave Effect 波浪线
这三种效果实现的思考过程以及实现方式。一样是参考了毛前辈的文章,然后做了点自己的理解。
1.Image Block 图块错位
首先我能想到的生成一下均匀图块的方式是,将UV坐标分别乘以相同系数然后用floor函数,向下取整,然后以此作为 “Seed”传入RandomNoise函数,来产生不断扰动的UV图块。
但是这样产生的图块会比较均匀(在乘以相同系数的情况下)。所以可以采用双层Layer 的形式,来配合时间进行UV图块扰动。我们还可以使用pow函数来降低纯度,来增加他的随机性。基本代码为:
float randomNoise (float2 Seed)
{
return frac(sin(dot (Seed, float2 (12.9898,78.233)))* 43758.5453123);
}
float4 ImageBlockFragment : SV_Target
{
float ImageBlock1 = pow (randomNoise(floor (_Time.y * _Speed * 30) * floor (i.uv * float2 (_LayerU1,_LayerV1))),_Intensity);
float ImageBlock2 = pow (randomNoise(floor (_Time.y * _Speed