Capstone Project Fall 2009 Team # 6 October 8 2009 Mentors from Tietronix company Michel Izygon Peter Armstrong Insia Iftiqhar Claus Nilsson - Michel.Izygon@tietronix.com peter.armstrong-1@tietronix.com Insia.Iftiqhar@tietronix.com Claus.Nilsson@tietronix.com Team members: Ngoc Vu (Team leader, Researcher, Developer) Hai Tran (Researcher, Algorithm , PR, Documentation Composer) Hai Nguyen (Researcher, Website admin, Developer) Tuan Le (Researcher, Developer, Documentation Composer) Project Description Project Specification Applied Technologies CUDA Open GL Issues Blocking and Shading Ray Tracing Project Demo Milestone Conclusion Reference Solar Thermal Plant is power plant by using solar energy. It includes a thousand mirrors around a tower to reflect the sun light to the receiver at the top of the tower. It collects the sun’s energy to generate heat that is used to run a turbine generator. (Solar Thermal Energy form http://www.solar-thermal.com/images/image_players.jpg) The heliostats track the movement of the sun. The received energy is used to heat the fluid inside the receiver. This process will generate water vapor to run turbine generator. The capstone project will develop a photorealistic 3D simulation of a solar power plant. It will model the motion of the sun and heliostats and will be updated in faster than real time. The system is a photo-realistic 3D simulation of a concentrating solar power plant using Cuda and OpenGL. It tracks the movement of the sun. Heliostats will be represented as flat rectangular mirrors. The tower will be models as a cylinder. It will show the shadows of heliostats upon neighboring heliostats. The shadow of the tower will be casted. The system will maintain a graphical frame rate at a minimum of 20 fames per second. It will allow users to control the simulation date and time, the rate of change of time, the camera position. NVIDIA CUDA is a parallel processing architecture. CUDA leverages the parallel compute engine in NVIDIA graphic processing units (GPUs) to solve complex computational problems in such a much shorter time on CPU. Developer use C, C++ to program to the CUDA architecture. CUDA architecture includes OpenCL[2] and DirectCompute CUDA Features: CUDA driver is used for computing with fast data transfer path between GPU and CPU CUDA driver interoperates with OpenGL and DirectX graphics drivers It supports for Linux and Windows XP. GPUs have a parallel "manycore" architecture, and each core can run thousands of threads simultaneously The Application Programming Interface (API ) to graphic hardware. The streamlined, hardware independent interface. The standard for computer graphic programming. Provides : Separation of interaction from rendering 3D geometric objects. 3D modeling transformations Viewing functions to create views of 3D scenes using the idea of a virtual camera. High quality rendering of scenes. Display lists for creating graphic caches and hierarchical models. The manipulation of images. Frame-buffer effects. Main libraries : provide functions GLU ( OpenGL Utility Library ) : ▪ More complex primitives. GLUT ( OpenGL Utility Toolkit ) : ▪ Managing windows on the display screen. ▪ Handling input events from mouse and keyboard. ▪ Drawing 3D objects ▪ Tools for creating GUI Shading: the sunlight to a heliostat is blocked by another heliostat. Blocking: the reflection light beam from one heliostat to the receiver is blocked by another heliostat. Complicated formula Time consuming Peter’s document Simple formula Easy to understand and program Compute vertices of each heliostats For each (representative) heliostat Find its neighbors Eliminate don’t-care neighbors For each do-care neighbor • Project it to the plane that contains the representative heliostat (just four vertices of the neighbor heliostats are projected) • Indicate if a vertex is inside the representative heliostat • Indicate the shading/blocking region • Go to next neighbor Go to next heliostat Light source Source: siggraph.org Light source Source: siggraph.org Light source Source: siggraph.org OpenGL supports Draw 3D model (heliostats, tower) Define virtual screen Define viewpoint (where eyes or camera locates) Use CUDA to process each pixel on the screen Viewpoint Screen From file Plant configurations Heliostats’ center coordinates Sun position Using Cuda (one thread for each heliostat) Vertices’ coordinates of each heliostat 3D Model using our shading and blocking algorithm 3D Model using ray tracing Render 3D model to screen using OpenGL Milestones Basic tasks: Research OpenGL, CUDA, Ray tracing… Apply OpenGL, CUDA to the project. Draw 3D objects : tower, heliostats … Apply changing time, changing direction of heliostats . Processing tasks : Apply shading and blocking for heliostats. Simulate sun’s movement for the project. Optimize the algorithm for the project. Parallel processing with CUDA http://www.nvidia.com/docs/IO/55972/22040 1_Reprint.pdf CUDA Zone http://www.nvidia.com/object/cuda_what_is. html An algorithm for shading and blocking computations of a field of heliostats arranged in a grid layout - Peter Amstrong, Tietronix Software, Inc