mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -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 "RivSourceInfo.h"
|
||||||
#include "cvfRenderState_FF.h"
|
#include "cvfRenderState_FF.h"
|
||||||
#include "cafProgressInfo.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::Effect> colorArrayEffect = new cvf::Effect;
|
||||||
|
|
||||||
cvf::ref<cvf::RenderStateMaterial_FF> mat = new cvf::RenderStateMaterial_FF(cvf::Color3::BLUE);
|
cvf::ref<cvf::RenderStateMaterial_FF> mat = new cvf::RenderStateMaterial_FF(cvf::Color3::BLUE);
|
||||||
|
mat->setAlpha(m_opacityLevel);
|
||||||
mat->enableColorMaterial(true);
|
mat->enableColorMaterial(true);
|
||||||
colorArrayEffect->setRenderState(mat.p());
|
colorArrayEffect->setRenderState(mat.p());
|
||||||
|
|
||||||
@ -336,6 +339,20 @@ void RivGridPartMgr::updateCellResultColor(size_t timeStepIndex, RimResultSlot*
|
|||||||
lighting->enableTwoSided(true);
|
lighting->enableTwoSided(true);
|
||||||
colorArrayEffect->setRenderState(lighting.p());
|
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());
|
m_surfaceFaces->setEffect(colorArrayEffect.p());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -107,7 +107,7 @@ cvf::String CommonShaderSources::light_AmbientDiffuse()
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
/// Static helper to configure polygon offset render state from enum
|
/// 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;
|
cvf::ref<cvf::RenderStatePolygonOffset> rs = new cvf::RenderStatePolygonOffset;
|
||||||
if (polygonOffset == PO_NONE)
|
if (polygonOffset == PO_NONE)
|
||||||
@ -301,7 +301,7 @@ void SurfaceEffectGenerator::updateCommonEffect(cvf::Effect* effect) const
|
|||||||
{
|
{
|
||||||
if (m_polygonOffset != PO_NONE)
|
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());
|
effect->setRenderState(polyOffset.p());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -479,7 +479,7 @@ void ScalarMapperEffectGenerator::updateCommonEffect(cvf::Effect* effect) const
|
|||||||
|
|
||||||
if (m_polygonOffset != PO_NONE)
|
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());
|
effect->setRenderState(polyOffset.p());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,6 +44,7 @@
|
|||||||
#include "cvfTextureImage.h"
|
#include "cvfTextureImage.h"
|
||||||
#include "cvfCollection.h"
|
#include "cvfCollection.h"
|
||||||
#include "cvfString.h"
|
#include "cvfString.h"
|
||||||
|
#include "cvfRenderStatePolygonOffset.h"
|
||||||
|
|
||||||
namespace caf {
|
namespace caf {
|
||||||
|
|
||||||
@ -96,6 +97,8 @@ public:
|
|||||||
static void clearEffectCache();
|
static void clearEffectCache();
|
||||||
static void releaseUnreferencedEffects();
|
static void releaseUnreferencedEffects();
|
||||||
|
|
||||||
|
static cvf::ref<cvf::RenderStatePolygonOffset> createAndConfigurePolygonOffsetRenderState(caf::PolygonOffset polygonOffset);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
// Interface that must be implemented in base classes
|
// Interface that must be implemented in base classes
|
||||||
|
Loading…
Reference in New Issue
Block a user