Ignore shaders versions in technique files

This commit is contained in:
Jan 2022-04-09 19:03:12 +02:00
parent 8cc632f613
commit 13c5ea2986
4 changed files with 21 additions and 22 deletions

View File

@ -57,7 +57,7 @@ namespace IW4
// TODO: State maps currently are not used
}
bool AcceptVertexShader(size_t shaderVersionMajor, size_t shaderVersionMinor, const std::string& vertexShaderName, std::string& errorMessage) override
bool AcceptVertexShader(const std::string& vertexShaderName, std::string& errorMessage) override
{
auto* vertexShaderDependency = m_manager->LoadDependency(ASSET_TYPE_VERTEXSHADER, vertexShaderName);
if (vertexShaderDependency == nullptr)
@ -72,7 +72,7 @@ namespace IW4
return true;
}
bool AcceptPixelShader(size_t shaderVersionMajor, size_t shaderVersionMinor, const std::string& pixelShaderName, std::string& errorMessage) override
bool AcceptPixelShader(const std::string& pixelShaderName, std::string& errorMessage) override
{
auto* pixelShaderDependency = m_manager->LoadDependency(ASSET_TYPE_PIXELSHADER, pixelShaderName);
if (pixelShaderDependency == nullptr)

View File

@ -58,9 +58,10 @@ namespace techset
static constexpr auto TAG_PIXEL_SHADER = 2;
static constexpr auto CAPTURE_START = 1;
static constexpr auto CAPTURE_VERSION_MAJOR = 2;
static constexpr auto CAPTURE_VERSION_MINOR = 3;
static constexpr auto CAPTURE_SHADER_NAME = 4;
static constexpr auto CAPTURE_VERSION = 2;
static constexpr auto CAPTURE_VERSION_MAJOR = 3;
static constexpr auto CAPTURE_VERSION_MINOR = 4;
static constexpr auto CAPTURE_SHADER_NAME = 5;
public:
SequenceShader()
@ -72,9 +73,15 @@ namespace techset
create.Keyword("vertexShader").Tag(TAG_VERTEX_SHADER),
create.Keyword("pixelShader").Tag(TAG_PIXEL_SHADER),
}).Capture(CAPTURE_START),
create.Or({
create.And({
create.Integer().Capture(CAPTURE_VERSION_MAJOR),
create.Char('.'),
create.Integer().Capture(CAPTURE_VERSION_MINOR),
}),
create.FloatingPoint().Capture(CAPTURE_VERSION), // This is dumb but cod devs made the format so cannot change it
create.String().Capture(CAPTURE_VERSION)
}),
create.String().Capture(CAPTURE_SHADER_NAME),
create.Char('{')
});
@ -85,15 +92,7 @@ namespace techset
{
const auto& firstToken = result.NextCapture(CAPTURE_START);
const auto& versionMajorToken = result.NextCapture(CAPTURE_VERSION_MAJOR);
if (versionMajorToken.IntegerValue() < 0)
throw ParsingException(versionMajorToken.GetPos(), "Major version must be positive");
const auto versionMajor = static_cast<size_t>(versionMajorToken.IntegerValue());
const auto& versionMinorToken = result.NextCapture(CAPTURE_VERSION_MINOR);
if (versionMinorToken.IntegerValue() < 0)
throw ParsingException(versionMinorToken.GetPos(), "Minor version must be positive");
const auto versionMinor = static_cast<size_t>(versionMajorToken.IntegerValue());
// Don't care about shader version since it's stated in the shader bin anyway
const auto& shaderNameToken = result.NextCapture(CAPTURE_SHADER_NAME);
@ -103,12 +102,12 @@ namespace techset
assert(shaderTag == TAG_VERTEX_SHADER || shaderTag == TAG_PIXEL_SHADER);
if (shaderTag == TAG_VERTEX_SHADER)
{
acceptorResult = state->m_acceptor->AcceptVertexShader(versionMajor, versionMinor, shaderNameToken.StringValue(), errorMessage);
acceptorResult = state->m_acceptor->AcceptVertexShader(shaderNameToken.StringValue(), errorMessage);
state->m_current_shader = ShaderSelector::VERTEX_SHADER;
}
else
{
acceptorResult = state->m_acceptor->AcceptPixelShader(versionMajor, versionMinor, shaderNameToken.StringValue(), errorMessage);
acceptorResult = state->m_acceptor->AcceptPixelShader(shaderNameToken.StringValue(), errorMessage);
state->m_current_shader = ShaderSelector::PIXEL_SHADER;
}

View File

@ -75,8 +75,8 @@ namespace techset
virtual void AcceptStateMap(const std::string& stateMapName) = 0;
virtual bool AcceptVertexShader(size_t shaderVersionMajor, size_t shaderVersionMinor, const std::string& vertexShaderName, std::string& errorMessage) = 0;
virtual bool AcceptPixelShader(size_t shaderVersionMajor, size_t shaderVersionMinor, const std::string& pixelShaderName, std::string& errorMessage) = 0;
virtual bool AcceptVertexShader(const std::string& vertexShaderName, std::string& errorMessage) = 0;
virtual bool AcceptPixelShader(const std::string& pixelShaderName, std::string& errorMessage) = 0;
virtual bool AcceptShaderCodeArgument(ShaderSelector shader, ShaderArgument shaderArgument, ShaderArgumentCodeSource source, std::string& errorMessage) = 0;
virtual bool AcceptShaderLiteralArgument(ShaderSelector shader, ShaderArgument shaderArgument, ShaderArgumentLiteralSource source, std::string& errorMessage) = 0;

View File

@ -23,7 +23,7 @@ bool TechniqueFileReader::ReadTechniqueDefinition() const
lexerConfig.m_emit_new_line_tokens = false;
lexerConfig.m_read_strings = true;
lexerConfig.m_read_integer_numbers = true;
lexerConfig.m_read_floating_point_numbers = false;
lexerConfig.m_read_floating_point_numbers = true;
const auto lexer = std::make_unique<SimpleLexer>(m_comment_proxy.get(), std::move(lexerConfig));
const auto parser = std::make_unique<TechniqueParser>(lexer.get(), m_acceptor);