tristandeborde / rt_vox Goto Github PK
View Code? Open in Web Editor NEWA voxel-based game engine, with voxel-space raytracing
A voxel-based game engine, with voxel-space raytracing
At the moment, the compute shader uses ugly, ugly, hard-coded object data to perform the raycasting on. This issue aims at integrating StanEpp's buffering of scene data to GPU using OpenGL.
Checklist:
We need to write a shell/python script to automate download and installation of:
From now on, we only want to spawn Cube objects. This will allow us to delete min and max vars in Cube Object. To do this, we have to replace huge and thin box that is used as ground, with a huge cube
We want to add the Octree voxel-space structure to our code.
We need:
We want the player to be able to reset all the cubes to their initial position in the scene.
Rendering was faulty.
The problem was located in the rt.comp shader => center (cube.transMat[3]) was not correctly taken into account.
We want the player to be able to create one object by sticking two cubes together. We are not using flexible joints for now.
Todo:
The current SceneManager class makes no sense.
We need a proper abstraction to add cubes, in bullet physics, and in rendering pipeline.
To do:
The goal is to integrate Bullet to use its collision and gravity handling. In the next phases we will only keep the relevant functions (OBox-OBox collision, dynamics, etc.).
To check behaviour, we also need to add a shoot-cubes function, on space bar press.
Checklist:
We want to "rasterize each object into the big world texture continuously" ๐จ
We need:
We want each cube to be composed of a different material. This material will have an impact on rendering, and later on in development, on physics and gameplay.
We want to make our raytracer compute intersections with cubes instead of spheres.
We need:
- Easy way is with AABB, since Octree's voxels are axis-aligned = https://www.scratchapixel.com/lessons/3d-basic-rendering/minimal-ray-tracer-rendering-simple-shapes/ray-box-intersection
- But for the physics and rasterization, the gamr voxels are OBB (not axis aligned) = http://www.opengl-tutorial.org/miscellaneous/clicking-on-objects/picking-with-custom-ray-obb-function/
Scratchapixel's raytracer writes the output to the disk. We want to display it in an OpenGL window.
Ideas:
In order to let the player know which plane he/she is "focused on", we need to light it up.
To do this, we need the GPU to have one material per face for display.
To do:
Our raycaster doesn't compute light bounces ! We need to modify our compute shader to compute illumination etc. Source: https://github.com/StanEpp/OpenGL_Raytracing/blob/master/shader/cs.glsl
Todo:
We need to rewrite the compute shader to properly use the transMat attribute of the Cube object.
For this, we have to:
The current mouse and callbacks do not work in FPS-mode.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.