Gregory Fotiades
Global illumination techniques are highly desirable for realistic interaction due to their high level of accuracy and photorealism Mobile devices are typically too weak in terms of computational abilities to perform global illumination techniques
For real time performance we need rendering speeds in the order of < 40ms (25fps) Low powered devices by their nature do not have access to high performance hardware
Pre-rendering the scene using tools such as “RenderMan on Demand” [5] is not feasible as we do not know what commands the user will send Lorio et al. [6] did work in using cloud computational power to model urban environments in a realistic time frame
Low powered device will offload intensive global illumination computations to the cloud Cloud will perform computations on distributed parallel architecture Rendered scenes will be sent back to client
Renderer in cloud must perform operations real time (< 40ms) – even less Renderer will be hardware accelerated to achieve said real time Renderer will need to scale in future works
RAW formats are too large even if we use convert colorspaces to make use of subsampling HeightWidthFormat Bytes Per Pixel (BPP) Frames per Second (FPS) Required Bandwidth 432 RGBA424137Mbps RGBA Mbps 432 YUV Mbps 432 YUV Mbps 432 YUV Mbps YUV Mbps
Video compression must be utilized ◦ Compression codec is rather irrelevant, but VP8/VP9 come to mind first [29][30] Real time encoding/decoding in software is very common (ie. video conferencing) Network transmission takes a lot of time
Renderer is the ray tracing core Renderer makes use of Nvidia GTX 280 GFX CUDA API [24] is used for HW acceleration 432x432 resolution used ◦ 16x16 threads used across 27x27 blocks Only modified objects updated to lower overhead (copy scene to GPU) QT Toolkit [27] used for UI
Recursion not supported by GFX card ◦ No stack pointer or concept of frames ◦ Iterative conversion done Static frame stack implemented and used ◦ Recursion supported on newer HW, future work may investigate possible port to recursion Stack/recursion depth of 8 used ◦ Higher than 8 had no noticeable improvement Some basic optimizations performed, but all trivial
Triangle intersection detection not implemented, so complex meshes cannot be rendered ◦ This is topic to analyze in future work as triangular meshes will drastically increase render time ◦ Multiple client implementation may be necessary Ray tracer based on CG2 ray tracer, so lacks advanced shading techniques Ray tracer uses static scene intersection detection, needs some form of dynamic detection in future
Implementation video compression is outside the scope of project RDP clients fill niche of transmission assuming they perform well enough for UX to be smooth as they also handle cmds to server Kinoni Remote Desktop [33] used for transmission Future work should explore its own compression or direct compression control and color space conversion
CPUGPU Min Render Time Max Render Time Avg Render Time Rendering speedup of ~5.6x ◦ More important than speedup is scalability
200Kbits/sec bandwidth usage 4.4Mbit/sec download easily feasible over 4g ◦ Not enough for raw transfers Commands to serverRendering to Client Avg bytes / second Avg Kbits / second Avg Mbits / second UploadDownload Avg bytes / second Avg Kbits / second Avg Mbits / second
Real time interactive global illumination is feasible if parallel resources and a network connection are available Video compression is necessary to transmit images
Scalability across multiple systems and multiple GPUs Implement triangular mesh intersection detection Implement dynamic object management In-house video compression