54 lines
1.4 KiB
C++
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
|