interferences réalistes

This commit is contained in:
2025-12-29 16:40:55 +01:00
parent e78af26734
commit ebd2ba2e51
3 changed files with 14 additions and 14 deletions

View File

@ -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);

View File

@ -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;
}