Unity Shader 学习 Old TV Effect
简介
Old TV Effect 即模拟CRT显示器的显示表现,具体表现如下图:
 
CRT显示器学名为“阴极射线显像管”,是一种使用阴极射线管(Cathode Ray Tube)的显示器。具体显像原理请看维基百科。
表现分析
通过各种资料的比对可以将表现分为几大类
- 播放表现
- 故障表现(另见Unity Shader 学习 Glitch Art)
- 拍摄表现
实现
渐晕效果
- 实现 - 1 
 2
 3
 4
 5
 6- float 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
 7- float2 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
 4- float ScanLine(float2 uv,float freq ,float time) 
 {
 return frac(uv.y * freq + time);
 }  
参考
[2] VCR distortion
关于本文
本文作者 Master Gong Sheng, 许可由 CC BY-NC 4.0.