diff options
| author | Ryan Houdek <Sonicadvance1@gmail.com> | 2014-04-24 02:30:05 -0500 |
|---|---|---|
| committer | Ryan Houdek <Sonicadvance1@gmail.com> | 2014-04-30 19:11:06 -0500 |
| commit | 2d8cfb89d777ac36d3dcca8976caa2f7804ab43c (patch) | |
| tree | 421bd3ad0223d5287420cf768e1ab19c0cf3dce8 /Source | |
| parent | 99338daa8f2f75af607a1347bbbd2bc7959b2294 (diff) | |
Changes posmtx vertex attribute to integer.
This makes it so we don't need to do some dumb casting from float to integer in our shaders.
Only tested in OpenGL, needs to be tested in D3D.
Diffstat (limited to 'Source')
| -rw-r--r-- | Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp | 2 | ||||
| -rw-r--r-- | Source/Core/VideoCommon/VertexLoader.cpp | 2 | ||||
| -rw-r--r-- | Source/Core/VideoCommon/VertexShaderGen.cpp | 6 |
3 files changed, 4 insertions, 6 deletions
diff --git a/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp b/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp index 7cf40eed34..90b86194e1 100644 --- a/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp +++ b/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp @@ -102,7 +102,7 @@ void SHADER::SetProgramBindings() // Need to set some attribute locations glBindAttribLocation(glprogid, SHADER_POSITION_ATTRIB, "rawpos"); - glBindAttribLocation(glprogid, SHADER_POSMTX_ATTRIB, "fposmtx"); + glBindAttribLocation(glprogid, SHADER_POSMTX_ATTRIB, "posmtx"); glBindAttribLocation(glprogid, SHADER_COLOR0_ATTRIB, "color0"); glBindAttribLocation(glprogid, SHADER_COLOR1_ATTRIB, "color1"); diff --git a/Source/Core/VideoCommon/VertexLoader.cpp b/Source/Core/VideoCommon/VertexLoader.cpp index e9288aac29..80fbf08cb5 100644 --- a/Source/Core/VideoCommon/VertexLoader.cpp +++ b/Source/Core/VideoCommon/VertexLoader.cpp @@ -753,7 +753,7 @@ void VertexLoader::CompileVertexTranslator() vtx_decl.posmtx.enable = true; vtx_decl.posmtx.offset = nat_offset; vtx_decl.posmtx.type = VAR_UNSIGNED_BYTE; - vtx_decl.posmtx.integer = false; + vtx_decl.posmtx.integer = true; nat_offset += 4; } diff --git a/Source/Core/VideoCommon/VertexShaderGen.cpp b/Source/Core/VideoCommon/VertexShaderGen.cpp index 7d0dc878cd..41549609c7 100644 --- a/Source/Core/VideoCommon/VertexShaderGen.cpp +++ b/Source/Core/VideoCommon/VertexShaderGen.cpp @@ -109,7 +109,7 @@ static inline void GenerateVertexShader(T& out, u32 components, API_TYPE api_typ { out.Write("in float4 rawpos; // ATTR%d,\n", SHADER_POSITION_ATTRIB); if (components & VB_HAS_POSMTXIDX) - out.Write("in float fposmtx; // ATTR%d,\n", SHADER_POSMTX_ATTRIB); + out.Write("in int posmtx; // ATTR%d,\n", SHADER_POSMTX_ATTRIB); if (components & VB_HAS_NRM0) out.Write("in float3 rawnorm0; // ATTR%d,\n", SHADER_NORM0_ATTRIB); if (components & VB_HAS_NRM1) @@ -168,7 +168,7 @@ static inline void GenerateVertexShader(T& out, u32 components, API_TYPE api_typ out.Write(" float%d tex%d : TEXCOORD%d,\n", hastexmtx ? 3 : 2, i, i); } if (components & VB_HAS_POSMTXIDX) - out.Write(" float fposmtx : BLENDINDICES,\n"); + out.Write(" int posmtx : BLENDINDICES,\n"); out.Write(" float4 rawpos : POSITION) {\n"); } out.Write("VS_OUTPUT o;\n"); @@ -176,8 +176,6 @@ static inline void GenerateVertexShader(T& out, u32 components, API_TYPE api_typ // transforms if (components & VB_HAS_POSMTXIDX) { - out.Write("int posmtx = int(fposmtx * 255.0);\n"); // TODO: Ugly, should use an integer instead - if (is_writing_shadercode && (DriverDetails::HasBug(DriverDetails::BUG_NODYNUBOACCESS) && !DriverDetails::HasBug(DriverDetails::BUG_ANNIHILATEDUBOS)) ) { // This'll cause issues, but it can't be helped |
