Merge branch 'Muzz-Triplanar-Features' into 1.10

This commit is contained in:
Muzz
2025-02-28 14:54:44 +01:00
committed by Wojtek Figat
parent dad8c0cd6b
commit 7885590593
14 changed files with 536 additions and 55 deletions

View File

@@ -0,0 +1,34 @@
// Copyright (c) 2012-2024 Wojciech Figat. All rights reserved.
#include "ShaderStringBuilder.h"
ShaderStringBuilder& ShaderStringBuilder::Code(const Char* shaderCode)
{
_code = shaderCode;
return *this;
}
ShaderStringBuilder& ShaderStringBuilder::Replace(const String& key, const String& value)
{
_replacements.Add(Pair<String, String>(key, value));
return *this;
}
String ShaderStringBuilder::Build() const
{
String result = _code;
for (const auto& replacement : _replacements)
{
const auto& key = replacement.First;
const auto& value = replacement.Second;
int32 position = 0;
while ((position = result.Find(key)) != -1)
{
result = String::Format(TEXT("{0}{1}{2}"),
StringView(result.Get(), position),
value,
StringView(result.Get() + position + key.Length()));
}
}
return result;
}

View File

@@ -0,0 +1,21 @@
// Copyright (c) 2012-2024 Wojciech Figat. All rights reserved.
#pragma once
#include "Engine/Core/Types/Pair.h"
#include "Engine/Core/Types/String.h"
#include "Engine/Core/Types/StringView.h"
#include "Engine/Core/Collections/Array.h"
// Helper utility for shader source code formatting.
class ShaderStringBuilder
{
private:
String _code;
Array<Pair<String, String>> _replacements;
public:
ShaderStringBuilder& Code(const Char* shaderCode);
ShaderStringBuilder& Replace(const String& key, const String& value);
String Build() const;
};