Files
XCEngine/engine/Runtime/Resources/Shader/ShaderIR.h

54 lines
1.4 KiB
C++

#pragma once
#include <XCEngine/Core/Containers/Array.h>
#include <XCEngine/Core/Containers/String.h>
#include "Shader.h"
#include <vector>
namespace XCEngine {
namespace Resources {
struct ShaderTagIR {
Containers::String name;
Containers::String value;
};
struct ShaderPassIR {
Containers::String name;
bool isUsePass = false;
Containers::String usePassShaderName;
Containers::String usePassPassName;
bool hasFixedFunctionState = false;
MaterialRenderState fixedFunctionState = {};
std::vector<ShaderTagIR> tags;
Containers::Array<ShaderResourceBindingDesc> resources;
Containers::Array<ShaderKeywordDeclaration> keywordDeclarations;
Containers::String vertexEntryPoint;
Containers::String fragmentEntryPoint;
Containers::String computeEntryPoint;
Containers::String sharedProgramSource;
Containers::String programSource;
Containers::String targetProfile;
};
struct ShaderSubShaderIR {
bool hasFixedFunctionState = false;
MaterialRenderState fixedFunctionState = {};
std::vector<ShaderTagIR> tags;
Containers::String sharedProgramSource;
std::vector<ShaderPassIR> passes;
};
struct ShaderIR {
Containers::String name;
Containers::String fallback;
Containers::String sharedProgramSource;
Containers::Array<ShaderPropertyDesc> properties;
std::vector<ShaderSubShaderIR> subShaders;
};
} // namespace Resources
} // namespace XCEngine