sure, no problem. Will be working on VB UI to automate this process of conversion.
Here is the converted code:
Note: The changes/modification to the FX file in teapot_fx.effect is in blue
Code:
bmap basebmp = <Fieldstone.tga>;
bmap bumpbmp = <FieldstoneBumpDOT3.tga>;
material teapot_fx
{
Flags = Tangent;
skin1 = basebmp;
skin2 = bumpbmp;
effect =
"
float4x4 matView;
float4x4 matWorldViewProj;
float3 fvLightPosition = ( -100.00, 100.00, -100.00 );
float3 fvEyePosition = ( 0.00, 0.00, -100.00 );
texture mtlSkin1;
texture mtlSkin2;
sampler2D baseMap = sampler_state
{
Texture = (mtlSkin1);
ADDRESSU = WRAP;
ADDRESSV = WRAP;
MINFILTER = LINEAR;
MAGFILTER = LINEAR;
MIPFILTER = LINEAR;
};
sampler2D bumpMap = sampler_state
{
Texture = (mtlSkin2);
ADDRESSU = WRAP;
ADDRESSV = WRAP;
MINFILTER = LINEAR;
MAGFILTER = LINEAR;
MIPFILTER = LINEAR;
};
struct VS_INPUT
{
float4 Position : POSITION0;
float2 Texcoord : TEXCOORD0;
float3 Normal : NORMAL0;
float3 Binormal : BINORMAL0;
float3 Tangent : TANGENT0;
};
struct VS_OUTPUT
{
float4 Position : POSITION0;
float2 Texcoord : TEXCOORD0;
float3 ViewDirection : TEXCOORD1;
float3 LightDirection: TEXCOORD2;
};
VS_OUTPUT Textured_Bump_Pass_0_Vertex_Shader_vs_main( VS_INPUT Input )
{
VS_OUTPUT Output;
Output.Position = mul( Input.Position, matWorldViewProj);
Output.Texcoord = Input.Texcoord;
float3 fvObjectPosition = mul( matView, Input.Position );
float3 fvViewDirection = fvEyePosition - fvObjectPosition;
float3 fvLightDirection = fvLightPosition - fvObjectPosition;
float3 fvNormal = mul( matView, Input.Normal );
float3 fvBinormal = mul( matView, Input.Binormal );
float3 fvTangent = mul( matView, Input.Tangent );
Output.ViewDirection.x = dot( fvTangent, fvViewDirection );
Output.ViewDirection.y = dot( fvBinormal, fvViewDirection );
Output.ViewDirection.z = dot( fvNormal, fvViewDirection );
Output.LightDirection.x = dot( fvTangent, fvLightDirection );
Output.LightDirection.y = dot( fvBinormal, fvLightDirection );
Output.LightDirection.z = dot( fvNormal, fvLightDirection );
return( Output );
}
float4 fvAmbient = ( 0.37, 0.37, 0.37, 1.00 );
float4 fvSpecular = ( 0.49, 0.49, 0.49, 1.00 );
float4 fvDiffuse = ( 0.89, 0.89, 0.89, 1.00 );
float fSpecularPower = 25.00 ;
struct PS_INPUT
{
float2 Texcoord : TEXCOORD0;
float3 ViewDirection : TEXCOORD1;
float3 LightDirection: TEXCOORD2;
};
float4 Textured_Bump_Pass_0_Pixel_Shader_ps_main( PS_INPUT Input ) : COLOR0
{
float3 fvLightDirection = normalize( Input.LightDirection );
float3 fvNormal = normalize( ( tex2D( bumpMap, Input.Texcoord ).xyz * 2.0f ) - 1.0f );
float fNDotL = dot( fvNormal, fvLightDirection );
float3 fvReflection = normalize( ( ( 2.0f * fvNormal ) * ( fNDotL ) ) - fvLightDirection );
float3 fvViewDirection = normalize( Input.ViewDirection );
float fRDotV = max( 0.0f, dot( fvReflection, fvViewDirection ) );
float4 fvBaseColor = tex2D( baseMap, Input.Texcoord );
float4 fvTotalAmbient = fvAmbient * fvBaseColor;
float4 fvTotalDiffuse = fvDiffuse * fNDotL * fvBaseColor;
float4 fvTotalSpecular = fvSpecular * pow( fRDotV, fSpecularPower );
return( saturate( fvTotalAmbient + fvTotalDiffuse + fvTotalSpecular ) );
}
technique Textured_Bump
{
pass Pass_0
{
VertexShader = compile vs_1_1 Textured_Bump_Pass_0_Vertex_Shader_vs_main();
PixelShader = compile ps_2_0 Textured_Bump_Pass_0_Pixel_Shader_ps_main();
}
}
";
}
action teapot_illumination
{
my.material = teapot_fx;
my.nofog = on;
}