Difference between revisions of "Parallel Raytracer Assignment"

From CSE231 Wiki
Jump to navigation Jump to search
Line 29: Line 29:
 
{{Sequential|public LoopRayTracer(Function<RayTraceContext, List<Section>> sectionsCreator)}}
 
{{Sequential|public LoopRayTracer(Function<RayTraceContext, List<Section>> sectionsCreator)}}
  
Hang onto the sectionsCreator in an instance variable.  You will need it.
+
Hang onto the sectionsCreator in an instance variable.  You will need it. Refer to [https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html Function<T, R> Interface] documentation if you are unfamiliar with Function.
  
 
===thresholdPredicate===
 
===thresholdPredicate===

Revision as of 19:12, 26 April 2022

Code To Investigate

RayTraceContext

public interface RayTraceContext {
	int width();

	int height();

	void mark(int xMin, int yMin, int xMaxExclusive, int yMaxExclusive);

	void markAndRender(int xMin, int yMin, int xMaxExclusive, int yMaxExclusive);
}

Scheduler

public interface Scheduler {
	void void_fork(Runnable runnable);
}

Code To Implement

SplitFourWayRayTracer

class: SplitFourWayRayTracer.java Java.png
methods: rayTrace
package: raytrace.exercise
source folder: student/src/main/java

rayTrace

method: public void rayTrace(RayTraceContext context, Scheduler scheduler) Parallel.svg (parallel implementation required)

LoopRayTracer

class: LoopRayTracer.java Java.png
methods: constructor
sectionsCreator
rayTrace
package: raytrace.exercise
source folder: student/src/main/java

constructor

method: public LoopRayTracer(Function<RayTraceContext, List<Section>> sectionsCreator) Sequential.svg (sequential implementation only)

Hang onto the sectionsCreator in an instance variable. You will need it. Refer to Function<T, R> Interface documentation if you are unfamiliar with Function.

thresholdPredicate

method: Function<RayTraceContext, List<Section>> sectionsCreator() Sequential.svg (sequential implementation only)

Return the sectionsCreator you stored in an instance variable.

rayTrace

method: public void rayTrace(RayTraceContext context, Scheduler scheduler) Parallel.svg (parallel implementation required)

DivideAndConquerRayTracer

class: DivideAndConquerRayTracer.java Java.png
methods: constructor
thresholdPredicate
rayTraceKernel
package: raytrace.exercise
source folder: student/src/main/java

constructor

method: public DivideAndConquerRayTracer(BiPredicate<Integer, Integer> thresholdPredicate) Sequential.svg (sequential implementation only)

Hang onto the thresholdPredicate in an instance variable. You will need it.

thresholdPredicate

method: public BiPredicate<Integer, Integer> thresholdPredicate() Sequential.svg (sequential implementation only)

Return the thresholdPredicate you stored in an instance variable.

rayTrace

method: public void rayTrace(RayTraceContext context, Scheduler scheduler) Parallel.svg (parallel implementation required)

Checking Your Solution

Visualization

class: RayTracerViz.java VIZ
package: raytrace.viz
source folder: student/src/main/java

Correctness

class: _SequentialRayTracerTestSuite.java Junit.png
package: raytrace.group
source folder: testing/src/test/java