I tried to do the conversion according to the previous thread:
web page But it did not work for me, Is there any experts who know what exactly need to be edited in the fx file so that i can implement the shader in 3dgs as well?
Thanks.
Code for teapot.fx:
Code:
//**************************************************************//
// Effect File exported by RenderMonkey 1.6
//
// - Although many improvements were made to RenderMonkey FX
// file export, there are still situations that may cause
// compilation problems once the file is exported, such as
// occasional naming conflicts for methods, since FX format
// does not support any notions of name spaces. You need to
// try to create workspaces in such a way as to minimize
// potential naming conflicts on export.
//
// - Note that to minimize resulting name collisions in the FX
// file, RenderMonkey will mangle names for passes, shaders
// and function names as necessary to reduce name conflicts.
//**************************************************************//
//--------------------------------------------------------------//
// Textured Bump
//--------------------------------------------------------------//
//--------------------------------------------------------------//
// Pass 0
//--------------------------------------------------------------//
string Textured_Bump_Pass_0_Model : ModelData = "teapot.mdl"; //"../../../Program Files/ATI Research Inc/RenderMonkey 1.6/Examples/Media/Models/Teapot.3ds";
float3 fvLightPosition
<
string UIName = "fvLightPosition";
string UIWidget = "Numeric";
bool UIVisible = " true";
float UIMin = -100.00;
float UIMax = 100.00;
> = ( -100.00, 100.00, -100.00 );
float3 fvEyePosition
<
string UIName = "fvEyePosition";
string UIWidget = "Numeric";
bool UIVisible = " false";
float UIMin = -100.00;
float UIMax = 100.00;
> = ( 0.00, 0.00, -100.00 );
float4x4 matView : View;
float4x4 matViewProjection : ViewProjection;
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( matViewProjection, Input.Position );
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
<
string UIName = "fvAmbient";
string UIWidget = "ColorPicker";
bool UIVisible = " true";
> = ( 0.37, 0.37, 0.37, 1.00 );
float4 fvSpecular
<
string UIName = "fvSpecular";
string UIWidget = "ColorPicker";
bool UIVisible = " true";
> = ( 0.49, 0.49, 0.49, 1.00 );
float4 fvDiffuse
<
string UIName = "fvDiffuse";
string UIWidget = "ColorPicker";
bool UIVisible = " true";
> = ( 0.89, 0.89, 0.89, 1.00 );
float fSpecularPower
<
string UIName = "fSpecularPower";
string UIWidget = "Numeric";
bool UIVisible = " true";
float UIMin = 1.00;
float UIMax = 100.00;
> = 25.00;
texture base_Tex
<
string ResourceName = "Fieldstone.tga";
//"..\..\..\program files\ati research inc\rendermonkey 1.6\Examples\Media\Textures\Fieldstone.tga";
>;
sampler2D baseMap = sampler_state
{
Texture = (base_Tex);
ADDRESSU = WRAP;
ADDRESSV = WRAP;
MINFILTER = LINEAR;
MAGFILTER = LINEAR;
MIPFILTER = LINEAR;
};
texture bump_Tex
<
string ResourceName = "FieldstoneBumpDOT3.tga";
//"..\..\..\program files\ati research inc\rendermonkey 1.6\Examples\Media\Textures\FieldstoneBumpDOT3.tga";
>;
sampler2D bumpMap = sampler_state
{
Texture = (bump_Tex);
ADDRESSU = WRAP;
ADDRESSV = WRAP;
MINFILTER = LINEAR;
MAGFILTER = LINEAR;
MIPFILTER = LINEAR;
};
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 Section for Textured Bump
//--------------------------------------------------------------//
technique Textured_Bump
{
pass Pass_0
{
VertexShader = compile vs_2_0 Textured_Bump_Pass_0_Vertex_Shader_vs_main();
PixelShader = compile ps_2_0 Textured_Bump_Pass_0_Pixel_Shader_ps_main();
}
}