Progressive Taxi

Ok this is a very strange one. So far everything I have looked at was a very obvious and simple state error.

With DX10 the progressive taxi marks don’t appear. It has been reported that you can see then in F12 mode but I cannot.

Looking at DX9 we see the following

The marks are like upside down paper darts. The texture that they use is shown below. The left hand image shows the RGB colour view. It’s a yellow arrow on a red background. The right hand image shows the RGB+ alpha so most of the red is set as fully transparent.



With DX10 we see absolutely nothing.


Using the Intel GPSAI could see DX10 was drawing things. What was surprising was that the commands looked sensible – I couldn’t see an error. Nothing was being z rejected and anyway I knew that I had turned off the z buffer writing for the taxiway in my previous fix and that the other drawcalls on the ground didn’t write to it either.

So I experimented with changing state settings – nothing depth related worked but I found that changing the source blend options from the setting of BLEND SRC ALPHA to BLEND ONE or BLEND INV SOURCE ALPHA made red darts appear. The thing is that BLEND SRC ALPHA is clearly the sensible setting and matches what DX9 does!


My conclusion is that the problem isn’t a drawcall state issue but rather that the texture mapping coordinates of the dart are completely wrong. Instead of mapping to the head of the yellow arrow they map instead to somewhere in the red surroundings. The problem is of course that the alpha setting then makes this completely transparent!

Changing the state to invert the alpha shows a red dart (rather than the intended yellow one).

Whilst it isn’t possibly to change the object it might be possible to change the texture. However as a quick fix I figured out the shader and switching the blending around. So far no one on avsim has reported any problems but its rather a wild change to make!










About stevefsx

I don't use FSX that much. But I am very annoyed when it doesn't work properly!
This entry was posted in DX10. Bookmark the permalink.

3 Responses to Progressive Taxi

  1. stevefsx says:

    The patch is on avism but the essential logic is (note that this check could be improved)

    #if defined(VT_VERTEXCOL) && defined(SHD_BASE) && defined(SHD_PRELIT) && defined(SHD_DOUBLE_SIDED)
    #define PROG_TAXI_SHADER

    #if PROG_TAXI_PATCH == 1 && defined(PROG_TAXI_SHADER)
    BlendState ForceOne

    SrcBlend = 6;


    pass P0
    SetVertexShader(CompileShader(vs_4_0, VS()));
    SetPixelShader(CompileShader(ps_4_0, PS()));

    #if (MARKINGS_PATCH == 1 && defined(MARKINGS_SHADER)) || (TAXIWAY_PATCH == 1 && defined(RUNWAY_SHADER))
    #if PROG_TAXI_PATCH == 1 && defined(PROG_TAXI_SHADER)
    SetBlendState(ForceOne,float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF);

    #if OPAQUE_FENCES_PATCH == 1 && defined(FENCE_SHADER)
    SetBlendState(Enable,float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF);

  2. gernpudman says:

    Where do I make this change?

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s