mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-07-11 01:25:07 +02:00
Add depthMinusOneToOne to specify GL's ridiculous behavior
This commit is contained in:
@@ -50,6 +50,7 @@ void ShaderLanguageDesc::Init(ShaderLanguage lang) {
|
||||
lastFragData = nullptr;
|
||||
gles = false;
|
||||
forceMatrix4x4 = true;
|
||||
depthMinusOneToOne = true;
|
||||
break;
|
||||
case GLSL_3xx:
|
||||
// Just used in the shader test.
|
||||
@@ -67,6 +68,7 @@ void ShaderLanguageDesc::Init(ShaderLanguage lang) {
|
||||
gles = true;
|
||||
forceMatrix4x4 = true;
|
||||
glslES30 = true;
|
||||
depthMinusOneToOne = true;
|
||||
break;
|
||||
case GLSL_VULKAN:
|
||||
fragColor0 = "fragColor0";
|
||||
@@ -86,6 +88,7 @@ void ShaderLanguageDesc::Init(ShaderLanguage lang) {
|
||||
forceMatrix4x4 = false;
|
||||
coefsFromBuffers = true;
|
||||
vertexIndex = true;
|
||||
depthMinusOneToOne = false;
|
||||
break;
|
||||
case HLSL_D3D11:
|
||||
fragColor0 = "outfragment.target";
|
||||
@@ -107,6 +110,7 @@ void ShaderLanguageDesc::Init(ShaderLanguage lang) {
|
||||
coefsFromBuffers = true;
|
||||
vsOutPrefix = "Out.";
|
||||
viewportYSign = "-";
|
||||
depthMinusOneToOne = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -57,6 +57,7 @@ struct ShaderLanguageDesc {
|
||||
const char *vsOutPrefix = "";
|
||||
const char *viewportYSign = "";
|
||||
|
||||
bool depthMinusOneToOne = false;
|
||||
bool vertexIndex = false;
|
||||
bool glslES30 = false; // really glslES30Features. TODO: Clean this up.
|
||||
bool bitwiseOps = false;
|
||||
|
||||
@@ -361,6 +361,9 @@ void ShaderWriter::EndVSMain(Slice<VaryingDef> varyings) {
|
||||
if (strlen(lang_.viewportYSign)) {
|
||||
F(" gl_Position.y *= %s1.0;\n", lang_.viewportYSign);
|
||||
}
|
||||
if (lang_.depthMinusOneToOne) {
|
||||
F(" gl_Position.z = gl_Position.z * 2.0 - gl_Position.w;\n"); // homogenous math... looks confusing.
|
||||
}
|
||||
C(" vs_out.pos = gl_Position;\n");
|
||||
for (auto &varying : varyings) {
|
||||
F(" vs_out.%s = %s;\n", varying.name, varying.name);
|
||||
|
||||
Reference in New Issue
Block a user