mirror of
https://github.com/hedge-dev/XenosRecomp.git
synced 2025-10-30 07:12:17 +00:00
Write Vulkan locations for vertex elements.
This commit is contained in:
parent
9ebccbae90
commit
9da6b59ce5
1 changed files with 40 additions and 1 deletions
|
|
@ -67,6 +67,34 @@ static constexpr const char* USAGE_SEMANTICS[] =
|
||||||
"SAMPLE"
|
"SAMPLE"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct DeclUsageLocation
|
||||||
|
{
|
||||||
|
DeclUsage usage;
|
||||||
|
uint32_t usageIndex;
|
||||||
|
uint32_t location;
|
||||||
|
};
|
||||||
|
|
||||||
|
static constexpr DeclUsageLocation USAGE_LOCATIONS[] =
|
||||||
|
{
|
||||||
|
{ DeclUsage::Position, 0, 0 },
|
||||||
|
{ DeclUsage::Normal, 0, 1 },
|
||||||
|
{ DeclUsage::Tangent, 0, 2 },
|
||||||
|
{ DeclUsage::Binormal, 0, 3 },
|
||||||
|
{ DeclUsage::TexCoord, 0, 4 },
|
||||||
|
{ DeclUsage::TexCoord, 1, 5 },
|
||||||
|
{ DeclUsage::TexCoord, 2, 6 },
|
||||||
|
{ DeclUsage::TexCoord, 3, 7 },
|
||||||
|
{ DeclUsage::Color, 0, 8 },
|
||||||
|
{ DeclUsage::BlendIndices, 0, 9 },
|
||||||
|
{ DeclUsage::BlendWeight, 0, 10 },
|
||||||
|
{ DeclUsage::Color, 1, 11 },
|
||||||
|
{ DeclUsage::TexCoord, 4, 12 },
|
||||||
|
{ DeclUsage::TexCoord, 5, 13 },
|
||||||
|
{ DeclUsage::TexCoord, 6, 14 },
|
||||||
|
{ DeclUsage::TexCoord, 7, 15 },
|
||||||
|
{ DeclUsage::Position, 1, 15 },
|
||||||
|
};
|
||||||
|
|
||||||
static constexpr std::pair<DeclUsage, size_t> INTERPOLATORS[] =
|
static constexpr std::pair<DeclUsage, size_t> INTERPOLATORS[] =
|
||||||
{
|
{
|
||||||
{ DeclUsage::TexCoord, 0 },
|
{ DeclUsage::TexCoord, 0 },
|
||||||
|
|
@ -1098,7 +1126,18 @@ void ShaderRecompiler::recompile(const uint8_t* shaderData)
|
||||||
if (isMetaInstancer && vertexElement.usage == DeclUsage::TexCoord && vertexElement.usageIndex == 2)
|
if (isMetaInstancer && vertexElement.usage == DeclUsage::TexCoord && vertexElement.usageIndex == 2)
|
||||||
usageType = "uint4";
|
usageType = "uint4";
|
||||||
|
|
||||||
println("\tin {0} i{1}{2} : {3}{2},", usageType, USAGE_VARIABLES[uint32_t(vertexElement.usage)],
|
out += '\t';
|
||||||
|
|
||||||
|
for (auto& usageLocation : USAGE_LOCATIONS)
|
||||||
|
{
|
||||||
|
if (usageLocation.usage == vertexElement.usage && usageLocation.usageIndex == vertexElement.usageIndex)
|
||||||
|
{
|
||||||
|
print("[[vk::location({})]] ", usageLocation.location);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
println("in {0} i{1}{2} : {3}{2},", usageType, USAGE_VARIABLES[uint32_t(vertexElement.usage)],
|
||||||
uint32_t(vertexElement.usageIndex), USAGE_SEMANTICS[uint32_t(vertexElement.usage)]);
|
uint32_t(vertexElement.usageIndex), USAGE_SEMANTICS[uint32_t(vertexElement.usage)]);
|
||||||
|
|
||||||
vertexElements.emplace(uint32_t(vertexElement.address), vertexElement);
|
vertexElements.emplace(uint32_t(vertexElement.address), vertexElement);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue