MCPcopy Create free account
hub / github.com/Kitware/VTK / Synchronize

Method Synchronize

Rendering/ANARI/vtkAnariLightNode.cxx:178–434  ·  view source on GitHub ↗

----------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

176
177//----------------------------------------------------------------------------
178void vtkAnariLightNode::Synchronize(bool prepass)
179{
180 vtkAnariProfiling startProfiling("vtkAnariLightNode::Synchronize", vtkAnariProfiling::BROWN);
181 if (!prepass || !LightWasModified())
182 {
183 return;
184 }
185
186 vtkLight* light = this->GetVtkLight();
187 this->RenderTime = light->GetMTime();
188
189 auto anariDevice = this->Internals->RendererNode->GetDeviceHandle();
190 auto vtkRenderer = this->Internals->RendererNode->GetRenderer();
191 auto anariExtensions = this->Internals->RendererNode->GetAnariDeviceExtensions();
192
193 this->ClearLight();
194
195 vtkOpenGLRenderer* openGLRenderer =
196 vtkOpenGLRenderer::SafeDownCast(this->Internals->RendererNode->GetRenderable());
197 vtkTransform* userLightTransform = openGLRenderer->GetUserLightTransform();
198
199 vtkNew<vtkMatrix4x4> cameraTransform;
200 vtkNew<vtkMatrix4x4> invCameraTransform;
201
202 if (userLightTransform)
203 {
204 vtkAnariCameraNode* anariCameraNode = static_cast<vtkAnariCameraNode*>(
205 this->Internals->RendererNode->GetFirstChildOfType("vtkAnariCameraNode"));
206 vtkCamera* vtkCamera = vtkCamera::SafeDownCast(anariCameraNode->GetRenderable());
207 vtkCamera->GetModelViewTransformObject()->GetMatrix(cameraTransform);
208 vtkMatrix4x4::Invert(cameraTransform, invCameraTransform);
209 }
210
211 // Light Position
212 double position[3];
213 light->GetPosition(position);
214
215 // Light Direction
216 double focalPoint[3];
217 light->GetFocalPoint(focalPoint);
218
219 if (light->LightTypeIsCameraLight())
220 {
221 light->GetTransformedPosition(position);
222 light->GetTransformedFocalPoint(focalPoint);
223 }
224
225 if (!light->LightTypeIsSceneLight() && userLightTransform)
226 {
227 cameraTransform->MultiplyPoint(position, position);
228 userLightTransform->TransformPoint(position, position);
229 invCameraTransform->MultiplyPoint(position, position);
230
231 cameraTransform->MultiplyPoint(focalPoint, focalPoint);
232 userLightTransform->TransformPoint(focalPoint, focalPoint);
233 invCameraTransform->MultiplyPoint(focalPoint, focalPoint);
234 }
235

Callers

nothing calls this directly

Calls 15

GetVtkLightMethod · 0.95
ClearLightMethod · 0.95
PiFunction · 0.85
GetFirstChildOfTypeMethod · 0.80
LightTypeIsSceneLightMethod · 0.80
WarningMacroOnceMethod · 0.80
InvertFunction · 0.50

Tested by

no test coverage detected