Jump to content
  • Advertisement
Sign in to follow this  
Rbn_3D

Help merging shaders...

This topic is 3499 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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]

Share this post


Link to post
Share on other sites
Advertisement
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!