Description | When using multiple servers, with CAM data, ordered compositing toggle isn't working. It should be fixed for 4.2, since this significantly impacts visualizing CAM data.
1) On master, this state setting is missing. Please add it back. On 4.1.0, it was found under Edit/ Settings/ Render View/ Server/ Remote Rendering Parameters/ Suppress Ordered Compositing.
2) On 4.1.0, clicking on this button does nothing. The way to show this is as follows:
4.1.0, remote server (I had 8 of them), Linux.
Settings/ RenderView/ Server. Select Suppress Ordered Compositing. I even exited ParaView and logged back on, but I don't believe this is necessary.
Open the CAM data from bug 14866. Single Level on, Cell Layer Right off. Fill in the Connectivity File Name as done in 14866. Apply.
Change variable to TMQ. Color Editor - Enable opacity mapping for surfaces.
Go forward one time step.
Tools, Timer log. Notice that Redistributing Data for Ordered Compromising is in the log. This means (as per Utkarsh) that the turning off ordered compositing above didn't work. Please fix this.
Note - I corrected this bug, including title, since it was wrong. Alan.
|
Attached Files | WIP.patch [^] (7,292 bytes) 2014-07-18 11:59 [Show Content] [Hide Content]diff --git a/ParaViewCore/ClientServerCore/Rendering/vtkPVDataDeliveryManager.cxx b/ParaViewCore/ClientServerCore/Rendering/vtkPVDataDeliveryManager.cxx
index 1a0b47a..be91ad9 100644
--- a/ParaViewCore/ClientServerCore/Rendering/vtkPVDataDeliveryManager.cxx
+++ b/ParaViewCore/ClientServerCore/Rendering/vtkPVDataDeliveryManager.cxx
@@ -635,7 +635,7 @@ void vtkPVDataDeliveryManager::RedistributeDataForOrderedCompositing(
redistributor->SetController(vtkMultiProcessController::GetGlobalController());
redistributor->SetInputData(item.GetDeliveredDataObject());
redistributor->SetPKdTree(this->KdTree);
- redistributor->SetPassThrough(0);
+ redistributor->SetPassThrough(1);
redistributor->Update();
item.SetRedistributedDataObject(redistributor->GetOutputDataObject(0));
}
diff --git a/ParaViewCore/ClientServerCore/Rendering/vtkPVRenderView.cxx b/ParaViewCore/ClientServerCore/Rendering/vtkPVRenderView.cxx
index acadb35..f493691 100644
--- a/ParaViewCore/ClientServerCore/Rendering/vtkPVRenderView.cxx
+++ b/ParaViewCore/ClientServerCore/Rendering/vtkPVRenderView.cxx
@@ -53,6 +53,7 @@
#include "vtkPVHardwareSelector.h"
#include "vtkPVInteractorStyle.h"
#include "vtkPVOptions.h"
+#include "vtkPVRenderViewSettings.h"
#include "vtkPVSession.h"
#include "vtkPVStreamingMacros.h"
#include "vtkPVSynchronizedRenderer.h"
@@ -197,6 +198,12 @@ vtkPVRenderView::vtkPVRenderView()
this->NeedsOrderedCompositing = false;
this->RenderEmptyImages = false;
+ // We get this value here since changing this after the view has been setup
+ // would need more work to ensure data is available at right locations.
+ // Instead, we just make this a "restart required" setting.
+ this->UseOrderedCompositingIfNeeded =
+ (vtkPVRenderViewSettings::GetInstance()->GetUseOrderedCompositingIfNeeded());
+
this->SynchronizedRenderers = vtkPVSynchronizedRenderer::New();
if (this->SynchronizedWindows->GetLocalProcessIsDriver())
@@ -1142,13 +1149,21 @@ void vtkPVRenderView::Render(bool interactive, bool skip_rendering)
this->GetUseDistributedRenderingForStillRender();
bool use_ordered_compositing = this->GetUseOrderedCompositing();
- if (use_ordered_compositing)
+ if (use_ordered_compositing /*&& this->UseOrderedCompositingIfNeeded*/)
{
this->Internals->DeliveryManager->RedistributeDataForOrderedCompositing(
use_lod_rendering);
this->SynchronizedRenderers->SetKdTree(
this->Internals->DeliveryManager->GetKdTree());
}
+ else if (use_ordered_compositing)
+ {
+ //assert(this->UseOrderedCompositingIfNeeded == false);
+ // it implies that we have a need for ordered compositing, but we don't want
+ // to use is since user disabled it. If there's a need for ordered
+ // compositing, it implies translucent geometry or volumes and we still want
+ // IceT to not use depth buffers when compositing.
+ }
else
{
this->SynchronizedRenderers->SetKdTree(NULL);
@@ -1194,7 +1209,9 @@ void vtkPVRenderView::Render(bool interactive, bool skip_rendering)
stream
<< "Mode: " << (interactive? "interactive" : "still") << "\n"
<< "Level-of-detail: " << (use_lod_rendering? "yes" : "no") << "\n"
- << "Remote/parallel rendering (if applicable): " << (use_distributed_rendering? "yes" : "no") << "\n";
+ << "Remote/parallel rendering (if applicable): " << (use_distributed_rendering? "yes" : "no") << "\n"
+ << "Using ordered compositing (if applicable): " << (use_ordered_compositing? "yes" : "no") << "\n";
+ ;
this->Annotation->SetText(stream.str().c_str());
}
@@ -2043,5 +2060,5 @@ void vtkPVRenderView::UpdateAnnotationText()
void vtkPVRenderView::BuildAnnotationText(ostream& str)
{
double time = this->RenderView->GetRenderer()->GetLastRenderTimeInSeconds();
- str << "Frame rate: " << (time > 0.0? 1.0/time : 100000.0) << " fps\n";
+ str << "Frame rate (approx): " << (time > 0.0? 1.0/time : 100000.0) << " fps\n";
}
diff --git a/ParaViewCore/ClientServerCore/Rendering/vtkPVRenderView.h b/ParaViewCore/ClientServerCore/Rendering/vtkPVRenderView.h
index 90b714a..933c2c4 100644
--- a/ParaViewCore/ClientServerCore/Rendering/vtkPVRenderView.h
+++ b/ParaViewCore/ClientServerCore/Rendering/vtkPVRenderView.h
@@ -708,6 +708,10 @@ private:
// open the DISPLAY etc.
bool RemoteRenderingAvailable;
+ // This flag is set up using settings during constructor since changing this
+ // afterwords has illeffects on active visualization.
+ bool UseOrderedCompositingIfNeeded;
+
int PreviousParallelProjectionStatus;
class vtkInternals;
diff --git a/ParaViewCore/ClientServerCore/Rendering/vtkPVRenderViewSettings.cxx b/ParaViewCore/ClientServerCore/Rendering/vtkPVRenderViewSettings.cxx
index 2a3321a..f367ff0 100644
--- a/ParaViewCore/ClientServerCore/Rendering/vtkPVRenderViewSettings.cxx
+++ b/ParaViewCore/ClientServerCore/Rendering/vtkPVRenderViewSettings.cxx
@@ -45,7 +45,8 @@ vtkPVRenderViewSettings* vtkPVRenderViewSettings::GetInstance()
//----------------------------------------------------------------------------
vtkPVRenderViewSettings::vtkPVRenderViewSettings()
- : OutlineThreshold(250)
+ : OutlineThreshold(250),
+ UseOrderedCompositingIfNeeded(true)
{
}
diff --git a/ParaViewCore/ClientServerCore/Rendering/vtkPVRenderViewSettings.h b/ParaViewCore/ClientServerCore/Rendering/vtkPVRenderViewSettings.h
index ea425a0..f842e56 100644
--- a/ParaViewCore/ClientServerCore/Rendering/vtkPVRenderViewSettings.h
+++ b/ParaViewCore/ClientServerCore/Rendering/vtkPVRenderViewSettings.h
@@ -62,12 +62,16 @@ public:
vtkSetMacro(OutlineThreshold, vtkIdType);
vtkGetMacro(OutlineThreshold, vtkIdType);
+ vtkSetMacro(UseOrderedCompositingIfNeeded, bool);
+ vtkGetMacro(UseOrderedCompositingIfNeeded, bool);
+
//BTX
protected:
vtkPVRenderViewSettings();
~vtkPVRenderViewSettings();
vtkIdType OutlineThreshold;
+ bool UseOrderedCompositingIfNeeded;
private:
vtkPVRenderViewSettings(const vtkPVRenderViewSettings&); // Not implemented
void operator=(const vtkPVRenderViewSettings&); // Not implemented
diff --git a/ParaViewCore/ServerManager/Default/settings.xml b/ParaViewCore/ServerManager/Default/settings.xml
index 066abe3..acda033 100644
--- a/ParaViewCore/ServerManager/Default/settings.xml
+++ b/ParaViewCore/ServerManager/Default/settings.xml
@@ -372,6 +372,24 @@
</Hints>
</IntVectorProperty>
+ <IntVectorProperty command="SetUseOrderedCompositingIfNeeded"
+ default_values="1"
+ name="UseOrderedCompositingIfNeeded"
+ panel_visibility="advanced"
+ number_of_elements="1">
+ <BooleanDomain name="bool" />
+ <Documentation>
+ Set whether *ordered compositing* can be employed
+ when rendering volumes or translucent surfaces in parallel.
+ Turn this off to disable ordered compositing overheads in parallel,
+ which may cause artifacts depending on the nature of your
+ data distribution and viewing angles.
+ </Documentation>
+ <Hints>
+ <RestartRequired />
+ </Hints>
+ </IntVectorProperty>
+
<DoubleVectorProperty name="LODThreshold"
default_values="5.0"
number_of_elements="1">
|