diff --git a/projects/saf_r/shaders/raytracing.comp b/projects/saf_r/shaders/raytracing.comp index e4ab9582b66238d5986c9e12dee1f2a8e782abb7..cb3a811964e22e474fc1a42cf6a5092b3979253f 100644 --- a/projects/saf_r/shaders/raytracing.comp +++ b/projects/saf_r/shaders/raytracing.comp @@ -32,6 +32,10 @@ layout(std430, binding = 2) coherent buffer spheres{ Sphere inSpheres[]; }; +layout(set=0, binding=3, rgba8) uniform image2D outImage; + + + vec3 safr_reflect(const vec3 dir, const vec3 hit_center) { return dir - hit_center * 2.f * (dot(dir, hit_center)); } @@ -100,7 +104,6 @@ vec3 castRay(const vec3 orig, const vec3 dir, int max_depth) { direction = reflect_dir; } - //TODO: Warum wollten wir nochmal einene Sphere Index haben? if(intersect != -1){ vec3 reflect_color = result; for(int i = 0; i < depth; i++){ @@ -130,7 +133,21 @@ vec3 castRay(const vec3 orig, const vec3 dir, int max_depth) { return result; } +vec3 computeDirection(ivec2 coord){ + + //float x = (2 * (i + 0.5f) / (float)width - 1) * tan(fov / 2.f) * width / (float)height; + //float y = -(2 * (j + 0.5f) / (float)height - 1) * tan(fov / 2.f); + //glm::vec3 dir = glm::normalize(glm::vec3(x, y, -1)); + + return vec3(1,1,1); +} + void main(){ - int i = 42; + //ivec2 coord = ivec2(gl_GlobalInvocationID.xy); + // int max_depth = 4; + //vec3 direction = computeDirection(coord); + //vec3 color = castRay(vec3(0,0,0), direction, max_depth); + // vec3 color = vec3(1,0,0); + //imageStore(outImage, coord, vec4(color, 0)); } \ No newline at end of file diff --git a/projects/saf_r/src/main.cpp b/projects/saf_r/src/main.cpp index 316d0a7dcb7f0a5f21d2f0d772094f9d31e7a313..7808e42505b4bfd2d04212ad988d1b8137711ad2 100644 --- a/projects/saf_r/src/main.cpp +++ b/projects/saf_r/src/main.cpp @@ -79,6 +79,7 @@ int main(int argc, const char** argv) { const vkcv::DescriptorBindings& descriptorBindings = safrShaderProgram.getReflectedDescriptors().at(0); vkcv::DescriptorSetLayoutHandle descriptorSetLayout = core.createDescriptorSetLayout(descriptorBindings); vkcv::DescriptorSetHandle descriptorSet = core.createDescriptorSet(descriptorSetLayout); + vkcv::ImageHandle swapchainInput = vkcv::ImageHandle::createSwapchainImageHandle(); //materials for the spheres std::vector<safrScene::Material> materials; @@ -149,6 +150,8 @@ int main(int argc, const char** argv) { core.writeDescriptorSet(computeDescriptorSet, computeWrites); computeWrites.storageBufferWrites = { vkcv::BufferDescriptorWrite(2,sphereBuffer.getHandle()) }; core.writeDescriptorSet(computeDescriptorSet, computeWrites); + computeWrites.storageImageWrites = { vkcv::StorageImageDescriptorWrite(3, swapchainInput)}; + core.writeDescriptorSet(computeDescriptorSet, computeWrites); const auto& context = core.getContext(); @@ -199,7 +202,7 @@ int main(int argc, const char** argv) { vkcv::DescriptorSetUsage descriptorUsage(0, core.getDescriptorSet(descriptorSet).vulkanHandle); vkcv::DrawcallInfo drawcall(renderMesh, { descriptorUsage }, 1); - const vkcv::ImageHandle swapchainInput = vkcv::ImageHandle::createSwapchainImageHandle(); + //const vkcv::ImageHandle swapchainInput = vkcv::ImageHandle::createSwapchainImageHandle(); vkcv::camera::CameraManager cameraManager(window); uint32_t camIndex0 = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT); diff --git a/projects/saf_r/src/safrScene.cpp b/projects/saf_r/src/safrScene.cpp index 38a40605723161ab874d02cd6768654090a12c15..18b6be310db52b44b50e1c5184d567460e1ca32d 100644 --- a/projects/saf_r/src/safrScene.cpp +++ b/projects/saf_r/src/safrScene.cpp @@ -67,7 +67,7 @@ vkcv::asset::Texture safrScene::render(const std::vector<safrScene::Sphere>& sph #pragma omp parallel for for (size_t j = 0; j < height; j++) { for (size_t i = 0; i < width; i++) { - framebuffer[i + j * width] = glm::vec3(j / float(height), i / float(width), 0); + //framebuffer[i + j * width] = glm::vec3(j / float(height), i / float(width), 0); float x = (2 * (i + 0.5f) / (float)width - 1) * tan(fov / 2.f) * width / (float)height; float y = -(2 * (j + 0.5f) / (float)height - 1) * tan(fov / 2.f); glm::vec3 dir = glm::normalize(glm::vec3(x, y, -1));