aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Grois <andi@grois.info>2018-03-15 19:45:18 +0100
committerAndreas Grois <andi@grois.info>2018-03-15 19:45:18 +0100
commitaf0d5f4988bf94c4bf918b306f72f8604395715b (patch)
treea6cd0b16a52ea6d2a35fe4a6f182bf50b6ecb31f
parenta76ec22db53f19d68caa0d21008d220c0ae4e815 (diff)
Force starting values to be outside main cardioid and bulb, and add storage specifiers to buffers.
-rw-r--r--BuddhaTest/Shaders/BuddhaCompute.glsl31
-rw-r--r--BuddhaTest/Shaders/BuddhaFragment.glsl12
2 files changed, 21 insertions, 22 deletions
diff --git a/BuddhaTest/Shaders/BuddhaCompute.glsl b/BuddhaTest/Shaders/BuddhaCompute.glsl
index 43228a8..fcc9010 100644
--- a/BuddhaTest/Shaders/BuddhaCompute.glsl
+++ b/BuddhaTest/Shaders/BuddhaCompute.glsl
@@ -2,21 +2,21 @@
//#version 430
//layout (local_size_x = 1024) in; //to be safe, we limit our local work group size to 1024. That's the minimum a GL 4.3 capable driver must support.
-layout(std430, binding=2) buffer renderedDataRed
+layout(std430, binding=2) restrict buffer renderedDataRed
{
- uint counts_SSBORed[];
+ restrict uint counts_SSBORed[];
};
-layout(std430, binding=3) buffer renderedDataGreen
+layout(std430, binding=3) restrict buffer renderedDataGreen
{
- uint counts_SSBOGreen[];
+ restrict uint counts_SSBOGreen[];
};
-layout(std430, binding=4) buffer renderedDataBlue
+layout(std430, binding=4) restrict buffer renderedDataBlue
{
- uint counts_SSBOBlue[];
+ restrict uint counts_SSBOBlue[];
};
-layout(std430, binding=5) buffer statusBuffer
+layout(std430, binding=5) restrict buffer statusBuffer
{
- uint individualState[];
+ restrict uint individualState[];
};
uniform uint width;
@@ -172,19 +172,18 @@ bool isInMainBulb(vec2 v)
vec2 getStartValue(uint seed, uint yDecoupler)
{
uint hash = seed;
-
- for(int i = 0; i < 5; ++i)
+ bool pointUnusable;
+ vec2 point;
+ do
{
float x = hash1(hash,hash);
hash = (hash ^ intHash(yDecoupler));
float y = hash1(hash,hash);
vec2 random = vec2(x,y);
- vec2 point = vec2(random.x * 3.5-2.5,random.y*1.55);
- bool useThisPoint = !(isInMainBulb(point) || isInMainCardioid(point));
- if(useThisPoint)
- return point;
- }
- return vec2(0);
+ point = vec2(random.x * 3.5-2.5,random.y*1.55);
+ pointUnusable = (isInMainBulb(point) || isInMainCardioid(point));
+ }while(pointUnusable);
+ return point;
}
bool isGoingToBeDrawn(in vec2 offset, in uint totalIterations, inout vec2 lastVal, inout uint iterationsLeftThisFrame, inout uint doneIterations, out bool result)
diff --git a/BuddhaTest/Shaders/BuddhaFragment.glsl b/BuddhaTest/Shaders/BuddhaFragment.glsl
index 24fb6a7..24edcd9 100644
--- a/BuddhaTest/Shaders/BuddhaFragment.glsl
+++ b/BuddhaTest/Shaders/BuddhaFragment.glsl
@@ -4,17 +4,17 @@ in vec2 uv;
out vec3 color;
-layout(std430, binding=2) buffer renderedDataRed
+layout(std430, binding=2) restrict readonly buffer renderedDataRed
{
- uint counts_SSBORed[];
+ restrict readonly uint counts_SSBORed[];
};
-layout(std430, binding=3) buffer renderedDataGreen
+layout(std430, binding=3) restrict readonly buffer renderedDataGreen
{
- uint counts_SSBOGreen[];
+ restrict readonly uint counts_SSBOGreen[];
};
-layout(std430, binding=4) buffer renderedDataBlue
+layout(std430, binding=4) restrict readonly buffer renderedDataBlue
{
- uint counts_SSBOBlue[];
+ restrict readonly uint counts_SSBOBlue[];
};
uniform uint width;