gfx-shader: Better logging, and ViewSize parameter

This commit is contained in:
Michael Fabian 'Xaymar' Dirks 2020-01-01 04:21:02 +01:00
parent 3e02857d39
commit 3062d3b331

View file

@ -64,7 +64,8 @@ try {
}
return false;
} catch (const std::exception&) {
} catch (const std::exception& ex) {
P_LOG_ERROR("Loading shader '%s' failed with error: %s", file.c_str(), ex.what());
return false;
}
@ -163,6 +164,9 @@ try {
}
return true;
} catch (const std::exception& ex) {
P_LOG_ERROR("Loading shader '%s' failed with error: %s", file.c_str(), ex.what());
return false;
} catch (...) {
return false;
}
@ -382,6 +386,7 @@ void gfx::shader::shader::render()
kv.second->assign();
}
// Time: (Current Time), (Zero), (Zero), (Random Value)
if (gs::effect_parameter el = _shader.get_parameter("Time"); el != nullptr) {
if (el.get_type() == gs::effect_parameter::type::Float4) {
el.set_float4(
@ -391,6 +396,14 @@ void gfx::shader::shader::render()
}
}
// ViewSize: (Width), (Height), (1.0 / Width), (1.0 / Height)
if (auto el = _shader.get_parameter("ViewSize"); el != nullptr) {
if (el.get_type() == gs::effect_parameter::type::Float4) {
el.set_float4(static_cast<float_t>(width()), static_cast<float_t>(height()),
1.0f / static_cast<float_t>(width()), 1.0f / static_cast<float_t>(height()));
}
}
while (gs_effect_loop(_shader.get_object(), _shader_tech.c_str())) {
gs_draw_sprite(nullptr, 0, szw, szh);
}