This commit is contained in:
Jack Andersen 2016-07-13 19:01:31 -10:00
commit d5e5a30fb3
3 changed files with 15 additions and 8 deletions

2
hecl/extern/athena vendored

@ -1 +1 @@
Subproject commit 4e610513546f48e520356477dc4a3f603ff5db9e Subproject commit 46e5d76fd31c7fffb7e0f81dcb07b00d1050533e

View File

@ -96,9 +96,14 @@ std::string GLSL::GenerateVertUniformStruct(unsigned skinSlots, unsigned texMtxs
skinSlots, skinSlots); skinSlots, skinSlots);
if (texMtxs) if (texMtxs)
{ {
retval += hecl::Format("UBINDING1 uniform HECLTexMtxUniform\n" retval += hecl::Format("struct HECLTCGMatrix\n"
"{\n" "{\n"
" mat4 texMtxs[%u];\n" " mat4 mtx;\n"
" mat4 postMtx;\n"
"};\n"
"UBINDING1 uniform HECLTexMtxUniform\n"
"{\n"
" HECLTCGMatrix texMtxs[%u];\n"
"};\n", texMtxs); "};\n", texMtxs);
} }
@ -150,8 +155,8 @@ std::string GLSL::makeVert(const char* glslVer, unsigned col, unsigned uv, unsig
retval += hecl::Format(" vtf.tcgs[%u] = %s;\n", tcgIdx, retval += hecl::Format(" vtf.tcgs[%u] = %s;\n", tcgIdx,
EmitTexGenSource2(tcg.m_src, tcg.m_uvIdx).c_str()); EmitTexGenSource2(tcg.m_src, tcg.m_uvIdx).c_str());
else else
retval += hecl::Format(" vtf.tcgs[%u] = (texMtxs[%u] * %s).xy;\n", tcgIdx, tcg.m_mtx, retval += hecl::Format(" vtf.tcgs[%u] = normalize((texMtxs[%u].postMtx * (texMtxs[%u].mtx * %s)).xy);\n", tcgIdx, tcg.m_mtx,
EmitTexGenSource4(tcg.m_src, tcg.m_uvIdx).c_str()); tcg.m_mtx, EmitTexGenSource4(tcg.m_src, tcg.m_uvIdx).c_str());
++tcgIdx; ++tcgIdx;
} }

View File

@ -87,7 +87,8 @@ std::string HLSL::GenerateVertUniformStruct(unsigned skinSlots, unsigned texMtxs
" float4x4 proj;\n", " float4x4 proj;\n",
skinSlots, skinSlots); skinSlots, skinSlots);
if (texMtxs) if (texMtxs)
retval += hecl::Format(" float4x4 texMtxs[%u];\n", texMtxs); retval += hecl::Format(" float4x4 texMtxs[%u];\n"
" float4x4 postMtxs[%u];\n", texMtxs, texMtxs);
return retval + "};\n"; return retval + "};\n";
} }
@ -137,8 +138,8 @@ std::string HLSL::makeVert(unsigned col, unsigned uv, unsigned w,
retval += hecl::Format(" vtf.tcgs[%u] = %s;\n", tcgIdx, retval += hecl::Format(" vtf.tcgs[%u] = %s;\n", tcgIdx,
EmitTexGenSource2(tcg.m_src, tcg.m_uvIdx).c_str()); EmitTexGenSource2(tcg.m_src, tcg.m_uvIdx).c_str());
else else
retval += hecl::Format(" vtf.tcgs[%u] = mul(texMtxs[%u], %s).xy;\n", tcgIdx, tcg.m_mtx, retval += hecl::Format(" vtf.tcgs[%u] = mul(postMtxs[%u], mul(texMtxs[%u], %s)).xy;\n", tcgIdx, tcg.m_mtx,
EmitTexGenSource4(tcg.m_src, tcg.m_uvIdx).c_str()); tcg.m_mtx, EmitTexGenSource4(tcg.m_src, tcg.m_uvIdx).c_str());
++tcgIdx; ++tcgIdx;
} }
@ -212,6 +213,7 @@ std::string HLSL::makeFrag(const ShaderFunction& lighting,
postSrc + postSrc +
"\nfloat4 main(in VertToFrag vtf) : SV_Target0\n{\n"; "\nfloat4 main(in VertToFrag vtf) : SV_Target0\n{\n";
if (m_lighting) if (m_lighting)
{ {
if (lighting.m_entry) if (lighting.m_entry)