From 9139edc8b116726759b2ccf5b78cd24460461c28 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Mon, 12 Aug 2019 00:44:14 -0700 Subject: [PATCH] Maybe fixed the problem, cannot render the gl41 version properly --- .../src/RenderablePolyLineEntityItem.cpp | 6 ++++-- libraries/entities-renderer/src/paintStroke.slf | 2 +- libraries/render-utils/src/RenderForwardTask.cpp | 12 ++++++++++++ libraries/render-utils/src/RenderForwardTask.h | 12 ++---------- .../developer/utilities/render/luci/Antialiasing.qml | 2 +- 5 files changed, 20 insertions(+), 14 deletions(-) diff --git a/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp b/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp index 0c4e59ec18..ca0a924d91 100644 --- a/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp @@ -55,9 +55,11 @@ void PolyLineEntityRenderer::buildPipelines() { state->setCullMode(gpu::State::CullMode::CULL_NONE); state->setDepthTest(true, !key.second, gpu::LESS_EQUAL); - PrepareStencil::testMaskDrawShape(*state); + // PrepareStencil::testMaskDrawShape(*state); + PrepareStencil::testMask(*state); - state->setBlendFunction(true, gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA); + state->setBlendFunction(true, gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA, + gpu::State::FACTOR_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::ONE); _pipelines[key] = gpu::Pipeline::create(program, state); } diff --git a/libraries/entities-renderer/src/paintStroke.slf b/libraries/entities-renderer/src/paintStroke.slf index 837291efe6..4ae242655c 100644 --- a/libraries/entities-renderer/src/paintStroke.slf +++ b/libraries/entities-renderer/src/paintStroke.slf @@ -31,7 +31,7 @@ layout(location=3) in float _distanceFromCenter; void main(void) { vec4 texel = texture(_texture, _texCoord); texel *= _color; - texel.a *= mix(1.0, pow(1.0 - abs(_distanceFromCenter), 10.0), _polylineData.faceCameraGlow.y); + texel.a *= mix(1.0, pow(1.0 - min(1.0, abs(_distanceFromCenter)), 10.0), _polylineData.faceCameraGlow.y); <@if not HIFI_USE_FORWARD@> packDeferredFragmentTranslucent((2.0 * float(gl_FrontFacing) - 1.0) * _normalWS, texel.a, texel.rgb, DEFAULT_ROUGHNESS); diff --git a/libraries/render-utils/src/RenderForwardTask.cpp b/libraries/render-utils/src/RenderForwardTask.cpp index 14f2e51697..9b547b82bb 100755 --- a/libraries/render-utils/src/RenderForwardTask.cpp +++ b/libraries/render-utils/src/RenderForwardTask.cpp @@ -48,6 +48,18 @@ using namespace render; extern void initForwardPipelines(ShapePlumber& plumber); +void PreparePrimaryFramebufferMSAAConfig::setResolutionScale(float scale) { + const float SCALE_RANGE_MIN = 0.1f; + const float SCALE_RANGE_MAX = 2.0f; + resolutionScale = std::max(SCALE_RANGE_MIN, std::min(SCALE_RANGE_MAX, scale)); + // emit dirty(); +} + +void PreparePrimaryFramebufferMSAAConfig::setNumSamples(int num) { + numSamples = std::max(1, std::min(32, num)); + emit dirty(); +} + void RenderForwardTask::configure(const Config& config) { // Propagate resolution scale to sub jobs who need it auto preparePrimaryBufferConfig = config.getConfig("PreparePrimaryBufferForward"); diff --git a/libraries/render-utils/src/RenderForwardTask.h b/libraries/render-utils/src/RenderForwardTask.h index dd0abbc9ab..d225ffb648 100755 --- a/libraries/render-utils/src/RenderForwardTask.h +++ b/libraries/render-utils/src/RenderForwardTask.h @@ -46,18 +46,10 @@ class PreparePrimaryFramebufferMSAAConfig : public render::Job::Config { Q_PROPERTY(int numSamples WRITE setNumSamples READ getNumSamples) public: float getResolutionScale() const { return resolutionScale; } - void setResolutionScale(float scale) { - const float SCALE_RANGE_MIN = 0.1f; - const float SCALE_RANGE_MAX = 2.0f; - resolutionScale = std::max(SCALE_RANGE_MIN, std::min(SCALE_RANGE_MAX, scale)); - //emit dirty(); - } + void setResolutionScale(float scale); int getNumSamples() const { return numSamples; } - void setNumSamples(int num) { - numSamples = std::max(1, std::min(32, num)); - emit dirty(); - } + void setNumSamples(int num); signals: void dirty(); diff --git a/scripts/developer/utilities/render/luci/Antialiasing.qml b/scripts/developer/utilities/render/luci/Antialiasing.qml index 0cea509761..6d1209157f 100644 --- a/scripts/developer/utilities/render/luci/Antialiasing.qml +++ b/scripts/developer/utilities/render/luci/Antialiasing.qml @@ -35,7 +35,7 @@ Column{ object: Render.getConfig("RenderMainView.PreparePrimaryBufferForward") property: "numSamples" min: 1 - max: 4 + max: 32 integral: true } Row {