All Projects → avilapa → Vxr

avilapa / Vxr

Licence: mit
General purpose engine written in C++ with emphasis on materials rendering (PBR, clear coat, anisotropy, iridescence)

Programming Languages

procedural
45 projects

Projects that are alternatives of or similar to Vxr

Magnum
Lightweight and modular C++11 graphics middleware for games and data visualization
Stars: ✭ 3,728 (+1959.67%)
Mutual labels:  game-engine, gamedev, opengl, graphics, 3d, glfw
Overload
3D Game engine with editor
Stars: ✭ 335 (+85.08%)
Mutual labels:  game-engine, gamedev, opengl, graphics, physically-based-rendering, imgui
Bgfx
Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.
Stars: ✭ 10,252 (+5564.09%)
Mutual labels:  gamedev, engine, opengl, graphics, rendering, glfw
Rabbittoolbox
🤸🏾‍♀️👗开源的动画渲染软件,提倡以简单、易用,高质量的物理演算以及渲染质量和性能,为喜爱二次元动画的用户降低视频制作门槛
Stars: ✭ 309 (+70.72%)
Mutual labels:  game-engine, gamedev, opengl, graphics-programming, glfw
Bansheeengine
Modern C++14 game engine with Vulkan support, fully featured editor and C# scripting
Stars: ✭ 2,906 (+1505.52%)
Mutual labels:  game-engine, gamedev, engine, opengl, graphics
Ava
A tiny unlicensed 3D game engine in C; with C++ and Lua interfaces. Written in 32 random ̷d̷a̷y̷s̷ m̷o̷n̷t̷h̷s̷ years.
Stars: ✭ 287 (+58.56%)
Mutual labels:  game-engine, gamedev, opengl, 3d, imgui
3d Game Shaders For Beginners
🎮 A step-by-step guide to implementing SSAO, depth of field, lighting, normal mapping, and more for your 3D game.
Stars: ✭ 11,698 (+6362.98%)
Mutual labels:  gamedev, opengl, graphics, 3d, graphics-programming
Renderer
A shader-based software renderer written from scratch in C89
Stars: ✭ 1,366 (+654.7%)
Mutual labels:  graphics, 3d, rendering, graphics-programming, pbr
Renderhelp
⚡️ 可编程渲染管线实现,帮助初学者学习渲染
Stars: ✭ 494 (+172.93%)
Mutual labels:  engine, opengl, graphics, 3d, rendering
Lighthouse2
Lighthouse 2 framework for real-time ray tracing
Stars: ✭ 542 (+199.45%)
Mutual labels:  game-engine, gamedev, opengl, rendering, glfw
Tinyrenderer
A brief computer graphics / rendering course
Stars: ✭ 11,776 (+6406.08%)
Mutual labels:  engine, opengl, graphics, 3d, rendering
Tinyraycaster
486 lines of C++: old-school FPS in a weekend
Stars: ✭ 1,383 (+664.09%)
Mutual labels:  engine, opengl, graphics, 3d, rendering
Ncine
A cross-platform 2D game engine
Stars: ✭ 372 (+105.52%)
Mutual labels:  game-engine, gamedev, opengl, rendering, imgui
Cpp 3d Game Tutorial Series
C++ 3D Game Tutorial Series is a YouTube tutorial series, whose purpose is to help all those who want to take their first steps in the game development from scratch.
Stars: ✭ 400 (+120.99%)
Mutual labels:  game-engine, gamedev, graphics, 3d, graphics-programming
Physics3d
A 3D physics engine
Stars: ✭ 101 (-44.2%)
Mutual labels:  engine, opengl, graphics, rendering, glfw
Diligentengine
A modern cross-platform low-level graphics library and rendering framework
Stars: ✭ 2,142 (+1083.43%)
Mutual labels:  gamedev, opengl, rendering, graphics-programming, pbr
Helixjs
A Javascript 3D game engine.
Stars: ✭ 84 (-53.59%)
Mutual labels:  game-engine, 3d, rendering, pbr
Innocenceengine
Cross-platform modern game engine.
Stars: ✭ 149 (-17.68%)
Mutual labels:  game-engine, engine, opengl, rendering
Tinykaboom
A brief computer graphics / rendering course
Stars: ✭ 2,077 (+1047.51%)
Mutual labels:  graphics, 3d, rendering, graphics-programming
Flycube
Graphics API wrapper is written in C++ on top of Directx 12 and Vulkan. Provides main features including ray tracing.
Stars: ✭ 78 (-56.91%)
Mutual labels:  gamedev, graphics, rendering, graphics-programming

