@@ -56,7 +56,7 @@ Rays VulkanTracer::traceRaw(const TraceRawConfig& cfg) {
5656 uint64_t workerCounterNum = MAX_UINT64 / uint64_t (cfg.m_numRays );
5757 for (auto i = 0 ; i < cfg.m_numRays ; i++) {
5858 rayMeta.push_back ({.ctr = ((uint64_t )cfg.m_rayIdStart + (uint64_t )i) * workerCounterNum + uint64_t (cfg.m_randomSeed * MAX_UINT64),
59- .nextElementId = -1 , // Intersection element unknown / does not exist
59+ .nextElementId = -1 , // Intersection element unknown / does not exist
6060 .finalized = false }); // Not started
6161 }
6262
@@ -95,8 +95,8 @@ Rays VulkanTracer::traceRaw(const TraceRawConfig& cfg) {
9595 std::string passName2 = " OldFullTracingPass" ;
9696
9797 // Should return only compute now. Important when mixing different shader types to chose right stage flag!
98- auto shaderFlag = m_engine.getComputePass (passName2 )->getShaderStage (0 ).getShaderStageFlagBits ();
99- RAYX_D_LOG << " Allocating buffers... " ;
98+ auto shaderFlag = m_engine.getComputePass (passName0 )->getShaderStage (0 ).getShaderStageFlagBits ();
99+
100100 // Bindings (Vulkan Buffer <- Descriptors (sets))
101101 // PS: You can also call addDescriptorSetPerPassBindings once!
102102 bufferHandler
@@ -106,7 +106,8 @@ Rays VulkanTracer::traceRaw(const TraceRawConfig& cfg) {
106106 .addDescriptorSetPerPassBinding (passName2, 0 , shaderFlag);
107107
108108 bufferHandler
109- ->createBuffer ({" output-buffer" , VKBUFFER_OUT, numberOfRays * sizeof (Ray) * (size_t )cfg.m_maxSnapshots }) // Beamline quadric info
109+ ->createBuffer (
110+ {" output-buffer" , VKBUFFER_OUT, numberOfRays * sizeof (Ray) * (size_t )cfg.m_maxSnapshots }) // OUTOUT DATA only for main.comp
110111 .addDescriptorSetPerPassBinding (passName2, 1 , shaderFlag);
111112
112113 bufferHandler
@@ -117,7 +118,7 @@ Rays VulkanTracer::traceRaw(const TraceRawConfig& cfg) {
117118
118119 bufferHandler
119120 ->createBuffer <double >({" quadric-buffer" , VKBUFFER_IN}, beamlineData) // Beamline quadric info
120- .addDescriptorSetPerPassBinding (passName0, 2 , shaderFlag) // TODO : Wrong binding number
121+ .addDescriptorSetPerPassBinding (passName0, 2 , shaderFlag)
121122 .addDescriptorSetPerPassBinding (passName1, 2 , shaderFlag)
122123 .addDescriptorSetPerPassBinding (passName2, 3 , shaderFlag);
123124
@@ -146,27 +147,26 @@ Rays VulkanTracer::traceRaw(const TraceRawConfig& cfg) {
146147 .addDescriptorSetPerPassBinding (passName1, 6 , shaderFlag)
147148 .addDescriptorSetPerPassBinding (passName2, 7 , shaderFlag);
148149#endif
149-
150150 }
151-
152- // FIXME(OS): Weird pushConstant update
151+ // FIXME: Push Constants still support only one shader code! (If two shaders require two structs then Tracer needs to also change to carry a
152+ // vector of structs or similar)
153153 m_engine.getComputePass (" singleTracePass" )->updatePushConstant (0 , m_engine.m_pushConstants .pushConstPtr , m_engine.m_pushConstants .size );
154154 m_engine.getComputePass (" finalCollisionPass" )->updatePushConstant (0 , m_engine.m_pushConstants .pushConstPtr , m_engine.m_pushConstants .size );
155155 m_engine.getComputePass (" OldFullTracingPass" )->updatePushConstant (0 , m_engine.m_pushConstants .pushConstPtr , m_engine.m_pushConstants .size );
156156
157157 // Create Pipeline layouts and Descriptor Layouts. Everytime buffer formation (not data) changes, we need to prepare again
158158 m_engine.prepareComputePipelinePasses ();
159+
159160 // Run multiple bounces
160- auto out = m_engine.run ({.m_numberOfInvocations = numberOfRays, .maxBounces = (int )cfg.m_elements .size ()});
161+ auto out = m_engine.runTraceComputeTask ({.m_numberOfInvocations = numberOfRays, .maxBounces = (int )cfg.m_elements .size ()});
161162
162163#ifdef RAYX_DEBUG_MODE
163164 m_debugBufList = bufferHandler->readBuffer <debugBuffer_t>(" debug-buffer" , true );
164165#endif
165166
166167 m_engine.cleanup ();
167168
168- // Vector of vectors
169-
169+ // 2D Data
170170 return out;
171171}
172172
0 commit comments