mirror of
https://github.com/TombEngine/TombEngine.git
synced 2025-04-28 15:57:59 +03:00
Reload shaders on graphic settings change
This commit is contained in:
parent
f04dcd42cc
commit
3f749b4856
3 changed files with 8 additions and 7 deletions
|
@ -628,6 +628,7 @@ namespace TEN::Gui
|
||||||
g_Renderer.ChangeScreenResolution(CurrentSettings.Configuration.ScreenWidth, CurrentSettings.Configuration.ScreenHeight,
|
g_Renderer.ChangeScreenResolution(CurrentSettings.Configuration.ScreenWidth, CurrentSettings.Configuration.ScreenHeight,
|
||||||
CurrentSettings.Configuration.EnableWindowedMode);
|
CurrentSettings.Configuration.EnableWindowedMode);
|
||||||
|
|
||||||
|
g_Renderer.ReloadShaders();
|
||||||
g_Renderer.SetGraphicsSettingsChanged();
|
g_Renderer.SetGraphicsSettingsChanged();
|
||||||
|
|
||||||
MenuToDisplay = fromPauseMenu ? Menu::Pause : Menu::Options;
|
MenuToDisplay = fromPauseMenu ? Menu::Pause : Menu::Options;
|
||||||
|
|
|
@ -16,7 +16,7 @@ namespace TEN::Renderer::Utils
|
||||||
TENLog("Loading shaders...", LogLevel::Info);
|
TENLog("Loading shaders...", LogLevel::Info);
|
||||||
|
|
||||||
// Unbind any currently bound shader.
|
// Unbind any currently bound shader.
|
||||||
Bind(Shader::None);
|
Bind(Shader::None, true);
|
||||||
|
|
||||||
// Reset compile counter.
|
// Reset compile counter.
|
||||||
_compileCounter = 0;
|
_compileCounter = 0;
|
||||||
|
@ -27,7 +27,7 @@ namespace TEN::Renderer::Utils
|
||||||
const D3D_SHADER_MACRO roomDefinesShadowMap[] = { "SHADOW_MAP", "", nullptr, nullptr };
|
const D3D_SHADER_MACRO roomDefinesShadowMap[] = { "SHADOW_MAP", "", nullptr, nullptr };
|
||||||
|
|
||||||
Load(Shader::Rooms, "Rooms", "", ShaderType::PixelAndVertex);
|
Load(Shader::Rooms, "Rooms", "", ShaderType::PixelAndVertex);
|
||||||
Load(Shader::RoomsAnimated, "Rooms", "", ShaderType::Vertex, &roomDefinesAnimated[0]);
|
Load(Shader::RoomsAnimated, "Rooms", "", ShaderType::Vertex, roomDefinesAnimated);
|
||||||
Load(Shader::Items, "Items", "", ShaderType::PixelAndVertex);
|
Load(Shader::Items, "Items", "", ShaderType::PixelAndVertex);
|
||||||
Load(Shader::Statics, "Statics", "", ShaderType::PixelAndVertex);
|
Load(Shader::Statics, "Statics", "", ShaderType::PixelAndVertex);
|
||||||
Load(Shader::Sky, "Sky", "", ShaderType::PixelAndVertex);
|
Load(Shader::Sky, "Sky", "", ShaderType::PixelAndVertex);
|
||||||
|
@ -290,13 +290,13 @@ namespace TEN::Renderer::Utils
|
||||||
_shaders[(int)shader] = LoadOrCompile(fileName, funcName, type, defines);
|
_shaders[(int)shader] = LoadOrCompile(fileName, funcName, type, defines);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShaderManager::Bind(Shader shader)
|
void ShaderManager::Bind(Shader shader, bool forceNull)
|
||||||
{
|
{
|
||||||
auto& shaderObj = _shaders[(int)shader];
|
auto& shaderObj = _shaders[(int)shader];
|
||||||
|
|
||||||
if (shaderObj.Vertex.Shader != nullptr) _context->VSSetShader(shaderObj.Vertex.Shader.Get(), nullptr, 0);
|
if (shaderObj.Vertex.Shader != nullptr || forceNull) _context->VSSetShader(shaderObj.Vertex.Shader.Get(), nullptr, 0);
|
||||||
if (shaderObj.Pixel.Shader != nullptr) _context->PSSetShader(shaderObj.Pixel.Shader.Get(), nullptr, 0);
|
if (shaderObj.Pixel.Shader != nullptr || forceNull) _context->PSSetShader(shaderObj.Pixel.Shader.Get(), nullptr, 0);
|
||||||
if (shaderObj.Compute.Shader != nullptr) _context->CSSetShader(shaderObj.Compute.Shader.Get(), nullptr, 0);
|
if (shaderObj.Compute.Shader != nullptr || forceNull) _context->CSSetShader(shaderObj.Compute.Shader.Get(), nullptr, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
const RendererShader& ShaderManager::Get(Shader shader)
|
const RendererShader& ShaderManager::Get(Shader shader)
|
||||||
|
|
|
@ -78,7 +78,7 @@ namespace TEN::Renderer::Utils
|
||||||
void Initialize(ComPtr<ID3D11Device>& device, ComPtr<ID3D11DeviceContext>& context);
|
void Initialize(ComPtr<ID3D11Device>& device, ComPtr<ID3D11DeviceContext>& context);
|
||||||
void LoadAllShaders(int width, int height);
|
void LoadAllShaders(int width, int height);
|
||||||
|
|
||||||
void Bind(Shader shader);
|
void Bind(Shader shader, bool forceNull = false);
|
||||||
const RendererShader& Get(Shader shader);
|
const RendererShader& Get(Shader shader);
|
||||||
};
|
};
|
||||||
}
|
}
|
Loading…
Add table
Add a link
Reference in a new issue