mrboni
1
Hey
I’m sure in dx9 it was possible to spread the rasterizer, eg to draw a wireframe and solid version of a model at once.
This doesn’t seem possible with dx11 shaders. Is is possible within the shader itself, maybe having a two passes with a different setting for each?
I actually want to this to be able to draw transparent geometry by rendering the back faces first, then the front faces
Cheers
mrboni
2
Ok, I’ve found out how to set blend and renderstates in the shader.
Am using the following -
BlendState AlphaBlendingOn
{
BlendEnable[0](0) = TRUE;
DestBlend = INV_SRC_ALPHA;
SrcBlend = SRC_ALPHA;
};
RasterizerState CullFront {
FrontCounterClockwise = TRUE;
};
RasterizerState CullBack {
FrontCounterClockwise = FALSE;
};
technique10 Constant
{
pass P0
{
SetBlendState(AlphaBlendingOn, float4(0.0f, 0.0f, 0.0f, 0.0f), 0xFFFFFFFF);
SetRasterizerState( CullFront );
SetVertexShader( CompileShader( vs_4_0, VS() ) );
SetPixelShader( CompileShader( ps_4_0, PS() ) );
}
pass P1
{
SetBlendState(AlphaBlendingOn, float4(0.0f, 0.0f, 0.0f, 0.0f), 0xFFFFFFFF);
SetRasterizerState( CullBack );
SetVertexShader( CompileShader( vs_4_0, VS() ) );
SetPixelShader( CompileShader( ps_4_0, PS() ) );
}
}
Problem is, only the first pass is visible… Any ideas?
U need to spread technique i guess
tmp
5
iirc several passes are not allowed anymore in vuxes dx11 implementation (or in general?!)
don’t think it’s implementation problem, prolly u have to setup it somehow
tmp
7
No. I asked vux some time ago when I wanted to convert the planetshader from dx9 to dx11. Only 1 pass possible ;)