simple game engine using opengl presentation
DESCRIPTION
Presemtatopm about a simple game engine written in C++ and OpenGL 4.3TRANSCRIPT
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
Game Engine using the modern OpenGL API
Autori: Gabriel Ivanica
Email: [email protected]
Conducători ştiinţifici:
Prof. Dr. Ing. Alin Moldoveanuii
1Sesiunea de Comunicări Ştiinţifice Studenteşti27.04.23
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
Introducere
• Scopul proiectul:– Analiza arhitecturala a unui motor graphic generalizat– Aplicarea unor tehnici de randare si optimizare mai avansate– Biblioteca (C++) ce ofera facilitati de prototipare si implementare a
unor noi module de procesare grafica 3D dar si integrare foarte usoara in cadrul altor proiecte pentru procesare GPU
– Prototip educational pentru intelegerea si dezvoltarea aplicatiilor ce utilizeaza procesare GPU
Sesiunea de Comunicări Ştiinţifice Studenteşti 227.04.23
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
Arhitectura
• Caracteristici de arhitectura– Sistem modular
• Usor de modificat, definit si integrat noi subsisteme
– Orientat pe componente• O component asigura o anumita facilitate (mesh 3D, audio, input,
pozitionare, scriptare, etc)
• GameObject – entitate de baza formata din reunirea mai multor component
• Componente de baza pot fi extinse pentru a oferi noi functionalitati
Sesiunea de Comunicări Ştiinţifice Studenteşti 327.04.23
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
Arhitectura
• Sistem modular pentru managementul resurselor
• Aproximativ 20 de module unice fara sau cu foarte putine interdependinte intre ele
27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 4
ResourceManagerRenderingSystem
WindowManager
AudioManager
EventSystem
InputSystem
TextureManager
FontManagerSceneManager
ShaderManagerPhysicsManager
ConfigManager
MenuSystemDebugManager
Core-Engine
Manager
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
Arhitectura - Resurse
• Managementul resurselor– Fisiere de configurare XML– Resurse
• Obiecte 3D, fisiere audio, preconfigurari de obiecte
– Scena– Input
• Legaturile dintre evenimente si cobinatie de taste sau mouse
– Meniu• Structura ierarhica cu intrarile de meniu si actiunile acestora
– Shadere
27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 5
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
• Entitatea de baza in scena - GameObject
Arhitectura - Componente
27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 6
GameObject
AABB
AudioSource Mesh
3D Mesh
Skinned Mesh
Renderer
Transform Physics
Text
Shader
Input
AudioStream
SoundFX
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
• Sistemul de comunicare– Componentele sunt independente si nu dețin nici o informatie
despre existenta altor componente– Este necesară o modalitate de comunicarea intre componente,
subsisteme si module– Toate obiectele au aceeasi baza: “Object”
Arhitectura - Comunicare
27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 7
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
Arhitectura - Comunicare
27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 8
trimite pe canalul N messajul X
Obiect BObiect A
EventSystem
asculta pe canalul N
OnEvent (Message X)
Metoda Publish-Subscribe
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
Tehnici de randare
27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 9
• Deferred rendering
• Cascaded Shadow Maps (lumina directionala)
• Variance Shadow Mapping (lumina punctiforma si de tip spot)
• Randare de text cu distance field
• Screen Space Ambient Occlusion
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
Screen Space Ambient Occlusion
27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 10
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
SSAO - Off
27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 11
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
SSAO - On
27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 12
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
SSAO - On
27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 13
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
Deferred Lighting
27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 14
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
Deferred Lighting
27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 15
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
Physics Simulation
27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 16
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
Varience Shadow Mapping
27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 17
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
Cascaded Shadow Maps
27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 18
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
Cascaded Shadow Maps
27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 19
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
Light Space AABB
27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 20
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
Frustum Light Space AABB
27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 21
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
Frustum Light Space AABB
27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 22
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
Frustum Light Space Culling
27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 23
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
Frustum Light Space Culling
27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 24
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
Editor de scena
27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 25
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
Editor de scena
27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 26
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
Editor de scena
27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 27
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
Concluzii
27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 28
• S-a realizat un motor graphic general ce folosete tehnici de randare si optimizare peste OpenGL v4.0+
• Biblioteca foarte usor de utilizat in cadrul altor proiecte pentru procesare GPU
– Integrare Kinect si LeapMotion, procesare de imagini pe GPU, Optimizarea unor algoritmi pentru GPU, teste sunete 3D binaurale (HRTF)
• Model educational bun pentru intelegerea programarii pe GPU– OpenSource: https://github.com/ReDEnergy/GameEngine