A9VG电玩部落论坛

 找回密码
 注册
搜索
查看: 30583|回复: 50

最接近CRT效果的shader(7楼已搞定PS模拟器)

[复制链接]

征服者

绝对不会烂尾的!

精华
1
帖子
5728
威望
4 点
积分
7507 点
种子
142 点
注册时间
2005-5-22
最后登录
2024-11-13
 楼主| 发表于 2010-10-9 01:47  ·  广东 | 显示全部楼层 |阅读模式
这是BSNES作者贴出来的shader,效果可不是什么scanline能比的,色彩柔和饱满很有CRT的感觉,虽说玩的是游戏不是画面,偶尔YY一下也不错。

没加shader的画面:


加了shader以后……


再来一张shader效果:


但是,画面只放大原始分辨率的2倍时,shader优势不明显,不加shader反而更锐利



加了shader再提高BSNES的亮度输出,就有点屏摄的感觉了


某些游戏的表现非常好,如大金刚1代,这是加了shader的表现:


这是没有shader也没有滤镜的表现,注意右下的海貍鼠,简直像纸做的一样,神韵全失


这是BSNES的NTSC滤镜效果,比上一张要好一点
.

精华
0
帖子
10512
威望
0 点
积分
10663 点
种子
168 点
注册时间
2008-6-19
最后登录
2024-12-24
发表于 2010-10-9 08:36  ·  广东 | 显示全部楼层
在PS模拟器上,我认为,SHADER+适当的扫描线是最正的效果,很接近纯平CRT,又不齿眼
这也是解决2D+3D游戏里面,3D精美2D纸张的最好方法!!

不知道你这个能不能用在PS模拟器上?

征服者

绝对不会烂尾的!

精华
1
帖子
5728
威望
4 点
积分
7507 点
种子
142 点
注册时间
2005-5-22
最后登录
2024-11-13
 楼主| 发表于 2010-10-9 11:51  ·  广东 | 显示全部楼层
下面是引用luster于2010-10-09 08:36发表的:
在PS模拟器上,我认为,SHADER+适当的扫描线是最正的效果,很接近纯平CRT,又不齿眼
这也是解决2D+3D游戏里面,3D精美2D纸张的最好方法!!

不知道你这个能不能用在PS模拟器上?

这个不行的,BSNES的shader是HLSL的,pete's OPENGL2的shader是GLSL的。如果是懂编程的人,转换一下也不困难吧。期待有高手相助。我是在BSNES官方留言板看到这个脚本:
http://board.byuu.org/viewtopic.php?f=10&t=481
开始只是桶状失真效果,官方发布的shader包里就有,而讨论到第3页,公布了phosphor mask effect效果:
http://board.byuu.org/viewtopic.php?f=10&t=481&start=30
这个感觉太逼真了,无论MAME32或pete's PSX plugin的dot mask效果都望尘莫及,VisualBoyAdvance的Bilinear Plus更差得远,只是边框失真不是很有必要,但我不会编程,不知怎么去掉其中那段代码。
那个帖子里还讨论了CRT的特点,其中“DOLLS (J) [!]”的发言很专业,和本区的R神有得一比了。

还可以看看这帖,要做模拟特丽珑的shader了:
http://board.byuu.org/viewtopic.php?f=10&t=147
第19页,有“CGWG”提供一个脚本:
http://board.byuu.org/viewtopic.php?f=10&t=147&start=270
我试了试,画面有些粗糙,可能显示器要上到很高分辨率才合用。好处是保持了亮度,不像一般的scanline、dot mask使画面变暗。

精华
0
帖子
10512
威望
0 点
积分
10663 点
种子
168 点
注册时间
2008-6-19
最后登录
2024-12-24
发表于 2010-10-9 12:48  ·  广东 | 显示全部楼层
下面是引用爱小熊于2010-10-09 11:51发表的:


这个不行的,BSNES的shader是HLSL的,pete's OPENGL2的shader是GLSL的。如果是懂编程的人,转换一下也不困难吧。期待有高手相助。我是在BSNES官方留言板看到这个脚本:
http://board.byuu.org/viewtopic.php?f=10&t=481
开始只是桶状失真效果,官方发布的shader包里就有,而讨论到第3页,公布了phosphor mask effect效果:
.......
我这里只能看到第一个链接的图
很神奇,完全再现了用RF线的失真效果~~~~

