专栏/从零开始学习MME的HLSL编程(1)

从零开始学习MME的HLSL编程(1)

2018年03月03日 03:45--浏览 · --点赞 · --评论
粉丝:7809文章:42

本次对应第一节教程的文字版解释

视频加载失败

float4x4 WVP      : WORLDVIEWPROJECTION;

此代码表示命名WVP为世界视察投影变换矩阵,不清楚什么是变换矩阵可以查看:

文章加载失败

struct VS_OUTPUT {

    float4 Pos        : POSITION; 

};

此代码表示VertexShader将带有齐次坐标的位置输出,不清楚什么是齐次坐标的还可以戳下上面的文章来了解。


VS_OUTPUT Basic_VS(float4 Pos : POSITION)

此代码表示从原来的VertexShader的Output中获得位置信息

{

VS_OUTPUT Out;

Out.Pos = mul(Pos,WVP);

将位置信息和世界视察投影变换矩阵进行变换,变成屏幕看到的效果,不清楚变换方式的,可以看:

文章加载失败


    return Out;

输出变换后的顶点信息

}


float4 Basic_PS(VS_OUTPUT IN) : COLOR0

VertexShader中拿到顶点信息,并且由之后的PixelShader过程上色

{

    return float(1,1,1,1);

将顶点上色,颜色以RGB(0-1的浮点)和透明通道代表,此处是纯白色。不了解RGB的可以看:

文章加载失败

}

technique MainTec < string MMDPass = "object";> {

    pass DrawObject {

        VertexShader = compile vs_2_0 Basic_VS();

        PixelShader  = compile ps_2_0 Basic_PS();

    }

}

technique MainTec_ss < string MMDPass = "object_ss";> {

    pass DrawObject {

        VertexShader = compile vs_2_0 Basic_VS();

        PixelShader  = compile ps_2_0 Basic_PS();

    }

}

将之前写的代码进行编译,编译版本都是2.0


投诉或建议