 		if ((c.x * c.x) + (c.y * c.y) > 4.0) break;
 	}
 	
-	gl_FragColor = vec4(i == iter ? 0.0 : i / iter, 0.0, 0.0, 1.0);
+	vec4 color;
+	float ratio = i / iter;
+	float peak = 0.750;
+	float peak_i = 1.0 - peak;
+	
+	vec3 rgb_falloff = vec3(
+		2.0,
+		1.0,
+		1.0
+	);
+	
+	if (ratio < peak) {
+		color = vec4(
+			clamp(1.0 - (peak - ratio) / (peak / rgb_falloff.x), 0.0, 1.0),
+			clamp(1.0 - (peak - ratio) / (peak / rgb_falloff.y), 0.0, 1.0),
+			clamp(1.0 - (peak - ratio) / (peak / rgb_falloff.z), 0.0, 1.0),
+			1.0
+		);
+	}
+	else {
+		color = vec4(
+			clamp(1.0 + (peak - ratio) / (peak_i / rgb_falloff.x), 0.0, 1.0),
+			clamp(1.0 + (peak - ratio) / (peak_i / rgb_falloff.y), 0.0, 1.0),
+			clamp(1.0 + (peak - ratio) / (peak_i / rgb_falloff.z), 0.0, 1.0),
+			1.0
+		);
+	}
+	
+	gl_FragColor = color;
 }

	
	c.x *= aspect;
	
	vec2 c_orig = c;
	
	float i;
	


void main() {
	float iter = 150.0;
	float scale = 1.50;
	
	float aspect = u_resolution.x / u_resolution.y;
	
