1 // Copyright 2009-2021 Intel Corporation 2 // SPDX-License-Identifier: Apache-2.0 3 4 #pragma once 5 6 #include "../../common/DistributedWorld.h" 7 #include "../../fb/DistributedFrameBuffer.h" 8 #include "../../fb/TileOperation.h" 9 #include "camera/Camera.h" 10 #include "render/Renderer.h" DistributedRenderer()11 12 namespace ospray { 13 namespace mpi { 14 15 struct RegionInfo 16 { 17 int numRegions = 0; 18 box3f *regions = nullptr; 19 bool *regionVisible = nullptr; 20 }; 21 22 struct DistributedRenderer : public Renderer 23 { 24 DistributedRenderer(); 25 ~DistributedRenderer() override; 26 27 void computeRegionVisibility(DistributedFrameBuffer *fb, 28 Camera *camera, 29 DistributedWorld *world, 30 bool *regionVisible, 31 void *perFrameData, 32 Tile &tile, 33 size_t jobID) const; 34 35 void renderRegionToTile(DistributedFrameBuffer *fb, 36 Camera *camera, 37 DistributedWorld *world, 38 const box3f ®ion, 39 void *perFrameData, 40 Tile &tile, 41 size_t jobID) const; 42 43 virtual std::shared_ptr<TileOperation> tileOperation() = 0; 44 45 // Picking in the distributed renderer needs to be clipped to the regions 46 // specified to bound the local data 47 OSPPickResult pick(FrameBuffer *fb, 48 Camera *camera, 49 World *world, 50 const vec2f &screenPos) override; 51 52 private: 53 mpicommon::Group mpiGroup; 54 }; 55 } // namespace mpi 56 } // namespace ospray pick(FrameBuffer * fb,Camera * camera,World * world,const vec2f & screenPos)57