A9VG电玩部落论坛

 找回密码
 注册
搜索
楼主: 爱小熊

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

[复制链接]

征服者

绝对不会烂尾的!

精华
1
帖子
5728
威望
4 点
积分
7507 点
种子
142 点
注册时间
2005-5-22
最后登录
2024-11-13
 楼主| 发表于 2010-10-11 00:12  ·  广东 | 显示全部楼层
下面是引用kevinkuo2001于2010-10-11 00:10发表的:
不知道是不是系统关系,win 7 64系统,3850显卡,选择任意一个都会直接退出

Bsnes一定要把Video Driver选成openGL才能加载这两种shader。

精华
0
帖子
2242
威望
0 点
积分
2335 点
种子
69 点
注册时间
2009-12-24
最后登录
2022-8-14
发表于 2010-10-11 00:35  ·  陕西 | 显示全部楼层
在加载了楼主提供的东西后。 EPSX 1.70   1.60 直接弹出错误对话框。我的显卡也是ATI的  HD4850

征服者

绝对不会烂尾的!

精华
1
帖子
5728
威望
4 点
积分
7507 点
种子
142 点
注册时间
2005-5-22
最后登录
2024-11-13
 楼主| 发表于 2010-10-11 06:52  ·  广东 | 显示全部楼层
下面是引用aony于2010-10-11 00:35发表的:
在加载了楼主提供的东西后。 EPSX 1.70   1.60 直接弹出错误对话框。我的显卡也是ATI的  HD4850

我的显卡是8600GT。建议先试试Bsnes能否加载shader。
该用户已被禁言

精华
0
帖子
24895
威望
0 点
积分
25238 点
种子
7 点
注册时间
2004-12-3
最后登录
2018-7-17
发表于 2010-10-11 08:39  ·  上海 | 显示全部楼层
下面是引用aony于2010-10-11 00:35发表的:
在加载了楼主提供的东西后。 EPSX 1.70   1.60 直接弹出错误对话框。我的显卡也是ATI的  HD4850


其实直接DX6插件,scaline里设成-1即可,没楼主说得那么麻烦

精华
0
帖子
69
威望
0 点
积分
74 点
种子
0 点
注册时间
2009-8-23
最后登录
2012-6-5
发表于 2010-10-14 09:34  ·  重庆 | 显示全部楼层
本帖最后由 mgzzzz 于 2011-4-28 15:18 编辑

ogl2的phosphor2x:

=============================================================

uniform sampler2D OGL2Texture;
uniform vec4 OGL2Size;
uniform vec4 OGL2Param;

vec2 rubyTextureSize = OGL2Size.xy;
vec2 rubyOutputSize = OGL2Size.zw;
vec2 rubyInputSize = rubyOutputSize/(1+OGL2Param.z);

#define TEX2D(c) texture2D(OGL2Texture,(c))
#define PI 3.141592653589
#define phase 0.0
#define gamma 2.5

void main()
{
   vec2 xy = gl_TexCoord[0].xy;

   vec2 one          = 1.0/rubyTextureSize;
   xy = xy + vec2(0.0 , -0.5 * (phase + (1-phase) * rubyInputSize.y/rubyOutputSize.y) * one.y);

   vec2 uv_ratio    = fract(xy*rubyTextureSize);

   vec4 col, col2;

   vec4 coeffs = vec4(1.0 + uv_ratio.x, uv_ratio.x, 1.0 - uv_ratio.x, 2.0 - uv_ratio.x);
   coeffs = (sin(PI * coeffs) * sin(PI * coeffs / 2.0)) / (coeffs * coeffs);
   coeffs = coeffs / (coeffs.x+coeffs.y+coeffs.z+coeffs.w);

   col  = clamp(coeffs.x * TEX2D(xy + vec2(-one.x,0.0)) + coeffs.y * TEX2D(xy) + coeffs.z * TEX2D(xy + vec2(one.x, 0.0)) + coeffs.w * TEX2D(xy + vec2(2 * one.x, 0.0)),0.0,1.0);
   col2 = clamp(coeffs.x * TEX2D(xy + vec2(-one.x,one.y)) + coeffs.y * TEX2D(xy + vec2(0.0, one.y)) + coeffs.z * TEX2D(xy + one) + coeffs.w * TEX2D(xy + vec2(2 * one.x, one.y)),0.0,1.0);
   col = pow(col, gamma);
   col2 = pow(col2, gamma);

   vec4 wid = 0.2 + 0.4 * pow(col, 2.0);
   vec4 weights = uv_ratio.y/wid;
   weights = 0.51*exp(-weights*weights)/wid;
   wid = 0.2 + 0.4 * pow(col2,2.0);
   vec4 weights2 = (1.0-uv_ratio.y)/wid;
   weights2 = 0.51*exp(-weights2*weights2)/wid;

   gl_FragColor = pow(col * weights + col2 * weights2, 1.0/2.2);
}


