FXC 配置

1.配置步骤

  1.  确保$(DX_SDK)\Utilities\bin\x86在可执行目录中;
  2. 右键点击.fx文件 -> 属性,将项目“类型”改为“自定义生成工具”,并点击确定;
  3. 修改命令行:
    fxc /Fc /Od /Zi /T fx_2_0 /Fo %(RelativeDir)%(Filename).fxo %(FullPath)
    /Fc 输出汇编源码清单文件 .cod
    /Od 关闭优化。(Disable optimizations)
    /Zi 可获取调试信息
    /T 在其后面指定shader model版本
    /Fo 指定输出的obj文件:%(RelativeDir)%(Filename).fxo
    %(FullPath) .fx文件(关于宏可自行查询代表的具体语义)
    注:上述信息可在DX_SDK的帮助文档中查询,搜索关键字“fxc”
  4. 修改说明:fxc compile for debug: $(InputFileName)
  5. 修改输出:$(InputDir)$(InputName).fxo
示意图:

2.示例说明

effect文件源码:
matrix matrix_wvp;

struct vs_input 
{
	float3 position : POSITION0;
	float4 color : COLOR0;
};

struct vs_output 
{
	float4 position : POSITION0;
	float4 color : COLOR0;
};

vs_output vs_gvd(vs_input data_in) 
{
	vs_output data_out;
	data_out.position = mul(float4(data_in.position,1.0), matrix_wvp);
	data_out.color = data_in.color;
	return data_out;
}

float4 ps_gvd(vs_output data_in) : COLOR0
{
	return data_in.color;
}

technique NoLighting {
	pass P0{        				
		VertexShader = compile vs_2_0 vs_gvd();
		PixelShader  = compile ps_2_0 ps_gvd();
		
		FillMode = Wireframe;
		CullMode = CW;
	}
}


生成的asm代码:
//listing of all techniques and passes with embedded asm listings 

technique NoLighting
{
    pass P0
    {
        vertexshader = 
            asm {
            //
            // Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
            //
            // Parameters:
            //
            //   float4x4 matrix_wvp;
            //
            //
            // Registers:
            //
            //   Name         Reg   Size
            //   ------------ ----- ----
            //   matrix_wvp   c0       4
            //
            
                vs_2_0
                def c4, 1, 0, 0, 0
                dcl_position v0  // data_in<0,1,2>
                dcl_color v1  // data_in<3,4,5,6>
            
            #line 22 "E:\sjmiao~\proj\CrowdSim_paper\1\FX\gvd.fx"
                mul r0, v0.xyzx, c4.xxxy
                add r0, r0, c4.yyyx
                dp4 r1.x, r0, c0  // ::data_out<0>
                dp4 r1.y, r0, c1  // ::data_out<1>
                dp4 r1.z, r0, c2  // ::data_out<2>
                dp4 r1.w, r0, c3  // ::data_out<3>
                mov r0, v1  // ::data_out<4,5,6,7>
                mov oPos, r1  // ::vs_gvd<0,1,2,3>
                mov oD0, r0  // ::vs_gvd<4,5,6,7>
            
            // approximately 9 instruction slots used
            };

        pixelshader = 
            asm {
            //
            // Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
                ps_2_0
                dcl v0  // data_in<4,5,6,7>
            
            #line 29 "E:\sjmiao~\proj\CrowdSim_paper\1\FX\gvd.fx"
                mov r0, v0  // ::ps_gvd<0,1,2,3>
                mov oC0, r0  // ::ps_gvd<0,1,2,3>
            
            // approximately 2 instruction slots used
            };
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

superbin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值