From 81863349bfc7fede772eac9b6fd8024f49380e42 Mon Sep 17 00:00:00 2001 From: Andreas Grois Date: Thu, 22 Mar 2018 23:23:30 +0100 Subject: Make preview use color scale and gamma --- BuddhaTest/Shaders/BuddhaCompute.glsl | 3 +++ BuddhaTest/Shaders/BuddhaFragment.glsl | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'BuddhaTest/Shaders') diff --git a/BuddhaTest/Shaders/BuddhaCompute.glsl b/BuddhaTest/Shaders/BuddhaCompute.glsl index dfc3828..12ed6e8 100644 --- a/BuddhaTest/Shaders/BuddhaCompute.glsl +++ b/BuddhaTest/Shaders/BuddhaCompute.glsl @@ -12,6 +12,7 @@ layout(std430, binding=3) restrict buffer brightnessData restrict uint brightness; }; +/** Data stored in the state buffer. */ struct individualData { uint phase; @@ -33,6 +34,7 @@ uniform uvec4 orbitLength; uniform uint iterationsPerDispatch; uniform uint totalIterations; +/** Data stored in shared memory. Used to reduce register pressure. Read at beginning, written back at end. */ struct workerState { uint phase; @@ -42,6 +44,7 @@ struct workerState uint brightness; }; +/** Storage in shared memory. Used to reduce register pressure. */ shared workerState[gl_WorkGroupSize.x*gl_WorkGroupSize.y*gl_WorkGroupSize.z] localStore; void uintMaxIP(inout uint modified, const uint constant) diff --git a/BuddhaTest/Shaders/BuddhaFragment.glsl b/BuddhaTest/Shaders/BuddhaFragment.glsl index 73cb53e..52a0354 100644 --- a/BuddhaTest/Shaders/BuddhaFragment.glsl +++ b/BuddhaTest/Shaders/BuddhaFragment.glsl @@ -15,6 +15,8 @@ layout(std430, binding=3) restrict readonly buffer brightnessData uniform uint width; uniform uint height; +uniform float gamma; +uniform float colorScale; uvec3 getColorAt(vec2 fragCoord) { @@ -27,6 +29,6 @@ uvec3 getColorAt(vec2 fragCoord) void main(){ uvec3 totalCount = getColorAt(uv); - vec3 scaled = vec3(totalCount)/max(float(brightness),1.0); + vec3 scaled = pow(min(vec3(1.0),colorScale*vec3(totalCount)/max(float(brightness),1.0)),vec3(gamma)); color = scaled; } -- cgit v1.2.3