Merge pull request #310 from Sonicadvance1/Integer-posmtx
Change over to use integer posmtx in our vertex shaders
This commit is contained in:
commit
2cf8f55ad3
|
@ -1604,6 +1604,7 @@ namespace GLExtensions
|
||||||
"GL_ARB_sync",
|
"GL_ARB_sync",
|
||||||
"GL_ARB_ES2_compatibility",
|
"GL_ARB_ES2_compatibility",
|
||||||
"VERSION_GLES3",
|
"VERSION_GLES3",
|
||||||
|
"VERSION_3_0",
|
||||||
};
|
};
|
||||||
for (auto it : gles3exts)
|
for (auto it : gles3exts)
|
||||||
m_extension_list[it] = true;
|
m_extension_list[it] = true;
|
||||||
|
|
|
@ -102,7 +102,7 @@ void SHADER::SetProgramBindings()
|
||||||
// Need to set some attribute locations
|
// Need to set some attribute locations
|
||||||
glBindAttribLocation(glprogid, SHADER_POSITION_ATTRIB, "rawpos");
|
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_COLOR0_ATTRIB, "color0");
|
||||||
glBindAttribLocation(glprogid, SHADER_COLOR1_ATTRIB, "color1");
|
glBindAttribLocation(glprogid, SHADER_COLOR1_ATTRIB, "color1");
|
||||||
|
|
|
@ -753,7 +753,7 @@ void VertexLoader::CompileVertexTranslator()
|
||||||
vtx_decl.posmtx.enable = true;
|
vtx_decl.posmtx.enable = true;
|
||||||
vtx_decl.posmtx.offset = nat_offset;
|
vtx_decl.posmtx.offset = nat_offset;
|
||||||
vtx_decl.posmtx.type = VAR_UNSIGNED_BYTE;
|
vtx_decl.posmtx.type = VAR_UNSIGNED_BYTE;
|
||||||
vtx_decl.posmtx.integer = false;
|
vtx_decl.posmtx.integer = true;
|
||||||
nat_offset += 4;
|
nat_offset += 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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);
|
out.Write("in float4 rawpos; // ATTR%d,\n", SHADER_POSITION_ATTRIB);
|
||||||
if (components & VB_HAS_POSMTXIDX)
|
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)
|
if (components & VB_HAS_NRM0)
|
||||||
out.Write("in float3 rawnorm0; // ATTR%d,\n", SHADER_NORM0_ATTRIB);
|
out.Write("in float3 rawnorm0; // ATTR%d,\n", SHADER_NORM0_ATTRIB);
|
||||||
if (components & VB_HAS_NRM1)
|
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);
|
out.Write(" float%d tex%d : TEXCOORD%d,\n", hastexmtx ? 3 : 2, i, i);
|
||||||
}
|
}
|
||||||
if (components & VB_HAS_POSMTXIDX)
|
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(" float4 rawpos : POSITION) {\n");
|
||||||
}
|
}
|
||||||
out.Write("VS_OUTPUT o;\n");
|
out.Write("VS_OUTPUT o;\n");
|
||||||
|
@ -176,8 +176,6 @@ static inline void GenerateVertexShader(T& out, u32 components, API_TYPE api_typ
|
||||||
// transforms
|
// transforms
|
||||||
if (components & VB_HAS_POSMTXIDX)
|
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)) )
|
if (is_writing_shadercode && (DriverDetails::HasBug(DriverDetails::BUG_NODYNUBOACCESS) && !DriverDetails::HasBug(DriverDetails::BUG_ANNIHILATEDUBOS)) )
|
||||||
{
|
{
|
||||||
// This'll cause issues, but it can't be helped
|
// This'll cause issues, but it can't be helped
|
||||||
|
|
Loading…
Reference in New Issue