diff options
author | Andreas Grois <andi@grois.info> | 2018-03-15 19:45:18 +0100 |
---|---|---|
committer | Andreas Grois <andi@grois.info> | 2018-03-15 19:45:18 +0100 |
commit | af0d5f4988bf94c4bf918b306f72f8604395715b (patch) | |
tree | a6cd0b16a52ea6d2a35fe4a6f182bf50b6ecb31f | |
parent | a76ec22db53f19d68caa0d21008d220c0ae4e815 (diff) |
Force starting values to be outside main cardioid and bulb, and add storage specifiers to buffers.
-rw-r--r-- | BuddhaTest/Shaders/BuddhaCompute.glsl | 31 | ||||
-rw-r--r-- | BuddhaTest/Shaders/BuddhaFragment.glsl | 12 |
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;
|