All Projects → nickgildea → Leven

nickgildea / Leven

Licence: unlicense
Complete source for my experimental voxel engine

Projects that are alternatives of or similar to Leven

Silk.net
The high-speed OpenAL, OpenGL, Vulkan, and GLFW bindings library your mother warned you about.
Stars: ✭ 534 (+575.95%)
Mutual labels:  opengl, opencl
Anothercraft
A Minecraft clone demo
Stars: ✭ 130 (+64.56%)
Mutual labels:  opengl, voxels
Gpu Viewer
A front-end to glxinfo, vulkaninfo, clinfo and es2_info - Linux
Stars: ✭ 129 (+63.29%)
Mutual labels:  opengl, opencl
Opentk
The Open Toolkit library is a fast, low-level C# wrapper for OpenGL, OpenAL & OpenCL. It also includes windowing, mouse, keyboard and joystick input and a robust and fast math library, giving you everything you need to write your own renderer or game engine. OpenTK can be used standalone or inside a GUI on Windows, Linux, Mac.
Stars: ✭ 2,284 (+2791.14%)
Mutual labels:  opengl, opencl
Lwjgl3
LWJGL is a Java library that enables cross-platform access to popular native APIs useful in the development of graphics (OpenGL, Vulkan), audio (OpenAL), parallel computing (OpenCL, CUDA) and XR (OpenVR, LibOVR) applications.
Stars: ✭ 3,540 (+4381.01%)
Mutual labels:  opengl, opencl
Inviwo
Inviwo - Interactive Visualization Workshop
Stars: ✭ 199 (+151.9%)
Mutual labels:  opengl, opencl
Gpu performance api
GPU Performance API for AMD GPUs
Stars: ✭ 170 (+115.19%)
Mutual labels:  opengl, opencl
Rspirv
Rust implementation of SPIR-V module processing functionalities
Stars: ✭ 332 (+320.25%)
Mutual labels:  opengl, opencl
Pyopencl
OpenCL integration for Python, plus shiny features
Stars: ✭ 790 (+900%)
Mutual labels:  opengl, opencl
Vft
💥❄️🔨 VFX Fractal Toolkit
Stars: ✭ 69 (-12.66%)
Mutual labels:  opencl
Compute
A C++ GPU Computing Library for OpenCL
Stars: ✭ 1,192 (+1408.86%)
Mutual labels:  opencl
Facevfx
Mapping real-time visual effect to human face.
Stars: ✭ 68 (-13.92%)
Mutual labels:  opengl
Learn Opengl Golang
Learn OpenGL Tutorials in Go
Stars: ✭ 69 (-12.66%)
Mutual labels:  opengl
Craft
A simple Minecraft clone written in C using modern OpenGL (shaders).
Stars: ✭ 8,957 (+11237.97%)
Mutual labels:  opengl
Pharaohstroy
A maplestory IDE which can develop the multi-platform maplestory game
Stars: ✭ 69 (-12.66%)
Mutual labels:  opengl
Soldat
Soldat is a unique 2D (side-view) multiplayer action game
Stars: ✭ 1,199 (+1417.72%)
Mutual labels:  opengl
Lgf
Game development framework for Lua
Stars: ✭ 68 (-13.92%)
Mutual labels:  opengl
Graphics Algorithm
3D图形学算法Code。包括软渲染、光线追踪、PBR等等~
Stars: ✭ 67 (-15.19%)
Mutual labels:  opengl
Spectaculum
A spectacular view widget for visual media content on Android
Stars: ✭ 78 (-1.27%)
Mutual labels:  opengl
Cekirdekler
Multi-device OpenCL kernel load balancer and pipeliner API for C#. Uses shared-distributed memory model to keep GPUs updated fast while using same kernel on all devices(for simplicity).
Stars: ✭ 76 (-3.8%)
Mutual labels:  opencl

leven

Complete source for my experimental voxel engine which features in posts on my blog: http://ngildea.blogspot.co.uk/

This is a dump of the project in its current state rather than a real release of a project. I had for a long time planned to make some fixes and updates and do a "proper" release but that doesn't seem like it will ever happen so instead I've just uploaded all the code as it exists now.

Build Instructions

A VS2013 solution and project file are supplied. These include hardcoded paths to the installation dirs of the project dependencies on my machine. The dependencies are:

  • Remotery (disabled by default but there are manually placed instrumentations)
  • Bullet Physics 2.83.6
  • Dear ImGui
  • Catch unit testing library (only required for the unit test configurations)
  • The OpenCL SDK for your dev machine (e.g. NVidia CUDA/OpenCL SDK)
  • GLEW 1.13.0
  • GLM 0.9.3
  • SDL 2.0.3

It's highly likely that versions other than those specified will also work.

Prebuilt

A prebuilt Win64 executable along with the dependencies can be downloaded here: https://github.com/nickgildea/leven/blob/master/prebuilt-win64.zip

Features

The main point of the project was to investigate building a chunked terrain world using Dual Contouring. This more or less works, making use of my method for joining the chunk meshes described here: http://ngildea.blogspot.co.uk/2014/09/dual-contouring-chunked-terrain.html

The main chunk meshes are generated via OpenCL as described (more or less, there are some changes) here: http://ngildea.blogspot.co.uk/2015/06/dual-contouring-with-opencl.html

I've also added additional features like Bullet Physics integration so the user can walk around the terrains and spawn interactive objects.

Problems

There are a few problems I never got around to fixing.

The main problem is caused by the technologies used to implement the engine. Rendering is implemented via OpenGL and the GPGPU voxel component using OpenCL. On the face of things you might think these two techs work well together. In practise I found the oppposite to be true: the interop between the two APIs requires the thread performing the rendering to block while the GPU data is transferred from one API's ownership to the other. I found this to be unworkable and instead the following happens when a mesh is created:

  • the mesh data is generated on the GPU via OpenCL
  • the data is then downloaded into main memory
  • the mesh data is then reuploaded to the GPU via OpenGL Obviously this a less than optimal solution. Additionally the mesh generation in OpenCL can occasionally starve the OpenGL operations of execution resources and hitches will occur. The solution to these issues would be to use the Vulkan API, I think.

Aside from that there are problems which I never fixed since it was just a personal project (I was the only user and so didn't particularly care..) like no overall memory management solution and things like fixed-size global arrays used instead which will occasionally become full, causing crashes.

Contact

If you have an questions you can reach me by email: nick dot gildea at gmail or @ngildea85 on twitter.

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].