From 343a25cbed80e06319f87651e71270ea25e1811a Mon Sep 17 00:00:00 2001 From: saschawillems Date: Tue, 12 Apr 2016 20:28:46 +0200 Subject: [PATCH] Small raytracing shader performance changes --- data/shaders/raytracing/raytracing.comp | 12 +++++++++--- data/shaders/raytracing/raytracing.comp.spv | Bin 13260 -> 13392 bytes raytracing/raytracing.cpp | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/data/shaders/raytracing/raytracing.comp b/data/shaders/raytracing/raytracing.comp index e6e9bb67..5450472f 100644 --- a/data/shaders/raytracing/raytracing.comp +++ b/data/shaders/raytracing/raytracing.comp @@ -5,8 +5,8 @@ #extension GL_ARB_separate_shader_objects : enable #extension GL_ARB_shading_language_420pack : enable -layout (local_size_x =16, local_size_y = 16) in; -layout (binding = 0, rgba8) uniform image2D resultImage; +layout (local_size_x = 16, local_size_y = 16) in; +layout (binding = 0, rgba8) uniform writeonly image2D resultImage; #define EPSILON 0.0001 #define MAXLEN 1000.0 @@ -113,6 +113,7 @@ int intersect(in vec3 rayO, in vec3 rayD, out float resT) { id = spheres[i].id; resT = tSphere; + return id; break; } } @@ -153,6 +154,11 @@ vec3 renderScene(inout vec3 rayO, inout vec3 rayD, inout int id) // Get intersected object ID int objectID = intersect(rayO, rayD, t); + if (objectID == -1) + { + return color; + } + vec3 pos = rayO + t * rayD; vec3 lightVec = normalize(ubo.lightPos - pos); vec3 normal; @@ -172,7 +178,7 @@ vec3 renderScene(inout vec3 rayO, inout vec3 rayD, inout int id) normal = sphereNormal(pos, spheres[i]); float diffuse = lightDiffuse(normal, lightVec); float specular = lightSpecular(normal, lightVec); - color = diffuse * spheres[i].material.diffuse + specular * spheres[i].material.specular; + color = diffuse * spheres[i].material.diffuse + specular * spheres[i].material.specular; } } } diff --git a/data/shaders/raytracing/raytracing.comp.spv b/data/shaders/raytracing/raytracing.comp.spv index 3bcb26515cd9197f6fa9b9d5458210d88b1e4749..53d00182c2c3434aaf69a5f028781a420d4ad522 100644 GIT binary patch literal 13392 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 NCb0AHohkO)@SpU^rIi2x literal 13260 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