95 lines
3.7 KiB
C++
95 lines
3.7 KiB
C++
/*
|
|
* DoRayMe - a quick and dirty Raytracer
|
|
* Render statistics header
|
|
*
|
|
* Created by Manoël Trapier
|
|
* Copyright (c) 2020 986-Studio.
|
|
*
|
|
*/
|
|
#ifndef DORAYME_RENDERSTAT_H
|
|
#define DORAYME_RENDERSTAT_H
|
|
|
|
#include <stdint.h>
|
|
|
|
class RenderStats
|
|
{
|
|
private:
|
|
uint64_t coneCount; /* Total number of cones */
|
|
uint64_t cylinderCount; /* Total number of cylinder */
|
|
uint64_t cubeCount; /* Total number of cubes */
|
|
uint64_t groupCount; /* Total number of groups */
|
|
uint64_t lightCount; /* Total number of light */
|
|
uint64_t planeCount; /* Total number of plane */
|
|
uint64_t sphereCount; /* Total number of sphere */
|
|
uint64_t triangleCount; /* Total number of triangle */
|
|
|
|
uint64_t pixelCount; /* Total number of rendered pixels */
|
|
uint64_t rayCount; /* Total number of rays */
|
|
uint64_t lightRayEmitedCount; /* Total number of ray launched for light tests */
|
|
uint64_t reflectionRayCount; /* Total number of reflection ray launched */
|
|
uint64_t refractedRayCount; /* Total number of refracted ray launched */
|
|
uint64_t intersectCount; /* Total number of intersect object created */
|
|
uint64_t intersectionCount; /* Total number of intersection for all casted rays, including light and reflections */
|
|
uint64_t reallocCallCount; /* Total number of time realloc being called */
|
|
uint64_t mallocCallCount; /* Total number of time malloc/calloc being called */
|
|
uint64_t discardedIntersectCount; /* Number of time a bounding box check said "no need to test me" */
|
|
uint64_t maxDepthAttained; /* Report the lowest depth attained during ray recursion */
|
|
uint64_t maxIntersectOnARay; /* Biggest intersect done */
|
|
|
|
public:
|
|
RenderStats() : coneCount(0), cylinderCount(0), cubeCount(0), groupCount(0), lightCount(0), planeCount(0), sphereCount(0), triangleCount(0),
|
|
pixelCount(0), rayCount(0), lightRayEmitedCount(0), reflectionRayCount(0), refractedRayCount(0),
|
|
intersectCount(0), intersectionCount(0), reallocCallCount(0), mallocCallCount(0),
|
|
discardedIntersectCount(0), maxDepthAttained(UINT64_MAX), maxIntersectOnARay(0) {};
|
|
#ifdef RENDER_STATS
|
|
void addCone();
|
|
void addCylinder();
|
|
void addCube();
|
|
void addGroup();
|
|
void addLight();
|
|
void addPlane();
|
|
void addSphere();
|
|
void addTriangle();
|
|
void printStats();
|
|
void addPixel();
|
|
void addRay();
|
|
void addLightRay();
|
|
void addReflectRay();
|
|
void addRefractRay();
|
|
void addIntersection();
|
|
void addDiscardedIntersect();
|
|
void setMaxDepth(uint32_t depth);
|
|
void addIntersect();
|
|
void addMalloc();
|
|
void addRealloc();
|
|
void setMaxIntersect(uint32_t count);
|
|
#else
|
|
static void addCone() {};
|
|
static void addCylinder() {};
|
|
static void addCube() {};
|
|
static void addGroup() {};
|
|
static void addLight() {};
|
|
static void addPlane() {};
|
|
static void addSphere() {};
|
|
static void addTriangle() {};
|
|
static void printStats() {};
|
|
static void addPixel() {};
|
|
static void addRay() {};
|
|
static void addLightRay() {};
|
|
static void addReflectRay() {};
|
|
static void addRefractRay() {};
|
|
static void addIntersection() {};
|
|
static void addDiscardedIntersect() {};
|
|
static void setMaxDepth(uint32_t depth) {};
|
|
static void addIntersect() {};
|
|
static void addMalloc() {};
|
|
static void addRealloc() {};
|
|
static void setMaxIntersect(uint32_t count) {};
|
|
#endif
|
|
};
|
|
|
|
|
|
extern RenderStats stats;
|
|
|
|
#endif /* DORAYME_RENDERSTAT_H */
|