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

More
1 year 10 months ago - 1 year 10 months 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.
Last edit: 1 year 10 months ago by brussell.

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

More
1 year 10 months ago - 1 year 10 months 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?
Last edit: 1 year 10 months ago by crosire.

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

More
1 year 10 months ago - 1 year 10 months 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.
Last edit: 1 year 10 months ago by brussell.

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

More
1 year 10 months ago #4 by crosire
The following user(s) said Thank You: brussell

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