// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved. #pragma once #if COMPILE_WITH_SHADER_COMPILER #include "Config.h" #include "Engine/Core/Collections/HashSet.h" class ShaderMeta; class ShaderFunctionMeta; class MemoryWriteStream; /// /// Shader compilation context container /// class ShaderCompilationContext { public: /// /// The compilation options. /// const ShaderCompilationOptions* Options; /// /// The shader metadata container. /// ShaderMeta* Meta; public: /// /// Output stream to write compiled shader cache to. /// MemoryWriteStream* Output; /// /// All source files included by this file (absolute paths). Generated during shader compilation. /// HashSet Includes; public: /// /// Name of the target object (in ASCII) /// char TargetNameAnsi[64]; public: /// /// Event called on compilation error /// /// Error message void OnError(const char* message); /// /// Event called on compilation debug data collecting /// /// Target function meta /// Permutation index /// Data pointer /// Data size in bytes void OnCollectDebugInfo(ShaderFunctionMeta& meta, int32 permutationIndex, const char* data, const int32 dataLength); public: /// /// Init /// /// Options /// Metadata ShaderCompilationContext(const ShaderCompilationOptions* options, ShaderMeta* meta); }; #endif