Attempt a demonstration of dispersion effect, displaying bug in earlier version

This commit is contained in:
kappa 2023-09-27 21:36:24 +02:00
parent 27cdbbd159
commit eaa76a6b5d
2 changed files with 11 additions and 10 deletions

View file

@ -96,7 +96,6 @@ public class RayTracerSimple extends RayTracer {
double refractive = material.refractive().at(wavelength);
if (refractive != 0.0) {
System.out.println(refractive + " " + ray);
Vec3 b; // refracted light vector
double rInd = 1/material.refractiveIndex().at(wavelength);
@ -119,7 +118,6 @@ public class RayTracerSimple extends RayTracer {
b = bRejection.add(bProjection);
}
double lightRefracted = sample(Ray.pd(p, b), depthRemaining - 1, wavelength);
System.out.println("Light: " + lightRefracted + " direction: " + b);
result += refractive * lightRefracted;
}

View file

@ -25,25 +25,28 @@ public class SpectrumTest extends Scene.Base {
public SpectrumTest() {
var materialUVWalls = (F1<Material, Vector>) (uv -> Material.matte(1.0));
SplineSpectrum s;
var materialUVWallsL = Grid.standard(w -> 0.2);
var materialUVWallsL = Grid.standard(w -> 1.0);
var materialUVWallsR = Grid.standard(w -> 0.3);
var materialUVWallsR = Grid.standard(w -> 0.1);
Collection<Solid> solids = new ArrayList<>();
Collections.addAll(solids,
HalfSpace.pn(Vec3.xyz(0, 0, 10), Vec3.xyz( 1, 0, -1), materialUVWallsL),
HalfSpace.pn(Vec3.xyz( 0, 0, 10), Vec3.xyz(-1, 0, -1), materialUVWallsR),
HalfSpace.pn(Vec3.xyz(1, 0, 10), Vec3.xyz( 1, 0, -1), materialUVWallsL),
HalfSpace.pn(Vec3.xyz( -1, 0, 10), Vec3.xyz(-1, 0, -1), materialUVWallsR),
HalfSpace.pn(Vec3.xyz(0, 2, 0), Vec3.xyz( 0, -1, 0), materialUVWallsL),
HalfSpace.pn(Vec3.xyz(0, -2, 10), Vec3.xyz( 0, 1, 0), materialUVWallsL),
HalfSpace.pn(Vec3.xyz( 0, 0, 8), Vec3.xyz(0, 0, -1), uv -> Material.GLASS),
HalfSpace.pn(Vec3.xyz( 0, 0, 8), Vec3.xyz(0, 1, -1), uv -> Material.GLASS.refractiveIndex(
// w -> 1.6 + (w-400)/(800-400) * (1.55 - 1.6)
w -> 1.5
)),
HalfSpace.pn(Vec3.xyz( 0, 0, -6), Vec3.xyz( 0, 0, 1), materialUVWallsR)
// Ball.cr(Vec3.xyz(0.0, 0.0, 5), 0.4, uv -> Material.MIRROR)
);
Collections.addAll(lights,
Light.ps(Vec3.xyz(0, 0.0, -1.0), w -> 1.0)
Light.ps(Vec3.xyz(0, 1.0, -1.0), w -> 1.0),
Light.ps(Vec3.xyz(0, -1.0, 9.0), w -> 1.0)
);
solid = Group.of(solids);