shader changes & screen quads
This commit is contained in:
@@ -377,8 +377,7 @@ namespace Game
|
||||
Textures[0].SamplerHandle = DefaultSampler;
|
||||
LoadModels(Models, ModelCount);
|
||||
|
||||
Materials[(uint16_t)EMaterial::Default] =
|
||||
Material::LoadFromShader("vert", "frag", MainViewID, Textures[0].Handle, Textures[0].SamplerHandle);
|
||||
ReloadShaders();
|
||||
imguiCreate();
|
||||
SetImguiStyle();
|
||||
|
||||
@@ -439,26 +438,17 @@ namespace Game
|
||||
FileChangeNotification* shaderChange = nullptr;
|
||||
if (shared.Dev.ChangedShaderCount > 0)
|
||||
{
|
||||
char buf[1024]{0};
|
||||
for (int32_t i = 0; i < shared.Dev.ChangedShaderCount; ++i)
|
||||
{
|
||||
wcstombs(buf, shared.Dev.ChangedShaders[i].FileName, sizeof(buf));
|
||||
LOG("Changed: %s", buf);
|
||||
}
|
||||
shared.Dev.ChangedShaderCount = 0;
|
||||
|
||||
// TODO: when to destroy shader?
|
||||
// TODO: only reload changed shaders
|
||||
bgfx::ShaderHandle vertexShader = loadShader("vert");
|
||||
bgfx::ShaderHandle fragmentShader = loadShader("frag");
|
||||
if (isValid(vertexShader) && isValid(fragmentShader))
|
||||
{
|
||||
bgfx::ProgramHandle newProgram = bgfx::createProgram(vertexShader, fragmentShader, true);
|
||||
if (isValid(newProgram))
|
||||
{
|
||||
Materials[(uint16_t)EMaterial::Default].Shader = newProgram;
|
||||
LastShaderLoadTime = GetInstance().Time.Now;
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG_WARN("Failed to load shader!");
|
||||
LastShaderLoadTime = -1.0f;
|
||||
}
|
||||
}
|
||||
ReloadShaders();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -697,6 +687,14 @@ namespace Game
|
||||
ImGui::End();
|
||||
}
|
||||
|
||||
void GameRendering::ReloadShaders()
|
||||
{
|
||||
Materials[(uint16_t)EMaterial::Default] = Material::LoadFromShader(
|
||||
"dither/vert", "dither/frag", MainViewID, Textures[0].Handle, Textures[0].SamplerHandle);
|
||||
Materials[(uint16_t)EMaterial::UI] = Material::LoadFromShader(
|
||||
"normal/vert", "normal/frag", MainViewID, Textures[0].Handle, Textures[0].SamplerHandle);
|
||||
}
|
||||
|
||||
void GameRendering::Update()
|
||||
{
|
||||
ZoneScopedN("Rendering");
|
||||
|
||||
Reference in New Issue
Block a user