[SOLVED] Empty preprocessor definitions don't work in 4.4

  • Posts: 285
8 months 2 weeks ago - 8 months 2 weeks ago #1 by brussell
When using an empty definition like
#define TEST
Reshade throws an error: error: X3004: undeclared identifier 'TEST'

I use this often in my code, for example like this:
//Aspectbars Definitions
#if (UPSCALE_ASPECT_BARS == 1)
    #define ASPECTBARS [branch] if (texcoord.x < 0.125 || texcoord.x > 1 - 0.125) { return 0.0.xxxx; }
#else
    #define ASPECTBARS
#endif

...

float4 PS_Adaption(float4 pos : SV_Position, float2 texcoord : TEXCOORD) : SV_Target
{

    ASPECTBARS
    
    float4 color = tex2Dlod(SAMPLERCURRENT, float4(texcoord, 0, 0));
 
...

    return color;
}

This works with every other Reshade version I know (at least since 0.18).
So is this a bug or intended?

edit: I found an alternative for my use case: "#define TEST ;"
But I'm still interested if this intended or not.

Please Log in or Create an account to join the conversation.

  • Posts: 3750
8 months 2 weeks ago - 8 months 2 weeks ago #2 by crosire
I can't reproduce that. Works fine with both 4.4.2 and master here. Could you post a full file with which this happens?

Please Log in or Create an account to join the conversation.

  • Posts: 285
8 months 2 weeks ago - 8 months 2 weeks ago #3 by brussell
Ok.The following works with Reshade 4.3 but NOT with 4.4.2 ("ReShade.fx(3, 1): error X3000: syntax error: unexpected 'identifier'")
#define TEST
TEST
TEST
technique TestReshade < enabled = 1;> { }

It only throws an error if TEST is used more than once. So the example without the second TEST works fine.

Please Log in or Create an account to join the conversation.

  • Posts: 3750
8 months 2 weeks ago #4 by crosire
The following user(s) said Thank You: brussell

Please Log in or Create an account to join the conversation.