Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Clear the previously rendered scene
- glClear(GL_COLOR_BUFFER_BIT);
- /*************** AGGIORNO IL TLAS ****************************/
- Program::use(*mRaytracerUpdate);
- prapareDispatch();
- // Dispatch the compute work!
- glDispatchCompute(1 << expOfTwo_maxModels, 1, 1);
- // synchronize with the GPU
- glMemoryBarrier(GL_SHADER_STORAGE_BARRIER_BIT);
- /*************** Render ****************************************/
- // Set the raytracer program as the active one
- Program::use(*mRaytracerRender);
- // Bind the raytracer SSBO (the rendering context)
- prapareDispatch();
- // Bind the texture to be written by the raytracer
- glBindImageTexture(0, mRaytracerOutputTexture, 0, GL_FALSE, 0, GL_WRITE_ONLY, GL_RGBA32F);
- // Set rendering information
- mRaytracerRender->setUniform("width", getWidth());
- mRaytracerRender->setUniform("height", getHeight());
- // Set camera parameters
- mDisplayWriter->setUniform("cameraPosition", glm::vec3(0, 0, 0));
- mDisplayWriter->setUniform("cameraViewDir", glm::vec3(0, 0, -1));
- mDisplayWriter->setUniform("cameraUpVector", glm::vec3(0, 1, 0));
- mDisplayWriter->setUniform("cameraFoV", glm::float32(60));
- mDisplayWriter->setUniform("cameraAspect", glm::float32(getWidth()) / glm::float32(getHeight()));
- // Dispatch the compute work!
- glDispatchCompute((GLuint)(getWidth()), (GLuint)(getHeight()), 1);
- /***************** prepareDispatch() binda degli SSO: **********************/
- // Bind the raytracer SSBO (the rendering context)
- for (GLuint k = 0; k < mRaytracingSSBO.size(); ++k)
- glBindBufferBase(GL_SHADER_STORAGE_BUFFER, k, mRaytracingSSBO[k]);
Advertisement
Add Comment
Please, Sign In to add comment