=============================================================

个人感觉效果不是很好

注意视频设置里面stretching mode(拉伸模式)不能用默认第一项:拉伸至整个窗口,
否则会有显眼的难看暗纹,
最好选最后一项:保持像素比

而且ogl2插件没提供类似rubyInputSize的原始分辨率变量,
只能以显示分辨率除以整数来模拟,
通过着色器等级调节

总感觉画面怪怪的

精华
0
帖子
746
威望
0 点
积分
763 点
种子
12 点
注册时间
2008-5-5
最后登录
2024-6-1
发表于 2010-10-14 21:30  ·  甘肃 | 显示全部楼层
我的也是ati的显卡X800,bsnes加载后没效果,epsxe提示错误,怎么回事,难道只支持n卡?

精华
0
帖子
607
威望
0 点
积分
500 点
种子
0 点
注册时间
2006-9-24
最后登录
2014-8-22
发表于 2010-10-15 00:32  ·  云南 | 显示全部楼层
太复杂了,哪天静下来再来学习,我现在玩模拟器都直接加50%的扫描线凑合着玩。

楼主用专业遮盖确实要好很多,主要是色渍很好,用扫描线太暗~

征服者

绝对不会烂尾的!

精华
1
帖子
5728
威望
4 点
积分
7507 点
种子
142 点
注册时间
2005-5-22
最后登录
2024-11-13
 楼主| 发表于 2010-10-18 23:49  ·  广东 | 显示全部楼层
下面是引用mgzzzz于2010-10-14 09:34发表的:
ogl2的phosphor2x:

=============================================================

uniform sampler2D OGL2Texture;
.......

感谢专家出手相助。现在我又喜欢上2XSAL Smart了,不知怎么写才能从pete's openGL2转给bsnes用。

征服者

绝对不会烂尾的!

精华
1
帖子
5728
威望
4 点
积分
7507 点
种子
142 点
注册时间
2005-5-22
最后登录
2024-11-13
 楼主| 发表于 2010-10-18 23:50  ·  广东 | 显示全部楼层
下面是引用landes于2010-10-14 21:30发表的:
我的也是ati的显卡X800,bsnes加载后没效果,epsxe提示错误,怎么回事,难道只支持n卡?

是不是要升级DirectX以及显卡驱动?

精华
0
帖子
10513
威望
0 点
积分
10664 点
种子
168 点
注册时间
2008-6-19
最后登录
2024-12-25
发表于 2010-10-19 12:54  ·  广东 | 显示全部楼层
下面是引用mgzzzz于2010-10-14 09:34发表的:
ogl2的phosphor2x:

=============================================================

uniform sampler2D OGL2Texture;
.......
你的代码我看不懂。。。。。
另外,保持像素比不一定正确的。
比如某些PS游戏,用SFC的分辨率。。。。。可以详细看我以前发过的关于游戏机分辨率的帖
最经典的比如兰古瑞撒1+2就是,事实上,1比1的像素会造成画面压缩,正确的比例是输出到电视机后拉伸为4:3这样才合适。就类似于CPS1-3全是压缩的,输出到ARC显示器拉伸垂直像素,就正常了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-25 10:22 , Processed in 0.187952 second(s), 16 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

返回顶部