I converted the code accordingly to the thread by Steempipe at
this url Here is my converted code:
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 };
struct VS_INPUT
{
float4 Position : POSITION0;
float2 Texcoord : TEXCOORD0;
float3 Normal : NORMAL0;
float3 Binormal : BINORMAL0;
float3 Tangent : TANGENT0;
};
struct VS_OUTPUT
{
float4 vPosition : POSITION0;
float2 vTexcoord : TEXCOORD0;
float3 vViewDirection : TEXCOORD1;
float3 vLightDirection: TEXCOORD2;
};
VS_OUTPUT main_vs( VS_INPUT Input )
{
VS_OUTPUT Output;
Output.vPosition = mul( matWorldViewProj, Input.Position );
Output.vTexcoord = Input.Texcoord;
float3 fvObjectPosition = mul( Input.Position, matView );
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.vViewDirection.x = dot( fvTangent, fvViewDirection );
Output.vViewDirection.y = dot( fvBinormal, fvViewDirection );
Output.vViewDirection.z = dot( fvNormal, fvViewDirection );
Output.vLightDirection.x = dot( fvTangent, fvLightDirection );
Output.vLightDirection.y = dot( fvBinormal, fvLightDirection );
Output.vLightDirection.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 };
texture entSkin1;
sampler2D baseMap = sampler_state
{
Texture = (entSkin1);
ADDRESSU = WRAP;
ADDRESSV = WRAP;
MINFILTER = LINEAR;
MAGFILTER = LINEAR;
MIPFILTER = LINEAR;
};
texture entSkin2;
sampler2D bumpMap = sampler_state
{
Texture = (entSkin2);
ADDRESSU = WRAP;
ADDRESSV = WRAP;
MINFILTER = LINEAR;
MAGFILTER = LINEAR;
MIPFILTER = LINEAR;
};
struct PS_INPUT
{
float2 Texcoord : TEXCOORD0;
float3 ViewDirection : TEXCOORD1;
float3 LightDirection: TEXCOORD2;
};
float4 main_ps( 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_2_0 main_vs();
PixelShader = compile ps_2_0 main_ps();
}
}
";
}
action teapot_illumination
{
my.material = teapot_fx;
my.nofog = on;
}
Here's the image of the teapot in rendermonkey 1.6
rendermonkey [image]http://img15.imgspot.com/?u=/u/06/46/22/3dgsrendermonkey21140148518.JPG[/image]
Here's the image of the teapot in 3DGS V6.31.4:
3dgs [image]http://img15.imgspot.com/?u=/u/06/46/22/3dgsrendermonkey11140148459.JPG[/image]
I used MED to import the model from the format 3ds to mdl. However, I cannot render the model properly in 3dgs. Anyone knows what i need to change for my code?