Skip to content
/ PG2 Public
forked from ViktorieSrnkova/PG2

OpenGL project written in C#, made for university course "Computer graphics 2" (TUL 2023)

Notifications You must be signed in to change notification settings

vvoleman/PG2

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Semestrální práce PG2 2023

Struktura

Vše začíná v Game.cs, který nastaví OpenGL, kameru atd. Dále vytvoří scénu. Scény se nacházejí v Scenes/ a dědí ze třídy Scene. Scéna je zodpovědná za vytvoření objektů, které se v ní nacházejí a za nastavení uniformů shaderu.

Meshe se nacházejí v Objects/ ve formátu .obj. Objekt je potřeba registrovat v Settings/Atlas/objects.json, pak je získáváme podle klíče (jména). Objekt načítá materiál .mtl (Materials/), je možné různým ploškám nastavit jiný materiál. Materiál načítá textury podle klíče (Settings/Atlas/textures.json). Pokud klíč existuje, ale textura nelze načíst, aplikuje se global:missing_texture.

Pro manipulaci s objekty ve scéně používáme Figure (/Figure.cs). Ty obsahují model matrix, pozici, velocity atd. a jsou zodpovědné za vykreslení objektu. Pokud chceme custom chování Figure, vytvoříme novou třídu do Entities/ a dědíme z Figure. Příklad Entities/Ghost/*. Pro figure je možné zapnout zobrazení bounding boxů (změní se konstanta Figure.Debug na true)

Projekt obsahuje i základní obsluhu kolizí a gravitace. Ta je implementována v Managers/CollisionManager. Pokud nechceme, aby byla na objekt aplikována gravitace, nastavíme Figure.IsStatic na true.

Ovládání

  • WASD - pohyb
  • Space - nahoru
  • Shift - dolů
  • G - zapnutí/vypnutí ovládání kamery myší
  • Escape - ukončení
  • F - přepnutí fullscreen/windowed screen
  • V - zapnutí/vypnutí VSYNC

Splněné zadání

Essentials

  • 3D GL Core profile + shaders
  • high performance => at least 60 FPS
  • allow VSync control, fullscreen vs. windowed switching
  • event processing (can control camera, object, app behaviour...): mouse (both axes, wheel), keyboard
  • multiple independently moving 3D models, at leats one loaded from file
  • at least three different textures (or subtextures from texture atlas etc.)
  • lighting model, at least 3 lights (1x ambient, 1x directional, 1x reflector: at least one is moving; +possible other lights)
  • correct transparency (at least one transparent object)
    • Chybí

Extras

  • height map textured by height, proper player height coords
  • working collisions
    • pro objekty, které to mají zaplé a pohybují se přes velocity.
  • particles
  • scripting (useful)
  • audio

Autoři

About

OpenGL project written in C#, made for university course "Computer graphics 2" (TUL 2023)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 95.9%
  • GLSL 4.1%