mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-04-20 16:15:43 +00:00
Ignore shaders versions in technique files
This commit is contained in:
parent
8cc632f613
commit
13c5ea2986
@ -57,7 +57,7 @@ namespace IW4
|
|||||||
// TODO: State maps currently are not used
|
// 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);
|
auto* vertexShaderDependency = m_manager->LoadDependency(ASSET_TYPE_VERTEXSHADER, vertexShaderName);
|
||||||
if (vertexShaderDependency == nullptr)
|
if (vertexShaderDependency == nullptr)
|
||||||
@ -72,7 +72,7 @@ namespace IW4
|
|||||||
return true;
|
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);
|
auto* pixelShaderDependency = m_manager->LoadDependency(ASSET_TYPE_PIXELSHADER, pixelShaderName);
|
||||||
if (pixelShaderDependency == nullptr)
|
if (pixelShaderDependency == nullptr)
|
||||||
|
@ -58,9 +58,10 @@ namespace techset
|
|||||||
static constexpr auto TAG_PIXEL_SHADER = 2;
|
static constexpr auto TAG_PIXEL_SHADER = 2;
|
||||||
|
|
||||||
static constexpr auto CAPTURE_START = 1;
|
static constexpr auto CAPTURE_START = 1;
|
||||||
static constexpr auto CAPTURE_VERSION_MAJOR = 2;
|
static constexpr auto CAPTURE_VERSION = 2;
|
||||||
static constexpr auto CAPTURE_VERSION_MINOR = 3;
|
static constexpr auto CAPTURE_VERSION_MAJOR = 3;
|
||||||
static constexpr auto CAPTURE_SHADER_NAME = 4;
|
static constexpr auto CAPTURE_VERSION_MINOR = 4;
|
||||||
|
static constexpr auto CAPTURE_SHADER_NAME = 5;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SequenceShader()
|
SequenceShader()
|
||||||
@ -72,9 +73,15 @@ namespace techset
|
|||||||
create.Keyword("vertexShader").Tag(TAG_VERTEX_SHADER),
|
create.Keyword("vertexShader").Tag(TAG_VERTEX_SHADER),
|
||||||
create.Keyword("pixelShader").Tag(TAG_PIXEL_SHADER),
|
create.Keyword("pixelShader").Tag(TAG_PIXEL_SHADER),
|
||||||
}).Capture(CAPTURE_START),
|
}).Capture(CAPTURE_START),
|
||||||
create.Integer().Capture(CAPTURE_VERSION_MAJOR),
|
create.Or({
|
||||||
create.Char('.'),
|
create.And({
|
||||||
create.Integer().Capture(CAPTURE_VERSION_MINOR),
|
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.String().Capture(CAPTURE_SHADER_NAME),
|
||||||
create.Char('{')
|
create.Char('{')
|
||||||
});
|
});
|
||||||
@ -85,15 +92,7 @@ namespace techset
|
|||||||
{
|
{
|
||||||
const auto& firstToken = result.NextCapture(CAPTURE_START);
|
const auto& firstToken = result.NextCapture(CAPTURE_START);
|
||||||
|
|
||||||
const auto& versionMajorToken = result.NextCapture(CAPTURE_VERSION_MAJOR);
|
// Don't care about shader version since it's stated in the shader bin anyway
|
||||||
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());
|
|
||||||
|
|
||||||
const auto& shaderNameToken = result.NextCapture(CAPTURE_SHADER_NAME);
|
const auto& shaderNameToken = result.NextCapture(CAPTURE_SHADER_NAME);
|
||||||
|
|
||||||
@ -103,12 +102,12 @@ namespace techset
|
|||||||
assert(shaderTag == TAG_VERTEX_SHADER || shaderTag == TAG_PIXEL_SHADER);
|
assert(shaderTag == TAG_VERTEX_SHADER || shaderTag == TAG_PIXEL_SHADER);
|
||||||
if (shaderTag == TAG_VERTEX_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;
|
state->m_current_shader = ShaderSelector::VERTEX_SHADER;
|
||||||
}
|
}
|
||||||
else
|
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;
|
state->m_current_shader = ShaderSelector::PIXEL_SHADER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,8 +75,8 @@ namespace techset
|
|||||||
|
|
||||||
virtual void AcceptStateMap(const std::string& stateMapName) = 0;
|
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 AcceptVertexShader(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 AcceptPixelShader(const std::string& pixelShaderName, std::string& errorMessage) = 0;
|
||||||
|
|
||||||
virtual bool AcceptShaderCodeArgument(ShaderSelector shader, ShaderArgument shaderArgument, ShaderArgumentCodeSource source, 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;
|
virtual bool AcceptShaderLiteralArgument(ShaderSelector shader, ShaderArgument shaderArgument, ShaderArgumentLiteralSource source, std::string& errorMessage) = 0;
|
||||||
|
@ -23,7 +23,7 @@ bool TechniqueFileReader::ReadTechniqueDefinition() const
|
|||||||
lexerConfig.m_emit_new_line_tokens = false;
|
lexerConfig.m_emit_new_line_tokens = false;
|
||||||
lexerConfig.m_read_strings = true;
|
lexerConfig.m_read_strings = true;
|
||||||
lexerConfig.m_read_integer_numbers = 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 lexer = std::make_unique<SimpleLexer>(m_comment_proxy.get(), std::move(lexerConfig));
|
||||||
|
|
||||||
const auto parser = std::make_unique<TechniqueParser>(lexer.get(), m_acceptor);
|
const auto parser = std::make_unique<TechniqueParser>(lexer.get(), m_acceptor);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user