A 3D Rendering Engine

iver 06bc72170d updated todo list 10 months ago
.vscode 22d2157df5 added CPU support (and CPU fallback) 10 months ago
builds 48ce7ab704 fixed bug where local_size_2d was calculated incorrectly 10 months ago
objects 91081b3098 added rotation! 10 months ago
src d71c8fc9cd fixed perspective bug in master kernel 10 months ago
textures 0e25c4f966 fixed textures 10 months ago
.gitignore de55870f6e added readme & gitignore 11 months ago
Makefile 57f830aa7f really strange visual bug, looks cool 10 months ago
build 5e7402cb52 added helper scripts 10 months ago
dbg af060b7ad5 added obj parser and basic object functions/variables 11 months ago
push bdc35eadbc removed filetype of push.sh 11 months ago
readme.md 06bc72170d updated todo list 10 months ago
run af060b7ad5 added obj parser and basic object functions/variables 11 months ago
stat c70e598be4 cleaned up some code 11 months ago
todo 5e7402cb52 added helper scripts 10 months ago

readme.md

RasterIver, a GPU Accelerated Rendering Engine

animated

RasterIver?

Rasterizer + Iver = RasterIver

Requirements

To Run

  • SDL2
  • SDL2 TTF
  • OpenCL Runtimes

    To Build

  • SDL2

  • SDL2 TTF

  • OpenCL Developer Libraries

  • ROCm if using AMD

  • CUDA if using NVIDIA

Todo

  • make todo list
  • function to request a mesh. I.E., request a number of polygons/verticies (maybe from presets? planes, cubes, idk) and be able to edit them on the fly. Useful for dynamic terrain or something like that
  • texture support
  • fix interpolation issue with UV maps (and probably normals and Z values too)
  • fix horribly named variables in request object functions
  • include rasteriver.h in the kernels for better code updatability
  • make kernels not be in strings (read the file at compile time and put it inside rasteriver.c as a string? put it in a header like how it is now?)
  • change all iterator variables in for loops to have "i_" before it's variable name
  • add descriptions to RI functions
  • make a function call stack to review where errors happen or just debug stuff
  • optimize object memory usage by not loading object data multiple times when the same object is requested
  • add checks for invalid/nonexistant files (files like object files & texture files)
  • perspective
  • euler rotation
  • quaternion rotation
  • sheer transform (and other fancy ones?)
  • simple lighting using normals
  • complex lighting using rays for shadows and stuff
  • polygon clipping by subdividing
  • flag for using CPU instead of GPU
  • actually acurate FPS cap
  • make a function to return a pointer to the last SDL_event (or copy it doesnt really matter)
  • make an option for multiple cameras, or defining a camera. I want to be able to write it to a "texture" in menory and have objects use it as their texture
  • add materials/shaders that define unlit, lit, textures, and whatever else. Maybe have shader kernels? I have no idea how you would implement that but it sounds cool
  • make the returned array from RI_RequestObjects easier to write to I.E., not a 1D array. Maybe have it so you could do objects[obj #].x_position or something like that. I wonder if I could implement functions with that, too, so you could do objects.get_first_element()
  • object higherarchies (maybe not. This is moving towards game engine territory. Once I get this into a working release, I'll start working on a game engine)
  • deltaTime variable or function. (function that returns pointer? function that returns the last deltatime value?)