diff --git a/projects/particle_simulation/shaders/bloom/composite.comp b/projects/particle_simulation/shaders/bloom/composite.comp index 66d3cd4b3fef5013479796a804d2bc320c7aec7a..87b5ddb975106232d1cd3b6e5b8dc7e623dd0b59 100644 --- a/projects/particle_simulation/shaders/bloom/composite.comp +++ b/projects/particle_simulation/shaders/bloom/composite.comp @@ -26,7 +26,7 @@ void main() vec3 main_color = imageLoad(colorBuffer, pixel_coord).rgb; // composite blur and lens features - float bloom_weight = 0.1f; + float bloom_weight = 0.01f; float lens_weight = 0.f; float main_weight = 1 - (bloom_weight + lens_weight); diff --git a/projects/particle_simulation/shaders/shader_space.frag b/projects/particle_simulation/shaders/shader_space.frag index a1da54038381e142f0d40de8c3314514fa37f543..6e2974a189fc3e15e6e80f406fd33f40722f558f 100644 --- a/projects/particle_simulation/shaders/shader_space.frag +++ b/projects/particle_simulation/shaders/shader_space.frag @@ -8,7 +8,7 @@ layout(location = 0) in vec2 passTriangleCoordinates; layout(location = 1) in vec3 passVelocity; layout(location = 2) in float passlifeTime; -layout(location = 0) out vec4 outColor; +layout(location = 0) out vec3 outColor; layout(set=0, binding=0) uniform uColor { vec4 color; @@ -22,13 +22,22 @@ layout(set=0,binding=1) uniform uPosition{ void main() { vec2 mouse = vec2(Position.position.x, Position.position.y); - outColor = float(passlifeTime < 1) * vec4(1,1,0,0) + - float(passlifeTime < 2 && passlifeTime > 1) * vec4(1,passlifeTime * 0.5,0,0) + - float(passlifeTime >= 2 && passlifeTime < 2.5f) * vec4(passlifeTime * 0.5,passlifeTime * 0.5,0,0) + - float(passlifeTime >= 2.5f) * vec4(1,0,0,0); + + vec3 c0 = vec3(1,1,0); + vec3 c1 = vec3(1, passlifeTime * 0.5, 0); + vec3 c2 = vec3(passlifeTime * 0.5,passlifeTime * 0.5,0); + vec3 c3 = vec3(1, 0, 0); + + if(passlifeTime < 1){ + outColor = mix(c0, c1, passlifeTime ); + } + else if(passlifeTime < 2){ + outColor = mix(c1, c2, passlifeTime - 1); + } + else{ + outColor = mix(c2, c3, clamp((passlifeTime - 2) * 0.5, 0, 1)); + } // make the triangle look like a circle outColor *= circleFactor(passTriangleCoordinates); - // full color is achieved by additively blending many particles - outColor *= 0.5; } \ No newline at end of file diff --git a/projects/particle_simulation/shaders/shader_water.frag b/projects/particle_simulation/shaders/shader_water.frag index b0b4cc7050523d52fee25eb46401a9d32f67331d..4a62ad349e8fdcec69e9ec92368f32e2e3e31471 100644 --- a/projects/particle_simulation/shaders/shader_water.frag +++ b/projects/particle_simulation/shaders/shader_water.frag @@ -8,7 +8,7 @@ layout(location = 0) in vec2 passTriangleCoordinates; layout(location = 1) in vec3 passVelocity; layout(location = 2) in float passlifeTime; -layout(location = 0) out vec4 outColor; +layout(location = 0) out vec3 outColor; layout(set=0, binding=0) uniform uColor { vec4 color; @@ -22,13 +22,22 @@ void main() { float normlt = 1-normalize(passlifeTime); vec2 mouse = vec2(Position.position.x, Position.position.y); - outColor =float(passlifeTime < 1) * vec4(0.2,0.5,1,0) + - float(passlifeTime < 2 && passlifeTime > 1) * vec4(0.3, 0.7,1,0) + - float(passlifeTime >= 2 && passlifeTime < 4.f) * vec4(0.5,0.9,1,0) + - float(passlifeTime >= 4.f) * vec4(0.9,1,1,0); + + vec3 c0 = vec3(0.2,0.5,1); + vec3 c1 = vec3(0.3, 0.7,1); + vec3 c2 = vec3(0.5,0.9,1); + vec3 c3 = vec3(0.9,1,1); + + if(passlifeTime < 1){ + outColor = mix(c0, c1, passlifeTime ); + } + else if(passlifeTime < 2){ + outColor = mix(c1, c2, passlifeTime - 1); + } + else{ + outColor = mix(c2, c3, clamp((passlifeTime - 2) * 0.5, 0, 1)); + } // make the triangle look like a circle outColor *= circleFactor(passTriangleCoordinates); - // full color is achieved by additively blending many particles - outColor *= 0.5; } diff --git a/projects/particle_simulation/src/main.cpp b/projects/particle_simulation/src/main.cpp index 8d2a611ad10e457164208b8024a4d862ee989a88..0fbc8bdf9b658efe450b4d33dedb30469401fd0e 100644 --- a/projects/particle_simulation/src/main.cpp +++ b/projects/particle_simulation/src/main.cpp @@ -59,7 +59,7 @@ int main(int argc, const char **argv) { } // use space or use water - bool useSpace = true; + bool useSpace = false; vkcv::shader::GLSLCompiler compiler; vkcv::ShaderProgram computeShaderProgram{};