diff --git a/projects/voxelization/resources/shaders/shader.frag b/projects/voxelization/resources/shaders/shader.frag index a5793542b9f0ea2a79504cdf3ef67ec0d32124ad..e8f85919dff4ffe6fad21d4f718192e6631492fc 100644 --- a/projects/voxelization/resources/shaders/shader.frag +++ b/projects/voxelization/resources/shaders/shader.frag @@ -91,7 +91,7 @@ void main() { vec3 F_out = fresnelSchlick(NoV, f0); vec3 diffuse = lambertBRDF(albedo) * (1 - F_in) * (1 - F_out); - vec3 up = N_geo.y >= 0.99 ? vec3(1, 0, 0) : vec3(0, 1, 0); + vec3 up = abs(N_geo.y) >= 0.99 ? vec3(1, 0, 0) : vec3(0, 1, 0); vec3 right = normalize(cross(up, N)); up = cross(N, right); mat3 toSurface = mat3(right, up, N); diff --git a/projects/voxelization/resources/shaders/voxelSecondaryBounce.comp b/projects/voxelization/resources/shaders/voxelSecondaryBounce.comp index 3e10ecb8faeaf8fe1ca5ea539ac94e92d38e5c3b..29026e7052861ab190200b23d9f860bc609d1550 100644 --- a/projects/voxelization/resources/shaders/voxelSecondaryBounce.comp +++ b/projects/voxelization/resources/shaders/voxelSecondaryBounce.comp @@ -32,7 +32,7 @@ void main(){ float halfVoxelSize = voxelInfo.extent / float(voxelImageSize.x) * 0.5f; vec3 pos = voxelCoordinatesToWorldPosition(UV, voxelImageSize.x, voxelInfo, halfVoxelSize); - vec3 up = N.y >= 0.99 ? vec3(1, 0, 0) : vec3(0, 1, 0); + vec3 up = abs(N.y) >= 0.99 ? vec3(1, 0, 0) : vec3(0, 1, 0); vec3 right = normalize(cross(up, N)); up = cross(N, right); mat3 toSurface = mat3(right, up, N);