ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/rt/RcontribSimulManager.h
(Generate patch)

Comparing ray/src/rt/RcontribSimulManager.h (file contents):
Revision 2.1 by greg, Tue Oct 29 00:36:54 2024 UTC vs.
Revision 2.5 by greg, Wed Nov 6 18:28:52 2024 UTC

# Line 25 | Line 25
25  
26   extern char             RCCONTEXT[];            // global rcontrib context
27  
28 + extern int              contrib;                // computing contributions?
29 +
30   extern int              xres, yres;             // global resolution settings
31  
32 < class RcontribSimulManager;             // need forward decl
32 > class RcontribSimulManager;                     // need forward decl
33  
34   /// Shared data object for record output (includes header; may be write-only)
35   class RcontribOutput {
34 protected:
36          RcontribOutput *        next;           // next in sorted list
37          char *                  ofname;         // output file name
38          uint32                  rowCountPos;    // row count position in header
# Line 153 | Line 154 | extern lut_free_t      FreeRcMod;
154   */
155  
156   /// Output channel opening options: new/exclusive, overwrite if exists, or recover data
157 < enum RCOutputOp {RCOnew, RCOforce, RCOrecover};
157 > enum RCOutputOp {RCOnew=0, RCOforce, RCOrecover};
158  
159   /// Converts above to RdataShare open flags (may be adjusted by calling program)
160   extern int      RSDOflags[];
# Line 164 | Line 165 | typedef RdataShare *   RcreateDataShareF(const char *nam
165   /// Our default data share function
166   extern RcreateDataShareF        defDataShare;
167  
168 < /// Call-back used by GetOutputs() method (cd is client data)
169 < typedef int             RoutputShareF(const RcontribOutput *op, void *cd);
168 > /// Modifiable ray-tracing flags for rcontrib
169 > #define RCmask                  (RTlimDist|RTimmIrrad)
170  
171   /// rcontrib-like simulation manager (at most one such object)
172   class RcontribSimulManager : protected RtraceSimulManager {
# Line 212 | Line 213 | class RcontribSimulManager : protected RtraceSimulMana
213                                  ~RcontribSimulManager() {
214                                          Cleanup();
215                                  }
216 +                                /// Check modifiable ray-tracing computation flag(s)
217 +        bool                    HasFlag(int fl) const {
218 +                                        return ((rtFlags & RCmask & fl) != 0);
219 +                                }
220 +                                /// Set/reset modifiable ray-tracing computation flag(s)
221 +        bool                    SetFlag(int fl, bool val = true) {
222 +                                        if (!(fl &= RCmask)) return false;
223 +                                        if (val) rtFlags |= fl;
224 +                                        else rtFlags &= ~fl;
225 +                                        return true;
226 +                                }
227                                  /// Load octree and prepare renderer
228          bool                    LoadOctree(const char *octn) {
229                                          return RtraceSimulManager::LoadOctree(octn);
# Line 255 | Line 267 | class RcontribSimulManager : protected RtraceSimulMana
267          bool                    AddModFile(const char *modfn, const char *outspec,
268                                                  const char *prms = NULL,
269                                                  const char *binval = NULL, int bincnt = 1);
270 <                                /// Run through current list of output struct's
271 <        int                     GetOutputs(RoutputShareF *osF, void *cd = NULL) const;
270 >                                /// Get named rcontrib output (or list)
271 >        const RcontribOutput *  GetOutput(const char *nm = NULL) const {
272 >                                        if (!nm) return outList;
273 >                                        const RcontribOutput *  op = outList;
274 >                                        while (op && strcmp(op->GetName(), nm))
275 >                                                op = op->next;
276 >                                        return op;
277 >                                }
278                                  /// Open output channels and return # completed rows
279          int                     PrepOutput();
280                                  /// Are we ready to compute some records?
281          bool                    Ready() const {
282 <                                        return rowsDone.Length();
282 >                                        return (rowsDone.Length() > 0) & (accum > 0);
283                                  }
284                                  /// Set number of computation threads (0 => #cores)
285          int                     SetThreadCount(int nt = 0);
# Line 299 | Line 317 | class RcontribSimulManager : protected RtraceSimulMana
317                                  }
318                                  /// Close octree, free data, return status
319          int                     Cleanup(bool everything = false) {
320 +                                        if (nkids < 0) return 0;        // skip 4 child
321                                          if (rowsDone.Length()) {
322                                                  SetThreadCount(1);
323                                                  cow_doneshare();

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines