diff options
| author | Subv <subv2112@gmail.com> | 2018-08-19 00:14:34 -0500 | 
|---|---|---|
| committer | Subv <subv2112@gmail.com> | 2018-08-19 00:14:34 -0500 | 
| commit | 731701a2d256efba969cdbaf8712a28aa1a10aad (patch) | |
| tree | 0338150801ba8eaef959389b3ccf39479e95c1c8 /src/video_core | |
| parent | 6eba539f4a945500c6e5a4395272184fff445698 (diff) | |
Shaders: Implemented the gl_FrontFacing input attribute (attr 63).
Diffstat (limited to 'src/video_core')
| -rw-r--r-- | src/video_core/engines/shader_bytecode.h | 3 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_shader_decompiler.cpp | 4 | 
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 b038a9d92..7e0e4858a 100644 --- a/src/video_core/engines/shader_bytecode.h +++ b/src/video_core/engines/shader_bytecode.h @@ -79,6 +79,9 @@ union Attribute {          // shader, and a tuple of (TessCoord.x, TessCoord.y, TessCoord.z, ~) when inside a Tess Eval          // shader.          TessCoordInstanceIDVertexID = 47, +        // This attribute contains a tuple of (Unk, Unk, Unk, gl_FrontFacing) when inside a fragment +        // shader. It is unknown what the other values contain. +        FrontFacing = 63,      };      union { diff --git a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp index bb01b3c27..48ddbc687 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:              // shader.              ASSERT(stage == Maxwell3D::Regs::ShaderStage::Vertex);              return "vec4(0, 0, uintBitsToFloat(instance_id.x), uintBitsToFloat(gl_VertexID))"; +        case Attribute::Index::FrontFacing: +            // TODO(Subv): Find out what the values are for the other elements. +            ASSERT(stage == Maxwell3D::Regs::ShaderStage::Fragment); +            return "vec4(0, 0, 0, uintBitsToFloat(gl_FrontFacing ? 1 : 0))";          default:              const u32 index{static_cast<u32>(attribute) -                              static_cast<u32>(Attribute::Index::Attribute_0)}; | 
