NuroDev / vision

⚗️ An experimental graphics research engine
MIT License
2 stars 0 forks source link
3d 3d-graphics directx directx-11 directx11 experimental graphics graphics-engine graphics-programming portfolio
Canvas [![License](https://img.shields.io/badge/%20%F0%9F%93%84%20MIT-3287ef.svg?longCache=true&style=for-the-badge)](https://opensource.org/licenses/MIT) [![Gitmoji](https://img.shields.io/badge/-%20%F0%9F%98%9C-FFDD67.svg?longCache=true&style=for-the-badge)](https://gitmoji.carloscuesta.me/)

✨ Features

Normal Mapping #### Screenshot Normal Mapping #### Video Video
Parallax Mapping #### Screenshot Parallax Mapping #### Video Video
Post-processing #### Blur Post-processing - Blur #### Chromatic Aberration Post-processing - Chromatic Aberration #### Gaussian Blur Post-processing - Gaussian Blur #### Color Space Post-processing - Color Space #### Color Tint Post-processing - Color Tint - Gameboy Post-processing - Color Tint - Mono Post-processing - Color Tint - Inverted Post-processing - Color Tint - Sepia #### Pixelation Post-processing - Pixelation #### Vignette Post-processing - Vignette #### Video Video
Terrain Generation #### Video Video
Skeletal Animation / Kinematics (WIP) #### Model Loading Model Loading

❓ About

What is this? Vision is an experimental graphics research framework that was primarily began development during my 4th and final year of university to learn some more advanced graphical rendering techniques (In the case of Vision, primarily using DirectX11). In an effort to continue learning some more advanced graphical rendering techniques, I have made some minor modifications to the original project and open sourced it so others are able to both contribute towards the project and also learn from it.
Why? When the project first began development towards the end of 2019, I began to quickly discover that the number of resources available to learn some more advanced graphics rendering techniques were few and far between. As such I wanted to help try and give back and help others who may find themselves in a position that was similar to mine. With further development of the project anyone should be able to use this project to understand multiple graphical rendering techniques without having to reference a 10+ year old book. When development of the project has progressed to a relatively stable point, work will begin on creating written documention for both using the project, along with in-depth analysis of all of the projects features and how each of them work. For example, a write up on normal mapping, how it works and why it is used.

🔨 Development

The current state of the engine means the only available build platform currently is Window (Win32).

📋 Requirements

To setup and use the project you will need to have the following tools installed:

⬇️ Installation

Clone the repository:

git clone --recursive https://github.com/nurodev/vision.git

🔧 Configuring

To configure the project there are 2 key steps that need to be done:

Configure assimp To setup assimp, simply run the [`configure.cmd`](./configure.cmd) script located in the root of the repository. With the script run you shold now be able to open the project in Visual Studio fine.
Project references The final step required is to update the project references to use the newly generated assimp project configuration. Every time the previous "**Configure Assimp**" step is run, Visual Studio will generate a new project ID for `assimp`. To fix this, every time the script is run, open the `vision` project's "References" drop down from the solution explorer. Right-click and remove the current `assimp` reference, followed by right clicking "References" add re-adding the `assimp` project. This will add the `assimp` project as a build dependency.

🚑 Support

If you are having any issues with the project, either getting it up and running or using the project itself, feel free to open an issue.

Manually configuring assimp A common issue when using vision is setting up `assimp`, a core project dependency. If the script to configure `assimp` fails, I recommend this great tutorial by [Tomasz Gałaj](https://github.com/Shot511) on how to setup `assimp` for an OpenGL project: [shot511.github.io/how-to-setup-opengl-project-with-cmake](https://shot511.github.io/2018-05-29-how-to-setup-opengl-project-with-cmake).
Manually compiling assimp Another common issue, especially when first compiling the project, can be that an error will be thrown due to either `assimp.lib` or `assimp.dll` cannot be found. This error is most commonly thrown when the `assimp` project has not been built and as such the compiled artifacts could not be copied to the build directory for `vision`. To fix this, you can manually build `assimp`. To do this right click the `assimp` project and click "Build".

❤️ Credits

All humanoid models (.fbx) models were provided by Mixamo.

All other assets (Texture, models, etc) were provided by my academic institution.

📄 License

MIT © Ben Dixon