DirectX10 asm

actually I can't use Vista for make test in DirectX10, can please anyone post here an fx file with vertex,pixel and geometry shader and the relative compilation in asm using fxc10.

I need to see it for a project that I've in mind

thanks
[275 byte] By [robydx] at [2008-2-26]
# 1

Could you please tell us more detailed what your a looking for? In general a disassembled D3D10 shader doesn’t look that different from a D3D9 shader.

Anyway all you can do with a disassembled D3D10 shader is to look at it or let it parse from another program. But most of the information you can get from this can be obtained more easily with the shader reflection interfaces.

RalfKornmann at 2007-9-4 > top of Msdn Tech,Game Technologies: DirectX, XNA, XACT, etc.,Direct3D 10...
# 2

I know it but for my project I need to know how directX10 compile the geometry shader that is kind different from vertex and pixel shader (it has an inout list for example).

What I need is an fx file (one of the fx shader in the october SDK for example) and its compilation with fxc10 (fxc10 /T fx4_0 filename)

In that way I can see in assembly what it does. I've october SDK but fxc10 need directX10 installed and actually I can't install Vista on my machine to test personally.

Thank you

robydx at 2007-9-4 > top of Msdn Tech,Game Technologies: DirectX, XNA, XACT, etc.,Direct3D 10...
# 3

Here we go. The FX file was taken from Tutorial 13.

technique10 Render

