History

Merge pull request #11157 from SamGondelman/tabletLayer

Render non-AA overlays correctly

Chris Collins committed 9 years ago

Commit 24561262 parents 3406647 ee74f6410 files · +38 −110Browse files

Showing the changes to libraries/render-utils/src/GeometryCache.cpp (1 of 10 files). Show all

Unified · Split

libraries/render-utils/src/GeometryCache.cpp+12−14
@@ -42,9 +42,7 @@ · 41 unmodified lines
4242 #include "simple_textured_fade_frag.h"
4343 #include "simple_textured_unlit_fade_frag.h"
4444 #include "simple_opaque_web_browser_frag.h"
45−#include "simple_opaque_web_browser_overlay_frag.h"
4645 #include "simple_transparent_web_browser_frag.h"
47−#include "simple_transparent_web_browser_overlay_frag.h"
4846 #include "glowLine_vert.h"
4947 #include "glowLine_frag.h"
5048
@@ -1828,7 +1826,7 @@ void GeometryCache::useSimpleDrawPipeline(gpu::Batch& batch, bool noBlend) { · 1777 unmodified lines
18281826
18291827
18301828 auto stateNoBlend = std::make_shared<gpu::State>();
1831− PrepareStencil::testMaskDrawShape(*state);
1829+ PrepareStencil::testMaskDrawShape(*stateNoBlend);
18321830
18331831 auto noBlendPS = gpu::StandardShaderLib::getDrawTextureOpaquePS();
18341832 auto programNoBlend = gpu::Shader::createProgram(vs, noBlendPS);
@@ -1925,7 +1923,7 @@ inline bool operator==(const SimpleProgramKey& a, const SimpleProgramKey& b) { · 90 unmodified lines
19251923 return a.getRaw() == b.getRaw();
19261924 }
19271925
1928−static void buildWebShader(const std::string& vertShaderText, const std::string& fragShaderText, bool blendEnable,
1926+static void buildWebShader(const std::string& vertShaderText, const std::string& fragShaderText, bool blendEnable, bool isAA,
19291927 gpu::ShaderPointer& shaderPointerOut, gpu::PipelinePointer& pipelinePointerOut) {
19301928 auto VS = gpu::Shader::createVertex(vertShaderText);
19311929 auto PS = gpu::Shader::createPixel(fragShaderText);
@@ -1940,10 +1938,11 @@ static void buildWebShader(const std::string& vertShaderText, const std::string& · 8 unmodified lines
19401938 state->setBlendFunction(blendEnable,
19411939 gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA,
19421940 gpu::State::FACTOR_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::ONE);
1943− if (blendEnable) {
1944− PrepareStencil::testMask(*state);
1941+
1942+ if (isAA) {
1943+ blendEnable ? PrepareStencil::testMask(*state) : PrepareStencil::testMaskDrawShape(*state);
19451944 } else {
1946− PrepareStencil::testMaskDrawShape(*state);
1945+ PrepareStencil::testMaskDrawShapeNoAA(*state);
19471946 }
19481947
19491948 pipelinePointerOut = gpu::Pipeline::create(shaderPointerOut, state);
@@ -1957,11 +1956,11 @@ gpu::PipelinePointer GeometryCache::getOpaqueWebBrowserProgram(bool isAA) { · 7 unmodified lines
19571956 static std::once_flag once;
19581957 std::call_once(once, [&]() {
19591958 const bool BLEND_ENABLE = false;
1960− buildWebShader(simple_vert, simple_opaque_web_browser_frag, BLEND_ENABLE, _simpleOpaqueWebBrowserShader, _simpleOpaqueWebBrowserPipeline);
1961− buildWebShader(simple_vert, simple_opaque_web_browser_overlay_frag, BLEND_ENABLE, _simpleOpaqueWebBrowserOverlayShader, _simpleOpaqueWebBrowserOverlayPipeline);
1959+ buildWebShader(simple_vert, simple_opaque_web_browser_frag, BLEND_ENABLE, true, _simpleOpaqueWebBrowserShader, _simpleOpaqueWebBrowserPipeline);
1960+ buildWebShader(simple_vert, simple_opaque_web_browser_frag, BLEND_ENABLE, false, _simpleOpaqueWebBrowserShader, _simpleOpaqueWebBrowserPipelineNoAA);
19621961 });
19631962
1964− return isAA ? _simpleOpaqueWebBrowserPipeline : _simpleOpaqueWebBrowserOverlayPipeline;
1963+ return isAA ? _simpleOpaqueWebBrowserPipeline : _simpleOpaqueWebBrowserPipelineNoAA;
19651964 }
19661965
19671966 void GeometryCache::bindTransparentWebBrowserProgram(gpu::Batch& batch, bool isAA) {
@@ -1971,13 +1970,12 @@ void GeometryCache::bindTransparentWebBrowserProgram(gpu::Batch& batch, bool isA · 3 unmodified lines
19711970 gpu::PipelinePointer GeometryCache::getTransparentWebBrowserProgram(bool isAA) {
19721971 static std::once_flag once;
19731972 std::call_once(once, [&]() {
1974−
19751973 const bool BLEND_ENABLE = true;
1976− buildWebShader(simple_vert, simple_transparent_web_browser_frag, BLEND_ENABLE, _simpleTransparentWebBrowserShader, _simpleTransparentWebBrowserPipeline);
1977− buildWebShader(simple_vert, simple_transparent_web_browser_overlay_frag, BLEND_ENABLE, _simpleTransparentWebBrowserOverlayShader, _simpleTransparentWebBrowserOverlayPipeline);
1974+ buildWebShader(simple_vert, simple_transparent_web_browser_frag, BLEND_ENABLE, true, _simpleTransparentWebBrowserShader, _simpleTransparentWebBrowserPipeline);
1975+ buildWebShader(simple_vert, simple_transparent_web_browser_frag, BLEND_ENABLE, false, _simpleTransparentWebBrowserShader, _simpleTransparentWebBrowserPipelineNoAA);
19781976 });
19791977
1980− return isAA ? _simpleTransparentWebBrowserPipeline : _simpleTransparentWebBrowserOverlayPipeline;
1978+ return isAA ? _simpleTransparentWebBrowserPipeline : _simpleTransparentWebBrowserPipelineNoAA;
19811979 }
19821980
19831981 void GeometryCache::bindSimpleProgram(gpu::Batch& batch, bool textured, bool transparent, bool culled, bool unlit, bool depthBiased) {

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t