标题: Meff里的"加深"能否改为对黑色背景有效?
性别:男-离线 WHITESHIP

★★
谏议大夫

Rank: 16
组别 翰林学士
级别 征北将军
功绩 380
帖子 4210
编号 170977
注册 2007-6-3
家族 轩辕学院


发表于 2015-1-10 17:14 资料 个人空间 短消息 看全部作者
我去研究了,原版处理透明色的代码在42FD5A,超复杂。而且光荣居然专门做了一套滤色算法,专门用来滤掉MEFF里的黑色,这个可真是始料未及。
滤色的备用色板在497770,要开始进程后才能读出来。

顺便,原版的滤色机制也并不完美,虽然透明16时能完全滤掉黑色,不过原本的法术色也会亮的很厉害。

如果是STAR6.0的代码,我建议加入一个算法来滤掉黑色。算法可能很复杂。

而且如果让黑色作为透明色,那黑色的MEFF比如晕眩就不好用了。

所以建议做一个判断,判断这一帧的透明值是多少,如果是16则特殊处理。这样可能比较好。

我打算用的算法是,如果MEFF这一个点的颜色是255,那么透明度正常,越接近0,透明度越低。

目前效果:
预设透明度 50
地图背景   MEFF   实际色
80             0          40
80             255      167

改良后:实际透明度=MEFF色/255*透明度  =0/255*50=0 或 255/255*50=50
预设透明度 50
地图背景   MEFF   实际色
80             0          80
80             255      167

这样就滤掉了黑色。

这个代码在6.0的40690C里,具体代码就不放了因为我也没开始写= =
而且还要根据来源是否40246D做一个判断,表示只有释放MEFF时才滤掉黑色。或者新写一个函数,让40246D去CALL这个新函数。

这么说起来也挺麻烦的……还不如用PS把黑色处理掉,虽然很丑。

以上都是给star175看的…………

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

非6.0引擎则没有任何问题,可以放心使用楼主这一套MEFF,但只能用256色的MEFF。

[ 本帖最后由 WHITESHIP 于 2015-1-10 17:18 编辑 ]


顶部
性别:男-离线 WHITESHIP

★★
谏议大夫

Rank: 16
组别 翰林学士
级别 征北将军
功绩 380
帖子 4210
编号 170977
注册 2007-6-3
家族 轩辕学院


发表于 2015-1-10 18:12 资料 个人空间 短消息 看全部作者
补充,这样还是很多问题。会导致原来的MEFF太淡,换了一种新的算法。
用RGB三个颜色的平方除以一个不大的数字(原来是765=255*3,现在我设了30000)。得出来的透明度做个控制,不大于64H。这样后效果拔群!真的效果拔群卧槽!!


===========

搞定,代码如下,很乱,可能还有错误,将就着看吧= =(STAR6.0专属):
00402459  |.  0FB650 02     MOVZX EDX,BYTE PTR DS:[EAX+2]            ; |
0040245D      0FB640 03     MOVZX EAX,BYTE PTR DS:[EAX+3]
00402461      6BC0 02       IMUL EAX,EAX,2
00402464      03D0          ADD EDX,EAX                              ; |
00402466  |.  52            PUSH EDX                                 ; |Arg3
00402467  |.  FF75 F0       PUSH DWORD PTR SS:[EBP-10]               ; |Arg2
0040246A  |.  FF75 F4       PUSH DWORD PTR SS:[EBP-C]                ; |Arg1                这几句是加深MEFF深度的,如果觉得太深可以把那个IMUL EAX,EAX,2改成3之类的。              

0040246D      E8 8E4B0D00     CALL FSB2.004D7000


