首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络游戏 >

帮忙把一段 ps_1_1的asm代码转成hlsl,该如何解决

2013-01-11 
帮忙把一段 ps_1_1的asm代码转成hlsl本帖最后由 jerris 于 2011-02-16 20:15:17 编辑struct VertOut{float

帮忙把一段 ps_1_1的asm代码转成hlsl
本帖最后由 jerris 于 2011-02-16 20:15:17 编辑 struct VertOut
{
    float4 Position  : POSITION;
    float4 modColor  : COLOR0;
    float4 addColor  : COLOR1;
float  Fog       : FOG;
    float4 TexCoord0 : TEXCOORD0; // Ripple texture coords
    float4 BTN_X     : TEXCOORD1; // Binormal.x, Tangent.x, Normal.x
    float4 BTN_Y     : TEXCOORD2; // Bin.y, Tan.y, Norm.y
    float4 BTN_Z     : TEXCOORD3; // Bin.z, Tan.z, Norm.z
};


PixelShader =
asm
{
ps_1_1

tex t0 
texm3x3pad   t1,  t0_bx2   //??
texm3x3pad   t2,  t0_bx2   //??
texm3x3vspec t3,  t0_bx2   //??

madr0.rgb, t3, v0, v1;
movr0.a, v0; 
};

Sampler[0] = (BumpSamp);
Sampler[1] = (BumpSamp);
Sampler[2] = (BumpSamp);
Sampler[3] = (EnvSamp);


这段asm代码看的不是很明白,就是后面打问号的三句,求大神级别的帮忙注解或者翻成hlsl。
[解决办法]
哥们,Gpu Gems里面的WaterSimulation的代码吧?
我现在正在尝试实现这个。
细节我还不明白,能有牛人来解释下就好了。说说我表面的理解吧。有误的希望大家指出。

1.t0_bx2
这个就是对t0的每个值减1除2,比如t0.x=(t0.x-1)/2。
作用是将0~1缩放值-1~1

2.texm3x3pad和texm3x3vspec
两个texm3x3pad和texm3x3vspec是组合使用的。细节不懂。由三个纹理采样的结果组成3x3矩阵怎么乘一下吧。
对于这个模拟水的例子而言,这段代码的作用就是根据视角的变化得到了一个反射的颜色值(相关的参数由在VS中输出的四个纹理坐标TEXCOORD0~4决定),然后下面用这个值决定颜色的深浅,然后再加上水的基础颜色。




热点排行