summaryrefslogtreecommitdiff
path: root/fb.c
Commit message (Collapse)AuthorAgeFilesLines
* a better turbopool.rodri2024-09-171-2/+5
|
* fb: do a better greyscale to color raster conversion.rodri2024-09-141-4/+23
|
* fb: little memdrawing optimization.rodri2024-09-121-1/+4
|
* change the raster format to RGBA32. draw to any image format. clean up.rodri2024-09-111-14/+88
| | | | | | | | | | | | | | | | got rid of the bullshit dance between XRGB32 and RGBA32, now all rasters are RGBA32 and premultiply alpha before loading up an image and drawing over the destination. this lets the user compose their own scenes with correct transparency. no more mediocre clearcolor. as a consequence drawing got slower, but if i get the turbo drawing pool working properly that should go away. textures also take alpha pre-multiplied channels into account, dividing them when sampling, so loading transparent textures will show the correct colors.
* fix a use-after-free when profiling rasterizer times.rodri2024-09-101-2/+65
| | | | | | | | | | this commit also includes the turbo drawing pool. the experiment was successful in getting reasonable drawing times to a fullhd image, but the process causes glitches when moving the objects around, which is unacceptable. it's been commented out for now.
* fb: draw FLOAT32 rasters in greyscale color.rodri2024-08-311-23/+39
|
* implement a general raster interface for the framebuffers.rodri2024-08-291-66/+229
| | | | | | | | | | | | | | | got a bit tired of having to add a ulong *buf every time i needed to get some data out of the shaders, so i made it possible to create as many extra buffers as needed, which then can be addressed from the fragment shader and drawn using the same drawing routines that were used for the color buffer. these so called Rasters are very similar to the OpenGL FBOs, in case you are familiar, but we address them by strings instead of numbers. and they can also be used as textures if you create one (see alloctexture) and then memdraw into it after every shot.
* fb: a better clipped drawing procedure.rodri2024-08-191-14/+12
|
* unify drawing routines and add clipped fb drawing support.rodri2024-08-171-17/+53
| | | | | | now changing the viewport offset will correctly show the portion of the framebuffer that's visible, including support for upscaled views.
* fix FPINVAL error. knob for fb clear color. general improvements.rodri2024-08-111-3/+3
|
* experimental A-buffer implementation.rodri2024-08-101-0/+11
| | | | | | | | | very simple, without anti-aliasing, made for getting OIT (order independent transparency) rendering of arbitrary objects. also added switches for blending, depth testing and the A-buffer to the camera.
* offset fb during drawing based on viewport config. move OBJ-related ↵rodri2024-08-071-10/+10
| | | | procedures to its own unit.
* make the depth buffer 32-bit.rodri2024-08-041-2/+2
|
* fb: fix the destination drawing rectangle.rodri2024-08-021-2/+2
|
* add a viewport upscale filters interface.rodri2024-08-021-36/+79
|
* reduce the volume of Camera.times records. clean up.rodri2024-07-201-18/+16
|
* implement pixel art upscaling filters scale[23]x. tidy up some code.rodri2024-07-161-4/+78
|
* initial viewport upscaling support.rodri2024-07-141-0/+50
|
* fix the barycoords routine to avoid reporting false degenerates.rodri2024-06-141-0/+14
| | | | added a normals buffer for debugging.
* replace the Memimage color buffer with a ulong* one. some fixes.rodri2024-06-131-5/+5
|
* replace the Framebufctl's Lock with a QLock.rodri2024-05-231-6/+6
| | | | this provides fair scheduling, minimizing contention.
* replace the Triangle with a general purpose Primitive.rodri2024-04-161-4/+4
| | | | | this is only an structural replacement and doesn't add support for the other primitive types.
* implement a fully concurrent pipeline based on tiles.rodri2024-04-151-9/+12
| | | | | - got rid of the z-buffer lock to avoid contention. - little improvements to fb.c
* simplify the job scheduler. correct two mistakes regarding the Viewport.rodri2024-04-051-0/+14
| | | | | | | | | | > They made two mistakes. they hanged the wrong man and they didn't finish the job. so Clint Eastwood came back to kick my ass. the mistakes in question were that the Viewport shouldn't know about double buffering, conceptually it has a framebuffer and that's it. the second one was passing it to the renderer, when the renderer couldn't care less about what a viewport is.
* have separate routines for drawing and memdrawing.rodri2024-02-271-1/+13
|
* import the new renderer and clean things up.rodri2024-01-301-0/+81
i integrated the renderer i've been developing on the tinyrend repo and got rid of a bunch of stuff that's no longer necessary. also began structuring things to fit the new interface i have in mind. there are still some artifacts with the projection xforms that cause issues with clipping and division by zero.