004D7000    55              PUSH EBP
004D7001    8BEC            MOV EBP,ESP
004D7003    6A 00           PUSH 0
004D7005    6A 00           PUSH 0
004D7007    90              NOP
004D7008    90              NOP
004D7009    90              NOP
004D700A    83EC 14         SUB ESP,14
004D700D    EB 03           JMP SHORT FSB2.004D7012
004D700F    FF45 F8         INC DWORD PTR SS:[EBP-8]
004D7012    8B4D F8         MOV ECX,DWORD PTR SS:[EBP-8]
004D7015    3B4D 08         CMP ECX,DWORD PTR SS:[EBP+8]
004D7018    0F83 C6000000   JNB FSB2.004D70E4
004D701E    6BC9 03         IMUL ECX,ECX,3
004D7021    034D 0C         ADD ECX,DWORD PTR SS:[EBP+C]
004D7024    8B11            MOV EDX,DWORD PTR DS:[ECX]
004D7026    81E2 FFFFFF00   AND EDX,0FFFFFF
004D702C    81FA FF00F700   CMP EDX,0F700FF
004D7032  ^ 74 DB           JE SHORT FSB2.004D700F
004D7034    894D F4         MOV DWORD PTR SS:[EBP-C],ECX
004D7037    8B4D 14         MOV ECX,DWORD PTR SS:[EBP+14]
004D703A    83F9 02         CMP ECX,2
004D703D    75 47           JNZ SHORT FSB2.004D7086
004D703F    8B45 F8         MOV EAX,DWORD PTR SS:[EBP-8]
004D7042    6BC0 03         IMUL EAX,EAX,3
004D7045    0345 1C         ADD EAX,DWORD PTR SS:[EBP+1C]
004D7048    8B08            MOV ECX,DWORD PTR DS:[EAX]
004D704A    81E1 FFFFFF00   AND ECX,0FFFFFF
004D7050    894D F0         MOV DWORD PTR SS:[EBP-10],ECX
004D7053    8955 EC         MOV DWORD PTR SS:[EBP-14],EDX
004D7056    8B45 0C         MOV EAX,DWORD PTR SS:[EBP+C]
004D7059    8B4D F8         MOV ECX,DWORD PTR SS:[EBP-8]
004D705C    6BC9 03         IMUL ECX,ECX,3
004D705F    03C1            ADD EAX,ECX
004D7061    0FB608          MOVZX ECX,BYTE PTR DS:[EAX]
004D7064    0FB650 01       MOVZX EDX,BYTE PTR DS:[EAX+1]
004D7068    0FB640 02       MOVZX EAX,BYTE PTR DS:[EAX+2]
004D706C    0FAFC0          IMUL EAX,EAX
004D706F    0FAFC9          IMUL ECX,ECX
004D7072    0FAFD2          IMUL EDX,EDX
004D7075    03C1            ADD EAX,ECX
004D7077    03C2            ADD EAX,EDX
004D7079    6BC0 64         IMUL EAX,EAX,64
004D707C    33D2            XOR EDX,EDX
004D707E    B9 30750000     MOV ECX,7530
004D7083    F7F1            DIV ECX
004D7085    8B4D 10         MOV ECX,DWORD PTR SS:[EBP+10]
004D7088    0FAFC1          IMUL EAX,ECX
004D708B    B9 64000000     MOV ECX,64
004D7090    33D2            XOR EDX,EDX
004D7092    F7F1            DIV ECX
004D7094    83F8 55         CMP EAX,55
004D7097    76 05           JBE SHORT FSB2.004D709E
004D7099    B8 55000000     MOV EAX,55
004D709E    8945 E8         MOV DWORD PTR SS:[EBP-18],EAX
004D70A1    8B55 EC         MOV EDX,DWORD PTR SS:[EBP-14]
004D70A4    8B4D F0         MOV ECX,DWORD PTR SS:[EBP-10]
004D70A7    FF75 18         PUSH DWORD PTR SS:[EBP+18]
004D70AA    8B45 E8         MOV EAX,DWORD PTR SS:[EBP-18]
004D70AD    83E8 64         SUB EAX,64
004D70B0    F7D8            NEG EAX
004D70B2    50              PUSH EAX
004D70B3    FF75 E8         PUSH DWORD PTR SS:[EBP-18]
004D70B6    52              PUSH EDX
004D70B7    51              PUSH ECX
004D70B8    8D4D FC         LEA ECX,DWORD PTR SS:[EBP-4]
004D70BB    E8 21FAF7FF     CALL FSB2.00456AE1
004D70C0    8B55 FC         MOV EDX,DWORD PTR SS:[EBP-4]
004D70C3    8B4D 1C         MOV ECX,DWORD PTR SS:[EBP+1C]
004D70C6    85C9            TEST ECX,ECX
004D70C8    74 0A           JE SHORT FSB2.004D70D4
004D70CA    8B45 F8         MOV EAX,DWORD PTR SS:[EBP-8]
004D70CD    6BC0 03         IMUL EAX,EAX,3
004D70D0    03C8            ADD ECX,EAX
004D70D2    EB 03           JMP SHORT FSB2.004D70D7
004D70D4    8B4D F4         MOV ECX,DWORD PTR SS:[EBP-C]
004D70D7    8121 000000FF   AND DWORD PTR DS:[ECX],FF000000
004D70DD    3111            XOR DWORD PTR DS:[ECX],EDX
004D70DF  ^ E9 2BFFFFFF     JMP FSB2.004D700F
004D70E4    8BE5            MOV ESP,EBP
004D70E6    5D              POP EBP
004D70E7    C2 1800         RETN 18