vxr engine logo version 0.7.0

What is vxr?

vxr is a project that emerged from the desire to build a general purpose rendering tool that I could use to implement anything I was curious about or wanted to learn about.

As it stands now, it is a multithreaded 3D game development engine written in C++ and oriented to support different rendering backends. It has its own PBR material model based on the standard microfacet BRDF, but extended to support other visual properties of materials such as iridescence or clear coat. The engine has two different APIs for development:

  • A lower level API based on render display list commands that can be used to build small but efficient applications.
  • A higher level API built on top of the lower level one, which abstracts it to provide a rendering agnostic and component oriented API.

Project webpage: https://avilapa.github.io/vxr-engine/

material model Material Model (from left to right): std, std + clear coat, std + iridescence, std + iridescence + clear coat.

Building

[A vs2017 + opengl Solution is provided by default]

This project uses GENie.lua to create the project solution. Open a CMD in the root directory and execute the following commands to re-create a solution:

cd project
..\tools\genie [parameters] <vs2017|vs2015>

The solution will be located in project/vs/VXR-Engine.sln.

A list of example projects are provided within the solution to showcase the engine's capabilities. To create a new project, add a call to the function 'makeProject("yourProjectName");' at the end of the file project/genie.lua and build.

Parameters

  • --gl: Build with OpenGL backend.
  • --debug_tracing: Build with minitrace and enable trace.json file creation.
  • --no-console: Do not launch a console with the graphic window.
  • --no-threading: Launch rendering on the same thread as the logic + no async loading tasks.
  • --no-ui: Disable all the UI (will still compile ImGui though).

Examples

01-HelloWorld

01-HelloWorld

02-Instancing

02-Instancing

03-Framebuffers

03-Framebuffers

04-Mesh

04-Mesh

05-Materials

05-Material

06-Procedural

06-Procedural

07-Physics

07-Physics

Features

  • Multithreaded agnostical graphics API.
  • Command Based Rendering, allowing to build the render commands in advance to be run in a separate thread.
  • GameObjects with the following components currently implemented (each component is controlled and updated by a specific system):
    • Transform: Containing the object's transformation and position in the scene's hierarchy.
      • Quaternions!
    • Mesh Filter: Reference to the mesh the object will be rendered with.
    • Renderer: Reference to the Material Instance the object will be rendered with.
      • Current Materials:
        • Standard Lit (PBR)
          • Microfacet BRDF + Thin Film Iridescence + Clear Coat + Anisotropy
        • Unlit
        • Wireframe
        • Skybox
        • Screen
        • Planet (only in the PlanetEditor example!)
        • Add your own!
    • Rigidbody: Adds rigidbody physics to an object and can be applied forces and velocities.
    • Collider: Adds a particular shape to the object to detect collisions with other rigidbodies with a collision shape.
    • Light: Turns the object into a source of light.
      • Directional and Punctual lights supported.
    • Image Based Light: Calculates irradiance of the scene to be used by all PBR materials in the engine.
      • Takes either a cubemap texture or a 2D equirectangular texture.
    • Camera: Adds to an object all the functionality needed to render from its point of view with its unique parameters.
      • Camera Composer: Organizes all post-processing needed for any specific camera, and handles updates automatically.
        • Postprocessing Materials:
          • One-Pass-Filters: Grayscale, Negative.
    • Custom Component: Similar to Unity's MonoBehaviour, allows the user to create custom reusable components with specific behaviours.
  • Model loading (.obj).
  • Lazy Loading: All resources are loaded in different threads to prevent the engine from freezing.
  • UI Editor.

Support

Platforms

  • Windows

Backends

  • OpenGL
  • WIP: DirectX3D 11

Dependencies

The project includes some 3rd party dependencies, but not all of them are necessary (e.g. you won't need GLEW if you generate the project to use DirectX3D 11, you won't need minitrace if you don't want trace debugging, etc).

Optional Dependencies

  • glew - If you are building with OpenGL (--gl)
  • glfw - If you are building with OpenGL (--gl)
  • minitrace - If you are building with debug tracing (--debug-tracing)
  • px_sched.h - If you are not building with single threading (--no-threading)

Contributing

This is the first project I have made open source, therefore I am wide open to feedback from the community and contributions :^)

Acknowledgements

MIT License

Contact

Mail: [email protected]

Twitter: https://twitter.com/97torvic

Portfolio: https://avilapa.github.io/portfolio

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].