summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar bunnei2018-08-19 13:21:14 -0400
committerGravatar GitHub2018-08-19 13:21:14 -0400
commit9baf5de90cb47bdf767ff9302d586ac54e9f525d (patch)
treeb6042566a3163c5fb1ebaab711917f3441a1df64 /src
parentMerge pull request #1103 from Subv/lop_pred (diff)
parentShaders: Implemented the gl_FrontFacing input attribute (attr 63). (diff)
downloadyuzu-9baf5de90cb47bdf767ff9302d586ac54e9f525d.tar.gz
yuzu-9baf5de90cb47bdf767ff9302d586ac54e9f525d.tar.xz
yuzu-9baf5de90cb47bdf767ff9302d586ac54e9f525d.zip
Merge pull request #1108 from Subv/front_facing
Shaders: Implemented the gl_FrontFacing input attribute (attr 63).
Diffstat (limited to 'src')
-rw-r--r--src/video_core/engines/shader_bytecode.h3
-rw-r--r--src/video_core/renderer_opengl/gl_shader_decompiler.cpp4
2 files changed, 7 insertions, 0 deletions
diff --git a/src/video_core/engines/shader_bytecode.h b/src/video_core/engines/shader_bytecode.h
index 6cfb9c5f8..059dc2e5d 100644
--- a/src/video_core/engines/shader_bytecode.h
+++ b/src/video_core/engines/shader_bytecode.h
@@ -79,6 +79,9 @@ union Attribute {
79 // shader, and a tuple of (TessCoord.x, TessCoord.y, TessCoord.z, ~) when inside a Tess Eval 79 // shader, and a tuple of (TessCoord.x, TessCoord.y, TessCoord.z, ~) when inside a Tess Eval
80 // shader. 80 // shader.
81 TessCoordInstanceIDVertexID = 47, 81 TessCoordInstanceIDVertexID = 47,
82 // This attribute contains a tuple of (Unk, Unk, Unk, gl_FrontFacing) when inside a fragment
83 // shader. It is unknown what the other values contain.
84 FrontFacing = 63,
82 }; 85 };
83 86
84 union { 87 union {
diff --git a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
index 77974b9d2..4007ecc02 100644
--- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
+++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
@@ -542,6 +542,10 @@ private:
542 // shader. 542 // shader.
543 ASSERT(stage == Maxwell3D::Regs::ShaderStage::Vertex); 543 ASSERT(stage == Maxwell3D::Regs::ShaderStage::Vertex);
544 return "vec4(0, 0, uintBitsToFloat(instance_id.x), uintBitsToFloat(gl_VertexID))"; 544 return "vec4(0, 0, uintBitsToFloat(instance_id.x), uintBitsToFloat(gl_VertexID))";
545 case Attribute::Index::FrontFacing:
546 // TODO(Subv): Find out what the values are for the other elements.
547 ASSERT(stage == Maxwell3D::Regs::ShaderStage::Fragment);
548 return "vec4(0, 0, 0, uintBitsToFloat(gl_FrontFacing ? 1 : 0))";
545 default: 549 default:
546 const u32 index{static_cast<u32>(attribute) - 550 const u32 index{static_cast<u32>(attribute) -
547 static_cast<u32>(Attribute::Index::Attribute_0)}; 551 static_cast<u32>(Attribute::Index::Attribute_0)};