Added outline intensity

This commit is contained in:
Olivier Prat 2017-08-09 18:27:39 +02:00
parent 57dfe10baf
commit 0f2c41b009
5 changed files with 19 additions and 3 deletions

View file

@ -66,5 +66,6 @@ void main(void) {
if (outlineIntensity < 1e-3) { if (outlineIntensity < 1e-3) {
discard; discard;
} }
outlineIntensity = min(1.0, outlineIntensity * params._intensity);
outFragColor = vec4(params._color.rgb, outlineIntensity); outFragColor = vec4(params._color.rgb, outlineIntensity);
} }

View file

@ -130,7 +130,8 @@ DrawOutline::DrawOutline() {
void DrawOutline::configure(const Config& config) { void DrawOutline::configure(const Config& config) {
_color = config.color; _color = config.color;
_size = config.width; _size = config.width / 1024.f;
_intensity = config.intensity * 10.f;
} }
void DrawOutline::run(const render::RenderContextPointer& renderContext, const Inputs& inputs) { void DrawOutline::run(const render::RenderContextPointer& renderContext, const Inputs& inputs) {
@ -147,7 +148,8 @@ void DrawOutline::run(const render::RenderContextPointer& renderContext, const I
{ {
auto& configuration = _configuration.edit(); auto& configuration = _configuration.edit();
configuration._color = _color; configuration._color = _color;
configuration._size = _size / 1024.f; configuration._size = _size;
configuration._intensity = _intensity;
} }
gpu::doInBatch(args->_context, [&](gpu::Batch& batch) { gpu::doInBatch(args->_context, [&](gpu::Batch& batch) {

View file

@ -76,6 +76,7 @@ private:
class DrawOutlineConfig : public render::Job::Config { class DrawOutlineConfig : public render::Job::Config {
Q_OBJECT Q_OBJECT
Q_PROPERTY(float width MEMBER width NOTIFY dirty) Q_PROPERTY(float width MEMBER width NOTIFY dirty)
Q_PROPERTY(float intensity MEMBER intensity NOTIFY dirty)
Q_PROPERTY(float colorR READ getColorR WRITE setColorR NOTIFY dirty) Q_PROPERTY(float colorR READ getColorR WRITE setColorR NOTIFY dirty)
Q_PROPERTY(float colorG READ getColorG WRITE setColorG NOTIFY dirty) Q_PROPERTY(float colorG READ getColorG WRITE setColorG NOTIFY dirty)
Q_PROPERTY(float colorB READ getColorB WRITE setColorB NOTIFY dirty) Q_PROPERTY(float colorB READ getColorB WRITE setColorB NOTIFY dirty)
@ -90,8 +91,9 @@ public:
void setColorB(float value) { color.b = value; emit dirty(); } void setColorB(float value) { color.b = value; emit dirty(); }
float getColorB() const { return color.b; } float getColorB() const { return color.b; }
float width{ 5.f };
glm::vec3 color{ 1.f, 0.7f, 0.2f }; glm::vec3 color{ 1.f, 0.7f, 0.2f };
float width{ 5.f };
float intensity{ 1.f };
signals: signals:
void dirty(); void dirty();
@ -125,6 +127,7 @@ private:
OutlineConfigurationBuffer _configuration; OutlineConfigurationBuffer _configuration;
glm::vec3 _color; glm::vec3 _color;
float _size; float _size;
float _intensity;
}; };
class DebugOutlineConfig : public render::Job::Config { class DebugOutlineConfig : public render::Job::Config {

View file

@ -9,6 +9,7 @@ struct OutlineParameters
{ {
VEC3 _color; VEC3 _color;
float _size; float _size;
float _intensity;
}; };
// <@if 1@> // <@if 1@>

View file

@ -44,6 +44,15 @@ Item {
min: 0.0 min: 0.0
width: 230 width: 230
} }
ConfigSlider {
label: "Intensity"
integral: false
config: root.drawConfig
property: "intensity"
max: 1.0
min: 0.0
width: 230
}
ConfigSlider { ConfigSlider {
label: "Color R" label: "Color R"
integral: false integral: false