Giter Club home page Giter Club logo

rt_vox's People

Contributors

tristandeborde avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

rt_vox's Issues

Buffer scene data to shader

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:

  • Integrate StanEpp's SceneManager class
  • Debug corrupted cube struct variable data

Replace ground plate with on movable cube

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

Octree Search

We want to add the Octree voxel-space structure to our code.
We need:

  • Octree search function,
  • include it into the raytracer's render function

Joints: stick 2 cubes to make 1 object

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:

  • Read this discussion on constraint and compound objects
  • Implement FixedConstraint (i.e. keep the cubes and stick them) ?

Create new SceneManager class

The current SceneManager class makes no sense.
We need a proper abstraction to add cubes, in bullet physics, and in rendering pipeline.
To do:

  • Rename the SceneManager class into RenderingManager, PhysicsEngine into PhysicsManager, and create SceneManager class
  • Add AddCube class, calling methods from PhysicsManager & RenderingManager

Add collisions for single cubes

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:

  • Add Bullet: single cube collisions
  • shoot_cubes

Octree update

We want to "rasterize each object into the big world texture continuously" ๐Ÿ˜จ
We need:

  • Create a v0 using dumb CPU intersection functions
  • Implement a fancier GPU version from Nvidia's literature

Create different "game materials"

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.

From spheres to cubes

We want to make our raytracer compute intersections with cubes instead of spheres.
We need:

  • A cube class (there's a sphere class from the code we can inspire ourselves from)
  • To modify the render function to compute intersections with cubes
  • To correct the straight line artifact on the output image!

OpenGL rayCasting

Scratchapixel's raytracer writes the output to the disk. We want to display it in an OpenGL window.
Ideas:

  • Adapt compute shader for CPP
  • Debug weird colors output
  • Resolve fisheye bug: no eyeray interpolation in shader
  • Replace AABB cube check by oriented cube intersection check

One material per plane

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:

  • In CPU, raycast starting only from the center pixel, and check with all boxes. Change this box's planes materials.
  • Pass 6 materials in Object struct to GPU
  • Modify return value of IntersectPlanes in GPU to get plane id in intersection, and choose material based on this plane id

Rewrite Shader to properly use transMat

We need to rewrite the compute shader to properly use the transMat attribute of the Cube object.
For this, we have to:

  • Replace min and max attributes in cube object, with halfSize attributes
  • Use 4th vector of transMat as the cube's position

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.