Welcome, Guest.
Username: Password: Remember me

TOPIC: Empty preprocessor definitions don't work in 4.4

Empty preprocessor definitions don't work in 4.4 3 weeks 6 hours ago #1

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: 3 weeks 5 hours ago by brussell.
The administrator has disabled public write access.

Empty preprocessor definitions don't work in 4.4 3 weeks 4 hours ago #2

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?
Cheers, crosire =)
Last Edit: 3 weeks 4 hours ago by crosire.
The administrator has disabled public write access.

Empty preprocessor definitions don't work in 4.4 2 weeks 6 days ago #3

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: 2 weeks 6 days ago by brussell.
The administrator has disabled public write access.

Empty preprocessor definitions don't work in 4.4 2 weeks 6 days ago #4

Cheers, crosire =)
The administrator has disabled public write access.
The following user(s) said Thank You: brussell