public ActionResult RayTraceAsync() { ViewBag.Title = "Ray Tracing Asynchronous"; RayTracer rt = new RayTracer(); int[][] pixelArray = rt.RayTraceScene(true, false); ComputationModels model = new ComputationModels(); int len = pixelArray.Length; model.rgba0 = pixelArray[0]; model.rgba1 = pixelArray[1]; model.rgba2 = pixelArray[2]; model.rgba3 = pixelArray[3]; model.rgba4 = pixelArray[4]; model.rgba5 = pixelArray[5]; model.rgba6 = pixelArray[6]; model.rgba7 = pixelArray[7]; model.rgba8 = pixelArray[8]; model.rgba9 = pixelArray[9]; return View("RayTraceSync", model); }
/// <summary> /// Implementation of ray tracer using caching - caches the entire pixel array to be used for subsequent /// identical requests to the server and caches the colour intensities for each pixel. /// </summary> /// <returns>View of ray trace scene</returns> public ActionResult RayTraceCache() { ViewBag.Title = "Ray Tracing with Caching"; int[][] cachedPixelArray = (int[][])HttpRuntime.Cache.Get("RayTraceScene"); int[][] pixelArray; if (cachedPixelArray == null) { RayTracer rt = new RayTracer(); pixelArray = rt.RayTraceScene(false, true); HttpRuntime.Cache.Insert("RayTraceScene", pixelArray); Debug.WriteLine("Added to cache"); } else { pixelArray = cachedPixelArray; Debug.WriteLine("Taken from cache"); } ComputationModels model = new ComputationModels(); int len = pixelArray.Length; model.rgba0 = pixelArray[0]; model.rgba1 = pixelArray[1]; model.rgba2 = pixelArray[2]; model.rgba3 = pixelArray[3]; model.rgba4 = pixelArray[4]; model.rgba5 = pixelArray[5]; model.rgba6 = pixelArray[6]; model.rgba7 = pixelArray[7]; model.rgba8 = pixelArray[8]; model.rgba9 = pixelArray[9]; return View("RayTraceSync", model); }