105 const std::vector<double> &values,
107 auto it = this->Replacements.find(name);
108 if(it == this->Replacements.end()) {
109 this->Replacements.emplace(std::piecewise_construct,
110 std::forward_as_tuple(name),
111 std::forward_as_tuple(values, isInt));
113 it->second.values = values;
140 this->Renderer->AddActor(this->FullScreenQuadActor);
141 this->Renderer->SetBackground(0, 0, 0);
145 camera->SetParallelProjection(
true);
146 camera->SetClippingRange(0, 2);
147 camera->SetPosition(0, 0, 1);
148 camera->SetFocalPoint(0, 0, 0);
149 camera->SetParallelScale(
151 this->Renderer->SetActiveCamera(camera);
160 outputImage->GetDimensions(dim);
162 this->
AddReplacement(
"cResolution", {(double)dim[0], (
double)dim[1]});
165 int *size = this->RenderWindow->GetSize();
166 if(size[0] != dim[0] || size[1] != dim[1]) {
168 this->
printMsg(
"Initializing Renderer (" + std::to_string(dim[0]) +
"x"
169 + std::to_string(dim[1]) +
")",
173 this->RenderWindow->AddRenderer(this->Renderer);
174 this->RenderWindow->SetMultiSamples(0);
175 this->RenderWindow->OffScreenRenderingOn();
177 auto windowAsOGL = vtkOpenGLRenderWindow::SafeDownCast(this->RenderWindow);
178 if(windowAsOGL ==
nullptr) {
181 windowAsOGL->SetSize(dim[0], dim[1]);
182 windowAsOGL->Initialize();
184 this->
printMsg(
"Initializing Renderer (" + std::to_string(dim[0]) +
"x"
185 + std::to_string(dim[1]) +
")",
196 image->GetDimensions(dim);
198 auto inputArray = this->GetInputArrayToProcess(arrayIdx, image);
199 if(!inputArray || this->GetInputArrayAssociation(arrayIdx, image) != 0) {
200 this->
printErr(
"Unable to retrieve input point data array "
201 + std::to_string(arrayIdx) +
".");
205 std::string
const textureName =
"tex" + std::to_string(textureIdx);
207 auto properties = this->FullScreenQuadActor->GetProperty();
209 if(properties->GetTexture(textureName.data()))
210 properties->RemoveTexture(textureName.data());
216 textureObj->SetContext(
217 vtkOpenGLRenderWindow::SafeDownCast(this->RenderWindow));
218 textureObj->SetWrapT(vtkTextureObject::ClampToEdge);
219 textureObj->SetWrapS(vtkTextureObject::ClampToEdge);
220 textureObj->Create2DFromRaw(
221 dim[0], dim[1], inputArray->GetNumberOfComponents(),
223 texture->SetTextureObject(textureObj);
224 texture->InterpolateOn();
227 properties->SetTexture(textureName.data(), texture);
233 const std::string &name) {
236 image->GetDimensions(dim);
238 "Rendering (" + std::to_string(dim[0]) +
"x" + std::to_string(dim[1]) +
")",
241 this->FullScreenQuadActor->GetShaderProperty()->SetVertexShaderCode(
243 this->FullScreenQuadActor->GetShaderProperty()->SetFragmentShaderCode(
247 buffer->SetName(name.data());
248 buffer->SetNumberOfComponents(4);
249 buffer->SetNumberOfTuples(dim[0] * dim[1]);
251 this->RenderWindow->Render();
252 this->RenderWindow->GetRGBACharPixelData(
253 0, 0, dim[0] - 1, dim[1] - 1, 1, buffer);
255 image->GetPointData()->AddArray(buffer);
256 image->GetPointData()->SetActiveScalars(buffer->GetName());
259 "Rendering (" + std::to_string(dim[0]) +
"x" + std::to_string(dim[1]) +
")",
printMsg(debug::output::BOLD+" | | | | | . \\ | | (__| | / __/| |_| / __/|__ _|"+debug::output::ENDCOLOR, debug::Priority::PERFORMANCE, debug::LineMode::NEW, stream)