Jump to content
  • Advertisement
Sign in to follow this  
cozzie

SetTechnique does more then I want...

This topic is 1970 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

Hi,

 

Through profiling with PIX, I found out that a specific techniqe in my shader is executed, although I don't call it from my code.

 

I have a function in my code that sets a technique:

 

bool CD3d::SetShaderTechnique(CD3dscene *pD3dscene, int pEffectIndex, char *pTechnique)
{
	if(D3DERR_INVALIDCALL == pD3dscene->mEffect[pEffectIndex]->SetTechnique(pTechnique)) return false;
	return true;
}

Searched through whole source if I use SetTechnique somewhere else, not the case.

When I run my code and debug on this line, it's only called with technique 'OpaqueShader', but in PIX I see the render states, settechnique etc. of my 2nd technique in the shader. I also overwritten 'pTechnique' but 'OpaqueShader' to test, no difference. Filling in 'testbla' I get correct error handling that the technique doesn't exist.

 

Am I overseeing something, is D3DX effect doing somethin I don't know?

 

Here are the 2 techniques:

 

/***********************************************************/
/**          OPAUQE SHADER, REGULAR MESHES         *********/
/***********************************************************/

technique OpaqueShader
{
    pass P0              
    {
        AlphaBlendEnable    = FALSE;
                              
        VertexShader = compile vs_2_0 VS_function();
        PixelShader = compile ps_2_0 PS_function();
    }  
}

/***********************************************************/
/**   BLENDING SHADER, MESHES WITH BLENDED TEXTURES  *******/
/***********************************************************/

technique BlendingShader
{
    pass P0              
    {
        AlphaBlendEnable    = TRUE;
        SrcBlend            = SRCALPHA;
        DestBlend           = INVSRCALPHA;
        AlphaOp[0]          = SelectArg1;
        AlphaArg1[0]        = Texture;
                               
        VertexShader = compile vs_2_0 VS_function();
        PixelShader = compile ps_2_0 PS_function();
    }  
}

 

Share this post


Link to post
Share on other sites
Advertisement
Found it, i was running a 2nd effect which had one of the similar states as the technique i didn't expect in the initial/1st one

Share this post


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

  • Advertisement
×

Important Information

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

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!