summaryrefslogtreecommitdiff
path: root/graphics/asymptote/base/shaders/fragment.glsl
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/asymptote/base/shaders/fragment.glsl')
-rw-r--r--graphics/asymptote/base/shaders/fragment.glsl26
1 files changed, 4 insertions, 22 deletions
diff --git a/graphics/asymptote/base/shaders/fragment.glsl b/graphics/asymptote/base/shaders/fragment.glsl
index 79f2573402..6f42f7d491 100644
--- a/graphics/asymptote/base/shaders/fragment.glsl
+++ b/graphics/asymptote/base/shaders/fragment.glsl
@@ -32,29 +32,14 @@ float Roughness;
layout(binding=0, std430) buffer offsetBuffer
{
+ uint maxDepth;
uint offset[];
};
-#ifdef GPUINDEXING
-#if defined(TRANSPARENT) || (!defined(HAVE_INTERLOCK) && !defined(OPAQUE))
-uniform uint elements;
-uniform uint offset2;
-uniform uint m1;
-uniform uint m2;
-uniform uint r;
-#endif
-layout(binding=2, std430) buffer localSumBuffer
-{
- uint localSum[];
-};
-
-layout(binding=3, std430) buffer globalSumBuffer
-{
- uint globalSum[];
-};
-#else
+#ifndef GPUINDEXING
layout(binding=2, std430) buffer countBuffer
{
+ uint maxSize;
uint count[];
};
#endif
@@ -76,7 +61,6 @@ layout(binding=6, std430) buffer opaqueBuffer
layout(binding=7, std430) buffer opaqueDepthBuffer
{
- uint maxSize;
float opaqueDepth[];
};
@@ -294,9 +278,7 @@ void main()
#if defined(TRANSPARENT) || (!defined(HAVE_INTERLOCK) && !defined(OPAQUE))
uint element=INDEX(pixel);
#ifdef GPUINDEXING
- uint p=element < r*(m1+1u) ? element/(m1+1u) : (element-r)/m1;
- uint listIndex=localSum[p]+localSum[offset2+p/m2]+globalSum[p/(m2*m2)]+
- atomicAdd(offset[elements+element],-1u)-1u;
+ uint listIndex=atomicAdd(offset[element],-1u)-1u;
#else
uint listIndex=offset[element]-atomicAdd(count[element],1u)-1u;
#endif