{

pass P0

{

VertexShader = asm {

//

// Generated by Microsoft (R) HLSL Shader Compiler

//

//

// Buffer Definitions:

//

// cbuffer cbChangesEveryFrame

// {

//

// float4x4 World; // Offset: 0 Size: 64

// float4x4 View; // Offset: 64 Size: 64

// float4x4 Projection; // Offset: 128 Size: 64

// float Time; // Offset: 192 Size: 4

//

// }

//

//

// Resource Bindings:

//

// Name Type Format Dim Slot Elements

// - - - - - --

// cbChangesEveryFrame cbuffer NA NA 0 1

//

//

//

// Input signature:

//

// Name Index Mask Register SysValue Format Used

// - -- - -- -- -

// POSITION 0 xyz 0 NONE float xyz

// NORMAL 0 xyz 1 NONE float xyz

// TEXCOORD0 0 xy 2 NONE float xy

//

//

// Output signature:

//

// Name Index Mask Register SysValue Format Used

// - -- - -- -- -

// SV_POSITION 0 xyzw 0 POS float xyzw

// TEXCOORD0 0 xyz 1 NONE float xyz

// TEXCOORD1 0 xy 2 NONE float xy

//

vs_4_0

dcl_input v0.xyz

dcl_input v1.xyz

dcl_input v2.xy

dcl_output_siv o0.xyzw , position

dcl_output o1.xyz

dcl_output o2.xy

dcl_constantbuffer cb0[13]

dcl_temps 1

mov r0.xyz, v0.xyzx

mov r0.w, l(1.000000)

dp4 o0.x, r0.xyzw, cb0[0].xyzw

dp4 o0.y, r0.xyzw, cb0[1].xyzw

dp4 o0.z, r0.xyzw, cb0[2].xyzw

dp4 o0.w, r0.xyzw, cb0[3].xyzw

dp3 o1.x, v1.xyzx, cb0[0].xyzx

dp3 o1.y, v1.xyzx, cb0[1].xyzx

dp3 o1.z, v1.xyzx, cb0[2].xyzx

mov o2.xy, v2.xyxx

};

GeometryShader = asm {

//

// Generated by Microsoft (R) HLSL Shader Compiler

//

//

// Buffer Definitions:

//

// cbuffer cbChangesEveryFrame

// {

//

// float4x4 World; // Offset: 0 Size: 64

// float4x4 View; // Offset: 64 Size: 64

// float4x4 Projection; // Offset: 128 Size: 64

// float Time; // Offset: 192 Size: 4

//

// }

//

// cbuffer cbUserChanges

// {

//

// float Explode; // Offset: 0 Size: 4

//

// }

//

//

// Resource Bindings:

//

// Name Type Format Dim Slot Elements

// - - - - - --

// cbChangesEveryFrame cbuffer NA NA 0 1

// cbUserChanges cbuffer NA NA 1 1

//

//

//

// Input signature:

//

// Name Index Mask Register SysValue Format Used

// - -- - -- -- -

// SV_POSITION 0 xyzw 0 POS float xyzw

// TEXCOORD0 0 xyz 1 NONE float xyz

// TEXCOORD1 0 xy 2 NONE float xy

//

//

// Output signature:

//

// Name Index Mask Register SysValue Format Used

// - -- - -- -- -

// SV_POSITION 0 xyzw 0 POS float xyzw

// TEXCOORD0 0 xyz 1 NONE float xyz

// TEXCOORD1 0 xy 2 NONE float xy

//

gs_4_0

dcl_input_siv v[3][0].xyzw , position

dcl_input v[3][1].xyz

dcl_input v[3][2].xy

dcl_output_siv o0.xyzw , position

dcl_output o1.xyz

dcl_output o2.xy

dcl_constantbuffer cb0[13]

dcl_constantbuffer cb1[1]

dcl_temps 6

dcl_inputprimitive triangle

dcl_outputtopology triangestrip

dcl_maxout 12

add r0.xyz, -v[0][0].xyzx, v[1][0].xyzx

add r1.xyz, -v[0][0].xyzx, v[2][0].xyzx

mul r2.xyz, r0.zxyz, r1.yzxy

mad r0.xyz, r0.yzxy, r1.zxyz, -r2.xyzx

dp3 r0.w, r0.xyzx, r0.xyzx

rsq r0.w, r0.w

mul r0.xyz, r0.xyzx, r0.wwww

mul r1.xyz, r0.xyzx, cb1[0].xxxx

add r2.xyz, v[0][0].xyzx, v[1][0].xyzx

add r2.xyz, r2.xyzx, v[2][0].xyzx

div r2.xyz, r2.xyzx, l(3.000000, 3.000000, 3.000000, 0.000000)

add r3.xy, v[0][2].xyxx, v[1][2].xyxx

add r3.xy, r3.xyxx, v[2][2].xyxx

div r3.xy, r3.xyxx, l(3.000000, 3.000000, 0.000000, 0.000000)

add r2.xyz, r1.xyzx, r2.xyzx

add r2.xyz, r1.xyzx, r2.xyzx

mov r2.w, l(1.000000)

dp4 r4.x, r2.xyzw, cb0[4].xyzw

dp4 r4.y, r2.xyzw, cb0[5].xyzw

dp4 r4.z, r2.xyzw, cb0Devil.xyzw

dp4 r4.w, r2.xyzw, cb0[7].xyzw

dp4 r2.x, r4.xyzw, cb0Music.xyzw

dp4 r2.y, r4.xyzw, cb0[9].xyzw

dp4 r2.z, r4.xyzw, cb0[10].xyzw

dp4 r2.w, r4.xyzw, cb0[11].xyzw

mov r0.w, l(0)

loop

ilt r1.w, r0.w, l(3)

breakc_z r1.w

add r4.xyz, r1.xyzx, v[r0.w + 0][0].xyzx

mov r4.w, v[r0.w + 0][0].w

dp4 r5.x, r4.xyzw, cb0[4].xyzw

dp4 r5.y, r4.xyzw, cb0[5].xyzw

dp4 r5.z, r4.xyzw, cb0Devil.xyzw

dp4 r5.w, r4.xyzw, cb0[7].xyzw

dp4 r4.x, r5.xyzw, cb0Music.xyzw

dp4 r4.y, r5.xyzw, cb0[9].xyzw

dp4 r4.z, r5.xyzw, cb0[10].xyzw

dp4 r4.w, r5.xyzw, cb0[11].xyzw

mov o0.xyzw, r4.xyzw

mov o1.xyz, v[r0.w + 0][1].xyzx

mov o2.xy, v[r0.w + 0][2].xyxx

emit

iadd r0.w, r0.w, l(1)

ineg r1.w, r0.w

imax r1.w, r1.w, r0.w

udiv null, r1.w, r1.w, l(3)

ineg r3.z, r1.w

movc r1.w, l(0), r3.z, r1.w

add r4.xyz, r1.xyzx, v[r1.w + 0][0].xyzx

mov r4.w, v[r1.w + 0][0].w

dp4 r5.x, r4.xyzw, cb0[4].xyzw

dp4 r5.y, r4.xyzw, cb0[5].xyzw

dp4 r5.z, r4.xyzw, cb0Devil.xyzw

dp4 r5.w, r4.xyzw, cb0[7].xyzw

dp4 r4.x, r5.xyzw, cb0Music.xyzw

dp4 r4.y, r5.xyzw, cb0[9].xyzw

dp4 r4.z, r5.xyzw, cb0[10].xyzw

dp4 r4.w, r5.xyzw, cb0[11].xyzw

mov o0.xyzw, r4.xyzw

mov o1.xyz, v[r1.w + 0][1].xyzx

mov o2.xy, v[r1.w + 0][2].xyxx

emit

mov o0.xyzw, r2.xyzw

mov o1.xyz, r0.xyzx

mov o2.xy, r3.xyxx

emit

cut

endloop

mov r0.x, l(2)

loop

ige r0.y, r0.x, l(0)

breakc_z r0.y

add r2.xyz, r1.xyzx, v[r0.x + 0][0].xyzx

mov r2.w, v[r0.x + 0][0].w

dp4 r3.x, r2.xyzw, cb0[4].xyzw

dp4 r3.y, r2.xyzw, cb0[5].xyzw

dp4 r3.z, r2.xyzw, cb0Devil.xyzw

dp4 r3.w, r2.xyzw, cb0[7].xyzw

dp4 r2.x, r3.xyzw, cb0Music.xyzw

dp4 r2.y, r3.xyzw, cb0[9].xyzw

dp4 r2.z, r3.xyzw, cb0[10].xyzw

dp4 r2.w, r3.xyzw, cb0[11].xyzw

mov o0.xyzw, r2.xyzw

mov o1.xyz, -v[r0.x + 0][1].xyzx

mov o2.xy, v[r0.x + 0][2].xyxx

emit

iadd r0.x, r0.x, l(-1)

endloop

cut

};

PixelShader = asm {

//

// Generated by Microsoft (R) HLSL Shader Compiler

//

//

// Buffer Definitions:

//

// cbuffer cbConstant

// {

//

// float3 vLightDir; // Offset: 0 Size: 12

//

// }

//

//

// Resource Bindings:

//

// Name Type Format Dim Slot Elements

// - - - - - --

// samLinear sampler NA NA 0 1

// g_txDiffuse texture float 2dms 0 1

// cbConstant cbuffer NA NA 0 1

//

//

//

// Input signature:

//

// Name Index Mask Register SysValue Format Used

// - -- - -- -- -

// SV_POSITION 0 xyzw 0 POS float

// TEXCOORD0 0 xyz 1 NONE float xyz

// TEXCOORD1 0 xy 2 NONE float xy

//

//

// Output signature:

//

// Name Index Mask Register SysValue Format Used

// - -- - -- -- -

// SV_Target 0 xyzw 0 NONE float xyzw

//

ps_4_0

dcl_input linear v1.xyz

dcl_input linear v2.xy

dcl_output o0.xyzw

dcl_constantbuffer cb0[1]

dcl_resource_texture2d ( float , float , float , float ) t0

dcl_sampler s0

dcl_temps 2

dp3_sat r0.x, v1.xyzx, cb0[0].xyzx

sample r1.xyzw, v2.xyxx, t0.xyzw, s0

mul r0.xyz, r0.xxxx, r1.xyzx

mov r0.w, l(1.000000)

mov o0.xyzw, r0.xyzw

};

}

}

�

RalfKornmann at 2007-9-4 > top of Msdn Tech,Game Technologies: DirectX, XNA, XACT, etc.,Direct3D 10...
# 4
perfect

thank you so much

robydx at 2007-9-4 > top of Msdn Tech,Game Technologies: DirectX, XNA, XACT, etc.,Direct3D 10...
# 5
" gostaria muito de esperimentar o DirecTX 10 Muito Obrigado!!!!
CrgioPereiraFarias at 2007-9-4 > top of Msdn Tech,Game Technologies: DirectX, XNA, XACT, etc.,Direct3D 10...