4D7000段:
55 8B EC 6A 00 6A 00 90 90 90 83 EC 14 EB 03 FF 45 F8 8B 4D F8 3B 4D 08 0F 83 C6 00 00 00 6B C9
03 03 4D 0C 8B 11 81 E2 FF FF FF 00 81 FA FF 00 F7 00 74 DB 89 4D F4 8B 4D 14 83 F9 02 75 47 8B
45 F8 6B C0 03 03 45 1C 8B 08 81 E1 FF FF FF 00 89 4D F0 89 55 EC 8B 45 0C 8B 4D F8 6B C9 03 03
C1 0F B6 08 0F B6 50 01 0F B6 40 02 0F AF C0 0F AF C9 0F AF D2 03 C1 03 C2 6B C0 64 33 D2 B9 30
75 00 00 F7 F1 8B 4D 10 0F AF C1 B9 64 00 00 00 33 D2 F7 F1 83 F8 55 76 05 B8 55 00 00 00 89 45
E8 8B 55 EC 8B 4D F0 FF 75 18 8B 45 E8 83 E8 64 F7 D8 50 FF 75 E8 52 51 8D 4D FC E8 21 FA F7 FF
8B 55 FC 8B 4D 1C 85 C9 74 0A 8B 45 F8 6B C0 03 03 C8 EB 03 8B 4D F4 81 21 00 00 00 FF 31 11 E9
2B FF FF FF 8B E5 5D C2 18 00 00 00 00 00






效果图(封神万仙阵,水技能,用的楼主的MEFF,背景是黑的,但代码将黑色都过滤了。不过我调高了不透明度,否则会很淡):

[ 本帖最后由 WHITESHIP 于 2015-1-28 14:40 编辑 ]


图片附件: v.png (2015-1-10 18:12, 145.65 K)



顶部
性别:男-离线 WHITESHIP

★★
谏议大夫

Rank: 16
组别 翰林学士
级别 征北将军
功绩 380
帖子 4210
编号 170977
注册 2007-6-3
家族 轩辕学院


发表于 2015-1-23 12:07 资料 个人空间 短消息 看全部作者
回复 #28 maomao83118 的帖子

= =我说的都是代码……代码里的不透明度
顶部
性别:男-离线 WHITESHIP

★★
谏议大夫

Rank: 16
组别 翰林学士
级别 征北将军
功绩 380
帖子 4210
编号 170977
注册 2007-6-3
家族 轩辕学院


发表于 2015-1-24 12:07 资料 个人空间 短消息 看全部作者
我那代码是给star看的……
的确不透明度的问题我没写,因为是自用的,有很多局限性,不通用(比如一切黄色、白色、粉色的MEFF都会失真严重)……
有空微调了再放上来。
顶部

正在浏览此帖的会员 - 共 1 人在线




当前时区 GMT+8, 现在时间是 2024-11-24 20:04
京ICP备2023018092号 轩辕春秋 2003-2023 www.xycq.org.cn

Powered by Discuz! 5.0.0 2001-2006 Comsenz Inc.
Processed in 0.012674 second(s), 10 queries , Gzip enabled

清除 Cookies - 联系我们 - 轩辕春秋 - Archiver - WAP