ruboking
350i

UID 127362
精华
0
积分 801
帖子 141
威望 0 级
路币 861 LB
阅读权限 3
注册 2006-3-4
状态 离线
|
|
|
【心得】解决VMR9模式发白的一个好办法,N卡A卡通用~
平时听各位大侠说VMR9模式是如何如何的好,我一试结果图象发白,之后上网找解决办法,找了半天终于找到了一个不错的解决方法
高手可能都知道了就别笑我火星了
俺现在终于能投进VMR9的怀抱了
下面来说是步骤,先说明播放器得用 Kmplayer或者sdxy大侠的 终极解码。(mpc也能实现,不过实现步骤和下面说的不同,自己摸索吧)
先看图设置一下:
注意:上面图中的"使用VMR9混合器模式"这个选项是用来解决VMR 9 Renderless(VMR 9 未渲染模式)模式下启用硬件加速时无法获得正确的反交错画面的问题,你觉得不需要的话可以不打开。
接着打开这个:
然后出现下面这个窗口,如果窗口下方有"Coult not found D3DX9sab.dll!!"这个提示则说明你的播放器缺少这个文件,解决办法是把我上传的附件下载下来,然后解压出来放到你的播放器的安装目录下即可。其它的看图片说明。
如果上面那张图中的"VMR9 3D纹理"选项里面你看见有"Remap_16_235
"这个选项那就直接选中它行了,接下来的步骤就不用理会了!!!
上面步骤需要的代码:
sampler s0 : register(s0);
//BT.601
#define Kb 0.114
#define Kr 0.299
//BT.709
#define Kb7 0.0722
#define Kr7 0.2126
float4 main(float2 tex : TEXCOORD0) : COLOR
{
float Y = dot(tex2D(s0, tex), float4(Kr ,1-Kr-Kb ,Kb ,0));
float Pb = (dot(tex2D(s0, tex), float4(0,0,1,0))-Y)*0.5/(1-Kb);
float Pr = (dot(tex2D(s0, tex), float4(1,0,0,0))-Y)*0.5/(1-Kr);
// Y range is 16 ~ 235, PbPr range is -112 ~ 112
float X = 1/15.9375;
Y = Y-X;
Y = Y * 255/219;
if(Y <= 0) Y = 0;
if(Y >= 1) Y = 1;
Pb = Pb * 128/112;
Pr = Pr * 128/112;
float R = Y+2*Pr*(1-Kr);;
float G = Y - (2*Kb*(1-Kb)/(1-Kb-Kr)) * Pb
- (2*Kr*(1-Kr)/(1-Kb-Kr)) * Pr;
float B = Y+2*Pb*(1-Kb);
return float4(R,G,B,0);
}
接着设置一下:
这个办法在本人的显卡6600GT,驱动93.71实践成功,同学用的X700也成功通过。
注意:用CoreAVC的兄弟们就不必打开解码器自带的"Fix VMR9 color range"这个选项了。
自己找了个片段来测试了一下:
发白模式:
修正后:
D3DX9sab.dll下载地址:
http://www.clootie.ru/delphi/DX90/Clootie_DX90_dlls.zip
[ 本帖最后由 ruboking 于 2006-12-24 19:47 编辑 ]
2006-12-22 05:49
下载次数: 287
D3DX9sab.rar
(765.35 KB)
D3DX9sab.dll
|
引用
报告
回复
|
|