查看: 2312|回复: 1

AGAL反编译器

[复制链接]
.    

3797

主题

11

听众

5万

积分

首席设计师

Rank: 8Rank: 8

纳金币
32328
精华
41

活跃会员 优秀版主 荣誉管理 论坛元老

发表于 2013-3-19 17:14:12 |显示全部楼层
程序地址:http://boycy.webs.com/Disassembler.swf
源文件地址:http://boycy.webs.com/Disassembler.rar
这是一个AGAL编译与反编译器。
AGAL是一种用来为显卡写着色器程序的汇编语言,是手工写Molehill程序必须掌握的技术。在AS中,他以字符串的形式存在,通过官方提供的AGALMiniAssembler类将其编译成字节数组。而后将其包装入Program3D通过Context3D上传至显卡完成执行。
前段时间曾为一个使用Molehill技术的程序进行压缩,里面用到一个技巧。实际上着色器程序完全可以脱离AGALMiniAssembler存在。可事先将AGAL程序进行编译,生成字节数组,再以字符串的形式保存。该字符串既是已经编译好的程序,而不必在运行时通过AGALMiniAssembler进行编译。省略AGALMiniAssembler类大概可节约程序10K的体积。这让原本就没几K的小程序大大瘦身了一把。
这个技巧在国外比较流行,所以有时候拆开人家程序的时候,其着色器程序往往是一堆看不懂的“乱码”。于是,国外另外一些好事者就做了一个AGAL反编译程序,只要能获取着色器的字节数组,就可以将其反编译成可读的AGAL程序。
本人把反编译程序包装了个UI来掩饰他的效果。
左边是源码框;右边是字节码框;左下角是程序类型(顶点着色器or段着色器),可以找个程序尝试玩一下。
测试顶点着色程序:
m44 op, va0, vc0         
mov v0, va1         
dp3 vt0,vc4,va2            
add vt0.x,vc5.x,vt0.x         
div v1,vt0.x,vc5.y

测试段着色器程序:
tex ft1, v0, fs0 <2d,linear,nomip>     
mul ft1,ft1,v1.x        
mov oc, ft1

最近开始研究Molehill,还是真抽象!大家一起进步吧!
【来源:互联网】
更多精彩教程,尽在web3D纳金网http://www.narkii.com/college/
回复

使用道具 举报

uu70    

0

主题

1

听众

32

积分

设计初学者

Rank: 1

纳金币
2
精华
0
发表于 2017-5-19 16:26:54 |显示全部楼层
顶,好帖子,很实用。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|纳金网 ( 闽ICP备08008928号

GMT+8, 2024-3-29 12:51 , Processed in 0.088378 second(s), 38 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部