A 3D Rendering Engine

iver ab0ba019b5 erck now shows the name of OpenCL error code 7 months ago
.vscode 22d2157df5 added CPU support (and CPU fallback) 7 months ago
builds ab0ba019b5 erck now shows the name of OpenCL error code 7 months ago
objects 91081b3098 added rotation! 7 months ago
src ab0ba019b5 erck now shows the name of OpenCL error code 7 months ago
textures 32e2939770 fixed textures 7 months ago
.gitignore de55870f6e added readme & gitignore 8 months ago
Makefile 57f830aa7f really strange visual bug, looks cool 7 months ago
build 5e7402cb52 added helper scripts 7 months ago
dbg af060b7ad5 added obj parser and basic object functions/variables 8 months ago
push bdc35eadbc removed filetype of push.sh 8 months ago
readme.md 89d3ff9a0f updated todo list 7 months ago
run af060b7ad5 added obj parser and basic object functions/variables 8 months ago
stat c70e598be4 cleaned up some code 8 months ago
todo 5e7402cb52 added helper scripts 7 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?)