Add material render state and pipeline caching
This commit is contained in:
@@ -12,6 +12,7 @@ Material::~Material() = default;
|
||||
void Material::Release() {
|
||||
m_shader.Reset();
|
||||
m_renderQueue = static_cast<Core::int32>(MaterialRenderQueue::Geometry);
|
||||
m_renderState = MaterialRenderState();
|
||||
m_shaderPass.Clear();
|
||||
m_tags.Clear();
|
||||
m_properties.Clear();
|
||||
@@ -34,6 +35,11 @@ void Material::SetRenderQueue(MaterialRenderQueue renderQueue) {
|
||||
SetRenderQueue(static_cast<Core::int32>(renderQueue));
|
||||
}
|
||||
|
||||
void Material::SetRenderState(const MaterialRenderState& renderState) {
|
||||
m_renderState = renderState;
|
||||
UpdateMemorySize();
|
||||
}
|
||||
|
||||
void Material::SetShaderPass(const Containers::String& shaderPass) {
|
||||
m_shaderPass = shaderPass;
|
||||
UpdateMemorySize();
|
||||
@@ -267,6 +273,7 @@ void Material::ClearAllProperties() {
|
||||
|
||||
void Material::UpdateMemorySize() {
|
||||
m_memorySize = m_constantBufferData.Size() +
|
||||
sizeof(MaterialRenderState) +
|
||||
m_shaderPass.Length() +
|
||||
m_tags.Size() * sizeof(TagEntry) +
|
||||
m_textureBindings.Size() * sizeof(TextureBinding) +
|
||||
|
||||
Reference in New Issue
Block a user