Attempt a demonstration of dispersion effect, displaying bug in earlier version
This commit is contained in:
parent
27cdbbd159
commit
eaa76a6b5d
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue