Changes

Jump to: navigation, search

Apex Page

5,406 bytes added, 00:47, 14 December 2015
Work Breakdown and Progress
# [mailto:ebi@myseneca.ca?subject=GAM531 Erquan Bi]
# [mailto:ejhan4@myseneca.ca?subject=GAM531 Eunju Han]
# [mailto:flbotos4@myseneca.ca?subject=GAM531 <s>Ferenc Botos</s>]
# [mailto:ebi@myseneca.ca;ejhan4@myseneca.ca;flbotos4@myseneca.ca?subject=GAM531 eMail All]
== Enhancement ==
assignment enhancement option<br/>'''Title: Multi-threaded Node Absolute Calculator'''  '''Enhancement Result''' * The frame flow is very smooth due to the transformation of the node chains which are updated concurrently and efficiently during rendering instead of being done sequentially. * The program runs significantly faster. To show improved performance of the Emperor Engine, we used Performance and Diagnostic tool in Visual Studio on a lab computer. It shows that by using multiple threads, performance has improved 10 times. [[File:Node Absolute Calculator Result.jpg]] <br/>'''Enhancement Process'''
Sphere Collision* Class ThreadPool** An object of ''ThreadPool'' class is created at its initialization to accept threads in a vector called ''threads''.** The number of threads depends on the number of the computer core systems, it can be obtained at the run time through std::thread::hardware_concurrency() in ''ThreadPool'' constructor.** The ''threadPool'' is a queue holding jobs which are defined as std::function, and a job is added into ''threadPool ''in ''AddJob'' function.** std::mutex and std::condition_variable is used to lock and unlock threads status and to wake threads respectively. In addition to, two bool type variables (quit and stopped) are flags to decline a new job while the thread pool is shutting down.** In ''Run'' function, the ''threadPool'' dispatches a job to each thread to be finished one by one until all jobs are done orthe program is terminated.View Frustum Culling** The ''ShutDown'' function wakes all threads up and makes them join to be terminated.
== Work Breakdown * To Use the Threads** When the NodeManager performs the function updateValues for each active object from the vector activeObjects, jobs(active objects(Node)’ _updateAbs function) are added to the queue threadPool waiting to calculate node’s absolute transformation.** While adding jobs, one slept thread from the thread pool wakes up, and Progress ==performs the ''Run'' function subsequently.** Before the function ''updateValues'' ends, threads are terminated through the ShutDown function of ''ThreadPool''.  '''Enhancement Description'''<br/>Multi-threading technology is used for calculating node absolute transformation in Emperor Engine which gives a performance enhancement. Every time the engine renders a scene with the nodes (which happens in NodeManager) it works through an iteration using a loop to update the absolute matrix sequentially. By using multiple threads, it works much faster and makes engine work in a more efficient way.<br/>
<br/>
BitBucket Fetching a remote reference<br/>
https://help.github.com/articles/fetching-a-remote/
<Lab workload> <br/>'''Work Load Division''' *Anybody: lab1Member 1(Erquan (EunjuAshley) Bi)<br/>*Ashley: lab2,5,8<br/>* Worked on how many threads are needed and how they are being divided and dispatched form the thread pool to a vector of threads for each core to calculate node absolute transformation. *Member 2 (Eunju: lab3,6,9<br/>Han)*Frank: lab4,7,10<br/>* Managed threads’ running and termination with determined threads and Merged code with Ashley’s work and tested with the client program (Lab8).
Tasks
Assigned
Completed Status
Due date
Lab 1'''Source Code Repository'''Eunju<br/>Yes 2015-09-25Week 6[https://bitbucket.org/Apex_Page/scs_emperor https://bitbucket.org/Apex_Page/scs_emperor]
Lab 2AshleyYes 2015-10-02Week 6<br/>
Lab 3
Eunju
Yes 2015-10-17
Week 6
Submit Proposal / Research Document'''References'''GroupNot YetFriday October 16th, 2015* Multi-Thread Resources
Lab 4<s>Frank<[https:/s> AshleyYes 2015-11/scs.senecac.on.ca/~oop345/pages/content/multi.html Multi-03Week 8Threading of OOP345]
Lab 5AshleyYes 2015[https://solarianprogrammer.com/2011/12/16/cpp-11-03Week 9thread-tutorial/ C++ Multithreading Tutorial]
Lab 6EunjuYes 2015-11-07Week 10[http://www.cplusplus.com/reference/thread/thread/ std::thread]
Lab 7<br/>Frank* BitBucket Fetching a remote reference<br/>NOhttps://help.github.com/articles/fetching-a-remote/<br/>Week 11<br/><br/><s>Sphere Collision or View Frustum Culling</s><br/><s><Sphere Collision Resources> <br/>[https://studiofreya.com/3d-math-and-physics/simple-sphere-sphere-collision-detection-and-collision-response/ SIMPLE SPHERE-SPHERE COLLISION DETECTION AND COLLISION RESPONSE]
Lab 8AshleyNOWeek 12[http://www.miguelcasillas.com/?mcportfolio=collision-detection-c 3D Collision detection (C++) - Miguel Casillas]
Lab 9EunjuNOWeek 12[http://www.gamasutra.com/view/feature/131424/pool_hall_lessons_fast_accurate_.php Pool Hall Lessons: Fast, Accurate Collision Detection Between Circles or Spheres]
Lab 10FrankNOWeek 12[http://gamedev.stackexchange.com/questions/313/what-is-a-good-algorithm-to-detect-collision-between-moving-spheres What is a good algorithm to detect collision between moving spheres?]</s>
OpenGl Lab1== Work Breakdown and Progress ==NO<br/>Week 13'''Project completed'''<br/>Our team Apex, has finished Emperor_Engine Version 1.0. We completed testing it with Directx11 in release mode. There are also all four OpenGL lab codes filled in, and we have tried to re-implement all part OpenGL we need. However, due to the lack of time and some reasons related to materials and textures, this game engine with OpenGL does not work properly.
OpenGL Lab2[[File:apex_version1.png]]NOWeek 13<br/>'''Engine enhancement completed'''<br/>Our team Apex has submit Engine Enhancement assignment with the tag "EngineEnhancement" on the group repository on Nov 27th, 2015.<br/>Please look at the section above in details.
OpenGL Lab3
NO
Week 13
Submit Engine Enhancement'''Lab completed'''Group*Ashley: Lab2, 4, 5, 7, 10, OpenGL lab8 and 9<br/>NO*Eunju: Lab1, 3, 6, 8, 9, OpenGL lab7 and 10<br/>Friday November 27th<br/>'''Lab Workload Plan'''*Anybody: lab1(Eunju)<br/>*Ashley: lab2,5,8<br/>*Eunju: lab3,6, 20159<br/>*<s>Frank: lab4,7,10</s><br/><br/>
{| class="wikitable sortable" border="1" cellpadding="5"|+ ! Tasks !! Assigned !! Completed Status !! Due date|-| Lab 1 || Eunju || Yes 2015-09-25 || 2015-09-25|-| Lab 2 || Ashley || Yes 2015-10-02 || 2015-10-02|-| Lab 3 || Eunju || Yes 2015-10-17 || 2015-10-09|-| Submit Proposal / Research Document || Group|| YES ||Friday October 16th, 2015|-| Lab 4 || Ashley || Yes 2015-11-03(late because of team member set back) || 2015-10-16|-| Lab 5 || Ashley || Yes 2015-11-03 || 2015-11-03|-| Lab 6 || Eunju || Yes 2015-11-07(1 min late because of merging issue) || 2015-11-06|-| Lab 7 || Ashley|| Yes 2015-11-13 || 2015-11-13|-| Lab 8 || Eunju || Yes 2015-11-20 || 2015-11-20|-| Lab 9 || Eunju || Yes 2015-11-26 || 2015-11-27|-| Lab 10 || Ashley || Yes 2015-12-04 ||2015-12-04|-| OpenGL Lab7 || Eunju || Yes Code 2015-12-13 ||2015-11-13|-| OpenGL Lab8 || Ashley || Yes Code 2015-12-13 ||2015-11-20|-| OpenGL Lab9 || Ashley || Yes Code 2015-12-13 ||2015-11-27|-| OpenGL Lab10 || Eunju|| Yes Code 2015-12-13 ||2015-12-04|-| Submit Engine Enhancement|| Group|| YES ||Friday December 4th, 2015|-| Submit Project (completed engine)|| GroupNOThursday || YES ||Sunday December 10th13th, 2015|-
108
edits

Navigation menu