Unity Shader 学习 Old TV Effect
简介
Old TV Effect 即模拟CRT显示器的显示表现,具体表现如下图:
CRT显示器学名为“阴极射线显像管”,是一种使用阴极射线管(Cathode Ray Tube)的显示器。具体显像原理请看维基百科。
表现分析
通过各种资料的比对可以将表现分为几大类
- 播放表现
- 故障表现(另见Unity Shader 学习 Glitch Art)
- 拍摄表现
实现
渐晕效果
实现
1
2
3
4
5
6float Vignette(float2 uv,float time)
{
float vigAmt = 3.0 + 0.3 * sin(time + 5.0 * cos(t * 5.0));
float vignette = (1.0 - vigAmt * (uv.y - 0.5) * (uv.y - 0.5)) * (1.0 - vigAmt * (uv.x - 0.5) * (uv.x - 0.5));
return vignette;
}
畸变
实现
1
2
3
4
5
6
7float2 ScreenDistort(float2 uv)
{
uv -= float2(0.5, 0.5);
uv = uv * 1.2 * (1.0 / 1.2 + 2.0 * uv.x * uv.x * uv.y * uv.y);
uv += float2(0.5, 0.5);
return uv;
}
像素锯齿
- 实现
边缘的RGB分离
- 实现
晶体管结构
- 实现
线扫描
实现
1
2
3
4float ScanLine(float2 uv,float freq ,float time)
{
return frac(uv.y * freq + time);
}
参考
[2] VCR distortion
关于本文
本文作者 Master Gong Sheng, 许可由 CC BY-NC 4.0.