Skip to content

3D engine made from scratch ⚙️

License

Notifications You must be signed in to change notification settings

mateuszstompor/ngin

Repository files navigation

ngin

Requirements

macOS

  • CMake
  • clang (tested on clang-900.0.39.2)

Windows

  • CMake
  • Visual Studio compiler

iOS

  • XCode 9+

Installation

Project works on both Windows and macOS platforms. Use cmake in order to compile and run. macOS version can be opened as xcode project from ngin/example_projects/mac/ngin_mac.xcodeproj as well

20.05.2017 Transparency

16.04.2018 Spot lights shadow mapping with depth linearization

POV in the corner

15.04.2018 Directional lights shadow mapping with PCF

09.04.2018 Orthographic cameara

09.04.2018 Frustum culling

Removes models which aren't visible from point of view of camera from rendering pipeline. I marked using red color vector which describes direction in which camera looks to help you understand how does it work

30.03.2018 Normal mapping

29.03.2018 Current pipeline

29.03.2018 Vignette

24.03.2018 Gaussian blur, Bloom

24.03.2018 HDR + Adaptive tone mapping

20.03.2018 Blinn-Phong specular shading

Another variation of phong lighting model

19.03.2018 Multiple resolutions

It could increase performance if there are many objects placed on the scene. I rendered picture which is placed below in ultra low resolution as an instance

19.03.2018 Light attenuation

In other words it means that amount of light given by source decreases with rising distance

17.03.2018 Gouraud shading

Provides great performance but looks rather awful

16.03.2018 Multiple light sources/renderers integration

In order to generate frame which you can see below I had to combine two rendering techniques - forward and deferred rendering. Moreover I implemented point, directional and spot lights. They can be used simultaneously

15.03.2018 Simple UV Texture mapping

13.03.2018 Assimp materials and models loading

I have integrated project with assimp library. It enables engine to load models, their materials and textures. You can see that there is one additional image comparing to the post from the previous day. It represents specular component of material

12.03.2018 Basics of deferred & forward renderer have been implemented

In the picture below you can see process of rendering. In the first one normal vectors, colors and positions of objects in world coordinates are rendered into three separate textures. Then, in the second pass these textures are used to calculate influence of lights placed on the scene and final color of each pixel

02.03.2018 Development process start

I have created initial version of class diagram for the project. It has been constantly updated since the beginning of development. I want to avoid major changes and in my opinion UML diagrams are the best way of doing it properly