LCOV - code coverage report
Current view: top level - engine/render - renderva.h (source / functions) Coverage Total Hit
Test: Libprimis Test Coverage Lines: 33.3 % 3 1
Test Date: 2025-02-21 06:59:27 Functions: 50.0 % 2 1

            Line data    Source code
       1              : #ifndef RENDERVA_H_
       2              : #define RENDERVA_H_
       3              : 
       4              : struct vtxarray;
       5              : 
       6              : struct occludequery
       7              : {
       8              :     const void *owner;
       9              :     GLuint id;
      10              :     int fragments;
      11              : 
      12              :     void startquery() const;
      13              : };
      14              : 
      15              : class vfc
      16              : {
      17              :     public:
      18              :         int isfoggedcube(const ivec &o, int size) const;
      19              :         int isvisiblecube(const ivec &o, int size) const;
      20              :         void visiblecubes(bool cull = true);
      21              :         bool isfoggedsphere(float rad, const vec &cv) const;
      22              :         int isvisiblesphere(float rad, const vec &cv) const;
      23              :         int isvisiblebb(const ivec &bo, const ivec &br) const;
      24              :         int cullfrustumsides(const vec &lightpos, float lightradius, float size, float border);
      25              :     private:
      26              :         static constexpr uint numvfc = 5;
      27              :         void calcvfcD();
      28              :         void setvfcP(const vec &bbmin = vec(-1, -1, -1), const vec &bbmax = vec(1, 1, 1));
      29              : 
      30              :         std::array<plane, numvfc> vfcP;  // perpindictular vectors to view frustrum bounding planes
      31              :         float vfcDfog;  // far plane culling distance (fog limit).
      32              :         std::array<float, numvfc> vfcDnear,
      33              :                              vfcDfar;
      34              : };
      35              : 
      36              : class Occluder
      37              : {
      38              :     public:
      39              :         void setupmodelquery(occludequery *q);
      40              :         void clearqueries();
      41              :         void flipqueries();
      42              :         void endquery();
      43              :         void endmodelquery(); // starts the model query (!)
      44              :         bool checkquery(occludequery *query, bool nowait = false);
      45              :         void resetqueries();
      46              :         int getnumqueries() const;
      47            0 :         occludequery *newquery(const void *owner)
      48              :         {
      49            0 :             return queryframes[flipquery].newquery(owner);
      50              :         }
      51              :     private:
      52              :         class queryframe
      53              :         {
      54              :             public:
      55              :                 int cur;
      56              : 
      57            2 :                 queryframe() : cur(0), max(0), defer(0) {}
      58              : 
      59              :                 void flip();
      60              :                 occludequery *newquery(const void *owner);
      61              :                 void reset();
      62              :                 void cleanup();
      63              :             private:
      64              :                 static constexpr int maxquery = 2048;
      65              : 
      66              :                 int max, defer;
      67              :                 occludequery queries[maxquery];
      68              :         };
      69              :         static constexpr int maxqueryframes = 2;
      70              :         std::array<queryframe, maxqueryframes> queryframes;
      71              :         uint flipquery = 0;
      72              : 
      73              :         occludequery *modelquery = nullptr;
      74              :         int modelquerybatches = -1,
      75              :            modelquerymodels = -1,
      76              :            modelqueryattached = -1;
      77              : 
      78              : };
      79              : 
      80              : extern Occluder occlusionengine;
      81              : 
      82              : extern vfc view;
      83              : 
      84              : extern int oqfrags;
      85              : 
      86              : extern vec shadoworigin, shadowdir;
      87              : extern float shadowradius, shadowbias;
      88              : extern size_t shadowside;
      89              : extern int shadowspot;
      90              : 
      91              : extern vtxarray *visibleva;
      92              : 
      93              : extern void renderrefractmask();
      94              : extern void renderalphageom(int side);
      95              : extern void rendermapmodels();
      96              : extern void renderoutline();
      97              : extern bool renderexplicitsky(bool outline = false);
      98              : extern bvec outlinecolor;
      99              : 
     100              : extern int deferquery;
     101              : extern void startbb(bool mask = true);
     102              : extern void endbb(bool mask = true);
     103              : extern void drawbb(const ivec &bo, const ivec &br);
     104              : 
     105              : extern void renderdecals();
     106              : 
     107              : struct shadowmesh;
     108              : extern void clearshadowmeshes();
     109              : extern void genshadowmeshes();
     110              : extern shadowmesh *findshadowmesh(int idx, const extentity &e);
     111              : extern void rendershadowmesh(const shadowmesh *m);
     112              : extern void dynamicshadowvabounds(int mask, vec &bbmin, vec &bbmax);
     113              : 
     114              : #endif
        

Generated by: LCOV version 2.0-1