Help merging shaders...
I have two shaders (one is for textured phong, and other for planar reflections)
I want to merge the effects (50% opacity on each one)
I tried to do it myself, but is very hard for me...
These are the shaders:
Textured Phong:
----------------------------------------------------------------------------
//--------------------------------------------------------------//
// Textured Phong
//--------------------------------------------------------------//
//--------------------------------------------------------------//
// Pass 0
//--------------------------------------------------------------//
string Textured_Phong_Pass_0_Model : ModelData = "..\\..\\..\\..\\..\\..\\AMD\\RenderMonkey 1.82\\Examples\\Media\\Models\\Sphere.3ds";
float3 fvLightPosition
<
string UIName = "fvLightPosition";
string UIWidget = "Numeric";
bool UIVisible = true;
float UIMin = -100.00;
float UIMax = 100.00;
> = float3( -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;
> = float3( 0.00, 0.00, -100.00 );
float4x4 matView : View;
float4x4 matViewProjection : ViewProjection;
struct VS_INPUT
{
float4 Position : POSITION0;
float2 Texcoord : TEXCOORD0;
float3 Normal : NORMAL0;
};
struct VS_OUTPUT
{
float4 Position : POSITION0;
float2 Texcoord : TEXCOORD0;
float3 ViewDirection : TEXCOORD1;
float3 LightDirection : TEXCOORD2;
float3 Normal : TEXCOORD3;
};
VS_OUTPUT Textured_Phong_Pass_0_Vertex_Shader_vs_main( VS_INPUT Input )
{
VS_OUTPUT Output;
Output.Position = mul( Input.Position, matViewProjection );
Output.Texcoord = Input.Texcoord;
float3 fvObjectPosition = mul( Input.Position, matView );
Output.ViewDirection = fvEyePosition - fvObjectPosition;
Output.LightDirection = fvLightPosition - fvObjectPosition;
Output.Normal = mul( Input.Normal, matView );
return( Output );
}
float4 fvAmbient
<
string UIName = "fvAmbient";
string UIWidget = "Color";
bool UIVisible = true;
> = float4( 0.37, 0.37, 0.37, 1.00 );
float4 fvSpecular
<
string UIName = "fvSpecular";
string UIWidget = "Color";
bool UIVisible = true;
> = float4( 0.49, 0.49, 0.49, 1.00 );
float4 fvDiffuse
<
string UIName = "fvDiffuse";
string UIWidget = "Color";
bool UIVisible = true;
> = float4( 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;
> = float( 25.00 );
texture base_Tex
<
string ResourceName = "..\\Interior\\Terrazo.dds";
>;
sampler2D baseMap = sampler_state
{
Texture = (base_Tex);
ADDRESSU = WRAP;
ADDRESSV = WRAP;
MINFILTER = LINEAR;
MAGFILTER = LINEAR;
MIPFILTER = LINEAR;
};
struct PS_INPUT
{
float2 Texcoord : TEXCOORD0;
float3 ViewDirection : TEXCOORD1;
float3 LightDirection: TEXCOORD2;
float3 Normal : TEXCOORD3;
};
float4 Textured_Phong_Pass_0_Pixel_Shader_ps_main( PS_INPUT Input ) : COLOR0
{
float3 fvLightDirection = normalize( Input.LightDirection );
float3 fvNormal = normalize( Input.Normal );
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 Phong
//--------------------------------------------------------------//
technique Textured_Phong
{
pass Pass_0
{
VertexShader = compile vs_2_0 Textured_Phong_Pass_0_Vertex_Shader_vs_main();
PixelShader = compile ps_2_0 Textured_Phong_Pass_0_Pixel_Shader_ps_main();
}
}
-------------------------------------------------------------------------------
And planar reflection:
-------------------------------------------------------------------------------
// Global-Level Semantics
float4x4 matWorldViewProj : WORLDVIEWPROJECTION;
float4x4 matWorld : WORLD;
float3 viewPosition : VIEWPOSITION;
// Vertex Shader Input Structure
struct VS_INPUT
{
float4 position : POSITION; // Vertex position in object space
float3 normal : NORMAL; // Vertex normal in object space
float2 texCoord : TEXCOORD0; // Vertex texture coordinates
};
// Vertex Shader Output Structure
struct VS_OUTPUT
{
float4 position : POSITION; // Pixel position in clip space
float2 texCoord : TEXCOORD0; // Pixel texture coordinates
float3 normal : TEXCOORD1; // Pixel normal vector
float4 Pos : TEXCOORD2;
};
#define PS_INPUT VS_OUTPUT
float4 materialDiffuse : DIFFUSE;
float4 materialAmbient : AMBIENT;
float4 materialEmissive : EMISSIVE;
float4 materialSpecular : SPECULAR;
float materialPower : SPECULARPOWER;
texture ReflectionMap : TEXTURE2;
sampler sampReflectionMap = sampler_state
{
Texture = (ReflectionMap);
};
VS_OUTPUT VS_main(VS_INPUT IN)
{
VS_OUTPUT OUT;
float4 WPos;
OUT.Pos = IN.position;
OUT.position = mul(IN.position, matWorldViewProj);
WPos = mul(IN.position,matWorld);
OUT.texCoord = IN.texCoord;
OUT.normal = normalize(mul(IN.normal,(float3x3)matWorld));
return OUT;
}
float4 PS_main(PS_INPUT IN) : COLOR
{
float4 PPos;
float4 texPosProj;
PPos = mul(IN.Pos,matWorldViewProj);
texPosProj = (PPos + PPos.w) * 0.5;
texPosProj.y *= -1;
texPosProj /= texPosProj.w;
return tex2Dbias(sampReflectionMap, texPosProj);
}
//--------------------------------------------------------------//
// Technique Section for Plastic
//--------------------------------------------------------------//
technique Universal_Main
{
pass SinglePass
{
VertexShader = compile vs_1_1 VS_main();
PixelShader = compile ps_2_0 PS_main();
}
}
-------------------------------------------------------------------------------
Please help merging the shaders...
Thanks a lot
[Edited by - Rbn_3D on May 17, 2009 9:16:06 AM]
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement