diff --git a/glsl/michelson.frag b/glsl/michelson.frag index f0c374c..124da46 100644 --- a/glsl/michelson.frag +++ b/glsl/michelson.frag @@ -47,27 +47,23 @@ void main() { float relX = (pixelX - center.x) * zoom; float relY = (pixelY - center.y) * zoom; - // r^2 float radiusSq = relX * relX + relY * relY; - // Diff de marche lamme d'air 2 * e cos(i) mais petits angles => cos(i) ~ 1 - i^2/2 mais i ~ r/f et r^2 = x^2 + y^2 - float ringFactorBase = radiusSq * 0.065; - // Diff de marche du au coin d'air float wDelta = (relX * angleM1 + relY * angleM1_Y) * 200.0; - float currDeltaBase = deltaLnm + wDelta; + float cosFactor = 1.0 - (radiusSq * 0.000004); - float currDelta = deltaLnm - ringFactorBase + wDelta; + float currDelta = (deltaLnm * cosFactor) + wDelta; vec3 accumColor = vec3(0.0); for(int i = 0; i < 10; i++) { - if (i >= lambdasCount) break; + if (i >= lambdasCount) break; float l = lambdas[i]; + if (l < 1.0) l = 550.0; vec3 baseColorVec = WavelengthToRGB(l); - float currDelta = currDeltaBase - ringFactorBase; float K = PI / l; float phase = currDelta * K; float intensity = cos(phase); diff --git a/glsl/michelson_web.frag b/glsl/michelson_web.frag index f171a89..cc85e97 100644 --- a/glsl/michelson_web.frag +++ b/glsl/michelson_web.frag @@ -45,9 +45,12 @@ void main() { float relY = (pixelY - center.y) * zoom; float radiusSq = relX * relX + relY * relY; - float ringFactorBase = radiusSq * 0.065; + float wDelta = (relX * angleM1 + relY * angleM1_Y) * 200.0; - float currDeltaBase = deltaLnm + wDelta; + + float cosFactor = 1.0 - (radiusSq * 0.000004); + + float currDelta = (deltaLnm * cosFactor) + wDelta; vec3 accumColor = vec3(0.0); @@ -55,15 +58,16 @@ void main() { if (i >= lambdasCount) break; float l = lambdas[i]; - if (l < 1.0) l = 550.0; vec3 baseColorVec = WavelengthToRGB(l); - float currDelta = currDeltaBase - ringFactorBase; + float K = PI / l; float phase = currDelta * K; + float intensity = cos(phase); - intensity = intensity * intensity; + intensity = intensity * intensity; + accumColor += baseColorVec * intensity; } diff --git a/main.c b/main.c index 160ddfd..74d2467 100644 --- a/main.c +++ b/main.c @@ -571,7 +571,7 @@ int main () { #endif mic.center = (Vector2){ UI_WIDTH + (1920 - UI_WIDTH) / 2.0f - 100, 1080 / 2.0f }; - mic.d1 = 250.0f; + mic.d1 = 300.0f; mic.d2 = 250.0f; mic.lambdas[0] = 550.0f; mic.lambdasCount = 1;