mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-09 23:16:00 -06:00
Use polygon offsett to avoid flickering with mesh lines
This commit is contained in:
parent
02c4f8cff7
commit
b158c0da9d
@ -43,6 +43,8 @@
|
||||
#include "RivSourceInfo.h"
|
||||
#include "cvfRenderState_FF.h"
|
||||
#include "cafProgressInfo.h"
|
||||
#include "cvfRenderStatePolygonOffset.h"
|
||||
#include "cvfRenderStateBlending.h"
|
||||
|
||||
|
||||
|
||||
@ -329,6 +331,7 @@ void RivGridPartMgr::updateCellResultColor(size_t timeStepIndex, RimResultSlot*
|
||||
cvf::ref<cvf::Effect> colorArrayEffect = new cvf::Effect;
|
||||
|
||||
cvf::ref<cvf::RenderStateMaterial_FF> mat = new cvf::RenderStateMaterial_FF(cvf::Color3::BLUE);
|
||||
mat->setAlpha(m_opacityLevel);
|
||||
mat->enableColorMaterial(true);
|
||||
colorArrayEffect->setRenderState(mat.p());
|
||||
|
||||
@ -336,6 +339,20 @@ void RivGridPartMgr::updateCellResultColor(size_t timeStepIndex, RimResultSlot*
|
||||
lighting->enableTwoSided(true);
|
||||
colorArrayEffect->setRenderState(lighting.p());
|
||||
|
||||
// Simple transparency
|
||||
if (m_opacityLevel < 1.0f)
|
||||
{
|
||||
cvf::ref<cvf::RenderStateBlending> blender = new cvf::RenderStateBlending;
|
||||
blender->configureTransparencyBlending();
|
||||
colorArrayEffect->setRenderState(blender.p());
|
||||
}
|
||||
|
||||
caf::PolygonOffset polygonOffset = caf::PO_1;
|
||||
cvf::ref<cvf::RenderStatePolygonOffset> polyOffset = caf::EffectGenerator::createAndConfigurePolygonOffsetRenderState(polygonOffset);
|
||||
colorArrayEffect->setRenderState(polyOffset.p());
|
||||
|
||||
m_surfaceFaces->setPriority(100);
|
||||
|
||||
m_surfaceFaces->setEffect(colorArrayEffect.p());
|
||||
}
|
||||
else
|
||||
|
@ -107,7 +107,7 @@ cvf::String CommonShaderSources::light_AmbientDiffuse()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
/// Static helper to configure polygon offset render state from enum
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
static cvf::ref<cvf::RenderStatePolygonOffset> CreateAngConfigurePolygonOffsetRenderState(PolygonOffset polygonOffset)
|
||||
cvf::ref<cvf::RenderStatePolygonOffset> EffectGenerator::createAndConfigurePolygonOffsetRenderState(PolygonOffset polygonOffset)
|
||||
{
|
||||
cvf::ref<cvf::RenderStatePolygonOffset> rs = new cvf::RenderStatePolygonOffset;
|
||||
if (polygonOffset == PO_NONE)
|
||||
@ -301,7 +301,7 @@ void SurfaceEffectGenerator::updateCommonEffect(cvf::Effect* effect) const
|
||||
{
|
||||
if (m_polygonOffset != PO_NONE)
|
||||
{
|
||||
cvf::ref<cvf::RenderStatePolygonOffset> polyOffset = CreateAngConfigurePolygonOffsetRenderState(m_polygonOffset);
|
||||
cvf::ref<cvf::RenderStatePolygonOffset> polyOffset = EffectGenerator::createAndConfigurePolygonOffsetRenderState(m_polygonOffset);
|
||||
effect->setRenderState(polyOffset.p());
|
||||
}
|
||||
|
||||
@ -479,7 +479,7 @@ void ScalarMapperEffectGenerator::updateCommonEffect(cvf::Effect* effect) const
|
||||
|
||||
if (m_polygonOffset != PO_NONE)
|
||||
{
|
||||
cvf::ref<cvf::RenderStatePolygonOffset> polyOffset = CreateAngConfigurePolygonOffsetRenderState(m_polygonOffset);
|
||||
cvf::ref<cvf::RenderStatePolygonOffset> polyOffset = EffectGenerator::createAndConfigurePolygonOffsetRenderState(m_polygonOffset);
|
||||
effect->setRenderState(polyOffset.p());
|
||||
}
|
||||
|
||||
|
@ -44,6 +44,7 @@
|
||||
#include "cvfTextureImage.h"
|
||||
#include "cvfCollection.h"
|
||||
#include "cvfString.h"
|
||||
#include "cvfRenderStatePolygonOffset.h"
|
||||
|
||||
namespace caf {
|
||||
|
||||
@ -96,6 +97,8 @@ public:
|
||||
static void clearEffectCache();
|
||||
static void releaseUnreferencedEffects();
|
||||
|
||||
static cvf::ref<cvf::RenderStatePolygonOffset> createAndConfigurePolygonOffsetRenderState(caf::PolygonOffset polygonOffset);
|
||||
|
||||
protected:
|
||||
|
||||
// Interface that must be implemented in base classes
|
||||
|
Loading…
Reference in New Issue
Block a user