HLSL: add optional position.Y inversion
Adds command line options:
--invert-y
--iy
(synonyms) which invert position.Y on vertex shader output. Handles these cases:
* Direct single variable return
* Member of direct returned struct
* Single variable output parameter
* Member of struct output parameter
API:
// Enables position.Y output negation in vertex shader
void TShader::setInvertY(bool invert);
Fixes #1173
diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp
index e7844eb..6b09c8b 100644
--- a/StandAlone/StandAlone.cpp
+++ b/StandAlone/StandAlone.cpp
@@ -98,6 +98,7 @@
EOptionStdin = (1 << 27),
EOptionOptimizeDisable = (1 << 28),
EOptionOptimizeSize = (1 << 29),
+ EOptionInvertY = (1 << 30),
};
//
@@ -519,6 +520,9 @@
variableName = argv[1];
bumpArg();
break;
+ } else if (lowerword == "invert-y" || // synonyms
+ lowerword == "iy") {
+ Options |= EOptionInvertY;
} else {
usage();
}
@@ -840,6 +844,9 @@
if (Options & EOptionAutoMapLocations)
shader->setAutoMapLocations(true);
+ if (Options & EOptionInvertY)
+ shader->setInvertY(true);
+
// Set up the environment, some subsettings take precedence over earlier
// ways of setting things.
if (Options & EOptionSpv) {
@@ -1359,6 +1366,7 @@
" uint32_t array named <name>\n"
" initialized with the shader binary code.\n"
" --vn <name> synonym for --variable-name <name>\n"
+ " --invert-y | --iy invert position.Y output in vertex shader\n"
);
exit(EFailUsage);