8 #include "materials/MaterialCommon.h"
9 #include "textures/TexArray.h"
11 #include "kernels/CudaPool.hpp"
12 #include "kernels/CudaNoStructKernels.hpp"
13 #include "kernels/CudaBuilderKernels.hpp"
15 #include "../../../Scene.h"
26 S32 m_numShadingNormals;
27 S32 m_numTextureCoords;
29 AxisAlignedBox3 m_bbox;
91 void updateConstants();
92 int warpSubtasks(
int threads);
93 int floatToOrderedInt(
float floatVal);
95 void allocateSnapshots(
Buffer &snapData);
96 void printSnapshots(
Buffer &snapData);
98 void deinitPool(
int numRays = 0);
99 void printPoolHeader(TaskStackBase* tasks,
int* header,
int numWarps,
FW::String state);
100 void printPool(TaskStackBVH& tasks,
int numWarps);
101 void printPool(TaskStack& tasks,
int numWarps);
102 void traceCpuRay(
const Ray& r,
RayResult& result,
bool anyHit);
105 F32 traceOnDemandBVHRayBuffer(
RayBuffer& rb,
bool rebuild);
106 F32 traceOnDemandKdtreeRayBuffer(
RayBuffer& rb,
bool rebuild);
108 F32 buildCudaKdtree();
109 F32 testSort(
S32 arraySize);
111 void saveBufferSizes(
bool ads =
true,
bool aux =
true);
112 void prepareDynamicMemory();
113 int setDynamicMemory();
void traceOnDemandTrace(RayBuffer &rays, F32 &GPUmegakernel, F32 &CPUmegakernel, F32 &GPUtravKernel, F32 &CPUtravKernel, int &buildNodes, RayStats *stats=NULL)
Buffer & getMaterialColorBuffer()
Buffer & getShadingNormalsBuffer()
F32 traceBatchKdtree(RayBuffer &rays, RayStats *stats=NULL)
Structure holding ray statistics. Also provides print to the console. These statistics are used in a ...
F32 traceBatch(RayBuffer &rays)
Declarations for the BVH acceleration structure.
Buffer & getMaterialsBuffer()
Buffer & getShadedColorBuffer()
F32 traceOnDemandBVH(RayBuffer &rays, bool rebuild, int numRays=0)
F32 traceBatchBVH(RayBuffer &rays, RayStats *stats=NULL)
Buffer & getTriangleNormalBuffer()
Ray buffer class. Stores rays.
CudaNoStructTracer(MiniMax::Scene &scene, F32 epsilon)
Buffer & getTriangleBuffer()
void getStats(U32 &nodes, U32 &leaves, U32 &emptyLeaves, U32 &stackTop, U32 &nodeTop, U32 &tris, U32 &sortedTris, bool sub=true)
Buffer & getTriangleOutBuffer()
Buffer & getTriangleIndexOutBuffer()
F32 traceOnDemandKdtree(RayBuffer &rays, bool rebuild, int numRays=0)
void resetBuffers(bool resetADSBuffers)
void getSizes(F32 &task, F32 &split, F32 &ads, F32 &tri, F32 &triIdx, F32 &heap)
Buffer & getTextureCoordsBuffer()
Buffer & getLightBuffer()