说实话,老游戏机确实要加点“干扰”才好看,真的自残

精华
0
帖子
108
威望
0 点
积分
117 点
种子
10 点
注册时间
2006-10-6
最后登录
2024-12-21
发表于 2010-10-9 12:54  ·  辽宁 | 显示全部楼层
mark..................

精华
0
帖子
5177
威望
0 点
积分
5931 点
种子
1040 点
注册时间
2007-8-31
最后登录
2023-11-12
发表于 2010-10-9 19:13  ·  上海 | 显示全部楼层
CRT是扫描线 不是点阵!!!!!!!!!!!!

精华
0
帖子
5492
威望
0 点
积分
5663 点
种子
43 点
注册时间
2006-8-16
最后登录
2024-12-24
发表于 2010-10-9 19:14  ·  法国 | 显示全部楼层
总觉得开启电视效果以后太暗。

epsxe上不是有两种扫描线选项吗?一种是水平,一种是六边形网格。我觉得后一种不错。

征服者

绝对不会烂尾的!

精华
1
帖子
5728
威望
4 点
积分
7507 点
种子
142 点
注册时间
2005-5-22
最后登录
2024-11-13
 楼主| 发表于 2010-10-9 19:40  ·  广东 | 显示全部楼层
下面是引用luster于2010-10-09 12:48发表的:

我这里只能看到第一个链接的图
很神奇,完全再现了用RF线的失真效果~~~~

说实话,老游戏机确实要加点“干扰”才好看,真的自残

呵呵呵……下午去借了一本《3D绘图程序设计:使用Direct3D 10/9 和OpenGL 2.0/》(彭国伦编著,科学出版社,2009),看了几章,总算知道“gl_TexCoord[0].xy”是必须的了,一举搞定去除桶状失真,而且看脚本格式才明白这是GLSL的,而Byuu推荐HLSL可能是出于性能的考虑,所以——PS模拟器也能用了!先看看这是什么:





效果对比,从左至右:使用Byuu的shader,不使用shader,用OpenGL2默认shader,用OpenGL2的scanline -1(显示器点矩阵)


脚本如下
gpuPeteOGL2.slf请这样写:

uniform sampler2D rubyTexture;

#define distortion 0.2

void main(void) {     
  vec4 rgb = texture2D(rubyTexture, gl_TexCoord[0].xy);

  if(fract(gl_FragCoord.x * 0.5) < 0.5) {
   rgb.r *= 0.75;
  } else {
   rgb.g *= 0.75;
   rgb.b *= 0.75;
  }

  if(fract(gl_FragCoord.y * 0.5) < 0.5) {
   rgb.r *= 0.75;
  } else {
   rgb.g *= 0.75;
   rgb.b *= 0.75;
  }

  gl_FragColor = rgb;
}


还有一个必须的gpuPeteOGL2.slv请这样写,完全照抄书上的示例程序,可能有些多余的代码:

void main(void){
gl_Position = ftransform();
gl_TexCoord[0] = gl_MultiTexCoord0;
}


OpenGL2插件加载自制shader的方法可参考:
http://bbs.emu-zone.org/newbbs/viewthread.php?tid=558513
如果玩BSNES,载入gpuPeteOGL2.slf到Fragment就可以了,Vertex可有可无。

征服者

绝对不会烂尾的!

精华
1
帖子
5728
威望
4 点
积分
7507 点
种子
142 点
注册时间
2005-5-22
最后登录
2024-11-13
 楼主| 发表于 2010-10-9 19:49  ·  广东 | 显示全部楼层
下面是引用leon2510于2010-10-09 19:13发表的:
CRT是扫描线 不是点阵!!!!!!!!!!!!

做这个shader的可是对CRT很有研究的人,至于CRT到底是什么,可以看Byuu的留言板或R神以前的帖子。

精华
0
帖子
10512
威望
0 点
积分
10663 点
种子
168 点
注册时间
2008-6-19
最后登录
2024-12-24
发表于 2010-10-9 21:42  ·  广东 | 显示全部楼层
LZ的水平,确实是高!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|A9VG电玩部落 川公网安备 51019002005286号

GMT+8, 2024-12-24 21:06 , Processed in 0.233649 second(s), 14 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

返回顶部