simple game engine using opengl presentation

28
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 1 Sesiunea de Comunicări Ştiinţifice Studenteşti 24.06.22

Upload: gabriel-ivanica

Post on 12-Apr-2016

23 views

Category:

Documents


3 download

DESCRIPTION

Presemtatopm about a simple game engine written in C++ and OpenGL 4.3

TRANSCRIPT

Page 1: Simple Game Engine using OpenGL presentation

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

Page 2: Simple Game Engine using OpenGL presentation

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

Page 3: Simple Game Engine using OpenGL presentation

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

Page 4: Simple Game Engine using OpenGL presentation

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

Page 5: Simple Game Engine using OpenGL presentation

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

Page 6: Simple Game Engine using OpenGL presentation

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

Page 7: Simple Game Engine using OpenGL presentation

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

Page 8: Simple Game Engine using OpenGL presentation

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

Page 9: Simple Game Engine using OpenGL presentation

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

Page 10: Simple Game Engine using OpenGL presentation

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

Page 11: Simple Game Engine using OpenGL presentation

Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

SSAO - Off

27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 11

Page 12: Simple Game Engine using OpenGL presentation

Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

SSAO - On

27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 12

Page 13: Simple Game Engine using OpenGL presentation

Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

SSAO - On

27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 13

Page 14: Simple Game Engine using OpenGL presentation

Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Deferred Lighting

27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 14

Page 15: Simple Game Engine using OpenGL presentation

Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Deferred Lighting

27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 15

Page 16: Simple Game Engine using OpenGL presentation

Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Physics Simulation

27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 16

Page 17: Simple Game Engine using OpenGL presentation

Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Varience Shadow Mapping

27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 17

Page 18: Simple Game Engine using OpenGL presentation

Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Cascaded Shadow Maps

27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 18

Page 19: Simple Game Engine using OpenGL presentation

Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Cascaded Shadow Maps

27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 19

Page 20: Simple Game Engine using OpenGL presentation

Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Light Space AABB

27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 20

Page 21: Simple Game Engine using OpenGL presentation

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

Page 22: Simple Game Engine using OpenGL presentation

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

Page 23: Simple Game Engine using OpenGL presentation

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

Page 24: Simple Game Engine using OpenGL presentation

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

Page 25: Simple Game Engine using OpenGL presentation

Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Editor de scena

27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 25

Page 26: Simple Game Engine using OpenGL presentation

Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Editor de scena

27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 26

Page 27: Simple Game Engine using OpenGL presentation

Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Editor de scena

27.04.23 Sesiunea de Comunicări Ştiinţifice Studenteşti 27

Page 28: Simple Game Engine using OpenGL presentation

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