mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-25 15:19:42 -06:00
ShaderGen: posmtx should be a 4-component unsigned byte
This is a global change across backends, so should be tested for regressions.
This commit is contained in:
@ -100,7 +100,7 @@ ShaderCode GenerateVertexShaderCode(APIType api_type, const vertex_shader_uid_da
|
|||||||
{
|
{
|
||||||
out.Write("ATTRIBUTE_LOCATION(%d) in float4 rawpos;\n", SHADER_POSITION_ATTRIB);
|
out.Write("ATTRIBUTE_LOCATION(%d) in float4 rawpos;\n", SHADER_POSITION_ATTRIB);
|
||||||
if (uid_data->components & VB_HAS_POSMTXIDX)
|
if (uid_data->components & VB_HAS_POSMTXIDX)
|
||||||
out.Write("ATTRIBUTE_LOCATION(%d) in int posmtx;\n", SHADER_POSMTX_ATTRIB);
|
out.Write("ATTRIBUTE_LOCATION(%d) in uint4 posmtx;\n", SHADER_POSMTX_ATTRIB);
|
||||||
if (uid_data->components & VB_HAS_NRM0)
|
if (uid_data->components & VB_HAS_NRM0)
|
||||||
out.Write("ATTRIBUTE_LOCATION(%d) in float3 rawnorm0;\n", SHADER_NORM0_ATTRIB);
|
out.Write("ATTRIBUTE_LOCATION(%d) in float3 rawnorm0;\n", SHADER_NORM0_ATTRIB);
|
||||||
if (uid_data->components & VB_HAS_NRM1)
|
if (uid_data->components & VB_HAS_NRM1)
|
||||||
@ -181,7 +181,7 @@ ShaderCode GenerateVertexShaderCode(APIType api_type, const vertex_shader_uid_da
|
|||||||
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 (uid_data->components & VB_HAS_POSMTXIDX)
|
if (uid_data->components & VB_HAS_POSMTXIDX)
|
||||||
out.Write(" int posmtx : BLENDINDICES,\n");
|
out.Write(" uint4 posmtx : BLENDINDICES,\n");
|
||||||
out.Write(" float4 rawpos : POSITION) {\n");
|
out.Write(" float4 rawpos : POSITION) {\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -190,13 +190,14 @@ ShaderCode GenerateVertexShaderCode(APIType api_type, const vertex_shader_uid_da
|
|||||||
// transforms
|
// transforms
|
||||||
if (uid_data->components & VB_HAS_POSMTXIDX)
|
if (uid_data->components & VB_HAS_POSMTXIDX)
|
||||||
{
|
{
|
||||||
|
out.Write("int posidx = int(posmtx.r);\n");
|
||||||
out.Write("float4 pos = float4(dot(" I_TRANSFORMMATRICES
|
out.Write("float4 pos = float4(dot(" I_TRANSFORMMATRICES
|
||||||
"[posmtx], rawpos), dot(" I_TRANSFORMMATRICES
|
"[posidx], rawpos), dot(" I_TRANSFORMMATRICES
|
||||||
"[posmtx+1], rawpos), dot(" I_TRANSFORMMATRICES "[posmtx+2], rawpos), 1);\n");
|
"[posidx+1], rawpos), dot(" I_TRANSFORMMATRICES "[posidx+2], rawpos), 1);\n");
|
||||||
|
|
||||||
if (uid_data->components & VB_HAS_NRMALL)
|
if (uid_data->components & VB_HAS_NRMALL)
|
||||||
{
|
{
|
||||||
out.Write("int normidx = posmtx & 31;\n");
|
out.Write("int normidx = posidx & 31;\n");
|
||||||
out.Write("float3 N0 = " I_NORMALMATRICES "[normidx].xyz, N1 = " I_NORMALMATRICES
|
out.Write("float3 N0 = " I_NORMALMATRICES "[normidx].xyz, N1 = " I_NORMALMATRICES
|
||||||
"[normidx+1].xyz, N2 = " I_NORMALMATRICES "[normidx+2].xyz;\n");
|
"[normidx+1].xyz, N2 = " I_NORMALMATRICES "[normidx+2].xyz;\n");
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user